Files
Nexus/docs/audit/2026-06-24-ip-domain-detect-schedule.md
T
r 6859846b7c sync: 主项目全量同步(含 btpanel 一键登录回归修复与前端构建产物)
- bootstrap 失败恢复 SSH 临时登录回退
- ssh_bootstrap 真安装检测与 config 目录自愈
- axs Gitea 发布源切换为 https://axs.kuma1xn.vip
2026-07-08 23:52:40 +08:00

2.3 KiB

审计 — IP-only 服务器自动补全站点域名

范围(文件清单)

文件 变更
server/utils/site_host.py 新增:IP 判定与站点 host 解析
server/utils/nginx_domain_detect.py 新增:远程 nginx 域名探测命令
server/application/server_batch_common.py detect_and_save_site_url / update_server_site_url
server/application/services/ip_domain_detect_schedule.py 新增:23:30 定时筛选与触发
server/background/ip_domain_detect_loop.py 新增:background loop
server/application/services/server_batch_service.py batch op detect-domain
server/config.py IP_DOMAIN_DETECT_* 配置
server/main.py 注册 loop
tests/test_site_host.py 单元测试
tests/test_nginx_domain_detect.py 单元测试
tests/test_ip_domain_detect_schedule.py 单元测试
server/application/services/btpanel_service.py 同批未提交:宝塔临时登录 TTL
server/infrastructure/btpanel/constants.py 同上
server/infrastructure/btpanel/ssh_login.py 同上
tests/test_btpanel_temp_login_ttl.py 同上

Step 3 规则扫描

H 规则 结论
H1 远程 shell 参数须 shlex.quote PASS — target_hint 已 quote
H2 不改 SSH domain 字段 PASS — 仅写 extra_attrs.site_url
H3 非 root SSH 仍 sudo_wrap PASS — 沿用 detect-path 模式
H4 未静默吞 SSH 错误 PASS — 无 stdout 返回明确错误
H5 每日 Redis 去重防重复 batch PASS — already_ran_today

Closure

H 判定 依据
H1 SAFE nginx_domain_detect.py shlex.quote(hint)
H2 SAFE update_server_site_url 只 merge extra_attrs
H3 SAFE detect_and_save_site_url 调用 sudo_wrap
H4 SAFE 未找到 nginx 站点域名
H5 SAFE ip_domain_detect_schedule.py Redis key

DoD

  • pytest tests/test_site_host.py tests/test_nginx_domain_detect.py tests/test_ip_domain_detect_schedule.py
  • changelog 2026-06-24-ip-domain-detect-schedule.md
  • 设计文档 specs + plans

验证

.venv/bin/pytest tests/test_site_host.py tests/test_nginx_domain_detect.py tests/test_ip_domain_detect_schedule.py -q