diff --git a/config/config.go b/config/config.go index 5f5b0c05..1f5f35da 100644 --- a/config/config.go +++ b/config/config.go @@ -20,7 +20,7 @@ import ( "github.com/metacubex/mihomo/component/cidr" "github.com/metacubex/mihomo/component/fakeip" "github.com/metacubex/mihomo/component/geodata" - P "github.com/metacubex/mihomo/component/process" + "github.com/metacubex/mihomo/component/process" "github.com/metacubex/mihomo/component/resolver" "github.com/metacubex/mihomo/component/sniffer" "github.com/metacubex/mihomo/component/trie" @@ -44,27 +44,27 @@ import ( // General config type General struct { Inbound - Mode T.TunnelMode `json:"mode"` - UnifiedDelay bool `json:"unified-delay"` - LogLevel log.LogLevel `json:"log-level"` - IPv6 bool `json:"ipv6"` - Interface string `json:"interface-name"` - RoutingMark int `json:"routing-mark"` - GeoXUrl GeoXUrl `json:"geox-url"` - GeoAutoUpdate bool `json:"geo-auto-update"` - GeoUpdateInterval int `json:"geo-update-interval"` - GeodataMode bool `json:"geodata-mode"` - GeodataLoader string `json:"geodata-loader"` - GeositeMatcher string `json:"geosite-matcher"` - TCPConcurrent bool `json:"tcp-concurrent"` - FindProcessMode P.FindProcessMode `json:"find-process-mode"` - Sniffing bool `json:"sniffing"` - GlobalClientFingerprint string `json:"global-client-fingerprint"` - GlobalUA string `json:"global-ua"` - ETagSupport bool `json:"etag-support"` - KeepAliveIdle int `json:"keep-alive-idle"` - KeepAliveInterval int `json:"keep-alive-interval"` - DisableKeepAlive bool `json:"disable-keep-alive"` + Mode T.TunnelMode `json:"mode"` + UnifiedDelay bool `json:"unified-delay"` + LogLevel log.LogLevel `json:"log-level"` + IPv6 bool `json:"ipv6"` + Interface string `json:"interface-name"` + RoutingMark int `json:"routing-mark"` + GeoXUrl GeoXUrl `json:"geox-url"` + GeoAutoUpdate bool `json:"geo-auto-update"` + GeoUpdateInterval int `json:"geo-update-interval"` + GeodataMode bool `json:"geodata-mode"` + GeodataLoader string `json:"geodata-loader"` + GeositeMatcher string `json:"geosite-matcher"` + TCPConcurrent bool `json:"tcp-concurrent"` + FindProcessMode process.FindProcessMode `json:"find-process-mode"` + Sniffing bool `json:"sniffing"` + GlobalClientFingerprint string `json:"global-client-fingerprint"` + GlobalUA string `json:"global-ua"` + ETagSupport bool `json:"etag-support"` + KeepAliveIdle int `json:"keep-alive-idle"` + KeepAliveInterval int `json:"keep-alive-interval"` + DisableKeepAlive bool `json:"disable-keep-alive"` } // Inbound config @@ -382,51 +382,51 @@ type RawTLS struct { } type RawConfig struct { - Port int `yaml:"port" json:"port"` - SocksPort int `yaml:"socks-port" json:"socks-port"` - RedirPort int `yaml:"redir-port" json:"redir-port"` - TProxyPort int `yaml:"tproxy-port" json:"tproxy-port"` - MixedPort int `yaml:"mixed-port" json:"mixed-port"` - ShadowSocksConfig string `yaml:"ss-config" json:"ss-config"` - VmessConfig string `yaml:"vmess-config" json:"vmess-config"` - InboundTfo bool `yaml:"inbound-tfo" json:"inbound-tfo"` - InboundMPTCP bool `yaml:"inbound-mptcp" json:"inbound-mptcp"` - Authentication []string `yaml:"authentication" json:"authentication"` - SkipAuthPrefixes []netip.Prefix `yaml:"skip-auth-prefixes" json:"skip-auth-prefixes"` - LanAllowedIPs []netip.Prefix `yaml:"lan-allowed-ips" json:"lan-allowed-ips"` - LanDisAllowedIPs []netip.Prefix `yaml:"lan-disallowed-ips" json:"lan-disallowed-ips"` - AllowLan bool `yaml:"allow-lan" json:"allow-lan"` - BindAddress string `yaml:"bind-address" json:"bind-address"` - Mode T.TunnelMode `yaml:"mode" json:"mode"` - UnifiedDelay bool `yaml:"unified-delay" json:"unified-delay"` - LogLevel log.LogLevel `yaml:"log-level" json:"log-level"` - IPv6 bool `yaml:"ipv6" json:"ipv6"` - ExternalController string `yaml:"external-controller" json:"external-controller"` - ExternalControllerPipe string `yaml:"external-controller-pipe" json:"external-controller-pipe"` - ExternalControllerUnix string `yaml:"external-controller-unix" json:"external-controller-unix"` - ExternalControllerTLS string `yaml:"external-controller-tls" json:"external-controller-tls"` - ExternalControllerCors RawCors `yaml:"external-controller-cors" json:"external-controller-cors"` - ExternalUI string `yaml:"external-ui" json:"external-ui"` - ExternalUIURL string `yaml:"external-ui-url" json:"external-ui-url"` - ExternalUIName string `yaml:"external-ui-name" json:"external-ui-name"` - ExternalDohServer string `yaml:"external-doh-server" json:"external-doh-server"` - Secret string `yaml:"secret" json:"secret"` - Interface string `yaml:"interface-name" json:"interface-name"` - RoutingMark int `yaml:"routing-mark" json:"routing-mark"` - Tunnels []LC.Tunnel `yaml:"tunnels" json:"tunnels"` - GeoAutoUpdate bool `yaml:"geo-auto-update" json:"geo-auto-update"` - GeoUpdateInterval int `yaml:"geo-update-interval" json:"geo-update-interval"` - GeodataMode bool `yaml:"geodata-mode" json:"geodata-mode"` - GeodataLoader string `yaml:"geodata-loader" json:"geodata-loader"` - GeositeMatcher string `yaml:"geosite-matcher" json:"geosite-matcher"` - TCPConcurrent bool `yaml:"tcp-concurrent" json:"tcp-concurrent"` - FindProcessMode P.FindProcessMode `yaml:"find-process-mode" json:"find-process-mode"` - GlobalClientFingerprint string `yaml:"global-client-fingerprint" json:"global-client-fingerprint"` - GlobalUA string `yaml:"global-ua" json:"global-ua"` - ETagSupport bool `yaml:"etag-support" json:"etag-support"` - KeepAliveIdle int `yaml:"keep-alive-idle" json:"keep-alive-idle"` - KeepAliveInterval int `yaml:"keep-alive-interval" json:"keep-alive-interval"` - DisableKeepAlive bool `yaml:"disable-keep-alive" json:"disable-keep-alive"` + Port int `yaml:"port" json:"port"` + SocksPort int `yaml:"socks-port" json:"socks-port"` + RedirPort int `yaml:"redir-port" json:"redir-port"` + TProxyPort int `yaml:"tproxy-port" json:"tproxy-port"` + MixedPort int `yaml:"mixed-port" json:"mixed-port"` + ShadowSocksConfig string `yaml:"ss-config" json:"ss-config"` + VmessConfig string `yaml:"vmess-config" json:"vmess-config"` + InboundTfo bool `yaml:"inbound-tfo" json:"inbound-tfo"` + InboundMPTCP bool `yaml:"inbound-mptcp" json:"inbound-mptcp"` + Authentication []string `yaml:"authentication" json:"authentication"` + SkipAuthPrefixes []netip.Prefix `yaml:"skip-auth-prefixes" json:"skip-auth-prefixes"` + LanAllowedIPs []netip.Prefix `yaml:"lan-allowed-ips" json:"lan-allowed-ips"` + LanDisAllowedIPs []netip.Prefix `yaml:"lan-disallowed-ips" json:"lan-disallowed-ips"` + AllowLan bool `yaml:"allow-lan" json:"allow-lan"` + BindAddress string `yaml:"bind-address" json:"bind-address"` + Mode T.TunnelMode `yaml:"mode" json:"mode"` + UnifiedDelay bool `yaml:"unified-delay" json:"unified-delay"` + LogLevel log.LogLevel `yaml:"log-level" json:"log-level"` + IPv6 bool `yaml:"ipv6" json:"ipv6"` + ExternalController string `yaml:"external-controller" json:"external-controller"` + ExternalControllerPipe string `yaml:"external-controller-pipe" json:"external-controller-pipe"` + ExternalControllerUnix string `yaml:"external-controller-unix" json:"external-controller-unix"` + ExternalControllerTLS string `yaml:"external-controller-tls" json:"external-controller-tls"` + ExternalControllerCors RawCors `yaml:"external-controller-cors" json:"external-controller-cors"` + ExternalUI string `yaml:"external-ui" json:"external-ui"` + ExternalUIURL string `yaml:"external-ui-url" json:"external-ui-url"` + ExternalUIName string `yaml:"external-ui-name" json:"external-ui-name"` + ExternalDohServer string `yaml:"external-doh-server" json:"external-doh-server"` + Secret string `yaml:"secret" json:"secret"` + Interface string `yaml:"interface-name" json:"interface-name"` + RoutingMark int `yaml:"routing-mark" json:"routing-mark"` + Tunnels []LC.Tunnel `yaml:"tunnels" json:"tunnels"` + GeoAutoUpdate bool `yaml:"geo-auto-update" json:"geo-auto-update"` + GeoUpdateInterval int `yaml:"geo-update-interval" json:"geo-update-interval"` + GeodataMode bool `yaml:"geodata-mode" json:"geodata-mode"` + GeodataLoader string `yaml:"geodata-loader" json:"geodata-loader"` + GeositeMatcher string `yaml:"geosite-matcher" json:"geosite-matcher"` + TCPConcurrent bool `yaml:"tcp-concurrent" json:"tcp-concurrent"` + FindProcessMode process.FindProcessMode `yaml:"find-process-mode" json:"find-process-mode"` + GlobalClientFingerprint string `yaml:"global-client-fingerprint" json:"global-client-fingerprint"` + GlobalUA string `yaml:"global-ua" json:"global-ua"` + ETagSupport bool `yaml:"etag-support" json:"etag-support"` + KeepAliveIdle int `yaml:"keep-alive-idle" json:"keep-alive-idle"` + KeepAliveInterval int `yaml:"keep-alive-interval" json:"keep-alive-interval"` + DisableKeepAlive bool `yaml:"disable-keep-alive" json:"disable-keep-alive"` ProxyProvider map[string]map[string]any `yaml:"proxy-providers" json:"proxy-providers"` RuleProvider map[string]map[string]any `yaml:"rule-providers" json:"rule-providers"` @@ -479,7 +479,7 @@ func DefaultRawConfig() *RawConfig { Proxy: []map[string]any{}, ProxyGroup: []map[string]any{}, TCPConcurrent: false, - FindProcessMode: P.FindProcessStrict, + FindProcessMode: process.FindProcessStrict, GlobalUA: "clash.meta/" + C.Version, ETagSupport: true, DNS: RawDNS{ diff --git a/tunnel/tunnel.go b/tunnel/tunnel.go index 4ad6e736..04e3a772 100644 --- a/tunnel/tunnel.go +++ b/tunnel/tunnel.go @@ -17,7 +17,7 @@ import ( "github.com/metacubex/mihomo/common/utils" "github.com/metacubex/mihomo/component/loopback" "github.com/metacubex/mihomo/component/nat" - P "github.com/metacubex/mihomo/component/process" + "github.com/metacubex/mihomo/component/process" "github.com/metacubex/mihomo/component/resolver" "github.com/metacubex/mihomo/component/slowdown" "github.com/metacubex/mihomo/component/sniffer" @@ -59,7 +59,7 @@ var ( // default timeout for UDP session udpTimeout = 60 * time.Second - findProcessMode = atomic.NewInt32Enum(P.FindProcessStrict) + findProcessMode = atomic.NewInt32Enum(process.FindProcessStrict) snifferDispatcher *sniffer.Dispatcher sniffingEnable = false @@ -263,13 +263,13 @@ func SetMode(m TunnelMode) { mode = m } -func FindProcessMode() P.FindProcessMode { +func FindProcessMode() process.FindProcessMode { return findProcessMode.Load() } // SetFindProcessMode replace SetAlwaysFindProcess // always find process info if legacyAlways = true or mode.Always() = true, may be increase many memory -func SetFindProcessMode(mode P.FindProcessMode) { +func SetFindProcessMode(mode process.FindProcessMode) { findProcessMode.Store(mode) } @@ -358,7 +358,7 @@ func resolveMetadata(metadata *C.Metadata) (proxy C.Proxy, rule C.Rule, err erro attemptProcessLookup = false if !features.CMFA { // normal check for process - uid, path, err := P.FindProcessName(metadata.NetWork.String(), metadata.SrcIP, int(metadata.SrcPort)) + uid, path, err := process.FindProcessName(metadata.NetWork.String(), metadata.SrcIP, int(metadata.SrcPort)) if err != nil { log.Debugln("[Process] find process error for %s: %v", metadata.String(), err) } else { @@ -366,13 +366,13 @@ func resolveMetadata(metadata *C.Metadata) (proxy C.Proxy, rule C.Rule, err erro metadata.ProcessPath = path metadata.Uid = uid - if pkg, err := P.FindPackageName(metadata); err == nil { // for android (not CMFA) package names + if pkg, err := process.FindPackageName(metadata); err == nil { // for android (not CMFA) package names metadata.Process = pkg } } } else { // check package names - pkg, err := P.FindPackageName(metadata) + pkg, err := process.FindPackageName(metadata) if err != nil { log.Debugln("[Process] find process error for %s: %v", metadata.String(), err) } else { @@ -384,10 +384,10 @@ func resolveMetadata(metadata *C.Metadata) (proxy C.Proxy, rule C.Rule, err erro } switch FindProcessMode() { - case P.FindProcessAlways: + case process.FindProcessAlways: helper.FindProcess() helper.FindProcess = nil - case P.FindProcessOff: + case process.FindProcessOff: helper.FindProcess = nil }