Add subscription info refresh endpoint and UI stats

This commit is contained in:
2026-07-11 09:49:55 +03:00
parent 6bc7840fb1
commit 99f7f58fcb
8 changed files with 521 additions and 40 deletions

View File

@@ -4,7 +4,7 @@ import path from "node:path";
import crypto from "node:crypto";
import { spawn, spawnSync } from "node:child_process";
import { settings } from "./config.js";
import { fetchSubscription } from "./subscription.js";
import { fetchSubscription, fetchSubscriptionInfo } from "./subscription.js";
import os from "node:os";
import {
buildGatewayConfig,
@@ -1424,6 +1424,19 @@ async function handleApi(req, res) {
return sendJson(res, 200, { success: true, ...parsed });
}
if (req.method === "POST" && req.url === "/api/subscription/refresh-info") {
const prevState = readJson(settings.statePath, {});
if (!prevState.subscriptionUrl) {
return sendJson(res, 400, { success: false, error: "Подписка не настроена" });
}
const info = await fetchSubscriptionInfo(prevState.subscriptionUrl);
writeJson(settings.statePath, { ...prevState, ...info });
const cached = readJson(settings.subscriptionCachePath, null);
if (cached) writeJson(settings.subscriptionCachePath, { ...cached, ...info });
return sendJson(res, 200, { success: true, ...info });
}
if (req.method === "DELETE" && req.url === "/api/subscription") {
if (fs.existsSync(settings.subscriptionCachePath))
fs.rmSync(settings.subscriptionCachePath);