Files
project-panel/app.py
hz4th_coder 294526b403 feat: 服务发现 - 自动扫描本机未注册的新服务
方案C: 端口扫描 + 进程信息增强

后端 /api/discovery/services:
- ss -tlnp 扫描所有TCP监听端口
- 自动排除已注册服务(projects.json) + Docker容器端口 + 系统端口(SSH等)
- 读取 /proc/<pid>/cmdline 获取进程命令行
- 读取 /proc/<pid>/cwd 获取工作目录
- 智能推测服务名(匹配python/node/java等框架特征)
- 智能推测服务类型(web/external)

前端 Web服务区底部:
- 发现未注册服务区块,点击「扫描」探测
- 每个未注册服务显示: 端口/PID/进程名/cmdline
- 一键添加按钮,自动预填弹框(名称/端口/URL/描述)
2026-06-01 18:18:26 +08:00

53 lines
1.4 KiB
Python

#!/usr/bin/env python3
"""
项目服务管理面板 - 主入口
模块化重构版本 v3.4.0
"""
from flask import Flask
from config import APP_NAME, APP_VERSION, APP_PORT
from database import init_db, close_db
from utils import log_message
from routes_cron import register_cron_routes
from routes_system import register_system_routes
from routes_config import register_config_routes
from routes_email import register_email_routes
from routes_project import register_project_routes
from routes_docker import register_docker_routes
from routes_discovery import register_discovery_routes
from templates import get_html_template
# 创建 Flask 应用
app = Flask(__name__)
def init_app():
"""初始化应用"""
# 注册数据库钩子
app.teardown_appcontext(close_db)
# 注册路由
register_cron_routes(app)
register_system_routes(app)
register_config_routes(app)
register_email_routes(app)
register_project_routes(app)
register_docker_routes(app)
register_discovery_routes(app)
# 主页路由
@app.route('/')
def index():
return get_html_template()
# 初始化数据库
init_db()
log_message(f"{APP_NAME} {APP_VERSION} 初始化完成")
if __name__ == '__main__':
init_app()
log_message(f"启动 {APP_NAME},端口: {APP_PORT}")
app.run(host='0.0.0.0', port=APP_PORT, debug=False)