From 4193df375f69899cf24fe13892b7d963f7d88c1c Mon Sep 17 00:00:00 2001 From: Fei1Yang Date: Mon, 27 May 2024 06:13:30 +0000 Subject: [PATCH 01/21] build: Remove vendor in RPM packages --- .goreleaser.fury.yaml | 1 - .goreleaser.yaml | 1 - 2 files changed, 2 deletions(-) diff --git a/.goreleaser.fury.yaml b/.goreleaser.fury.yaml index cd72db1468..831595d36d 100644 --- a/.goreleaser.fury.yaml +++ b/.goreleaser.fury.yaml @@ -36,7 +36,6 @@ nfpms: file_name_template: '{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ with .Arm }}v{{ . }}{{ end }}{{ with .Mips }}_{{ . }}{{ end }}{{ if not (eq .Amd64 "v1") }}{{ .Amd64 }}{{ end }}' builds: - main - vendor: sagernet homepage: https://sing-box.sagernet.org/ maintainer: nekohasekai description: The universal proxy platform. diff --git a/.goreleaser.yaml b/.goreleaser.yaml index d90f660061..64c23c9d3e 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -113,7 +113,6 @@ nfpms: file_name_template: '{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ with .Arm }}v{{ . }}{{ end }}{{ with .Mips }}_{{ . }}{{ end }}{{ if not (eq .Amd64 "v1") }}{{ .Amd64 }}{{ end }}' builds: - main - vendor: sagernet homepage: https://sing-box.sagernet.org/ maintainer: nekohasekai description: The universal proxy platform. From 69dc87aa6d27a24ace82d4d786f882544e093b27 Mon Sep 17 00:00:00 2001 From: lgjint <78463565+lgjint@users.noreply.github.com> Date: Sat, 1 Jun 2024 14:48:26 +0800 Subject: [PATCH 02/21] Fix set KDE6 system proxy --- common/settings/proxy_linux.go | 48 ++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/common/settings/proxy_linux.go b/common/settings/proxy_linux.go index 4211b2f88d..84e27b123b 100644 --- a/common/settings/proxy_linux.go +++ b/common/settings/proxy_linux.go @@ -16,30 +16,40 @@ import ( ) type LinuxSystemProxy struct { - hasGSettings bool - hasKWriteConfig5 bool - sudoUser string - serverAddr M.Socksaddr - supportSOCKS bool - isEnabled bool + hasGSettings bool + kWriteConfigCmd string + sudoUser string + serverAddr M.Socksaddr + supportSOCKS bool + isEnabled bool } func NewSystemProxy(ctx context.Context, serverAddr M.Socksaddr, supportSOCKS bool) (*LinuxSystemProxy, error) { hasGSettings := common.Error(exec.LookPath("gsettings")) == nil - hasKWriteConfig5 := common.Error(exec.LookPath("kwriteconfig5")) == nil + kWriteConfigCmds := []string{ + "kwriteconfig5", + "kwriteconfig6", + } + var kWriteConfigCmd string + for _, cmd := range kWriteConfigCmds { + if common.Error(exec.LookPath(cmd)) == nil { + kWriteConfigCmd = cmd + break + } + } var sudoUser string if os.Getuid() == 0 { sudoUser = os.Getenv("SUDO_USER") } - if !hasGSettings && !hasKWriteConfig5 { + if !hasGSettings && kWriteConfigCmd == "" { return nil, E.New("unsupported desktop environment") } return &LinuxSystemProxy{ - hasGSettings: hasGSettings, - hasKWriteConfig5: hasKWriteConfig5, - sudoUser: sudoUser, - serverAddr: serverAddr, - supportSOCKS: supportSOCKS, + hasGSettings: hasGSettings, + kWriteConfigCmd: kWriteConfigCmd, + sudoUser: sudoUser, + serverAddr: serverAddr, + supportSOCKS: supportSOCKS, }, nil } @@ -70,8 +80,8 @@ func (p *LinuxSystemProxy) Enable() error { return err } } - if p.hasKWriteConfig5 { - err := p.runAsUser("kwriteconfig5", "--file", "kioslaverc", "--group", "Proxy Settings", "--key", "ProxyType", "1") + if p.kWriteConfigCmd != "" { + err := p.runAsUser(p.kWriteConfigCmd, "--file", "kioslaverc", "--group", "Proxy Settings", "--key", "ProxyType", "1") if err != nil { return err } @@ -83,7 +93,7 @@ func (p *LinuxSystemProxy) Enable() error { if err != nil { return err } - err = p.runAsUser("kwriteconfig5", "--file", "kioslaverc", "--group", "Proxy Settings", "--key", "Authmode", "0") + err = p.runAsUser(p.kWriteConfigCmd, "--file", "kioslaverc", "--group", "Proxy Settings", "--key", "Authmode", "0") if err != nil { return err } @@ -103,8 +113,8 @@ func (p *LinuxSystemProxy) Disable() error { return err } } - if p.hasKWriteConfig5 { - err := p.runAsUser("kwriteconfig5", "--file", "kioslaverc", "--group", "Proxy Settings", "--key", "ProxyType", "0") + if p.kWriteConfigCmd != "" { + err := p.runAsUser(p.kWriteConfigCmd, "--file", "kioslaverc", "--group", "Proxy Settings", "--key", "ProxyType", "0") if err != nil { return err } @@ -150,7 +160,7 @@ func (p *LinuxSystemProxy) setKDEProxy(proxyTypes ...string) error { proxyUrl = "http://" + p.serverAddr.String() } err := p.runAsUser( - "kwriteconfig5", + p.kWriteConfigCmd, "--file", "kioslaverc", "--group", From 968b9bc217e795d26b3c0f4a5b67f91a10339b92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Mon, 3 Jun 2024 12:54:54 +0800 Subject: [PATCH 03/21] Fix crash on *bsd --- route/router.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/route/router.go b/route/router.go index 484216ee12..54f3ac514f 100644 --- a/route/router.go +++ b/route/router.go @@ -1121,6 +1121,9 @@ func (r *Router) AutoDetectInterfaceFunc() control.Func { if r.platformInterface != nil && r.platformInterface.UsePlatformAutoDetectInterfaceControl() { return r.platformInterface.AutoDetectInterfaceControl() } else { + if r.interfaceMonitor == nil { + return nil + } return control.BindToInterfaceFunc(r.InterfaceFinder(), func(network string, address string) (interfaceName string, interfaceIndex int, err error) { remoteAddr := M.ParseSocksaddr(address).Addr if C.IsLinux { From 53927d8bbd289b32332e81fb9ed182f86810ff3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Mon, 3 Jun 2024 13:03:07 +0800 Subject: [PATCH 04/21] Remove logs in router initialize --- route/router.go | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/route/router.go b/route/router.go index 54f3ac514f..dfced50204 100644 --- a/route/router.go +++ b/route/router.go @@ -402,20 +402,17 @@ func (r *Router) Initialize(inbounds []adapter.Inbound, outbounds []adapter.Outb defaultOutboundForPacketConnection = detour } } - var index, packetIndex int if defaultOutboundForConnection == nil { - for i, detour := range outbounds { + for _, detour := range outbounds { if common.Contains(detour.Network(), N.NetworkTCP) { - index = i defaultOutboundForConnection = detour break } } } if defaultOutboundForPacketConnection == nil { - for i, detour := range outbounds { + for _, detour := range outbounds { if common.Contains(detour.Network(), N.NetworkUDP) { - packetIndex = i defaultOutboundForPacketConnection = detour break } @@ -432,22 +429,6 @@ func (r *Router) Initialize(inbounds []adapter.Inbound, outbounds []adapter.Outb outbounds = append(outbounds, detour) outboundByTag[detour.Tag()] = detour } - if defaultOutboundForConnection != defaultOutboundForPacketConnection { - var description string - if defaultOutboundForConnection.Tag() != "" { - description = defaultOutboundForConnection.Tag() - } else { - description = F.ToString(index) - } - var packetDescription string - if defaultOutboundForPacketConnection.Tag() != "" { - packetDescription = defaultOutboundForPacketConnection.Tag() - } else { - packetDescription = F.ToString(packetIndex) - } - r.logger.Info("using ", defaultOutboundForConnection.Type(), "[", description, "] as default outbound for connection") - r.logger.Info("using ", defaultOutboundForPacketConnection.Type(), "[", packetDescription, "] as default outbound for packet connection") - } r.inboundByTag = inboundByTag r.outbounds = outbounds r.defaultOutboundForConnection = defaultOutboundForConnection From e08c052fc910b9aeb6f54d667a870a27eaaaef7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Mon, 3 Jun 2024 16:59:13 +0800 Subject: [PATCH 05/21] Fix wireguard client bind --- transport/wireguard/client_bind.go | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/transport/wireguard/client_bind.go b/transport/wireguard/client_bind.go index 39adce251e..6c534532a1 100644 --- a/transport/wireguard/client_bind.go +++ b/transport/wireguard/client_bind.go @@ -12,6 +12,8 @@ import ( E "github.com/sagernet/sing/common/exceptions" M "github.com/sagernet/sing/common/metadata" N "github.com/sagernet/sing/common/network" + "github.com/sagernet/sing/service" + "github.com/sagernet/sing/service/pause" "github.com/sagernet/wireguard-go/conn" ) @@ -19,6 +21,9 @@ var _ conn.Bind = (*ClientBind)(nil) type ClientBind struct { ctx context.Context + pauseManager pause.Manager + bindCtx context.Context + bindDone context.CancelFunc errorHandler E.Handler dialer N.Dialer reservedForEndpoint map[netip.AddrPort][3]uint8 @@ -33,6 +38,7 @@ type ClientBind struct { func NewClientBind(ctx context.Context, errorHandler E.Handler, dialer N.Dialer, isConnect bool, connectAddr netip.AddrPort, reserved [3]uint8) *ClientBind { return &ClientBind{ ctx: ctx, + pauseManager: service.FromContext[pause.Manager](ctx), errorHandler: errorHandler, dialer: dialer, reservedForEndpoint: make(map[netip.AddrPort][3]uint8), @@ -55,6 +61,11 @@ func (c *ClientBind) connect() (*wireConn, error) { } c.connAccess.Lock() defer c.connAccess.Unlock() + select { + case <-c.done: + return nil, net.ErrClosed + default: + } serverConn = c.conn if serverConn != nil { select { @@ -65,7 +76,7 @@ func (c *ClientBind) connect() (*wireConn, error) { } } if c.isConnect { - udpConn, err := c.dialer.DialContext(c.ctx, N.NetworkUDP, M.SocksaddrFromNetIP(c.connectAddr)) + udpConn, err := c.dialer.DialContext(c.bindCtx, N.NetworkUDP, M.SocksaddrFromNetIP(c.connectAddr)) if err != nil { return nil, err } @@ -74,7 +85,7 @@ func (c *ClientBind) connect() (*wireConn, error) { done: make(chan struct{}), } } else { - udpConn, err := c.dialer.ListenPacket(c.ctx, M.Socksaddr{Addr: netip.IPv4Unspecified()}) + udpConn, err := c.dialer.ListenPacket(c.bindCtx, M.Socksaddr{Addr: netip.IPv4Unspecified()}) if err != nil { return nil, err } @@ -92,6 +103,7 @@ func (c *ClientBind) Open(port uint16) (fns []conn.ReceiveFunc, actualPort uint1 c.done = make(chan struct{}) default: } + c.bindCtx, c.bindDone = context.WithCancel(c.ctx) return []conn.ReceiveFunc{c.receive}, 0, nil } @@ -105,6 +117,7 @@ func (c *ClientBind) receive(packets [][]byte, sizes []int, eps []conn.Endpoint) } c.errorHandler.NewError(context.Background(), E.Cause(err, "connect to server")) err = nil + c.pauseManager.WaitActive() time.Sleep(time.Second) return } @@ -130,12 +143,17 @@ func (c *ClientBind) receive(packets [][]byte, sizes []int, eps []conn.Endpoint) } func (c *ClientBind) Close() error { - common.Close(common.PtrOrNil(c.conn)) select { case <-c.done: default: close(c.done) } + if c.bindDone != nil { + c.bindDone() + } + c.connAccess.Lock() + defer c.connAccess.Unlock() + common.Close(common.PtrOrNil(c.conn)) return nil } @@ -146,6 +164,8 @@ func (c *ClientBind) SetMark(mark uint32) error { func (c *ClientBind) Send(bufs [][]byte, ep conn.Endpoint) error { udpConn, err := c.connect() if err != nil { + c.pauseManager.WaitActive() + time.Sleep(time.Second) return err } destination := netip.AddrPort(ep.(Endpoint)) From 51964801ffbe1288097f0091fba6f9d39054b4b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Thu, 6 Jun 2024 20:51:21 +0800 Subject: [PATCH 06/21] Fix enforced power listener on windows --- route/router.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/route/router.go b/route/router.go index dfced50204..73845a0135 100644 --- a/route/router.go +++ b/route/router.go @@ -352,14 +352,6 @@ func NewRouter( router.interfaceMonitor = interfaceMonitor } - if runtime.GOOS == "windows" { - powerListener, err := winpowrprof.NewEventListener(router.notifyWindowsPowerEvent) - if err != nil { - return nil, E.Cause(err, "initialize power listener") - } - router.powerListener = powerListener - } - if ntpOptions.Enabled { ntpDialer, err := dialer.New(router, ntpOptions.DialerOptions) if err != nil { @@ -589,6 +581,15 @@ func (r *Router) Start() error { } } + if runtime.GOOS == "windows" { + powerListener, err := winpowrprof.NewEventListener(r.notifyWindowsPowerEvent) + if err == nil { + r.powerListener = powerListener + } else { + r.logger.Warn("initialize power listener: ", err) + } + } + if r.powerListener != nil { monitor.Start("start power listener") err := r.powerListener.Start() From 977b0fac02791db1654ae192aea17d9075378e1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Thu, 6 Jun 2024 22:21:37 +0800 Subject: [PATCH 07/21] Fix get source address from `X-Forwarded-For` --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 81993d51e0..878d88eccf 100644 --- a/go.mod +++ b/go.mod @@ -26,7 +26,7 @@ require ( github.com/sagernet/gvisor v0.0.0-20240428053021-e691de28565f github.com/sagernet/quic-go v0.43.1-beta.1 github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691 - github.com/sagernet/sing v0.4.0-beta.20 + github.com/sagernet/sing v0.4.1 github.com/sagernet/sing-dns v0.2.0-beta.18 github.com/sagernet/sing-mux v0.2.0 github.com/sagernet/sing-quic v0.2.0-beta.5 @@ -46,7 +46,7 @@ require ( go4.org/netipx v0.0.0-20231129151722-fdeea329fbba golang.org/x/crypto v0.23.0 golang.org/x/net v0.25.0 - golang.org/x/sys v0.20.0 + golang.org/x/sys v0.21.0 golang.zx2c4.com/wireguard/wgctrl v0.0.0-20230429144221-925a1e7659e6 google.golang.org/grpc v1.63.2 google.golang.org/protobuf v1.33.0 diff --git a/go.sum b/go.sum index 672d3469c0..9bd60af291 100644 --- a/go.sum +++ b/go.sum @@ -106,8 +106,8 @@ github.com/sagernet/quic-go v0.43.1-beta.1/go.mod h1:BkrQYeop7Jx3hN3TW8/76CXcdhY 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.2.18/go.mod h1:OL6k2F0vHmEzXz2KW19qQzu172FDgSbUSODylighuVo= -github.com/sagernet/sing v0.4.0-beta.20 h1:8rEepj4LMcR0Wd389fJIziv/jr3MBtX5qXBHsfxJ+dY= -github.com/sagernet/sing v0.4.0-beta.20/go.mod h1:PFQKbElc2Pke7faBLv8oEba5ehtKO21Ho+TkYemTI3Y= +github.com/sagernet/sing v0.4.1 h1:zVlpE+7k7AFoC2pv6ReqLf0PIHjihL/jsBl5k05PQFk= +github.com/sagernet/sing v0.4.1/go.mod h1:ieZHA/+Y9YZfXs2I3WtuwgyCZ6GPsIR7HdKb1SdEnls= github.com/sagernet/sing-dns v0.2.0-beta.18 h1:6vzXZThRdA7YUzBOpSbUT48XRumtl/KIpIHFSOP0za8= github.com/sagernet/sing-dns v0.2.0-beta.18/go.mod h1:k/dmFcQpg6+m08gC1yQBy+13+QkuLqpKr4bIreq4U24= github.com/sagernet/sing-mux v0.2.0 h1:4C+vd8HztJCWNYfufvgL49xaOoOHXty2+EAjnzN3IYo= @@ -184,8 +184,8 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= From 0eeb2da3233c8ccbb9a3a6810fce8975f346f0a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Thu, 6 Jun 2024 22:28:37 +0800 Subject: [PATCH 08/21] Fix reset HTTP3 DNS transport --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 878d88eccf..6314797216 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/sagernet/quic-go v0.43.1-beta.1 github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691 github.com/sagernet/sing v0.4.1 - github.com/sagernet/sing-dns v0.2.0-beta.18 + github.com/sagernet/sing-dns v0.2.0 github.com/sagernet/sing-mux v0.2.0 github.com/sagernet/sing-quic v0.2.0-beta.5 github.com/sagernet/sing-shadowsocks v0.2.6 diff --git a/go.sum b/go.sum index 9bd60af291..217cf8df0f 100644 --- a/go.sum +++ b/go.sum @@ -108,8 +108,8 @@ github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691/go.mod h1:B8lp4Wk github.com/sagernet/sing v0.2.18/go.mod h1:OL6k2F0vHmEzXz2KW19qQzu172FDgSbUSODylighuVo= github.com/sagernet/sing v0.4.1 h1:zVlpE+7k7AFoC2pv6ReqLf0PIHjihL/jsBl5k05PQFk= github.com/sagernet/sing v0.4.1/go.mod h1:ieZHA/+Y9YZfXs2I3WtuwgyCZ6GPsIR7HdKb1SdEnls= -github.com/sagernet/sing-dns v0.2.0-beta.18 h1:6vzXZThRdA7YUzBOpSbUT48XRumtl/KIpIHFSOP0za8= -github.com/sagernet/sing-dns v0.2.0-beta.18/go.mod h1:k/dmFcQpg6+m08gC1yQBy+13+QkuLqpKr4bIreq4U24= +github.com/sagernet/sing-dns v0.2.0 h1:dka3weRX6+CrYO3v+hrTy2z68rCOCZXNBiNXpLZ6JNs= +github.com/sagernet/sing-dns v0.2.0/go.mod h1:BJpJv6XLnrUbSyIntOT6DG9FW0f4fETmPAHvNjOprLg= github.com/sagernet/sing-mux v0.2.0 h1:4C+vd8HztJCWNYfufvgL49xaOoOHXty2+EAjnzN3IYo= github.com/sagernet/sing-mux v0.2.0/go.mod h1:khzr9AOPocLa+g53dBplwNDz4gdsyx/YM3swtAhlkHQ= github.com/sagernet/sing-quic v0.2.0-beta.5 h1:ceKFLd1iS5AtM+pScKmcDp5k7R6WgYIe8vl6nB0aVsE= From 59ec92228c15e94cfa602f83eabe86a05e1940e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Fri, 7 Jun 2024 15:03:48 +0800 Subject: [PATCH 09/21] Fix repeatedly no route logs --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 6314797216..43f25497dc 100644 --- a/go.mod +++ b/go.mod @@ -33,7 +33,7 @@ require ( github.com/sagernet/sing-shadowsocks v0.2.6 github.com/sagernet/sing-shadowsocks2 v0.2.0 github.com/sagernet/sing-shadowtls v0.1.4 - github.com/sagernet/sing-tun v0.3.0-beta.6 + github.com/sagernet/sing-tun v0.3.2 github.com/sagernet/sing-vmess v0.1.8 github.com/sagernet/smux v0.0.0-20231208180855-7041f6ea79e7 github.com/sagernet/tfo-go v0.0.0-20231209031829-7b5343ac1dc6 diff --git a/go.sum b/go.sum index 217cf8df0f..2bde76fecb 100644 --- a/go.sum +++ b/go.sum @@ -120,8 +120,8 @@ github.com/sagernet/sing-shadowsocks2 v0.2.0 h1:wpZNs6wKnR7mh1wV9OHwOyUr21VkS3wK github.com/sagernet/sing-shadowsocks2 v0.2.0/go.mod h1:RnXS0lExcDAovvDeniJ4IKa2IuChrdipolPYWBv9hWQ= github.com/sagernet/sing-shadowtls v0.1.4 h1:aTgBSJEgnumzFenPvc+kbD9/W0PywzWevnVpEx6Tw3k= github.com/sagernet/sing-shadowtls v0.1.4/go.mod h1:F8NBgsY5YN2beQavdgdm1DPlhaKQlaL6lpDdcBglGK4= -github.com/sagernet/sing-tun v0.3.0-beta.6 h1:L11kMrM7UfUW0pzQiU66Fffh4o86KZc1SFGbkYi8Ma8= -github.com/sagernet/sing-tun v0.3.0-beta.6/go.mod h1:DxLIyhjWU/HwGYoX0vNGg2c5QgTQIakphU1MuERR5tQ= +github.com/sagernet/sing-tun v0.3.2 h1:z0bLUT/YXH9RrJS9DsIpB0Bb9afl2hVJOmHd0zA3HJY= +github.com/sagernet/sing-tun v0.3.2/go.mod h1:DxLIyhjWU/HwGYoX0vNGg2c5QgTQIakphU1MuERR5tQ= github.com/sagernet/sing-vmess v0.1.8 h1:XVWad1RpTy9b5tPxdm5MCU8cGfrTGdR8qCq6HV2aCNc= github.com/sagernet/sing-vmess v0.1.8/go.mod h1:vhx32UNzTDUkNwOyIjcZQohre1CaytquC5mPplId8uA= github.com/sagernet/smux v0.0.0-20231208180855-7041f6ea79e7 h1:DImB4lELfQhplLTxeq2z31Fpv8CQqqrUwTbrIRumZqQ= From 7003ef40a3cbabdf44420dd84ced36551a52296b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Thu, 6 Jun 2024 20:51:21 +0800 Subject: [PATCH 10/21] Fix wireguard start --- outbound/wireguard.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/outbound/wireguard.go b/outbound/wireguard.go index 045241ff2c..8b19fb5b1c 100644 --- a/outbound/wireguard.go +++ b/outbound/wireguard.go @@ -19,6 +19,7 @@ import ( "github.com/sagernet/sing-box/transport/wireguard" "github.com/sagernet/sing-dns" "github.com/sagernet/sing-tun" + "github.com/sagernet/sing/common" E "github.com/sagernet/sing/common/exceptions" M "github.com/sagernet/sing/common/metadata" N "github.com/sagernet/sing/common/network" @@ -111,6 +112,25 @@ func NewWireGuard(ctx context.Context, router adapter.Router, logger log.Context } func (w *WireGuard) Start() error { + if common.Any(w.peers, func(peer wireguard.PeerConfig) bool { + return !peer.Endpoint.IsValid() + }) { + // wait for all outbounds to be started and continue in PortStart + return nil + } + return w.start() +} + +func (w *WireGuard) PortStart() error { + if common.All(w.peers, func(peer wireguard.PeerConfig) bool { + return peer.Endpoint.IsValid() + }) { + return nil + } + return w.start() +} + +func (w *WireGuard) start() error { err := wireguard.ResolvePeers(w.ctx, w.router, w.peers) if err != nil { return err From 3853201412a90bd71243cfe685f95fe8812473b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Fri, 7 Jun 2024 15:04:04 +0800 Subject: [PATCH 11/21] Bump version --- clients/android | 2 +- docs/changelog.md | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/clients/android b/clients/android index e20fa632f6..4d1894c172 160000 --- a/clients/android +++ b/clients/android @@ -1 +1 @@ -Subproject commit e20fa632f6fd89f7e9411ebab21fbce52b89120e +Subproject commit 4d1894c1728b70df69c14a9a3b642eee4e518077 diff --git a/docs/changelog.md b/docs/changelog.md index 1b7ab6adef..3073ed7a2f 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -2,6 +2,10 @@ icon: material/alert-decagram --- +### 1.9.1 + +* Fixes and improvements + ### 1.9.0 * Fixes and improvements From ce0da5b557d5ad8fa95f904be529e431c0a47ff9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Sat, 8 Jun 2024 18:57:54 +0800 Subject: [PATCH 12/21] Fix typo --- outbound/wireguard.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/outbound/wireguard.go b/outbound/wireguard.go index 8b19fb5b1c..7805e165a1 100644 --- a/outbound/wireguard.go +++ b/outbound/wireguard.go @@ -121,7 +121,7 @@ func (w *WireGuard) Start() error { return w.start() } -func (w *WireGuard) PortStart() error { +func (w *WireGuard) PostStart() error { if common.All(w.peers, func(peer wireguard.PeerConfig) bool { return peer.Endpoint.IsValid() }) { From bdba2365deaf443edb1168d9e279601d2006a009 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Jun 2024 03:24:31 +0000 Subject: [PATCH 13/21] [dependencies] Update goreleaser/goreleaser-action action to v6 --- .github/workflows/linux.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index f1b22d6b66..daa9c037b0 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -26,7 +26,7 @@ jobs: EOF echo "HOME=$HOME" >> "$GITHUB_ENV" - name: Publish release - uses: goreleaser/goreleaser-action@v5 + uses: goreleaser/goreleaser-action@v6 with: distribution: goreleaser-pro version: latest From f1393235ff8a9490c1931199ad026adb24406ff8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 8 Jun 2024 11:25:47 +0000 Subject: [PATCH 14/21] [dependencies] Update actions/checkout digest to a5ac7e5 --- .github/workflows/debug.yml | 8 ++++---- .github/workflows/docker.yml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/linux.yml | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/debug.yml b/.github/workflows/debug.yml index e14e2cf32e..54785a0928 100644 --- a/.github/workflows/debug.yml +++ b/.github/workflows/debug.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4 with: fetch-depth: 0 - name: Setup Go @@ -58,7 +58,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4 with: fetch-depth: 0 - name: Setup Go @@ -78,7 +78,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4 with: fetch-depth: 0 - name: Setup Go @@ -208,7 +208,7 @@ jobs: TAGS: with_clash_api,with_quic steps: - name: Checkout - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4 with: fetch-depth: 0 - name: Setup Go diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index cf21f6fe12..749b780d3f 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -30,7 +30,7 @@ jobs: echo "latest=$latest" echo "latest=$latest" >> $GITHUB_OUTPUT - name: Checkout - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4 with: ref: ${{ steps.ref.outputs.ref }} - name: Setup Docker Buildx diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 15549b6131..d0c8cf0412 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4 with: fetch-depth: 0 - name: Setup Go diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index daa9c037b0..dce78bc5b0 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4 with: fetch-depth: 0 - name: Setup Go From e77a8114c51d7adc4b4ada1b0e344c03f9e460ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Sat, 8 Jun 2024 20:02:52 +0800 Subject: [PATCH 15/21] Fix rule-set start order --- adapter/router.go | 1 - route/router.go | 176 ++++++++++++++++++--------------------- route/rule_set_local.go | 4 - route/rule_set_remote.go | 10 --- 4 files changed, 83 insertions(+), 108 deletions(-) diff --git a/adapter/router.go b/adapter/router.go index 786a777ea5..54dc3396dc 100644 --- a/adapter/router.go +++ b/adapter/router.go @@ -93,7 +93,6 @@ type DNSRule interface { type RuleSet interface { StartContext(ctx context.Context, startContext RuleSetStartContext) error - PostStart() error Metadata() RuleSetMetadata Close() error HeadlessRule diff --git a/route/router.go b/route/router.go index 73845a0135..d194f3994a 100644 --- a/route/router.go +++ b/route/router.go @@ -509,78 +509,6 @@ func (r *Router) Start() error { r.geositeReader = nil } - if len(r.ruleSets) > 0 { - monitor.Start("initialize rule-set") - ruleSetStartContext := NewRuleSetStartContext() - var ruleSetStartGroup task.Group - for i, ruleSet := range r.ruleSets { - ruleSetInPlace := ruleSet - ruleSetStartGroup.Append0(func(ctx context.Context) error { - err := ruleSetInPlace.StartContext(ctx, ruleSetStartContext) - if err != nil { - return E.Cause(err, "initialize rule-set[", i, "]") - } - return nil - }) - } - ruleSetStartGroup.Concurrency(5) - ruleSetStartGroup.FastFail() - err := ruleSetStartGroup.Run(r.ctx) - monitor.Finish() - if err != nil { - return err - } - ruleSetStartContext.Close() - } - var ( - needProcessFromRuleSet bool - needWIFIStateFromRuleSet bool - ) - for _, ruleSet := range r.ruleSets { - metadata := ruleSet.Metadata() - if metadata.ContainsProcessRule { - needProcessFromRuleSet = true - } - if metadata.ContainsWIFIRule { - needWIFIStateFromRuleSet = true - } - } - if needProcessFromRuleSet || r.needFindProcess || r.needPackageManager { - if C.IsAndroid && r.platformInterface == nil { - monitor.Start("initialize package manager") - packageManager, err := tun.NewPackageManager(r) - monitor.Finish() - if err != nil { - return E.Cause(err, "create package manager") - } - monitor.Start("start package manager") - err = packageManager.Start() - monitor.Finish() - if err != nil { - return E.Cause(err, "start package manager") - } - r.packageManager = packageManager - } - - if r.platformInterface != nil { - r.processSearcher = r.platformInterface - } else { - monitor.Start("initialize process searcher") - searcher, err := process.NewSearcher(process.Config{ - Logger: r.logger, - PackageManager: r.packageManager, - }) - monitor.Finish() - if err != nil { - if err != os.ErrInvalid { - r.logger.Warn(E.Cause(err, "create process searcher")) - } - } else { - r.processSearcher = searcher - } - } - } - if runtime.GOOS == "windows" { powerListener, err := winpowrprof.NewEventListener(r.notifyWindowsPowerEvent) if err == nil { @@ -599,25 +527,6 @@ func (r *Router) Start() error { } } - if (needWIFIStateFromRuleSet || r.needWIFIState) && r.platformInterface != nil { - monitor.Start("initialize WIFI state") - r.needWIFIState = true - r.interfaceMonitor.RegisterCallback(func(_ int) { - r.updateWIFIState() - }) - r.updateWIFIState() - monitor.Finish() - } - - for i, rule := range r.rules { - monitor.Start("initialize rule[", i, "]") - err := rule.Start() - monitor.Finish() - if err != nil { - return E.Cause(err, "initialize rule[", i, "]") - } - } - monitor.Start("initialize DNS client") r.dnsClient.Start() monitor.Finish() @@ -726,12 +635,93 @@ func (r *Router) Close() error { } func (r *Router) PostStart() error { + monitor := taskmonitor.New(r.logger, C.StopTimeout) if len(r.ruleSets) > 0 { + monitor.Start("initialize rule-set") + ruleSetStartContext := NewRuleSetStartContext() + var ruleSetStartGroup task.Group for i, ruleSet := range r.ruleSets { - err := ruleSet.PostStart() + ruleSetInPlace := ruleSet + ruleSetStartGroup.Append0(func(ctx context.Context) error { + err := ruleSetInPlace.StartContext(ctx, ruleSetStartContext) + if err != nil { + return E.Cause(err, "initialize rule-set[", i, "]") + } + return nil + }) + } + ruleSetStartGroup.Concurrency(5) + ruleSetStartGroup.FastFail() + err := ruleSetStartGroup.Run(r.ctx) + monitor.Finish() + if err != nil { + return err + } + ruleSetStartContext.Close() + } + var ( + needProcessFromRuleSet bool + needWIFIStateFromRuleSet bool + ) + for _, ruleSet := range r.ruleSets { + metadata := ruleSet.Metadata() + if metadata.ContainsProcessRule { + needProcessFromRuleSet = true + } + if metadata.ContainsWIFIRule { + needWIFIStateFromRuleSet = true + } + } + if needProcessFromRuleSet || r.needFindProcess || r.needPackageManager { + if C.IsAndroid && r.platformInterface == nil { + monitor.Start("initialize package manager") + packageManager, err := tun.NewPackageManager(r) + monitor.Finish() if err != nil { - return E.Cause(err, "post start rule-set[", i, "]") + return E.Cause(err, "create package manager") } + monitor.Start("start package manager") + err = packageManager.Start() + monitor.Finish() + if err != nil { + return E.Cause(err, "start package manager") + } + r.packageManager = packageManager + } + + if r.platformInterface != nil { + r.processSearcher = r.platformInterface + } else { + monitor.Start("initialize process searcher") + searcher, err := process.NewSearcher(process.Config{ + Logger: r.logger, + PackageManager: r.packageManager, + }) + monitor.Finish() + if err != nil { + if err != os.ErrInvalid { + r.logger.Warn(E.Cause(err, "create process searcher")) + } + } else { + r.processSearcher = searcher + } + } + } + if (needWIFIStateFromRuleSet || r.needWIFIState) && r.platformInterface != nil { + monitor.Start("initialize WIFI state") + r.needWIFIState = true + r.interfaceMonitor.RegisterCallback(func(_ int) { + r.updateWIFIState() + }) + r.updateWIFIState() + monitor.Finish() + } + for i, rule := range r.rules { + monitor.Start("initialize rule[", i, "]") + err := rule.Start() + monitor.Finish() + if err != nil { + return E.Cause(err, "initialize rule[", i, "]") } } r.started = true diff --git a/route/rule_set_local.go b/route/rule_set_local.go index 1fd0924636..3945826708 100644 --- a/route/rule_set_local.go +++ b/route/rule_set_local.go @@ -78,10 +78,6 @@ func (s *LocalRuleSet) StartContext(ctx context.Context, startContext adapter.Ru return nil } -func (s *LocalRuleSet) PostStart() error { - return nil -} - func (s *LocalRuleSet) Metadata() adapter.RuleSetMetadata { return s.metadata } diff --git a/route/rule_set_remote.go b/route/rule_set_remote.go index a14c6fe543..8389c2f46b 100644 --- a/route/rule_set_remote.go +++ b/route/rule_set_remote.go @@ -112,16 +112,6 @@ func (s *RemoteRuleSet) StartContext(ctx context.Context, startContext adapter.R return nil } -func (s *RemoteRuleSet) PostStart() error { - if s.lastUpdated.IsZero() { - err := s.fetchOnce(s.ctx, nil) - if err != nil { - s.logger.Error("fetch rule-set ", s.options.Tag, ": ", err) - } - } - return nil -} - func (s *RemoteRuleSet) Metadata() adapter.RuleSetMetadata { return s.metadata } From 0ca5909b06edd5475ce4c45b0823f6d9397b6c95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Sat, 8 Jun 2024 20:27:08 +0800 Subject: [PATCH 16/21] Stop passing device sleep events on Android and Apple platforms --- experimental/libbox/service_pause.go | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/experimental/libbox/service_pause.go b/experimental/libbox/service_pause.go index 921e48d577..c4aa8daaff 100644 --- a/experimental/libbox/service_pause.go +++ b/experimental/libbox/service_pause.go @@ -16,25 +16,18 @@ func (s *BoxService) Pause() { if s.pauseTimer != nil { s.pauseTimer.Stop() } - s.pauseTimer = time.AfterFunc(time.Minute, s.pause) -} - -func (s *BoxService) pause() { - s.pauseAccess.Lock() - defer s.pauseAccess.Unlock() - s.pauseManager.DevicePause() - _ = s.instance.Router().ResetNetwork() - s.pauseTimer = nil + s.pauseTimer = time.AfterFunc(3*time.Second, s.ResetNetwork) } func (s *BoxService) Wake() { - _ = s.instance.Router().ResetNetwork() s.pauseAccess.Lock() defer s.pauseAccess.Unlock() if s.pauseTimer != nil { s.pauseTimer.Stop() - s.pauseTimer = nil - return } - s.pauseManager.DeviceWake() + s.pauseTimer = time.AfterFunc(3*time.Minute, s.ResetNetwork) +} + +func (s *BoxService) ResetNetwork() { + _ = s.instance.Router().ResetNetwork() } From c1f4755c4ef4aa1009affb96c93a98d3baf26886 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Sat, 8 Jun 2024 21:31:43 +0800 Subject: [PATCH 17/21] Fix parse UDP DNS server with addr:port address --- route/router.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/route/router.go b/route/router.go index d194f3994a..2041ebd203 100644 --- a/route/router.go +++ b/route/router.go @@ -221,7 +221,7 @@ func NewRouter( if serverAddress == "" { serverAddress = server.Address } - _, notIpAddress := netip.ParseAddr(serverAddress) + notIpAddress := !M.ParseSocksaddr(serverAddress).Addr.IsValid() if server.AddressResolver != "" { if !transportTagMap[server.AddressResolver] { return nil, E.New("parse dns server[", tag, "]: address resolver not found: ", server.AddressResolver) @@ -231,7 +231,7 @@ func NewRouter( } else { continue } - } else if notIpAddress != nil && strings.Contains(server.Address, ".") { + } else if notIpAddress && strings.Contains(server.Address, ".") { return nil, E.New("parse dns server[", tag, "]: missing address_resolver") } } From c2354ebf25bdc5bd9acd0f24cad0da4d276c9d83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Sat, 8 Jun 2024 18:59:12 +0800 Subject: [PATCH 18/21] Bump version --- clients/android | 2 +- docs/changelog.md | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/clients/android b/clients/android index 4d1894c172..8622e6a5bc 160000 --- a/clients/android +++ b/clients/android @@ -1 +1 @@ -Subproject commit 4d1894c1728b70df69c14a9a3b642eee4e518077 +Subproject commit 8622e6a5bc805d9d08f56fd86ea69f0579de7b48 diff --git a/docs/changelog.md b/docs/changelog.md index 3073ed7a2f..be67b884c5 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -2,6 +2,10 @@ icon: material/alert-decagram --- +### 1.9.2 + +* Fixes and improvements + ### 1.9.1 * Fixes and improvements From bb9bd9bff6325ab15dd7fa672f534fc17790c357 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Sun, 9 Jun 2024 07:21:50 +0800 Subject: [PATCH 19/21] Fix package manager start order --- route/router.go | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/route/router.go b/route/router.go index 2041ebd203..26344f0144 100644 --- a/route/router.go +++ b/route/router.go @@ -531,6 +531,22 @@ func (r *Router) Start() error { r.dnsClient.Start() monitor.Finish() + if C.IsAndroid && r.platformInterface == nil { + monitor.Start("initialize package manager") + packageManager, err := tun.NewPackageManager(r) + monitor.Finish() + if err != nil { + return E.Cause(err, "create package manager") + } + monitor.Start("start package manager") + err = packageManager.Start() + monitor.Finish() + if err != nil { + return E.Cause(err, "start package manager") + } + r.packageManager = packageManager + } + for i, rule := range r.dnsRules { monitor.Start("initialize DNS rule[", i, "]") err := rule.Start() @@ -672,23 +688,7 @@ func (r *Router) PostStart() error { needWIFIStateFromRuleSet = true } } - if needProcessFromRuleSet || r.needFindProcess || r.needPackageManager { - if C.IsAndroid && r.platformInterface == nil { - monitor.Start("initialize package manager") - packageManager, err := tun.NewPackageManager(r) - monitor.Finish() - if err != nil { - return E.Cause(err, "create package manager") - } - monitor.Start("start package manager") - err = packageManager.Start() - monitor.Finish() - if err != nil { - return E.Cause(err, "start package manager") - } - r.packageManager = packageManager - } - + if needProcessFromRuleSet || r.needFindProcess { if r.platformInterface != nil { r.processSearcher = r.platformInterface } else { From 460fae83dcc1a7e4078e07f1b7f77ae329912b60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Sun, 9 Jun 2024 13:15:40 +0800 Subject: [PATCH 20/21] Fix quic-go is caching dialErr since v0.43.0 --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 43f25497dc..03a08aa302 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/sagernet/cloudflare-tls v0.0.0-20231208171750-a4483c1b7cd1 github.com/sagernet/gomobile v0.1.3 github.com/sagernet/gvisor v0.0.0-20240428053021-e691de28565f - github.com/sagernet/quic-go v0.43.1-beta.1 + github.com/sagernet/quic-go v0.43.1-beta.2 github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691 github.com/sagernet/sing v0.4.1 github.com/sagernet/sing-dns v0.2.0 diff --git a/go.sum b/go.sum index 2bde76fecb..820862c6ef 100644 --- a/go.sum +++ b/go.sum @@ -101,8 +101,8 @@ github.com/sagernet/gvisor v0.0.0-20240428053021-e691de28565f h1:NkhuupzH5ch7b/Y github.com/sagernet/gvisor v0.0.0-20240428053021-e691de28565f/go.mod h1:KXmw+ouSJNOsuRpg4wgwwCQuunrGz4yoAqQjsLjc6N0= github.com/sagernet/netlink v0.0.0-20240523065131-45e60152f9ba h1:EY5AS7CCtfmARNv2zXUOrsEMPFDGYxaw65JzA2p51Vk= github.com/sagernet/netlink v0.0.0-20240523065131-45e60152f9ba/go.mod h1:xLnfdiJbSp8rNqYEdIW/6eDO4mVoogml14Bh2hSiFpM= -github.com/sagernet/quic-go v0.43.1-beta.1 h1:alizUjpvWYcz08dBCQsULOd+1xu0o7UtlyYf6SLbRNg= -github.com/sagernet/quic-go v0.43.1-beta.1/go.mod h1:BkrQYeop7Jx3hN3TW8/76CXcdhYiNPyYEBL/BVJ1ifc= +github.com/sagernet/quic-go v0.43.1-beta.2 h1:6YRCE9t1Q3UbNX1/dJGqpwFQbh6DXC6XBrQr2xp6hXY= +github.com/sagernet/quic-go v0.43.1-beta.2/go.mod h1:BkrQYeop7Jx3hN3TW8/76CXcdhYiNPyYEBL/BVJ1ifc= 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.2.18/go.mod h1:OL6k2F0vHmEzXz2KW19qQzu172FDgSbUSODylighuVo= From 085f60337799afc906069b540a38368968c123e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Sun, 9 Jun 2024 13:18:08 +0800 Subject: [PATCH 21/21] Bump version --- clients/android | 2 +- docs/changelog.md | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/clients/android b/clients/android index 8622e6a5bc..00e3a80875 160000 --- a/clients/android +++ b/clients/android @@ -1 +1 @@ -Subproject commit 8622e6a5bc805d9d08f56fd86ea69f0579de7b48 +Subproject commit 00e3a80875db09758fef3170497938e3814fff29 diff --git a/docs/changelog.md b/docs/changelog.md index be67b884c5..4a9e94129a 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -2,6 +2,11 @@ icon: material/alert-decagram --- + +### 1.9.3 + +* Fixes and improvements + ### 1.9.2 * Fixes and improvements