diff --git a/VERSION b/VERSION index e8ea05d..c813fe1 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.2.4 +1.2.5 diff --git a/app.py b/app.py index f522c08..41ff8f4 100644 --- a/app.py +++ b/app.py @@ -661,6 +661,28 @@ def panel_version(): return "unknown" +GH_TOKEN_FILE = "/opt/phobos-panel/.gh_token" + + +def gh_token_present(): + try: + return os.path.exists(GH_TOKEN_FILE) and os.path.getsize(GH_TOKEN_FILE) > 0 + except Exception: + return False + + +def save_gh_token(tok): + tok = (tok or "").strip() + if not tok: + return False + fd = os.open(GH_TOKEN_FILE, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600) + try: + os.write(fd, tok.encode()) + finally: + os.close(fd) + return True + + def run_update(arg): import subprocess try: @@ -1384,9 +1406,16 @@ def labels_page(): def settings_page(): s = load_settings() msg = "" - if request.method == "POST" and request.form.get("action") in ("update", "rollback", "check"): + if request.method == "POST" and request.form.get("action") in ("update", "rollback", "check", "save_token"): _act = request.form.get("action") - if _act == "update": + _tok = request.form.get("gh_token", "").strip() + if _tok: + save_gh_token(_tok) + if _act == "save_token": + _out = tr("Токен подписчика сохранён. Теперь можно переключаться на beta/dev.", + "Subscriber token saved. You can now switch to beta/dev.") if _tok else \ + tr("Поле токена пустое.", "Token field is empty.") + elif _act == "update": _out = run_update(request.form.get("target", "").strip() or "main") elif _act == "check": _out = run_update("--check") @@ -1428,9 +1457,25 @@ def settings_page():
{tr("Установленная версия","Installed version")}: {panel_version()}
+{tr("Каналы","Channels")}: + stable — {tr("стабильная","stable")} · + beta — {tr("тест","testing")} · + dev — {tr("разработка","development")}. + {tr("stable — без токена. Для beta/dev вставь токен подписчика (по подписке Boosty), сохрани — и жми канал.","stable needs no token. For beta/dev paste your subscriber token (Boosty), save it, then click the channel.")}
+ +