diff --git a/buildScript/lib/core/get_source_env.sh b/buildScript/lib/core/get_source_env.sh index 33c7f8c..6809fa7 100644 --- a/buildScript/lib/core/get_source_env.sh +++ b/buildScript/lib/core/get_source_env.sh @@ -1,5 +1,5 @@ if [ ! -z $ENV_NB4A ]; then - export COMMIT_SING_BOX_EXTRA="3c5d4ae9b771f216bc0eeabdf19d840c77e29858" + export COMMIT_SING_BOX_EXTRA="70387142a28f10663b847988306ff6899fce0176" fi if [ ! -z $ENV_SING_BOX_EXTRA ]; then diff --git a/libcore/dns.go b/libcore/dns.go deleted file mode 100644 index bf516a8..0000000 --- a/libcore/dns.go +++ /dev/null @@ -1,114 +0,0 @@ -//go:build android - -package libcore - -import ( - "context" - "log" - "net" - "net/netip" - "strconv" - "strings" - "time" - - "github.com/miekg/dns" - D "github.com/sagernet/sing-dns" - "github.com/sagernet/sing/common/logger" - N "github.com/sagernet/sing/common/network" -) - -func init() { - D.RegisterTransport([]string{"underlying"}, createUnderlyingTransport) -} - -func createUnderlyingTransport(name string, ctx context.Context, logger logger.ContextLogger, dialer N.Dialer, link string) (D.Transport, error) { - return &androidUnderlyingTransportSing{name, underlyingResolver}, nil -} - -type androidUnderlyingTransportSing struct { - name string - *androidUnderlyingTransport -} - -func (t *androidUnderlyingTransportSing) Name() string { return t.name } - -// - -var systemResolver = &net.Resolver{PreferGo: false} // Using System API, lookup from current network. -var underlyingResolver = &androidUnderlyingTransport{} // Using System API, lookup from non-VPN network. - -type androidUnderlyingTransport struct{} - -func (t *androidUnderlyingTransport) Start() error { return nil } -func (t *androidUnderlyingTransport) Close() error { return nil } -func (t *androidUnderlyingTransport) Raw() bool { return false } -func (t *androidUnderlyingTransport) Exchange(ctx context.Context, message *dns.Msg) (*dns.Msg, error) { - return nil, D.ErrNoRawSupport -} - -func (t *androidUnderlyingTransport) Lookup(ctx context.Context, domain string, strategy D.DomainStrategy) (ips []netip.Addr, err error) { - isSekai := localResolver != nil - - var cancel context.CancelFunc - ctx, cancel = context.WithTimeout(ctx, time.Second*5) - ok := make(chan interface{}) - defer cancel() - - go func() { - defer func() { - select { - case <-ctx.Done(): - default: - ok <- nil - } - close(ok) - }() - - var network, str string - if strategy == D.DomainStrategyUseIPv4 { - network = "ip4" - } else if strategy == D.DomainStrategyUseIPv6 { - network = "ip6" - } else { - network = "ip" - } - - if isSekai { - str, err = localResolver.LookupIP(network, domain) - // java -> go - if err != nil { - rcode, err2 := strconv.Atoi(err.Error()) - if err2 == nil { - err = D.RCodeError(rcode) - } - return - } else if str == "" { - err = D.RCodeNameError - return - } - ips = make([]netip.Addr, 0) - for _, ip := range strings.Split(str, ",") { - ips = append(ips, netip.MustParseAddr(ip)) - } - } else { - ips2, err2 := systemResolver.LookupIP(context.Background(), network, domain) - if err2 != nil { - err = err2 - return - } - for _, ip2 := range ips2 { - if ip, ok := netip.AddrFromSlice(ip2); ok { - ips = append(ips, ip) - } - } - } - }() - - select { - case <-ctx.Done(): - log.Printf("underlyingResolver: context cancelled! (sekai=%t)\n", isSekai) - return nil, D.RCodeServerFailure - case <-ok: - return - } -} diff --git a/libcore/dns_box.go b/libcore/dns_box.go index 7a730e0..2e25c43 100644 --- a/libcore/dns_box.go +++ b/libcore/dns_box.go @@ -51,6 +51,9 @@ func (p *platformLocalDNSTransport) Start() error { return nil } +func (p *platformLocalDNSTransport) Reset() { +} + func (p *platformLocalDNSTransport) Close() error { return nil } diff --git a/libcore/go.mod b/libcore/go.mod index 3970653..ffd4e4f 100644 --- a/libcore/go.mod +++ b/libcore/go.mod @@ -7,9 +7,9 @@ require ( github.com/matsuridayo/libneko v1.0.0 // replaced github.com/matsuridayo/sing-box-extra v1.0.0 // replaced github.com/miekg/dns v1.1.55 - github.com/sagernet/sing v0.2.10-0.20230821073500-620f3a3b882d + github.com/sagernet/sing v0.2.10-0.20230824115837-8d731e68853a github.com/sagernet/sing-box v1.0.0 // replaced - github.com/sagernet/sing-dns v0.1.9-0.20230731012726-ad50da89b659 + github.com/sagernet/sing-dns v0.1.9-0.20230824120133-4d5cbceb40c1 github.com/sagernet/sing-tun v0.1.12-0.20230821065522-7545dc2d5641 github.com/ulikunitz/xz v0.5.10 golang.org/x/mobile v0.0.0-20220722155234-aaac322e2105 @@ -53,12 +53,12 @@ require ( github.com/pierrec/lz4/v4 v4.1.14 // indirect github.com/pires/go-proxyproto v0.7.0 // indirect github.com/quic-go/qpack v0.4.0 // indirect - github.com/quic-go/qtls-go1-20 v0.3.2 // indirect + github.com/quic-go/qtls-go1-20 v0.3.3 // indirect github.com/sagernet/cloudflare-tls v0.0.0-20221031050923-d70792f4c3a0 // indirect github.com/sagernet/go-tun2socks v1.16.12-0.20220818015926-16cb67876a61 // indirect github.com/sagernet/gvisor v0.0.0-20230627031050-1ab0276e0dd2 // indirect github.com/sagernet/netlink v0.0.0-20220905062125-8043b4a9aa97 // indirect - github.com/sagernet/quic-go v0.0.0-20230824033040-30ef72e3be3e // indirect + github.com/sagernet/quic-go v0.0.0-20230825040534-0cd917b2ddda // indirect github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691 // indirect github.com/sagernet/sing-mux v0.1.3-0.20230811111955-dc1639b5204c // indirect github.com/sagernet/sing-shadowsocks v0.2.4 // indirect @@ -79,7 +79,7 @@ require ( go.etcd.io/bbolt v1.3.7 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.25.0 // indirect - go4.org/netipx v0.0.0-20230728184502-ec4c8b891b28 // indirect + go4.org/netipx v0.0.0-20230824141953-6213f710f925 // indirect golang.org/x/crypto v0.12.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/mod v0.12.0 // indirect diff --git a/libcore/go.sum b/libcore/go.sum index 4bdbf9f..cbebc31 100644 --- a/libcore/go.sum +++ b/libcore/go.sum @@ -98,8 +98,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= -github.com/quic-go/qtls-go1-20 v0.3.2 h1:rRgN3WfnKbyik4dBV8A6girlJVxGand/d+jVKbQq5GI= -github.com/quic-go/qtls-go1-20 v0.3.2/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= +github.com/quic-go/qtls-go1-20 v0.3.3 h1:17/glZSLI9P9fDAeyCHBFSWSqJcwx1byhLwP5eUIDCM= +github.com/quic-go/qtls-go1-20 v0.3.3/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sagernet/cloudflare-tls v0.0.0-20221031050923-d70792f4c3a0 h1:KyhtFFt1Jtp5vW2ohNvstvQffTOQ/s5vENuGXzdA+TM= github.com/sagernet/cloudflare-tls v0.0.0-20221031050923-d70792f4c3a0/go.mod h1:D4SFEOkJK+4W1v86ZhX0jPM0rAL498fyQAChqMtes/I= @@ -109,16 +109,16 @@ github.com/sagernet/gvisor v0.0.0-20230627031050-1ab0276e0dd2 h1:dnkKrzapqtAwjTS github.com/sagernet/gvisor v0.0.0-20230627031050-1ab0276e0dd2/go.mod h1:1JUiV7nGuf++YFm9eWZ8q2lrwHmhcUGzptMl/vL1+LA= github.com/sagernet/netlink v0.0.0-20220905062125-8043b4a9aa97 h1:iL5gZI3uFp0X6EslacyapiRz7LLSJyr4RajF/BhMVyE= github.com/sagernet/netlink v0.0.0-20220905062125-8043b4a9aa97/go.mod h1:xLnfdiJbSp8rNqYEdIW/6eDO4mVoogml14Bh2hSiFpM= -github.com/sagernet/quic-go v0.0.0-20230824033040-30ef72e3be3e h1:URg7GQT9Mp0b6m/LXH1NgVT3P/ybVomvy2kkfA6QIHQ= -github.com/sagernet/quic-go v0.0.0-20230824033040-30ef72e3be3e/go.mod h1:7DXnweBVxZ7CQWsCdc7QAAQ65dFPEtenfz+w6WDESlI= +github.com/sagernet/quic-go v0.0.0-20230825040534-0cd917b2ddda h1:7J/hnOFqCThiCrVpvr0wKO+Dic/XPSulPr5yI8FVJMs= +github.com/sagernet/quic-go v0.0.0-20230825040534-0cd917b2ddda/go.mod h1:Iw8Tt3dMqC/61cMHa0nN5i/958oYuuMnQCMOSPx+xcg= github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691 h1:5Th31OC6yj8byLGkEnIYp6grlXfo1QYUfiYFGjewIdc= github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691/go.mod h1:B8lp4WkQ1PwNnrVMM6KyuFR20pU8jYBD+A4EhJovEXU= github.com/sagernet/sing v0.0.0-20220817130738-ce854cda8522/go.mod h1:QVsS5L/ZA2Q5UhQwLrn0Trw+msNd/NPGEhBKR/ioWiY= github.com/sagernet/sing v0.1.8/go.mod h1:jt1w2u7lJQFFSGLiRrRIs5YWmx4kAPfWuOejuDW9qMk= -github.com/sagernet/sing v0.2.10-0.20230821073500-620f3a3b882d h1:4kgoOCE48CuQcBUcoRnE0QTPXkl8yM8i7Nipmzp/978= -github.com/sagernet/sing v0.2.10-0.20230821073500-620f3a3b882d/go.mod h1:9uOZwWkhT2Z2WldolLxX34s+1svAX4i4vvz5hy8u1MA= -github.com/sagernet/sing-dns v0.1.9-0.20230731012726-ad50da89b659 h1:1DAKccGNqTYJ8nsBR765FS0LVBVXfuFlFAHqKsGN3EI= -github.com/sagernet/sing-dns v0.1.9-0.20230731012726-ad50da89b659/go.mod h1:W7GHTZFS8RkoLI3bA2LFY27/0E+uoQESWtMFLepO/JA= +github.com/sagernet/sing v0.2.10-0.20230824115837-8d731e68853a h1:eV4HEz9NP7eAlQ/IHD6OF2VVM6ke4Vw6htuSAsvgtDk= +github.com/sagernet/sing v0.2.10-0.20230824115837-8d731e68853a/go.mod h1:9uOZwWkhT2Z2WldolLxX34s+1svAX4i4vvz5hy8u1MA= +github.com/sagernet/sing-dns v0.1.9-0.20230824120133-4d5cbceb40c1 h1:5w+jXz8y/8UQAxO74TjftN5okYkpg5mGvVxXunlKdqI= +github.com/sagernet/sing-dns v0.1.9-0.20230824120133-4d5cbceb40c1/go.mod h1:Kg98PBJEg/08jsNFtmZWmPomhskn9Ausn50ecNm4M+8= github.com/sagernet/sing-mux v0.1.3-0.20230811111955-dc1639b5204c h1:35/FowAvt3Z62mck0TXzVc4jS5R5CWq62qcV2P1cp0I= github.com/sagernet/sing-mux v0.1.3-0.20230811111955-dc1639b5204c/go.mod h1:TKxqIvfQQgd36jp2tzsPavGjYTVZilV+atip1cssjIY= github.com/sagernet/sing-shadowsocks v0.2.4 h1:s/CqXlvFAZhlIoHWUwPw5CoNnQ9Ibki9pckjuugtVfY= @@ -173,8 +173,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c= go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk= -go4.org/netipx v0.0.0-20230728184502-ec4c8b891b28 h1:zLxFnORHDFTSkJPawMU7LzsuGQJ4MUFS653jJHpORow= -go4.org/netipx v0.0.0-20230728184502-ec4c8b891b28/go.mod h1:TQvodOM+hJTioNQJilmLXu08JNb8i+ccq418+KWu1/Y= +go4.org/netipx v0.0.0-20230824141953-6213f710f925 h1:eeQDDVKFkx0g4Hyy8pHgmZaK0EqB4SD6rvKbUdN3ziQ= +go4.org/netipx v0.0.0-20230824141953-6213f710f925/go.mod h1:PLyyIXexvUFg3Owu6p/WfdlivPbZJsZdgWZlrGope/Y= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= diff --git a/libcore/platform_box.go b/libcore/platform_box.go index 55ca7c0..4546149 100644 --- a/libcore/platform_box.go +++ b/libcore/platform_box.go @@ -65,6 +65,10 @@ func (w *boxPlatformInterfaceWrapper) OpenTun(options *tun.Options, platformOpti return tun.New(*options) } +func (w *boxPlatformInterfaceWrapper) CloseTun() error { + return nil +} + func (w *boxPlatformInterfaceWrapper) UsePlatformDefaultInterfaceMonitor() bool { return true } @@ -81,10 +85,15 @@ func (w *boxPlatformInterfaceWrapper) Interfaces() ([]platform.NetworkInterface, return nil, errors.New("wtf") } +// Android not using + func (w *boxPlatformInterfaceWrapper) UnderNetworkExtension() bool { return false } +func (w *boxPlatformInterfaceWrapper) ClearDNSCache() { +} + // process.Searcher func (w *boxPlatformInterfaceWrapper) FindProcessInfo(ctx context.Context, network string, source netip.AddrPort, destination netip.AddrPort) (*process.Info, error) {