From c2a2a36f5685bd90ce1a9eb8b1b09c5dd24bf6c2 Mon Sep 17 00:00:00 2001 From: Troodi Date: Sun, 19 Apr 2026 22:44:51 +0300 Subject: Fix geosite:ru rule (Normalization to RU vs lowercase ru) (#3971) * Fix geosite:ru rule (Normalization to RU vs lowercase ru) * fix --- web/web.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'web/web.go') diff --git a/web/web.go b/web/web.go index 158bc048..47f58beb 100644 --- a/web/web.go +++ b/web/web.go @@ -12,6 +12,7 @@ import ( "net" "net/http" "os" + "path/filepath" "strconv" "strings" "time" @@ -293,9 +294,26 @@ func (s *Server) initRouter() (*gin.Engine, error) { return engine, nil } +// normalizeExistingGeositeFiles normalizes country codes in all geosite .dat +// files found in the bin directory so Xray-core can locate entries correctly. +func normalizeExistingGeositeFiles() { + binDir := config.GetBinFolderPath() + matches, err := filepath.Glob(filepath.Join(binDir, "geosite*.dat")) + if err != nil { + logger.Warningf("Failed to glob geosite files: %v", err) + return + } + for _, path := range matches { + if err := service.NormalizeGeositeCountryCodes(path); err != nil { + logger.Warningf("Failed to normalize geosite country codes in %s: %v", path, err) + } + } +} + // startTask schedules background jobs (Xray checks, traffic jobs, cron // jobs) which the panel relies on for periodic maintenance and monitoring. func (s *Server) startTask() { + normalizeExistingGeositeFiles() s.customGeoService.EnsureOnStartup() err := s.xrayService.RestartXray(true) if err != nil { -- cgit v1.2.3