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": "配置",