41 lines
1.5 KiB
JavaScript
41 lines
1.5 KiB
JavaScript
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;
|