const express = require('express'); const fs = require('fs'); const path = require('path'); const { authenticate } = require('../middleware/auth'); const router = express.Router(); let VERSION = 'v1.0.0'; try { VERSION = fs.readFileSync(path.join(__dirname, '../../version.txt'), 'utf8').trim(); } catch {} const GITEA_URL = process.env.GITEA_URL; const GITEA_REPO = process.env.GITEA_REPO; router.get('/version', authenticate, (_req, res) => res.json({ version: VERSION })); router.get('/update-check', authenticate, async (_req, res) => { if (!GITEA_URL || !GITEA_REPO) return res.json({ hasUpdate: false, currentVersion: VERSION, configured: false }); try { const r = await fetch(`${GITEA_URL}/api/v1/repos/${GITEA_REPO}/releases?limit=5`, { signal: AbortSignal.timeout(5000) }); const releases = await r.json(); if (!Array.isArray(releases) || !releases.length) return res.json({ hasUpdate: false, currentVersion: VERSION, configured: true }); res.json({ hasUpdate: releases[0].tag_name !== VERSION, currentVersion: VERSION, latestVersion: releases[0].tag_name, configured: true, releases: releases.map(r => ({ version: r.tag_name, name: r.name || r.tag_name, body: r.body || '(Keine Beschreibung)', publishedAt: r.published_at, })), }); } catch (e) { res.json({ hasUpdate: false, currentVersion: VERSION, configured: true }); } }); module.exports = router;