Files
Nexus/docs/changelog/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

1.6 KiB
Raw Blame History

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

日期: 2026-06-24
类型: feat(backend)

背景

大量子机 SSH 地址登记为 IP,服务器列表「地址」列缺少可点击站点链接。需每日自动 SSH 探测 nginx 站点名并写入元数据。

改动

  • 新增 server/utils/site_host.py:判定 IP-only 与解析已有站点 host(对齐前端 serverSiteUrl.ts)。
  • 新增 server/utils/nginx_domain_detect.py:远程扫描 Baota/nginx vhost 提取域名。
  • 新增 batch op detect-domainSSH 探测并写 extra_attrs.site_url(不改 SSH domain 字段)。
  • 新增定时任务 ip_domain_detect_loop:北京时间 23:30 每日触发(IP_DOMAIN_DETECT_CRON=30 23 * * *)。
  • 配置:IP_DOMAIN_DETECT_ENABLED(默认 true)。

涉及文件

  • server/application/services/ip_domain_detect_schedule.py
  • server/background/ip_domain_detect_loop.py
  • server/application/server_batch_common.py
  • server/application/services/server_batch_service.py
  • server/config.py, server/main.py
  • docs/design/specs/2026-06-24-ip-domain-detect-schedule-design.md
  • docs/design/plans/2026-06-24-ip-domain-detect-schedule.md

迁移 / 重启

  • 无 DB 迁移;部署后重启 API 容器使 background loop 生效。

验证

pytest tests/test_site_host.py tests/test_nginx_domain_detect.py tests/test_ip_domain_detect_schedule.py -q
  • 生产:23:30 后审计日志应出现 batch_detect_domain#/servers 中 IP-only 机器地址列下方出现域名链接。

回滚

.env 设置 IP_DOMAIN_DETECT_ENABLED=false 并重启。