diff --git a/modules/user_container_manager.py b/modules/user_container_manager.py index 2b3270c1..64b21bcf 100644 --- a/modules/user_container_manager.py +++ b/modules/user_container_manager.py @@ -293,6 +293,10 @@ class UserContainerManager: if not self.image: raise RuntimeError("TERMINAL_SANDBOX_IMAGE 未配置,无法启动容器。") + # 创建前先做 daemon 就绪检查:daemon 未启动时给出友好中文报错, + # 而不是 docker run 的英文原始 stderr(如 Cannot connect to the Docker daemon...) + self._assert_docker_runtime_ready() + container_name = self._build_container_name(username) self._kill_container(container_name, docker_path) diff --git a/server/admin.py b/server/admin.py index 42d7c134..0e09678e 100644 --- a/server/admin.py +++ b/server/admin.py @@ -102,7 +102,15 @@ def admin_api_page(): @login_required @admin_required def admin_secondary_status(): - return jsonify({"success": True, "verified": _is_secondary_verified(), "ttl": ADMIN_SECONDARY_TTL_SECONDS}) + # configured:是否已设置二级密码(hash 或明文)。未配置时前端应显示设置引导, + # 而不是密码输入框(未配置时 verify 恒 401,输入什么都进不去)。 + configured = bool(ADMIN_SECONDARY_PASSWORD_HASH or ADMIN_SECONDARY_PASSWORD) + return jsonify({ + "success": True, + "verified": _is_secondary_verified(), + "configured": configured, + "ttl": ADMIN_SECONDARY_TTL_SECONDS, + }) @admin_bp.route('/api/admin/secondary/verify', methods=['POST']) diff --git a/static/admin_api/index.html b/static/admin_api/index.html index 626ca036..7f863f30 100644 --- a/static/admin_api/index.html +++ b/static/admin_api/index.html @@ -5,6 +5,8 @@
正在加载监控数据...