chore: Cleanup code

This commit is contained in:
H1JK 2023-11-17 23:12:10 +08:00
parent fef5ad780d
commit 1479b449df
32 changed files with 77 additions and 56 deletions

View file

@ -1,4 +1,4 @@
// +build android,cmfa
//go:build android && cmfa
package outboundgroup

View file

@ -79,7 +79,7 @@ func ParseProxyProvider(name string, mapping map[string]any) (types.ProxyProvide
case "http":
if schema.Path != "" {
path := C.Path.Resolve(schema.Path)
if !features.Contains("cmfa") && !C.Path.IsSafePath(path) {
if !features.CMFA && !C.Path.IsSafePath(path) {
return nil, fmt.Errorf("%w: %s", errSubPath, path)
}
vehicle = resource.NewHTTPVehicle(schema.URL, path)

View file

@ -1,4 +1,4 @@
// +build android,cmfa
//go:build android && cmfa
package provider

View file

@ -71,10 +71,10 @@ func DialContext(ctx context.Context, network, address string, options ...Option
}
func ListenPacket(ctx context.Context, network, address string, options ...Option) (net.PacketConn, error) {
if features.Contains("cmfa") && DefaultSocketHook != nil{
if features.CMFA && DefaultSocketHook != nil {
return listenPacketHooked(ctx, network, address)
}
cfg := applyOptions(options...)
lc := &net.ListenConfig{}
@ -119,10 +119,10 @@ func GetTcpConcurrent() bool {
}
func dialContext(ctx context.Context, network string, destination netip.Addr, port string, opt *option) (net.Conn, error) {
if features.Contains("cmfa") && DefaultSocketHook != nil{
if features.CMFA && DefaultSocketHook != nil {
return dialContextHooked(ctx, network, destination, port)
}
address := net.JoinHostPort(destination.String(), port)
netDialer := opt.netDialer

View file

@ -1,4 +1,4 @@
// +build android,cmfa
//go:build android && cmfa
package dialer

View file

@ -1,4 +1,4 @@
// +build !cmfa
//go:build !(android && cmfa)
package dialer

View file

@ -1,4 +1,4 @@
// +build android,cmfa
//go:build android && cmfa
package mmdb

View file

@ -3,7 +3,6 @@ package process
import (
"errors"
"net/netip"
"github.com/metacubex/mihomo/constant"
)
var (
@ -20,7 +19,3 @@ const (
func FindProcessName(network string, srcIP netip.Addr, srcPort int) (uint32, string, error) {
return findProcessName(network, srcIP, srcPort)
}
func FindPackageName(metadata *constant.Metadata) (string, error) {
return "", nil
}

View file

@ -1,4 +1,4 @@
// +build android,cmfa
//go:build android && cmfa
package process

View file

@ -0,0 +1,9 @@
//go:build !(android && cmfa)
package process
import "github.com/metacubex/mihomo/constant"
func FindPackageName(metadata *constant.Metadata) (string, error) {
return "", nil
}

View file

@ -324,7 +324,7 @@ type RawConfig struct {
RawTLS TLS `yaml:"tls"`
Listeners []map[string]any `yaml:"listeners"`
ClashForAndroid RawClashForAndroid `yaml:"clash-for-android" json:"clash-for-android"`
ClashForAndroid RawClashForAndroid `yaml:"clash-for-android" json:"clash-for-android"`
}
type GeoXUrl struct {
@ -554,7 +554,7 @@ func ParseRawConfig(rawCfg *RawConfig) (*Config, error) {
config.DNS = dnsCfg
err = parseTun(rawCfg.Tun, config.General)
if !features.Contains("cmfa") && err != nil {
if !features.CMFA && err != nil {
return nil, err
}

View file

@ -2,6 +2,4 @@
package features
func init() {
TAGS = append(TAGS, "cmfa")
}
const CMFA = true

View file

@ -0,0 +1,5 @@
//go:build !cmfa
package features
const CMFA = false

View file

@ -2,6 +2,4 @@
package features
func init() {
TAGS = append(TAGS, "with_low_memory")
}
const WithLowMemory = true

View file

@ -0,0 +1,5 @@
//go:build !with_low_memory
package features
const WithLowMemory = false

View file

@ -2,6 +2,4 @@
package features
func init() {
TAGS = append(TAGS, "no_fake_tcp")
}
const NoFakeTCP = true

View file

@ -0,0 +1,5 @@
//go:build !no_fake_tcp
package features
const NoFakeTCP = false

View file

@ -1,11 +1,17 @@
package features
import(
"golang.org/x/exp/slices"
)
var TAGS = make([]string, 0, 0)
func Contains(feat string) (bool) {
return slices.Contains(TAGS, feat)
}
func Tags() (tags []string) {
if CMFA {
tags = append(tags, "cmfa")
}
if WithLowMemory {
tags = append(tags, "with_low_memory")
}
if NoFakeTCP {
tags = append(tags, "no_fake_tcp")
}
if WithGVisor {
tags = append(tags, "with_gvisor")
}
return
}

View file

@ -2,6 +2,4 @@
package features
func init() {
TAGS = append(TAGS, "with_gvisor")
}
const WithGVisor = true

View file

@ -0,0 +1,5 @@
//go:build !with_gvisor
package features
const WithGVisor = false

View file

@ -1,4 +1,4 @@
// +build !cmfa
//go:build !(android && cmfa)
package dns

View file

@ -1,4 +1,4 @@
// +build android,cmfa
//go:build android && cmfa
package dns

View file

@ -1,7 +1,6 @@
// +build !cmfa
//go:build !(android && cmfa)
package dns
func UpdateIsolateHandler(resolver *Resolver, mapper *ResolverEnhancer) {
return
}
}

View file

@ -50,10 +50,10 @@ func (s *Server) SetHandler(handler handler) {
}
func ReCreateServer(addr string, resolver *Resolver, mapper *ResolverEnhancer) {
if features.Contains("cmfa") {
if features.CMFA {
UpdateIsolateHandler(resolver, mapper)
}
if addr == address && resolver != nil {
handler := NewHandler(resolver, mapper)
server.SetHandler(handler)

View file

@ -25,6 +25,7 @@ import (
"github.com/metacubex/mihomo/component/trie"
"github.com/metacubex/mihomo/config"
C "github.com/metacubex/mihomo/constant"
"github.com/metacubex/mihomo/constant/features"
"github.com/metacubex/mihomo/constant/provider"
"github.com/metacubex/mihomo/dns"
"github.com/metacubex/mihomo/listener"
@ -35,7 +36,6 @@ import (
"github.com/metacubex/mihomo/log"
"github.com/metacubex/mihomo/ntp"
"github.com/metacubex/mihomo/tunnel"
"github.com/metacubex/mihomo/constant/features"
)
var mux sync.Mutex
@ -171,7 +171,7 @@ func updateListeners(general *config.General, listeners map[string]C.InboundList
listener.ReCreateHTTP(general.Port, tunnel.Tunnel)
listener.ReCreateSocks(general.SocksPort, tunnel.Tunnel)
listener.ReCreateRedir(general.RedirPort, tunnel.Tunnel)
if !features.Contains("cmfa") {
if !features.CMFA {
listener.ReCreateAutoRedir(general.EBpf.AutoRedir, tunnel.Tunnel)
}
listener.ReCreateTProxy(general.TProxyPort, tunnel.Tunnel)

View file

@ -1,4 +1,4 @@
// +build android,cmfa
//go:build android && cmfa
package http

View file

@ -66,7 +66,7 @@ func NewWithAuthenticate(addr string, tunnel C.Tunnel, authenticate bool, additi
}
continue
}
if features.Contains("cmfa") {
if features.CMFA {
if t, ok := conn.(*net.TCPConn); ok {
t.SetKeepAlive(false)
}

View file

@ -48,8 +48,8 @@ func main() {
if version {
fmt.Printf("Mihomo Meta %s %s %s with %s %s\n",
C.Version, runtime.GOOS, runtime.GOARCH, runtime.Version(), C.BuildTime)
if len(features.TAGS) != 0 {
fmt.Printf("Use tags: %s\n", strings.Join(features.TAGS, ", "))
if tags := features.Tags(); len(tags) != 0 {
fmt.Printf("Use tags: %s\n", strings.Join(tags, ", "))
}
return

View file

@ -63,7 +63,7 @@ func ParseRuleProvider(name string, mapping map[string]interface{}, parse func(t
case "http":
if schema.Path != "" {
path := C.Path.Resolve(schema.Path)
if !features.Contains("cmfa") && !C.Path.IsSafePath(path) {
if !features.CMFA && !C.Path.IsSafePath(path) {
return nil, fmt.Errorf("%w: %s", errSubPath, path)
}
vehicle = resource.NewHTTPVehicle(schema.URL, path)

View file

@ -1,4 +1,4 @@
// +build android,cmfa
//go:build android && cmfa
package provider

View file

@ -1,4 +1,4 @@
// +build android,cmfa
//go:build android && cmfa
package statistic

View file

@ -621,7 +621,7 @@ func match(metadata *C.Metadata) (C.Proxy, C.Rule, error) {
if attemptProcessLookup && !findProcessMode.Off() && (findProcessMode.Always() || rule.ShouldFindProcess()) {
attemptProcessLookup = false
if !features.Contains("cmfa") {
if !features.CMFA {
// normal check for process
uid, path, err := P.FindProcessName(metadata.NetWork.String(), metadata.SrcIP, int(metadata.SrcPort))
if err != nil {