diff --git a/common/tls/client.go b/common/tls/client.go index a0dd288d..71dcde46 100644 --- a/common/tls/client.go +++ b/common/tls/client.go @@ -15,6 +15,9 @@ import ( ) func NewDialerFromOptions(router adapter.Router, dialer N.Dialer, serverAddress string, options option.OutboundTLSOptions) (N.Dialer, error) { + if !options.Enabled { + return dialer, nil + } config, err := NewClient(router, serverAddress, options) if err != nil { return nil, err @@ -23,6 +26,9 @@ func NewDialerFromOptions(router adapter.Router, dialer N.Dialer, serverAddress } func NewClient(router adapter.Router, serverAddress string, options option.OutboundTLSOptions) (Config, error) { + if !options.Enabled { + return nil, nil + } if options.ECH != nil && options.ECH.Enabled { return NewECHClient(router, serverAddress, options) } else if options.UTLS != nil && options.UTLS.Enabled { diff --git a/common/tls/server.go b/common/tls/server.go index 4a17b3f7..9d69333e 100644 --- a/common/tls/server.go +++ b/common/tls/server.go @@ -12,6 +12,9 @@ import ( ) func NewServer(ctx context.Context, logger log.Logger, options option.InboundTLSOptions) (ServerConfig, error) { + if !options.Enabled { + return nil, nil + } return NewSTDServer(ctx, logger, options) } diff --git a/test/go.mod b/test/go.mod index b400959d..220db736 100644 --- a/test/go.mod +++ b/test/go.mod @@ -62,7 +62,7 @@ require ( github.com/sagernet/go-tun2socks v1.16.12-0.20220818015926-16cb67876a61 // indirect github.com/sagernet/netlink v0.0.0-20220905062125-8043b4a9aa97 // indirect github.com/sagernet/quic-go v0.0.0-20221108053023-645bcc4f9b15 // indirect - github.com/sagernet/sing-dns v0.0.0-20221031055845-7de76401d403 // indirect + github.com/sagernet/sing-dns v0.0.0-20221113031420-c6aaf2ea4b10 // indirect github.com/sagernet/sing-tun v0.0.0-20221104121441-66c48a57776f // indirect github.com/sagernet/sing-vmess v0.0.0-20221109021549-b446d5bdddf0 // indirect github.com/sagernet/smux v0.0.0-20220831015742-e0f1988e3195 // indirect diff --git a/test/go.sum b/test/go.sum index 6113cea3..fce82e32 100644 --- a/test/go.sum +++ b/test/go.sum @@ -152,8 +152,8 @@ github.com/sagernet/sing v0.0.0-20220812082120-05f9836bff8f/go.mod h1:QVsS5L/ZA2 github.com/sagernet/sing v0.0.0-20220817130738-ce854cda8522/go.mod h1:QVsS5L/ZA2Q5UhQwLrn0Trw+msNd/NPGEhBKR/ioWiY= github.com/sagernet/sing v0.0.0-20221008120626-60a9910eefe4 h1:LO7xMvMGhYmjQg2vjhTzsODyzs9/WLYu5Per+/8jIeo= github.com/sagernet/sing v0.0.0-20221008120626-60a9910eefe4/go.mod h1:zvgDYKI+vCAW9RyfyrKTgleI+DOa8lzHMPC7VZo3OL4= -github.com/sagernet/sing-dns v0.0.0-20221031055845-7de76401d403 h1:kKDO97rx+JVJ4HI1hTWOnCCI6um5clK1LfnIto2DY4M= -github.com/sagernet/sing-dns v0.0.0-20221031055845-7de76401d403/go.mod h1:cyL9DHbBZ0Xlt/8VD0i6yeiDayH0KzWGNQb8MYhhz7g= +github.com/sagernet/sing-dns v0.0.0-20221113031420-c6aaf2ea4b10 h1:K84AY2TxNX37ePYXVO6QTD/kgn9kDo4oGpTIn9PF5bo= +github.com/sagernet/sing-dns v0.0.0-20221113031420-c6aaf2ea4b10/go.mod h1:VAvOT1pyryBIthTGRryFLXAsR1VRQZ05wolMYeQrr/E= github.com/sagernet/sing-shadowsocks v0.0.0-20220819002358-7461bb09a8f6 h1:JJfDeYYhWunvtxsU/mOVNTmFQmnzGx9dY034qG6G3g4= github.com/sagernet/sing-shadowsocks v0.0.0-20220819002358-7461bb09a8f6/go.mod h1:EX3RbZvrwAkPI2nuGa78T2iQXmrkT+/VQtskjou42xM= github.com/sagernet/sing-tun v0.0.0-20221104121441-66c48a57776f h1:CXF+nErOb9f7qiHingSgTa2/lJAgmEFtAQ47oVwdRGU= diff --git a/test/http_test.go b/test/http_test.go new file mode 100644 index 00000000..b0a05611 --- /dev/null +++ b/test/http_test.go @@ -0,0 +1,61 @@ +package main + +import ( + "net/netip" + "testing" + + C "github.com/sagernet/sing-box/constant" + "github.com/sagernet/sing-box/option" +) + +func TestHTTPSelf(t *testing.T) { + startInstance(t, option.Options{ + Inbounds: []option.Inbound{ + { + Type: C.TypeMixed, + Tag: "mixed-in", + MixedOptions: option.HTTPMixedInboundOptions{ + ListenOptions: option.ListenOptions{ + Listen: option.ListenAddress(netip.IPv4Unspecified()), + ListenPort: clientPort, + }, + }, + }, + { + Type: C.TypeMixed, + MixedOptions: option.HTTPMixedInboundOptions{ + ListenOptions: option.ListenOptions{ + Listen: option.ListenAddress(netip.IPv4Unspecified()), + ListenPort: serverPort, + }, + }, + }, + }, + Outbounds: []option.Outbound{ + { + Type: C.TypeDirect, + }, + { + Type: C.TypeHTTP, + Tag: "http-out", + HTTPOptions: option.HTTPOutboundOptions{ + ServerOptions: option.ServerOptions{ + Server: "127.0.0.1", + ServerPort: serverPort, + }, + }, + }, + }, + Route: &option.RouteOptions{ + Rules: []option.Rule{ + { + DefaultOptions: option.DefaultRule{ + Inbound: []string{"mixed-in"}, + Outbound: "http-out", + }, + }, + }, + }, + }) + testTCP(t, clientPort, testPort) +}