fix: v1.5.5 — 「打开 Gitea」远程地址推断三重保险

根因:gitea_ui() 有个判断 bug——当请求 Host 是 127.0.0.1:8899
(CGI 内部连接面板的本地地址)时,面板把它当作"远程主机名"
去替换 gitea_host 中的 127.0.0.1,结果还是 127.0.0.1:3000。

修复:
1. 修判断 bug:只有推断出的真实主机名不是 loopback 时才替换
   gitea_host 中的 127.0.0.1(本地直连保持原样,不再被错误"替换")
2. gitea_ui 新增 Referer 兜底:即使 CGI 没转发 Host/X-Forwarded-Host
   (fnOS CGI 环境里 $HTTP_HOST 可能为空),也能从浏览器自带的
   Referer 头里推断出真实主机名
3. CGI 代理兜底转发:从 X-Forwarded-Host / HTTP_HOST / Referer
   多源提取真实主机,作为 Host 和 X-Forwarded-Host 转发
4. 调用方传入 X-Forwarded-Host / Host / Referer 三个头

实测 6 种场景(远程 CGI / 远程直连 / 只有 Referer / 本地直连 /
全部为空 / 远程 IP)全部生成正确地址
manifest 1.5.4 → 1.5.5
This commit is contained in:
cbb
2026-10-15 01:23:57 +08:00
parent b4673d05a7
commit 58197fd35b
3 changed files with 39 additions and 13 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
appname = GiteaHubSync
version = 1.5.4
version = 1.5.5
display_name = Gitea→GitHub 同步助手
desc = 每次推送到飞牛 Gitea 的代码,10 秒内自动镜像到 GitHub 的 7 个私有仓库。内置控制面板:自动同步开关、立即同步、仓库状态、同步日志,一键打开 Gitea。数据全部保存在 NAS 本地。
platform = all