refactor: replace custom geo manager with Xray-core native geodata auto-update

Remove the panel-side custom geo download feature (service, controller,
/panel/api/custom-geo/* endpoints, CustomGeoResource model, UI tab) in
favor of Xray-core's native geodata section
(https://xtls.github.io/config/geodata.html).

- pass the top-level "geodata" key through xray.Config so it survives
  the template round-trip into the generated config
- add a Geodata Auto-Update section to the Xray Updates modal that
  edits geodata (cron schedule, download outbound, asset list) in the
  config template and restarts Xray on save
- previously downloaded geo files in the bin folder keep working in
  ext: routing rules; the orphaned custom_geo_resources table is left
  in place so existing source URLs stay recoverable
This commit is contained in:
MHSanaei
2026-06-10 18:27:12 +02:00
parent 4002be4ade
commit 3092326d9e
43 changed files with 416 additions and 2875 deletions
+13 -42
View File
@@ -219,48 +219,19 @@
"geofilesUpdateDialogDesc": "这将更新所有文件。",
"geofilesUpdateAll": "全部更新",
"geofileUpdatePopover": "地理文件更新成功",
"customGeoTitle": "自定义 GeoSite / GeoIP",
"customGeoAdd": "添加",
"customGeoType": "类型",
"customGeoAlias": "别名",
"customGeoUrl": "URL",
"customGeoEnabled": "启用",
"customGeoLastUpdated": "上次更新",
"customGeoExtColumn": "路由 (ext:…)",
"customGeoToastUpdateAll": "所有自定义来源已更新",
"customGeoActions": "操作",
"customGeoEdit": "编辑",
"customGeoDelete": "删除",
"customGeoDownload": "立即更新",
"customGeoModalAdd": "添加自定义 geo",
"customGeoModalEdit": "编辑自定义 geo",
"customGeoModalSave": "保存",
"customGeoDeleteConfirm": "删除此自定义 geo 源?",
"customGeoRoutingHint": "在路由规则中将值列写为 ext:文件.dat:标签(替换标签)。",
"customGeoInvalidId": "无效的资源 ID",
"customGeoAliasesError": "加载自定义 geo 别名失败",
"customGeoValidationAlias": "别名只能包含小写字母、数字、- 和 _",
"customGeoValidationUrl": "URL 必须以 http:// 或 https:// 开头",
"customGeoAliasPlaceholder": "a-z 0-9 _ -",
"customGeoAliasLabelSuffix": "(自定义)",
"customGeoToastList": "自定义 geo 列表",
"customGeoToastAdd": "添加自定义 geo",
"customGeoToastUpdate": "更新自定义 geo",
"customGeoToastDelete": "自定义 geofile「{{ .fileName }}」已删除",
"customGeoToastDownload": "geofile「{{ .fileName }}」已更新",
"customGeoErrInvalidType": "类型必须是 geosite 或 geoip",
"customGeoErrAliasRequired": "请填写别名",
"customGeoErrAliasPattern": "别名包含不允许的字符",
"customGeoErrAliasReserved": "该别名已保留",
"customGeoErrUrlRequired": "请填写 URL",
"customGeoErrInvalidUrl": "URL 无效",
"customGeoErrUrlScheme": "URL 必须使用 http 或 https",
"customGeoErrUrlHost": "URL 主机无效",
"customGeoErrDuplicateAlias": "此类型下已使用该别名",
"customGeoErrNotFound": "未找到自定义 geo 源",
"customGeoErrDownload": "下载失败",
"customGeoErrUpdateAllIncomplete": "有一个或多个自定义 geo 源更新失败",
"customGeoEmpty": "暂无自定义 geo 源 — 点击「添加」以创建",
"geodataTitle": "Geodata 自动更新",
"geodataHint": "Xray 会按计划下载这些文件并热重载,无需重启。URL 必须为 HTTPS。文件必须已存在于 bin 目录中,Xray 才能对其更新。",
"geodataCron": "更新计划 (cron)",
"geodataOutbound": "通过出站下载(可选)",
"geodataFile": "文件名",
"geodataAddFile": "添加文件",
"geodataSaveRestart": "保存并重启 Xray",
"geodataConfirmTitle": "保存 geodata 设置?",
"geodataConfirmContent": "将更新 Xray 配置模板并重启 Xray。",
"geodataInvalidUrl": "每个文件都需要 HTTPS 地址。",
"geodataInvalidFile": "文件名必须是纯文件名,例如 geosite_custom.dat(不能包含路径)。",
"geodataInvalidCron": "Cron 必须为 5 段,例如 0 4 * * *",
"geodataEmpty": "尚未配置文件。路由规则中可通过 ext:geosite_custom.dat:category 引用文件。",
"dontRefresh": "安装中,请勿刷新此页面",
"logs": "日志",
"config": "配置",