chore: fix sing-tun's BuildAndroidRules
This commit is contained in:
@@ -3,6 +3,7 @@ package sing_tun
|
||||
import (
|
||||
"context"
|
||||
"net/netip"
|
||||
"runtime"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
@@ -25,19 +26,31 @@ var InterfaceName = "Meta"
|
||||
type Listener struct {
|
||||
closed bool
|
||||
options config.Tun
|
||||
handler tun.Handler
|
||||
handler *ListenerHandler
|
||||
|
||||
tunIf tun.Tun
|
||||
tunStack tun.Stack
|
||||
|
||||
networkUpdateMonitor tun.NetworkUpdateMonitor
|
||||
defaultInterfaceMonitor tun.DefaultInterfaceMonitor
|
||||
packageManager tun.PackageManager
|
||||
}
|
||||
|
||||
func CalculateInterfaceName(name string) (tunName string) {
|
||||
if runtime.GOOS == "darwin" {
|
||||
tunName = "utun"
|
||||
} else if name != "" {
|
||||
tunName = name
|
||||
} else {
|
||||
tunName = "tun"
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func New(options config.Tun, tcpIn chan<- C.ConnContext, udpIn chan<- *inbound.PacketAdapter) (l *Listener, err error) {
|
||||
tunName := options.Device
|
||||
if tunName == "" {
|
||||
tunName = tun.CalculateInterfaceName(InterfaceName)
|
||||
tunName = CalculateInterfaceName(InterfaceName)
|
||||
}
|
||||
tunMTU := options.MTU
|
||||
if tunMTU == 0 {
|
||||
@@ -157,9 +170,11 @@ func New(options config.Tun, tcpIn chan<- C.ConnContext, udpIn chan<- *inbound.P
|
||||
TableIndex: 2022,
|
||||
}
|
||||
|
||||
//if C.IsAndroid {
|
||||
// t.tunOptions.BuildAndroidRules(t.router.PackageManager(), t)
|
||||
//}
|
||||
err = l.buildAndroidRules(&tunOptions)
|
||||
if err != nil {
|
||||
err = E.Cause(err, "build android rules")
|
||||
return
|
||||
}
|
||||
tunIf, err := tun.Open(tunOptions)
|
||||
if err != nil {
|
||||
err = E.Cause(err, "configure tun interface")
|
||||
@@ -229,6 +244,7 @@ func (l *Listener) Close() {
|
||||
l.tunIf,
|
||||
l.defaultInterfaceMonitor,
|
||||
l.networkUpdateMonitor,
|
||||
l.packageManager,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
23
listener/sing_tun/server_android.go
Normal file
23
listener/sing_tun/server_android.go
Normal file
@@ -0,0 +1,23 @@
|
||||
package sing_tun
|
||||
|
||||
import (
|
||||
tun "github.com/sagernet/sing-tun"
|
||||
)
|
||||
|
||||
func (l *Listener) buildAndroidRules(tunOptions *tun.Options) error {
|
||||
packageManager, err := tun.NewPackageManager(l.handler)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = packageManager.Start()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
l.packageManager = packageManager
|
||||
tunOptions.BuildAndroidRules(packageManager, l.handler)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *ListenerHandler) OnPackagesUpdated(packages int, sharedUsers int) {
|
||||
return
|
||||
}
|
||||
11
listener/sing_tun/server_other.go
Normal file
11
listener/sing_tun/server_other.go
Normal file
@@ -0,0 +1,11 @@
|
||||
//go:build !android
|
||||
|
||||
package sing_tun
|
||||
|
||||
import (
|
||||
tun "github.com/sagernet/sing-tun"
|
||||
)
|
||||
|
||||
func (l *Listener) buildAndroidRules(tunOptions *tun.Options) error {
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user