diff --git a/component/geodata/utils.go b/component/geodata/utils.go index a4002aeb3..981d7eba4 100644 --- a/component/geodata/utils.go +++ b/component/geodata/utils.go @@ -3,19 +3,37 @@ package geodata import ( "errors" "fmt" - "golang.org/x/sync/singleflight" "strings" + "golang.org/x/sync/singleflight" + "github.com/metacubex/mihomo/component/geodata/router" C "github.com/metacubex/mihomo/constant" "github.com/metacubex/mihomo/log" ) -var geoLoaderName = "memconservative" -var geoSiteMatcher = "succinct" +var ( + geoMode bool + AutoUpdate bool + UpdateInterval int + geoLoaderName = "memconservative" + geoSiteMatcher = "succinct" +) // geoLoaderName = "standard" +func GeodataMode() bool { + return geoMode +} + +func GeoAutoUpdate() bool { + return AutoUpdate +} + +func GeoUpdateInterval() int { + return UpdateInterval +} + func LoaderName() string { return geoLoaderName } @@ -24,6 +42,16 @@ func SiteMatcherName() string { return geoSiteMatcher } +func SetGeodataMode(newGeodataMode bool) { + geoMode = newGeodataMode +} +func SetGeoAutoUpdate(newAutoUpdate bool) { + AutoUpdate = newAutoUpdate +} +func SetGeoUpdateInterval(newGeoUpdateInterval int) { + UpdateInterval = newGeoUpdateInterval +} + func SetLoader(newLoader string) { if newLoader == "memc" { newLoader = "memconservative" diff --git a/config/config.go b/config/config.go index b04015969..c5f4bb772 100644 --- a/config/config.go +++ b/config/config.go @@ -607,6 +607,9 @@ func ParseRawConfig(rawCfg *RawConfig) (*Config, error) { } func parseGeneral(cfg *RawConfig) (*General, error) { + geodata.SetGeodataMode(cfg.GeodataMode) + geodata.SetGeoAutoUpdate(cfg.GeoAutoUpdate) + geodata.SetGeoUpdateInterval(cfg.GeoUpdateInterval) geodata.SetLoader(cfg.GeodataLoader) geodata.SetSiteMatcher(cfg.GeositeMatcher) C.GeoAutoUpdate = cfg.GeoAutoUpdate diff --git a/hub/executor/executor.go b/hub/executor/executor.go index 783da4d3d..e4a31a790 100644 --- a/hub/executor/executor.go +++ b/hub/executor/executor.go @@ -146,15 +146,18 @@ func GetGeneral() *config.General { AllowLan: listener.AllowLan(), BindAddress: listener.BindAddress(), }, - Controller: config.Controller{}, - Mode: tunnel.Mode(), - LogLevel: log.Level(), - IPv6: !resolver.DisableIPv6, - GeodataLoader: G.LoaderName(), - GeositeMatcher: G.SiteMatcherName(), - Interface: dialer.DefaultInterface.Load(), - Sniffing: tunnel.IsSniffing(), - TCPConcurrent: dialer.GetTcpConcurrent(), + Controller: config.Controller{}, + Mode: tunnel.Mode(), + LogLevel: log.Level(), + IPv6: !resolver.DisableIPv6, + GeodataMode: G.GeodataMode(), + GeoAutoUpdate: G.GeoAutoUpdate(), + GeoUpdateInterval: G.GeoUpdateInterval(), + GeodataLoader: G.LoaderName(), + GeositeMatcher: G.SiteMatcherName(), + Interface: dialer.DefaultInterface.Load(), + Sniffing: tunnel.IsSniffing(), + TCPConcurrent: dialer.GetTcpConcurrent(), } return general