6859846b7c
- bootstrap 失败恢复 SSH 临时登录回退 - ssh_bootstrap 真安装检测与 config 目录自愈 - axs Gitea 发布源切换为 https://axs.kuma1xn.vip
1.6 KiB
1.6 KiB
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-domain:SSH 探测并写extra_attrs.site_url(不改 SSHdomain字段)。 - 新增定时任务
ip_domain_detect_loop:北京时间 23:30 每日触发(IP_DOMAIN_DETECT_CRON=30 23 * * *)。 - 配置:
IP_DOMAIN_DETECT_ENABLED(默认 true)。
涉及文件
server/application/services/ip_domain_detect_schedule.pyserver/background/ip_domain_detect_loop.pyserver/application/server_batch_common.pyserver/application/services/server_batch_service.pyserver/config.py,server/main.pydocs/design/specs/2026-06-24-ip-domain-detect-schedule-design.mddocs/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 并重启。