From 1f168f144e6369132832406beb77e445e6ad756a Mon Sep 17 00:00:00 2001 From: CN-JS-HuiBai Date: Wed, 15 Apr 2026 00:10:44 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=86=E5=88=AB=E6=82=A8=E7=9A=84=E7=89=B9?= =?UTF-8?q?=E6=AE=8A=E7=94=A8=E6=88=B7=E5=88=97=E8=A1=A8=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- service/xboard/service.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/service/xboard/service.go b/service/xboard/service.go index 3695a456..14e45b11 100644 --- a/service/xboard/service.go +++ b/service/xboard/service.go @@ -7,6 +7,7 @@ import ( "fmt" "io" "net/http" + "net/netip" "sync" "time" @@ -16,6 +17,7 @@ import ( "github.com/sagernet/sing-box/log" "github.com/sagernet/sing-box/option" "github.com/sagernet/sing-box/service/ssmapi" + "github.com/sagernet/sing/common" E "github.com/sagernet/sing/common/exceptions" "github.com/sagernet/sing/common/json/badoption" "github.com/sagernet/sing/service" @@ -248,14 +250,19 @@ func (s *Service) setupNode() error { s.logger.Info("Xboard protocol identified: ", protocol) - listenAddr := badoption.ParseAddr(inner.ListenIP) + var listenAddr *badoption.Addr + if addr, err := netip.ParseAddr(inner.ListenIP); err == nil { + listenAddr = common.Ptr(badoption.Addr(addr)) + } else { + listenAddr = common.Ptr(badoption.Addr(netip.IPv4Unspecified())) + } var inboundOptions any switch protocol { case "vless": vlessOptions := option.VLESSInboundOptions{ ListenOptions: option.ListenOptions{ - Listen: &listenAddr, + Listen: listenAddr, ListenPort: uint16(inner.Port), }, } @@ -290,7 +297,7 @@ func (s *Service) setupNode() error { case "vmess": vmessOptions := option.VMessInboundOptions{ ListenOptions: option.ListenOptions{ - Listen: &listenAddr, + Listen: listenAddr, ListenPort: uint16(inner.Port), }, } @@ -298,7 +305,7 @@ func (s *Service) setupNode() error { case "shadowsocks": ssOptions := option.ShadowsocksInboundOptions{ ListenOptions: option.ListenOptions{ - Listen: &listenAddr, + Listen: listenAddr, ListenPort: uint16(inner.Port), }, Method: inner.Cipher, @@ -308,7 +315,7 @@ func (s *Service) setupNode() error { case "trojan": trojanOptions := option.TrojanInboundOptions{ ListenOptions: option.ListenOptions{ - Listen: &listenAddr, + Listen: listenAddr, ListenPort: uint16(inner.Port), }, }