const express = require('express'); const cors = require('cors'); const app = express(); // Middleware app.use(cors()); app.use(express.json()); // Конфигурация версий - обновляйте это при каждом релизе const RELEASES = { stable: { version: "2.5.8", build_number: "258", is_prerelease: false, download_url: "https://your-storage.com/downloads/umbrix-2.5.8.apk", release_notes: "Стабильная версия с важными исправлениями:\n\n✨ Новое:\n- Улучшенная система обновлений\n- Оптимизация производительности\n\n🐛 Исправлено:\n- Проблемы с подключением\n- Баги стабильности", published_at: "2026-01-16T10:00:00Z" }, beta: { version: "2.6.0-beta.1", build_number: "260", is_prerelease: true, download_url: "https://your-storage.com/downloads/umbrix-2.6.0-beta.1.apk", release_notes: "Бета-версия с экспериментальными функциями:\n\n🚀 Новые функции:\n- Новый интерфейс\n- Расширенные настройки\n\n⚠️ Внимание: Это бета-версия, могут быть баги!", published_at: "2026-01-17T08:00:00Z" } }; // API ключ для защиты (опционально) const API_KEY = process.env.API_KEY || 'your-secret-api-key-change-this'; // Middleware для проверки API ключа (опционально) function checkApiKey(req, res, next) { const apiKey = req.headers['x-api-key']; // Если API_KEY не установлен, пропускаем проверку if (API_KEY === 'your-secret-api-key-change-this') { return next(); } if (!apiKey || apiKey !== API_KEY) { return res.status(401).json({ error: 'Unauthorized', message: 'Invalid or missing API key' }); } next(); } // Endpoint для получения последней версии app.get('/api/updates/latest', checkApiKey, (req, res) => { const includePrerelease = req.query.include_prerelease === 'true'; const release = includePrerelease ? RELEASES.beta : RELEASES.stable; // Логирование запросов console.log(`[${new Date().toISOString()}] Update check: prerelease=${includePrerelease}`); res.json(release); }); // Endpoint для аналитики (опционально) app.post('/api/updates/analytics', (req, res) => { const { current_version, device_info, action } = req.body; console.log(`[${new Date().toISOString()}] Analytics:`, { current_version, device_info, action }); res.json({ success: true }); }); // Endpoint для истории версий app.get('/api/updates/history', checkApiKey, (req, res) => { const history = [ RELEASES.beta, RELEASES.stable, // Добавьте старые версии здесь ]; res.json({ releases: history }); }); // Health check endpoint app.get('/health', (req, res) => { res.json({ status: 'ok', timestamp: new Date().toISOString(), version: '1.0.0' }); }); // Запуск сервера const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(` ╔════════════════════════════════════════╗ ║ Umbrix Update Server ║ ║ Running on port ${PORT} ║ ║ ║ ║ Endpoints: ║ ║ GET /api/updates/latest ║ ║ POST /api/updates/analytics ║ ║ GET /api/updates/history ║ ║ GET /health ║ ╚════════════════════════════════════════╝ `); }); module.exports = app;