diff --git a/adapter/outboundgroup/fallback.go b/adapter/outboundgroup/fallback.go index 8f8842a1..3772107b 100644 --- a/adapter/outboundgroup/fallback.go +++ b/adapter/outboundgroup/fallback.go @@ -10,7 +10,7 @@ import ( N "github.com/metacubex/mihomo/common/net" "github.com/metacubex/mihomo/common/utils" C "github.com/metacubex/mihomo/constant" - "github.com/metacubex/mihomo/constant/provider" + P "github.com/metacubex/mihomo/constant/provider" ) type Fallback struct { @@ -150,7 +150,7 @@ func (f *Fallback) ForceSet(name string) { f.selected = name } -func NewFallback(option *GroupCommonOption, providers []provider.ProxyProvider) *Fallback { +func NewFallback(option *GroupCommonOption, providers []P.ProxyProvider) *Fallback { return &Fallback{ GroupBase: NewGroupBase(GroupBaseOption{ Name: option.Name, diff --git a/adapter/outboundgroup/groupbase.go b/adapter/outboundgroup/groupbase.go index dc66976b..9e705677 100644 --- a/adapter/outboundgroup/groupbase.go +++ b/adapter/outboundgroup/groupbase.go @@ -12,8 +12,7 @@ import ( "github.com/metacubex/mihomo/common/atomic" "github.com/metacubex/mihomo/common/utils" C "github.com/metacubex/mihomo/constant" - "github.com/metacubex/mihomo/constant/provider" - types "github.com/metacubex/mihomo/constant/provider" + P "github.com/metacubex/mihomo/constant/provider" "github.com/metacubex/mihomo/log" "github.com/metacubex/mihomo/tunnel" @@ -26,7 +25,7 @@ type GroupBase struct { filterRegs []*regexp2.Regexp excludeFilterRegs []*regexp2.Regexp excludeTypeArray []string - providers []provider.ProxyProvider + providers []P.ProxyProvider failedTestMux sync.Mutex failedTimes int failedTime time.Time @@ -48,7 +47,7 @@ type GroupBaseOption struct { ExcludeType string TestTimeout int MaxFailedTimes int - Providers []provider.ProxyProvider + Providers []P.ProxyProvider } func NewGroupBase(opt GroupBaseOption) *GroupBase { @@ -125,7 +124,7 @@ func (gb *GroupBase) GetProxies(touch bool) []C.Proxy { } } else { for _, pd := range gb.providers { - if pd.VehicleType() == types.Compatible { // compatible provider unneeded filter + if pd.VehicleType() == P.Compatible { // compatible provider unneeded filter proxies = append(proxies, pd.Proxies()...) continue } diff --git a/adapter/outboundgroup/loadbalance.go b/adapter/outboundgroup/loadbalance.go index 9f609fbb..dff9b5ed 100644 --- a/adapter/outboundgroup/loadbalance.go +++ b/adapter/outboundgroup/loadbalance.go @@ -14,7 +14,7 @@ import ( N "github.com/metacubex/mihomo/common/net" "github.com/metacubex/mihomo/common/utils" C "github.com/metacubex/mihomo/constant" - "github.com/metacubex/mihomo/constant/provider" + P "github.com/metacubex/mihomo/constant/provider" "golang.org/x/net/publicsuffix" ) @@ -239,7 +239,7 @@ func (lb *LoadBalance) MarshalJSON() ([]byte, error) { }) } -func NewLoadBalance(option *GroupCommonOption, providers []provider.ProxyProvider, strategy string) (lb *LoadBalance, err error) { +func NewLoadBalance(option *GroupCommonOption, providers []P.ProxyProvider, strategy string) (lb *LoadBalance, err error) { var strategyFn strategyFn switch strategy { case "consistent-hashing": diff --git a/adapter/outboundgroup/parser.go b/adapter/outboundgroup/parser.go index 9c09a0f4..2dcdd628 100644 --- a/adapter/outboundgroup/parser.go +++ b/adapter/outboundgroup/parser.go @@ -11,7 +11,7 @@ import ( "github.com/metacubex/mihomo/common/structure" "github.com/metacubex/mihomo/common/utils" C "github.com/metacubex/mihomo/constant" - types "github.com/metacubex/mihomo/constant/provider" + P "github.com/metacubex/mihomo/constant/provider" "github.com/metacubex/mihomo/log" ) @@ -48,7 +48,7 @@ type GroupCommonOption struct { RoutingMark int `group:"routing-mark,omitempty"` } -func ParseProxyGroup(config map[string]any, proxyMap map[string]C.Proxy, providersMap map[string]types.ProxyProvider, AllProxies []string, AllProviders []string) (C.ProxyAdapter, error) { +func ParseProxyGroup(config map[string]any, proxyMap map[string]C.Proxy, providersMap map[string]P.ProxyProvider, AllProxies []string, AllProviders []string) (C.ProxyAdapter, error) { decoder := structure.NewDecoder(structure.Option{TagName: "group", WeaklyTypedInput: true}) groupOption := &GroupCommonOption{ @@ -71,7 +71,7 @@ func ParseProxyGroup(config map[string]any, proxyMap map[string]C.Proxy, provide groupName := groupOption.Name - providers := []types.ProxyProvider{} + providers := []P.ProxyProvider{} if groupOption.IncludeAll { groupOption.IncludeAllProviders = true @@ -169,7 +169,7 @@ func ParseProxyGroup(config map[string]any, proxyMap map[string]C.Proxy, provide return nil, fmt.Errorf("%s: %w", groupName, err) } - providers = append([]types.ProxyProvider{pd}, providers...) + providers = append([]P.ProxyProvider{pd}, providers...) providersMap[groupName] = pd } @@ -206,15 +206,15 @@ func getProxies(mapping map[string]C.Proxy, list []string) ([]C.Proxy, error) { return ps, nil } -func getProviders(mapping map[string]types.ProxyProvider, list []string) ([]types.ProxyProvider, error) { - var ps []types.ProxyProvider +func getProviders(mapping map[string]P.ProxyProvider, list []string) ([]P.ProxyProvider, error) { + var ps []P.ProxyProvider for _, name := range list { p, ok := mapping[name] if !ok { return nil, fmt.Errorf("'%s' not found", name) } - if p.VehicleType() == types.Compatible { + if p.VehicleType() == P.Compatible { return nil, fmt.Errorf("proxy group %s can't contains in `use`", name) } ps = append(ps, p) @@ -222,7 +222,7 @@ func getProviders(mapping map[string]types.ProxyProvider, list []string) ([]type return ps, nil } -func addTestUrlToProviders(providers []types.ProxyProvider, url string, expectedStatus utils.IntRanges[uint16], filter string, interval uint) { +func addTestUrlToProviders(providers []P.ProxyProvider, url string, expectedStatus utils.IntRanges[uint16], filter string, interval uint) { if len(providers) == 0 || len(url) == 0 { return } diff --git a/adapter/outboundgroup/patch_android.go b/adapter/outboundgroup/patch_android.go index c6566814..016ed606 100644 --- a/adapter/outboundgroup/patch_android.go +++ b/adapter/outboundgroup/patch_android.go @@ -4,22 +4,22 @@ package outboundgroup import ( C "github.com/metacubex/mihomo/constant" - "github.com/metacubex/mihomo/constant/provider" + P "github.com/metacubex/mihomo/constant/provider" ) type ProxyGroup interface { C.ProxyAdapter - Providers() []provider.ProxyProvider + Providers() []P.ProxyProvider Proxies() []C.Proxy Now() string } -func (f *Fallback) Providers() []provider.ProxyProvider { +func (f *Fallback) Providers() []P.ProxyProvider { return f.providers } -func (lb *LoadBalance) Providers() []provider.ProxyProvider { +func (lb *LoadBalance) Providers() []P.ProxyProvider { return lb.providers } @@ -35,7 +35,7 @@ func (lb *LoadBalance) Now() string { return "" } -func (r *Relay) Providers() []provider.ProxyProvider { +func (r *Relay) Providers() []P.ProxyProvider { return r.providers } @@ -47,7 +47,7 @@ func (r *Relay) Now() string { return "" } -func (s *Selector) Providers() []provider.ProxyProvider { +func (s *Selector) Providers() []P.ProxyProvider { return s.providers } @@ -55,7 +55,7 @@ func (s *Selector) Proxies() []C.Proxy { return s.GetProxies(false) } -func (u *URLTest) Providers() []provider.ProxyProvider { +func (u *URLTest) Providers() []P.ProxyProvider { return u.providers } diff --git a/adapter/outboundgroup/relay.go b/adapter/outboundgroup/relay.go index 77a2f03b..8e93d898 100644 --- a/adapter/outboundgroup/relay.go +++ b/adapter/outboundgroup/relay.go @@ -8,7 +8,7 @@ import ( "github.com/metacubex/mihomo/component/dialer" "github.com/metacubex/mihomo/component/proxydialer" C "github.com/metacubex/mihomo/constant" - "github.com/metacubex/mihomo/constant/provider" + P "github.com/metacubex/mihomo/constant/provider" "github.com/metacubex/mihomo/log" ) @@ -149,7 +149,7 @@ func (r *Relay) Addr() string { return proxies[len(proxies)-1].Addr() } -func NewRelay(option *GroupCommonOption, providers []provider.ProxyProvider) *Relay { +func NewRelay(option *GroupCommonOption, providers []P.ProxyProvider) *Relay { log.Warnln("The group [%s] with relay type is deprecated, please using dialer-proxy instead", option.Name) return &Relay{ GroupBase: NewGroupBase(GroupBaseOption{ diff --git a/adapter/outboundgroup/selector.go b/adapter/outboundgroup/selector.go index 03ee192c..f8975df7 100644 --- a/adapter/outboundgroup/selector.go +++ b/adapter/outboundgroup/selector.go @@ -6,7 +6,7 @@ import ( "errors" C "github.com/metacubex/mihomo/constant" - "github.com/metacubex/mihomo/constant/provider" + P "github.com/metacubex/mihomo/constant/provider" ) type Selector struct { @@ -108,7 +108,7 @@ func (s *Selector) selectedProxy(touch bool) C.Proxy { return proxies[0] } -func NewSelector(option *GroupCommonOption, providers []provider.ProxyProvider) *Selector { +func NewSelector(option *GroupCommonOption, providers []P.ProxyProvider) *Selector { return &Selector{ GroupBase: NewGroupBase(GroupBaseOption{ Name: option.Name, diff --git a/adapter/outboundgroup/urltest.go b/adapter/outboundgroup/urltest.go index 5dc62054..2adb3b81 100644 --- a/adapter/outboundgroup/urltest.go +++ b/adapter/outboundgroup/urltest.go @@ -11,7 +11,7 @@ import ( "github.com/metacubex/mihomo/common/singledo" "github.com/metacubex/mihomo/common/utils" C "github.com/metacubex/mihomo/constant" - "github.com/metacubex/mihomo/constant/provider" + P "github.com/metacubex/mihomo/constant/provider" ) type urlTestOption func(*URLTest) @@ -202,7 +202,7 @@ func parseURLTestOption(config map[string]any) []urlTestOption { return opts } -func NewURLTest(option *GroupCommonOption, providers []provider.ProxyProvider, options ...urlTestOption) *URLTest { +func NewURLTest(option *GroupCommonOption, providers []P.ProxyProvider, options ...urlTestOption) *URLTest { urlTest := &URLTest{ GroupBase: NewGroupBase(GroupBaseOption{ Name: option.Name, diff --git a/adapter/provider/parser.go b/adapter/provider/parser.go index 57dc6e24..d6297b56 100644 --- a/adapter/provider/parser.go +++ b/adapter/provider/parser.go @@ -10,7 +10,7 @@ import ( "github.com/metacubex/mihomo/common/utils" "github.com/metacubex/mihomo/component/resource" C "github.com/metacubex/mihomo/constant" - types "github.com/metacubex/mihomo/constant/provider" + P "github.com/metacubex/mihomo/constant/provider" "github.com/dlclark/regexp2" ) @@ -73,7 +73,7 @@ type proxyProviderSchema struct { Header map[string][]string `provider:"header,omitempty"` } -func ParseProxyProvider(name string, mapping map[string]any) (types.ProxyProvider, error) { +func ParseProxyProvider(name string, mapping map[string]any) (P.ProxyProvider, error) { decoder := structure.NewDecoder(structure.Option{TagName: "provider", WeaklyTypedInput: true}) schema := &proxyProviderSchema{ @@ -104,7 +104,7 @@ func ParseProxyProvider(name string, mapping map[string]any) (types.ProxyProvide return nil, err } - var vehicle types.Vehicle + var vehicle P.Vehicle switch schema.Type { case "file": path := C.Path.Resolve(schema.Path) diff --git a/adapter/provider/provider.go b/adapter/provider/provider.go index 2f71b41b..e5d3b8ac 100644 --- a/adapter/provider/provider.go +++ b/adapter/provider/provider.go @@ -16,7 +16,7 @@ import ( "github.com/metacubex/mihomo/component/profile/cachefile" "github.com/metacubex/mihomo/component/resource" C "github.com/metacubex/mihomo/constant" - types "github.com/metacubex/mihomo/constant/provider" + P "github.com/metacubex/mihomo/constant/provider" "github.com/metacubex/mihomo/tunnel/statistic" "github.com/dlclark/regexp2" @@ -68,8 +68,8 @@ func (bp *baseProvider) HealthCheck() { bp.healthCheck.check() } -func (bp *baseProvider) Type() types.ProviderType { - return types.Proxy +func (bp *baseProvider) Type() P.ProviderType { + return P.Proxy } func (bp *baseProvider) Proxies() []C.Proxy { @@ -171,7 +171,7 @@ func (pp *proxySetProvider) Close() error { return pp.Fetcher.Close() } -func NewProxySetProvider(name string, interval time.Duration, payload []map[string]any, parser resource.Parser[[]C.Proxy], vehicle types.Vehicle, hc *HealthCheck) (*ProxySetProvider, error) { +func NewProxySetProvider(name string, interval time.Duration, payload []map[string]any, parser resource.Parser[[]C.Proxy], vehicle P.Vehicle, hc *HealthCheck) (*ProxySetProvider, error) { pd := &proxySetProvider{ baseProvider: baseProvider{ name: name, @@ -238,8 +238,8 @@ func (ip *inlineProvider) MarshalJSON() ([]byte, error) { }) } -func (ip *inlineProvider) VehicleType() types.VehicleType { - return types.Inline +func (ip *inlineProvider) VehicleType() P.VehicleType { + return P.Inline } func (ip *inlineProvider) Update() error { @@ -303,8 +303,8 @@ func (cp *compatibleProvider) Update() error { return nil } -func (cp *compatibleProvider) VehicleType() types.VehicleType { - return types.Compatible +func (cp *compatibleProvider) VehicleType() P.VehicleType { + return P.Compatible } func NewCompatibleProvider(name string, proxies []C.Proxy, hc *HealthCheck) (*CompatibleProvider, error) { diff --git a/component/resource/fetcher.go b/component/resource/fetcher.go index 24f24d47..a48e7bc8 100644 --- a/component/resource/fetcher.go +++ b/component/resource/fetcher.go @@ -8,7 +8,7 @@ import ( "github.com/metacubex/mihomo/common/utils" "github.com/metacubex/mihomo/component/slowdown" - types "github.com/metacubex/mihomo/constant/provider" + P "github.com/metacubex/mihomo/constant/provider" "github.com/metacubex/mihomo/log" "github.com/metacubex/fswatch" @@ -22,7 +22,7 @@ type Fetcher[V any] struct { ctxCancel context.CancelFunc resourceType string name string - vehicle types.Vehicle + vehicle P.Vehicle updatedAt time.Time hash utils.HashType parser Parser[V] @@ -37,11 +37,11 @@ func (f *Fetcher[V]) Name() string { return f.name } -func (f *Fetcher[V]) Vehicle() types.Vehicle { +func (f *Fetcher[V]) Vehicle() P.Vehicle { return f.vehicle } -func (f *Fetcher[V]) VehicleType() types.VehicleType { +func (f *Fetcher[V]) VehicleType() P.VehicleType { return f.vehicle.Type() } @@ -88,7 +88,7 @@ func (f *Fetcher[V]) Update() (V, bool, error) { f.backoff.AddAttempt() // add a failed attempt to backoff return lo.Empty[V](), false, err } - return f.loadBuf(buf, hash, f.vehicle.Type() != types.File) + return f.loadBuf(buf, hash, f.vehicle.Type() != P.File) } func (f *Fetcher[V]) SideUpdate(buf []byte) (V, bool, error) { @@ -180,7 +180,7 @@ func (f *Fetcher[V]) pullLoop(forceUpdate bool) { func (f *Fetcher[V]) startPullLoop(forceUpdate bool) (err error) { // pull contents automatically - if f.vehicle.Type() == types.File { + if f.vehicle.Type() == P.File { f.watcher, err = fswatch.NewWatcher(fswatch.Options{ Path: []string{f.vehicle.Path()}, Callback: f.updateCallback, @@ -218,7 +218,7 @@ func (f *Fetcher[V]) updateWithLog() { return } -func NewFetcher[V any](name string, interval time.Duration, vehicle types.Vehicle, parser Parser[V], onUpdate func(V)) *Fetcher[V] { +func NewFetcher[V any](name string, interval time.Duration, vehicle P.Vehicle, parser Parser[V], onUpdate func(V)) *Fetcher[V] { ctx, cancel := context.WithCancel(context.Background()) minBackoff := 10 * time.Second if interval < minBackoff { diff --git a/component/resource/vehicle.go b/component/resource/vehicle.go index 67ab19b7..a34417aa 100644 --- a/component/resource/vehicle.go +++ b/component/resource/vehicle.go @@ -12,7 +12,7 @@ import ( "github.com/metacubex/mihomo/common/utils" mihomoHttp "github.com/metacubex/mihomo/component/http" "github.com/metacubex/mihomo/component/profile/cachefile" - types "github.com/metacubex/mihomo/constant/provider" + P "github.com/metacubex/mihomo/constant/provider" ) const ( @@ -50,8 +50,8 @@ type FileVehicle struct { path string } -func (f *FileVehicle) Type() types.VehicleType { - return types.File +func (f *FileVehicle) Type() P.VehicleType { + return P.File } func (f *FileVehicle) Path() string { @@ -91,15 +91,15 @@ type HTTPVehicle struct { timeout time.Duration sizeLimit int64 inRead func(response *http.Response) - provider types.ProxyProvider + provider P.ProxyProvider } func (h *HTTPVehicle) Url() string { return h.url } -func (h *HTTPVehicle) Type() types.VehicleType { - return types.HTTP +func (h *HTTPVehicle) Type() P.VehicleType { + return P.HTTP } func (h *HTTPVehicle) Path() string { diff --git a/config/config.go b/config/config.go index 1f5f35da..f323631f 100644 --- a/config/config.go +++ b/config/config.go @@ -25,7 +25,7 @@ import ( "github.com/metacubex/mihomo/component/sniffer" "github.com/metacubex/mihomo/component/trie" C "github.com/metacubex/mihomo/constant" - providerTypes "github.com/metacubex/mihomo/constant/provider" + P "github.com/metacubex/mihomo/constant/provider" snifferTypes "github.com/metacubex/mihomo/constant/sniffer" "github.com/metacubex/mihomo/dns" L "github.com/metacubex/mihomo/listener" @@ -199,8 +199,8 @@ type Config struct { Users []auth.AuthUser Proxies map[string]C.Proxy Listeners map[string]C.InboundListener - Providers map[string]providerTypes.ProxyProvider - RuleProviders map[string]providerTypes.RuleProvider + Providers map[string]P.ProxyProvider + RuleProviders map[string]P.RuleProvider Tunnels []LC.Tunnel Sniffer *sniffer.Config TLS *TLS @@ -845,9 +845,9 @@ func parseTLS(cfg *RawConfig) (*TLS, error) { }, nil } -func parseProxies(cfg *RawConfig) (proxies map[string]C.Proxy, providersMap map[string]providerTypes.ProxyProvider, err error) { +func parseProxies(cfg *RawConfig) (proxies map[string]C.Proxy, providersMap map[string]P.ProxyProvider, err error) { proxies = make(map[string]C.Proxy) - providersMap = make(map[string]providerTypes.ProxyProvider) + providersMap = make(map[string]P.ProxyProvider) proxiesConfig := cfg.Proxy groupsConfig := cfg.ProxyGroup providersConfig := cfg.ProxyProvider @@ -947,7 +947,7 @@ func parseProxies(cfg *RawConfig) (proxies map[string]C.Proxy, providersMap map[ &outboundgroup.GroupCommonOption{ Name: "GLOBAL", }, - []providerTypes.ProxyProvider{pd}, + []P.ProxyProvider{pd}, ) proxies["GLOBAL"] = adapter.NewProxy(global) } @@ -972,9 +972,9 @@ func parseListeners(cfg *RawConfig) (listeners map[string]C.InboundListener, err return } -func parseRuleProviders(cfg *RawConfig) (ruleProviders map[string]providerTypes.RuleProvider, err error) { +func parseRuleProviders(cfg *RawConfig) (ruleProviders map[string]P.RuleProvider, err error) { RP.SetTunnel(T.Tunnel) - ruleProviders = map[string]providerTypes.RuleProvider{} + ruleProviders = map[string]P.RuleProvider{} // parse rule provider for name, mapping := range cfg.RuleProvider { rp, err := RP.ParseRuleProvider(name, mapping, R.ParseRule) @@ -987,7 +987,7 @@ func parseRuleProviders(cfg *RawConfig) (ruleProviders map[string]providerTypes. return } -func parseSubRules(cfg *RawConfig, proxies map[string]C.Proxy, ruleProviders map[string]providerTypes.RuleProvider) (subRules map[string][]C.Rule, err error) { +func parseSubRules(cfg *RawConfig, proxies map[string]C.Proxy, ruleProviders map[string]P.RuleProvider) (subRules map[string][]C.Rule, err error) { subRules = map[string][]C.Rule{} for name := range cfg.SubRules { subRules[name] = make([]C.Rule, 0) @@ -1050,7 +1050,7 @@ func verifySubRuleCircularReferences(n string, subRules map[string][]C.Rule, arr return nil } -func parseRules(rulesConfig []string, proxies map[string]C.Proxy, ruleProviders map[string]providerTypes.RuleProvider, subRules map[string][]C.Rule, format string) ([]C.Rule, error) { +func parseRules(rulesConfig []string, proxies map[string]C.Proxy, ruleProviders map[string]P.RuleProvider, subRules map[string][]C.Rule, format string) ([]C.Rule, error) { var rules []C.Rule // parse rules @@ -1273,7 +1273,7 @@ func parsePureDNSServer(server string) string { } } -func parseNameServerPolicy(nsPolicy *orderedmap.OrderedMap[string, any], ruleProviders map[string]providerTypes.RuleProvider, respectRules bool, preferH3 bool) ([]dns.Policy, error) { +func parseNameServerPolicy(nsPolicy *orderedmap.OrderedMap[string, any], ruleProviders map[string]P.RuleProvider, respectRules bool, preferH3 bool) ([]dns.Policy, error) { var policy []dns.Policy for pair := nsPolicy.Oldest(); pair != nil; pair = pair.Next() { @@ -1348,7 +1348,7 @@ func parseNameServerPolicy(nsPolicy *orderedmap.OrderedMap[string, any], rulePro return policy, nil } -func parseDNS(rawCfg *RawConfig, ruleProviders map[string]providerTypes.RuleProvider) (*DNS, error) { +func parseDNS(rawCfg *RawConfig, ruleProviders map[string]P.RuleProvider) (*DNS, error) { cfg := rawCfg.DNS if cfg.Enable && len(cfg.NameServer) == 0 { return nil, fmt.Errorf("if DNS configuration is turned on, NameServer cannot be empty") @@ -1632,7 +1632,7 @@ func parseTuicServer(rawTuic RawTuicServer, general *General) error { return nil } -func parseSniffer(snifferRaw RawSniffer, ruleProviders map[string]providerTypes.RuleProvider) (*sniffer.Config, error) { +func parseSniffer(snifferRaw RawSniffer, ruleProviders map[string]P.RuleProvider) (*sniffer.Config, error) { snifferConfig := &sniffer.Config{ Enable: snifferRaw.Enable, ForceDnsMapping: snifferRaw.ForceDnsMapping, @@ -1722,7 +1722,7 @@ func parseSniffer(snifferRaw RawSniffer, ruleProviders map[string]providerTypes. return snifferConfig, nil } -func parseIPCIDR(addresses []string, cidrSet *cidr.IpCidrSet, adapterName string, ruleProviders map[string]providerTypes.RuleProvider) (matchers []C.IpMatcher, err error) { +func parseIPCIDR(addresses []string, cidrSet *cidr.IpCidrSet, adapterName string, ruleProviders map[string]P.RuleProvider) (matchers []C.IpMatcher, err error) { var matcher C.IpMatcher for _, ipcidr := range addresses { ipcidrLower := strings.ToLower(ipcidr) @@ -1769,7 +1769,7 @@ func parseIPCIDR(addresses []string, cidrSet *cidr.IpCidrSet, adapterName string return } -func parseDomain(domains []string, domainTrie *trie.DomainTrie[struct{}], adapterName string, ruleProviders map[string]providerTypes.RuleProvider) (matchers []C.DomainMatcher, err error) { +func parseDomain(domains []string, domainTrie *trie.DomainTrie[struct{}], adapterName string, ruleProviders map[string]P.RuleProvider) (matchers []C.DomainMatcher, err error) { var matcher C.DomainMatcher for _, domain := range domains { domainLower := strings.ToLower(domain) @@ -1812,14 +1812,14 @@ func parseDomain(domains []string, domainTrie *trie.DomainTrie[struct{}], adapte return } -func parseIPRuleSet(domainSetName string, adapterName string, ruleProviders map[string]providerTypes.RuleProvider) (C.IpMatcher, error) { +func parseIPRuleSet(domainSetName string, adapterName string, ruleProviders map[string]P.RuleProvider) (C.IpMatcher, error) { if rp, ok := ruleProviders[domainSetName]; !ok { return nil, fmt.Errorf("not found rule-set: %s", domainSetName) } else { switch rp.Behavior() { - case providerTypes.Domain: + case P.Domain: return nil, fmt.Errorf("rule provider type error, except ipcidr,actual %s", rp.Behavior()) - case providerTypes.Classical: + case P.Classical: log.Warnln("%s provider is %s, only matching it contain ip rule", rp.Name(), rp.Behavior()) default: } @@ -1827,14 +1827,14 @@ func parseIPRuleSet(domainSetName string, adapterName string, ruleProviders map[ return RP.NewRuleSet(domainSetName, adapterName, false, true) } -func parseDomainRuleSet(domainSetName string, adapterName string, ruleProviders map[string]providerTypes.RuleProvider) (C.DomainMatcher, error) { +func parseDomainRuleSet(domainSetName string, adapterName string, ruleProviders map[string]P.RuleProvider) (C.DomainMatcher, error) { if rp, ok := ruleProviders[domainSetName]; !ok { return nil, fmt.Errorf("not found rule-set: %s", domainSetName) } else { switch rp.Behavior() { - case providerTypes.IPCIDR: + case P.IPCIDR: return nil, fmt.Errorf("rule provider type error, except domain,actual %s", rp.Behavior()) - case providerTypes.Classical: + case P.Classical: log.Warnln("%s provider is %s, only matching it contain domain rule", rp.Name(), rp.Behavior()) default: } diff --git a/hub/executor/executor.go b/hub/executor/executor.go index 66501764..e92a8de4 100644 --- a/hub/executor/executor.go +++ b/hub/executor/executor.go @@ -31,7 +31,7 @@ import ( "github.com/metacubex/mihomo/component/updater" "github.com/metacubex/mihomo/config" C "github.com/metacubex/mihomo/constant" - "github.com/metacubex/mihomo/constant/provider" + P "github.com/metacubex/mihomo/constant/provider" "github.com/metacubex/mihomo/dns" "github.com/metacubex/mihomo/listener" authStore "github.com/metacubex/mihomo/listener/auth" @@ -303,18 +303,18 @@ func updateHosts(tree *trie.DomainTrie[resolver.HostValue]) { resolver.DefaultHosts = resolver.NewHosts(tree) } -func updateProxies(proxies map[string]C.Proxy, providers map[string]provider.ProxyProvider) { +func updateProxies(proxies map[string]C.Proxy, providers map[string]P.ProxyProvider) { tunnel.UpdateProxies(proxies, providers) } -func updateRules(rules []C.Rule, subRules map[string][]C.Rule, ruleProviders map[string]provider.RuleProvider) { +func updateRules(rules []C.Rule, subRules map[string][]C.Rule, ruleProviders map[string]P.RuleProvider) { tunnel.UpdateRules(rules, subRules, ruleProviders) } -func loadProvider[P provider.Provider](providers map[string]P) { - load := func(pv P) { +func loadProvider[T P.Provider](providers map[string]T) { + load := func(pv T) { name := pv.Name() - if pv.VehicleType() == provider.Compatible { + if pv.VehicleType() == P.Compatible { log.Infoln("Start initial compatible provider %s", name) } else { log.Infoln("Start initial provider %s", name) @@ -322,11 +322,11 @@ func loadProvider[P provider.Provider](providers map[string]P) { if err := pv.Initial(); err != nil { switch pv.Type() { - case provider.Proxy: + case P.Proxy: { log.Errorln("initial proxy provider %s error: %v", name, err) } - case provider.Rule: + case P.Rule: { log.Errorln("initial rule provider %s error: %v", name, err) } diff --git a/hub/route/provider.go b/hub/route/provider.go index a8611a79..24b1989e 100644 --- a/hub/route/provider.go +++ b/hub/route/provider.go @@ -5,7 +5,7 @@ import ( "net/http" C "github.com/metacubex/mihomo/constant" - "github.com/metacubex/mihomo/constant/provider" + P "github.com/metacubex/mihomo/constant/provider" "github.com/metacubex/mihomo/tunnel" "github.com/go-chi/chi/v5" @@ -45,12 +45,12 @@ func getProviders(w http.ResponseWriter, r *http.Request) { } func getProvider(w http.ResponseWriter, r *http.Request) { - provider := r.Context().Value(CtxKeyProvider).(provider.ProxyProvider) + provider := r.Context().Value(CtxKeyProvider).(P.ProxyProvider) render.JSON(w, r, provider) } func updateProvider(w http.ResponseWriter, r *http.Request) { - provider := r.Context().Value(CtxKeyProvider).(provider.ProxyProvider) + provider := r.Context().Value(CtxKeyProvider).(P.ProxyProvider) if err := provider.Update(); err != nil { render.Status(r, http.StatusServiceUnavailable) render.JSON(w, r, newError(err.Error())) @@ -60,7 +60,7 @@ func updateProvider(w http.ResponseWriter, r *http.Request) { } func healthCheckProvider(w http.ResponseWriter, r *http.Request) { - provider := r.Context().Value(CtxKeyProvider).(provider.ProxyProvider) + provider := r.Context().Value(CtxKeyProvider).(P.ProxyProvider) provider.HealthCheck() render.NoContent(w, r) } @@ -93,7 +93,7 @@ func findProviderProxyByName(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { var ( name = r.Context().Value(CtxKeyProxyName).(string) - pd = r.Context().Value(CtxKeyProvider).(provider.ProxyProvider) + pd = r.Context().Value(CtxKeyProvider).(P.ProxyProvider) ) proxy, exist := lo.Find(pd.Proxies(), func(proxy C.Proxy) bool { return proxy.Name() == name @@ -128,7 +128,7 @@ func getRuleProviders(w http.ResponseWriter, r *http.Request) { } func updateRuleProvider(w http.ResponseWriter, r *http.Request) { - provider := r.Context().Value(CtxKeyProvider).(provider.RuleProvider) + provider := r.Context().Value(CtxKeyProvider).(P.RuleProvider) if err := provider.Update(); err != nil { render.Status(r, http.StatusServiceUnavailable) render.JSON(w, r, newError(err.Error())) diff --git a/listener/sing_tun/server.go b/listener/sing_tun/server.go index ccd12f42..87f413d4 100644 --- a/listener/sing_tun/server.go +++ b/listener/sing_tun/server.go @@ -18,7 +18,7 @@ import ( "github.com/metacubex/mihomo/component/iface" "github.com/metacubex/mihomo/component/resolver" C "github.com/metacubex/mihomo/constant" - "github.com/metacubex/mihomo/constant/provider" + P "github.com/metacubex/mihomo/constant/provider" LC "github.com/metacubex/mihomo/listener/config" "github.com/metacubex/mihomo/listener/sing" "github.com/metacubex/mihomo/log" @@ -133,7 +133,7 @@ func New(options LC.Tun, tunnel C.Tunnel, additions ...inbound.Addition) (l *Lis } } ctx := context.TODO() - rpTunnel := tunnel.(provider.Tunnel) + rpTunnel := tunnel.(P.Tunnel) if options.GSOMaxSize == 0 { options.GSOMaxSize = 65536 } @@ -504,7 +504,7 @@ func New(options LC.Tun, tunnel C.Tunnel, additions ...inbound.Addition) (l *Lis return } -func (l *Listener) ruleUpdateCallback(ruleProvider provider.RuleProvider) { +func (l *Listener) ruleUpdateCallback(ruleProvider P.RuleProvider) { name := ruleProvider.Name() if slices.Contains(l.options.RouteAddressSet, name) { l.updateRule(ruleProvider, false, true) @@ -520,7 +520,7 @@ type toIpCidr interface { ToIpCidr() *netipx.IPSet } -func (l *Listener) updateRule(ruleProvider provider.RuleProvider, exclude bool, update bool) { +func (l *Listener) updateRule(ruleProvider P.RuleProvider, exclude bool, update bool) { l.ruleUpdateMutex.Lock() defer l.ruleUpdateMutex.Unlock() name := ruleProvider.Name() diff --git a/tunnel/tunnel.go b/tunnel/tunnel.go index 04e3a772..fc901eb3 100644 --- a/tunnel/tunnel.go +++ b/tunnel/tunnel.go @@ -23,7 +23,7 @@ import ( "github.com/metacubex/mihomo/component/sniffer" C "github.com/metacubex/mihomo/constant" "github.com/metacubex/mihomo/constant/features" - "github.com/metacubex/mihomo/constant/provider" + P "github.com/metacubex/mihomo/constant/provider" icontext "github.com/metacubex/mihomo/context" "github.com/metacubex/mihomo/log" "github.com/metacubex/mihomo/tunnel/statistic" @@ -43,8 +43,8 @@ var ( listeners = make(map[string]C.InboundListener) subRules map[string][]C.Rule proxies = make(map[string]C.Proxy) - providers map[string]provider.ProxyProvider - ruleProviders map[string]provider.RuleProvider + providers map[string]P.ProxyProvider + ruleProviders map[string]P.RuleProvider configMux sync.RWMutex // for compatibility, lazy init @@ -64,14 +64,14 @@ var ( snifferDispatcher *sniffer.Dispatcher sniffingEnable = false - ruleUpdateCallback = utils.NewCallback[provider.RuleProvider]() + ruleUpdateCallback = utils.NewCallback[P.RuleProvider]() ) type tunnel struct{} var Tunnel = tunnel{} var _ C.Tunnel = Tunnel -var _ provider.Tunnel = Tunnel +var _ P.Tunnel = Tunnel func (t tunnel) HandleTCPConn(conn net.Conn, metadata *C.Metadata) { connCtx := icontext.NewConnContext(conn, metadata) @@ -112,15 +112,15 @@ func (t tunnel) NatTable() C.NatTable { return natTable } -func (t tunnel) Providers() map[string]provider.ProxyProvider { +func (t tunnel) Providers() map[string]P.ProxyProvider { return providers } -func (t tunnel) RuleProviders() map[string]provider.RuleProvider { +func (t tunnel) RuleProviders() map[string]P.RuleProvider { return ruleProviders } -func (t tunnel) RuleUpdateCallback() *utils.Callback[provider.RuleProvider] { +func (t tunnel) RuleUpdateCallback() *utils.Callback[P.RuleProvider] { return ruleUpdateCallback } @@ -195,7 +195,7 @@ func Listeners() map[string]C.InboundListener { } // UpdateRules handle update rules -func UpdateRules(newRules []C.Rule, newSubRule map[string][]C.Rule, rp map[string]provider.RuleProvider) { +func UpdateRules(newRules []C.Rule, newSubRule map[string][]C.Rule, rp map[string]P.RuleProvider) { configMux.Lock() rules = newRules ruleProviders = rp @@ -223,17 +223,17 @@ func ProxiesWithProviders() map[string]C.Proxy { } // Providers return all compatible providers -func Providers() map[string]provider.ProxyProvider { +func Providers() map[string]P.ProxyProvider { return providers } // RuleProviders return all loaded rule providers -func RuleProviders() map[string]provider.RuleProvider { +func RuleProviders() map[string]P.RuleProvider { return ruleProviders } // UpdateProxies handle update proxies -func UpdateProxies(newProxies map[string]C.Proxy, newProviders map[string]provider.ProxyProvider) { +func UpdateProxies(newProxies map[string]C.Proxy, newProviders map[string]P.ProxyProvider) { configMux.Lock() proxies = newProxies providers = newProviders