From 6e74b9e53962e89ddd714ab8ecf6af9cd823d9ea Mon Sep 17 00:00:00 2001 From: grendervill Date: Sat, 27 Jun 2026 00:57:16 +0300 Subject: [PATCH] =?UTF-8?q?version=201.3.2:=20=D0=B8=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B7?= =?UTF-8?q?=D0=B0=D0=BF=D1=83=D1=81=D0=BA=20=D0=BF=D0=B0=D0=BD=D0=B5=D0=BB?= =?UTF-8?q?=D0=B8=20=D0=B8=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20SSH-=D0=BF=D0=BE=D1=80=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - app.py: отложенный systemctl restart (sleep 1) — ответ уходит до убийства gunicorn - mita-ctl.sh: ручной ввод SSH-порта при удалении вместо автоопределения --- app.py | 15 ++++++++++----- mita-ctl.sh | 11 +++++++---- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/app.py b/app.py index 3d777ac..a4a3dca 100644 --- a/app.py +++ b/app.py @@ -671,10 +671,12 @@ def api_ssl_letsencrypt(): @app.route(f"{BASE}/api/panel/restart", methods=["POST"]) @login_required def api_panel_restart(): - r = subprocess.run(["systemctl","restart","mita-panel"], - capture_output=True, text=True, timeout=10) - if r.returncode != 0: - return jsonify({"ok": False, "error": r.stderr.strip()}), 500 + # Отложенный перезапуск — gunicorn убивает текущий процесc при restart, + # не давая ответу уйти. sleep 1 даёт Flask отдать ответ до перезапуска. + subprocess.Popen( + ["bash","-c","sleep 1 && systemctl restart mita-panel"], + stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL + ) return jsonify({"ok": True}) @app.route(f"{BASE}/api/panel/access") @@ -737,7 +739,10 @@ exec /opt/mita-panel/venv/bin/gunicorn \\ pc["access_mode"] = mode 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) return jsonify({ diff --git a/mita-ctl.sh b/mita-ctl.sh index bba3a08..3bad264 100755 --- a/mita-ctl.sh +++ b/mita-ctl.sh @@ -1306,10 +1306,13 @@ except: print('2100-2110') fi _PANEL_PORT=${_PANEL_PORT:-8080} - # Автодетект текущего SSH порта из sshd_config (чтобы не трогать его при чистке) - _SSH_PORT=$(grep -E "^[[:space:]]*Port[[:space:]]+" /etc/ssh/sshd_config 2>/dev/null | awk '{print $2}' | head -1 || true) - _SSH_PORT=${_SSH_PORT:-22} - info "Обнаружен SSH порт: $_SSH_PORT (будет сохранён)" + # Определяем SSH порт — пользователь вводит сам, автоопределение как подсказка + _SSH_DETECTED=$(grep -E "^[[:space:]]*Port[[:space:]]+" /etc/ssh/sshd_config 2>/dev/null | awk '{print $2}' | head -1 || true) + _SSH_DETECTED=${_SSH_DETECTED:-22} + echo "" + read -r -p " SSH порт, который НЕ нужно закрывать [${_SSH_DETECTED}]: " _SSH_INPUT + _SSH_PORT="${_SSH_INPUT:-$_SSH_DETECTED}" + info "SSH порт $_SSH_PORT будет сохранён" info "Порты mita для закрытия: $_MITA_RANGE" info "Порт панели для закрытия: $_PANEL_PORT"