version 1.3.2: исправлен перезапуск панели и удаление SSH-порта

- app.py: отложенный systemctl restart (sleep 1) — ответ уходит до убийства gunicorn
- mita-ctl.sh: ручной ввод SSH-порта при удалении вместо автоопределения
This commit is contained in:
2026-06-27 00:57:16 +03:00
parent 63c252825a
commit 6e74b9e539
2 changed files with 17 additions and 9 deletions
+10 -5
View File
@@ -671,10 +671,12 @@ def api_ssl_letsencrypt():
@app.route(f"{BASE}/api/panel/restart", methods=["POST"]) @app.route(f"{BASE}/api/panel/restart", methods=["POST"])
@login_required @login_required
def api_panel_restart(): def api_panel_restart():
r = subprocess.run(["systemctl","restart","mita-panel"], # Отложенный перезапуск — gunicorn убивает текущий процесc при restart,
capture_output=True, text=True, timeout=10) # не давая ответу уйти. sleep 1 даёт Flask отдать ответ до перезапуска.
if r.returncode != 0: subprocess.Popen(
return jsonify({"ok": False, "error": r.stderr.strip()}), 500 ["bash","-c","sleep 1 && systemctl restart mita-panel"],
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL
)
return jsonify({"ok": True}) return jsonify({"ok": True})
@app.route(f"{BASE}/api/panel/access") @app.route(f"{BASE}/api/panel/access")
@@ -737,7 +739,10 @@ exec /opt/mita-panel/venv/bin/gunicorn \\
pc["access_mode"] = mode pc["access_mode"] = mode
Path(PANEL_CONFIG).write_text(json.dumps(pc, indent=2)) Path(PANEL_CONFIG).write_text(json.dumps(pc, indent=2))
subprocess.run(["systemctl","restart","mita-panel"], capture_output=True, timeout=10) subprocess.Popen(
["bash","-c","sleep 1 && systemctl restart mita-panel"],
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL
)
ssh_port = pc.get("ssh_port", 22) ssh_port = pc.get("ssh_port", 22)
return jsonify({ return jsonify({
+7 -4
View File
@@ -1306,10 +1306,13 @@ except: print('2100-2110')
fi fi
_PANEL_PORT=${_PANEL_PORT:-8080} _PANEL_PORT=${_PANEL_PORT:-8080}
# Автодетект текущего SSH порта из sshd_config (чтобы не трогать его при чистке) # Определяем SSH порт — пользователь вводит сам, автоопределение как подсказка
_SSH_PORT=$(grep -E "^[[:space:]]*Port[[:space:]]+" /etc/ssh/sshd_config 2>/dev/null | awk '{print $2}' | head -1 || true) _SSH_DETECTED=$(grep -E "^[[:space:]]*Port[[:space:]]+" /etc/ssh/sshd_config 2>/dev/null | awk '{print $2}' | head -1 || true)
_SSH_PORT=${_SSH_PORT:-22} _SSH_DETECTED=${_SSH_DETECTED:-22}
info "Обнаружен SSH порт: $_SSH_PORT (будет сохранён)" echo ""
read -r -p " SSH порт, который НЕ нужно закрывать [${_SSH_DETECTED}]: " _SSH_INPUT
_SSH_PORT="${_SSH_INPUT:-$_SSH_DETECTED}"
info "SSH порт $_SSH_PORT будет сохранён"
info "Порты mita для закрытия: $_MITA_RANGE" info "Порты mita для закрытия: $_MITA_RANGE"
info "Порт панели для закрытия: $_PANEL_PORT" info "Порт панели для закрытия: $_PANEL_PORT"