From 1dbafe629a098b552c1409d2be1fc713479b0844 Mon Sep 17 00:00:00 2001 From: Meow <197331664+Meo597@users.noreply.github.com> Date: Thu, 7 May 2026 19:15:11 +0800 Subject: [PATCH] Config: Rename `network`/`address`/`port` in Tunnel inbound and DNS outbound (#6084) https://github.com/XTLS/Xray-core/pull/6083#issuecomment-4387702965 https://github.com/XTLS/Xray-core/pull/6084#issuecomment-4395333530 --- core/xray_test.go | 8 +- infra/conf/dns_proxy.go | 36 ++++++--- infra/conf/dns_proxy_test.go | 16 ++-- infra/conf/dokodemo.go | 24 ++++-- infra/conf/dokodemo_test.go | 10 +-- proxy/dns/config.pb.go | 14 ++-- proxy/dns/config.proto | 2 +- proxy/dns/dns.go | 18 ++--- proxy/dns/dns_test.go | 26 +++---- proxy/dokodemo/config.go | 2 +- proxy/dokodemo/config.pb.go | 46 +++++------ proxy/dokodemo/config.proto | 11 +-- proxy/dokodemo/dokodemo.go | 28 +++---- testing/scenarios/command_test.go | 54 ++++++------- testing/scenarios/dokodemo_test.go | 12 +-- testing/scenarios/feature_test.go | 42 +++++----- testing/scenarios/metrics_test.go | 6 +- testing/scenarios/policy_test.go | 12 +-- testing/scenarios/reverse_test.go | 24 +++--- testing/scenarios/shadowsocks_2022_test.go | 12 +-- testing/scenarios/shadowsocks_test.go | 30 +++---- testing/scenarios/socks_test.go | 36 ++++----- testing/scenarios/tls_test.go | 60 +++++++------- testing/scenarios/transport_test.go | 6 +- testing/scenarios/vless_test.go | 30 +++---- testing/scenarios/vmess_test.go | 78 +++++++++---------- testing/scenarios/wireguard_test.go | 6 +- .../internet/finalmask/sudoku/sudoku_test.go | 24 +++--- 28 files changed, 347 insertions(+), 326 deletions(-) diff --git a/core/xray_test.go b/core/xray_test.go index 65ff3fc8..205f69a3 100644 --- a/core/xray_test.go +++ b/core/xray_test.go @@ -54,9 +54,9 @@ func TestXrayClose(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(net.LocalHostIP), - Port: uint32(0), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(net.LocalHostIP), + RewritePort: uint32(0), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -66,7 +66,7 @@ func TestXrayClose(t *testing.T) { Receiver: &protocol.ServerEndpoint{ Address: net.NewIPOrDomain(net.LocalHostIP), Port: uint32(0), - User: &protocol.User{ + User: &protocol.User{ Account: serial.ToTypedMessage(&vmess.Account{ Id: userID.String(), }), diff --git a/infra/conf/dns_proxy.go b/infra/conf/dns_proxy.go index 50ba41bb..734175e3 100644 --- a/infra/conf/dns_proxy.go +++ b/infra/conf/dns_proxy.go @@ -58,25 +58,37 @@ func (c *DNSOutboundRuleConfig) Build() (*dns.DNSRuleConfig, error) { } type DNSOutboundConfig struct { - Network Network `json:"network"` - Address *Address `json:"address"` - Port uint16 `json:"port"` - UserLevel uint32 `json:"userLevel"` - Rules []*DNSOutboundRuleConfig `json:"rules"` - NonIPQuery *string `json:"nonIPQuery"` // todo: remove legacy - BlockTypes *[]int32 `json:"blockTypes"` // todo: remove legacy + RewriteNetwork Network `json:"rewriteNetwork"` + RewriteAddress *Address `json:"rewriteAddress"` + RewritePort uint16 `json:"rewritePort"` + Network Network `json:"network"` + Address *Address `json:"address"` + Port uint16 `json:"port"` + UserLevel uint32 `json:"userLevel"` + Rules []*DNSOutboundRuleConfig `json:"rules"` + NonIPQuery *string `json:"nonIPQuery"` // todo: remove legacy + BlockTypes *[]int32 `json:"blockTypes"` // todo: remove legacy } func (c *DNSOutboundConfig) Build() (proto.Message, error) { + if len(c.Network) > 0 { + c.RewriteNetwork = c.Network + } + if c.Address != nil { + c.RewriteAddress = c.Address + } + if c.Port != 0 { + c.RewritePort = c.Port + } config := &dns.Config{ - Server: &net.Endpoint{ - Network: c.Network.Build(), - Port: uint32(c.Port), + RewriteServer: &net.Endpoint{ + Network: c.RewriteNetwork.Build(), + Port: uint32(c.RewritePort), }, UserLevel: c.UserLevel, } - if c.Address != nil { - config.Server.Address = c.Address.Build() + if c.RewriteAddress != nil { + config.RewriteServer.Address = c.RewriteAddress.Build() } // todo: remove legacy diff --git a/infra/conf/dns_proxy_test.go b/infra/conf/dns_proxy_test.go index f5bcd3d5..1656e2d6 100644 --- a/infra/conf/dns_proxy_test.go +++ b/infra/conf/dns_proxy_test.go @@ -24,7 +24,7 @@ func TestDnsProxyConfig(t *testing.T) { }`, Parser: loadJSON(creator), Output: &dns.Config{ - Server: &net.Endpoint{ + RewriteServer: &net.Endpoint{ Network: net.Network_TCP, Address: net.NewIPOrDomain(net.IPAddress([]byte{8, 8, 8, 8})), Port: 53, @@ -44,7 +44,7 @@ func TestDnsProxyConfig(t *testing.T) { }`, Parser: loadJSON(creator), Output: &dns.Config{ - Server: &net.Endpoint{}, + RewriteServer: &net.Endpoint{}, Rule: []*dns.DNSRuleConfig{ { Action: dns.RuleAction_Direct, @@ -84,7 +84,7 @@ func TestDnsProxyConfig(t *testing.T) { }`, Parser: loadJSON(creator), Output: &dns.Config{ - Server: &net.Endpoint{}, + RewriteServer: &net.Endpoint{}, Rule: []*dns.DNSRuleConfig{ { Action: dns.RuleAction_Reject, @@ -111,7 +111,7 @@ func TestDnsProxyConfig(t *testing.T) { }`, Parser: loadJSON(creator), Output: &dns.Config{ - Server: &net.Endpoint{}, + RewriteServer: &net.Endpoint{}, Rule: []*dns.DNSRuleConfig{ { Action: dns.RuleAction_Drop, @@ -136,7 +136,7 @@ func TestDnsProxyConfigLegacyCompatibility(t *testing.T) { }`, Parser: loadJSON(creator), Output: &dns.Config{ - Server: &net.Endpoint{}, + RewriteServer: &net.Endpoint{}, Rule: []*dns.DNSRuleConfig{ { Action: dns.RuleAction_Hijack, @@ -154,7 +154,7 @@ func TestDnsProxyConfigLegacyCompatibility(t *testing.T) { }`, Parser: loadJSON(creator), Output: &dns.Config{ - Server: &net.Endpoint{}, + RewriteServer: &net.Endpoint{}, Rule: []*dns.DNSRuleConfig{ { Action: dns.RuleAction_Reject, @@ -177,7 +177,7 @@ func TestDnsProxyConfigLegacyCompatibility(t *testing.T) { }`, Parser: loadJSON(creator), Output: &dns.Config{ - Server: &net.Endpoint{}, + RewriteServer: &net.Endpoint{}, Rule: []*dns.DNSRuleConfig{ { Action: dns.RuleAction_Drop, @@ -200,7 +200,7 @@ func TestDnsProxyConfigLegacyCompatibility(t *testing.T) { }`, Parser: loadJSON(creator), Output: &dns.Config{ - Server: &net.Endpoint{}, + RewriteServer: &net.Endpoint{}, Rule: []*dns.DNSRuleConfig{ { Action: dns.RuleAction_Drop, diff --git a/infra/conf/dokodemo.go b/infra/conf/dokodemo.go index 781d5222..f1bd1e37 100644 --- a/infra/conf/dokodemo.go +++ b/infra/conf/dokodemo.go @@ -8,27 +8,39 @@ import ( ) type DokodemoConfig struct { + AllowedNetwork *NetworkList `json:"allowedNetwork"` + RewriteAddress *Address `json:"rewriteAddress"` + RewritePort uint16 `json:"rewritePort"` + Network *NetworkList `json:"network"` Address *Address `json:"address"` Port uint16 `json:"port"` PortMap map[string]string `json:"portMap"` - Network *NetworkList `json:"network"` FollowRedirect bool `json:"followRedirect"` UserLevel uint32 `json:"userLevel"` } func (v *DokodemoConfig) Build() (proto.Message, error) { - config := new(dokodemo.Config) - if v.Address != nil { - config.Address = v.Address.Build() + if v.Network != nil { + v.AllowedNetwork = v.Network } - config.Port = uint32(v.Port) + if v.Address != nil { + v.RewriteAddress = v.Address + } + if v.Port != 0 { + v.RewritePort = v.Port + } + config := new(dokodemo.Config) + config.AllowedNetworks = v.AllowedNetwork.Build() + if v.RewriteAddress != nil { + config.RewriteAddress = v.RewriteAddress.Build() + } + config.RewritePort = uint32(v.RewritePort) config.PortMap = v.PortMap for _, v := range config.PortMap { if _, _, err := net.SplitHostPort(v); err != nil { return nil, errors.New("invalid portMap: ", v).Base(err) } } - config.Networks = v.Network.Build() config.FollowRedirect = v.FollowRedirect config.UserLevel = v.UserLevel return config, nil diff --git a/infra/conf/dokodemo_test.go b/infra/conf/dokodemo_test.go index 264cc8d7..7ae718c9 100644 --- a/infra/conf/dokodemo_test.go +++ b/infra/conf/dokodemo_test.go @@ -24,15 +24,15 @@ func TestDokodemoConfig(t *testing.T) { }`, Parser: loadJSON(creator), Output: &dokodemo.Config{ - Address: &net.IPOrDomain{ + RewriteAddress: &net.IPOrDomain{ Address: &net.IPOrDomain_Ip{ Ip: []byte{8, 8, 8, 8}, }, }, - Port: 53, - Networks: []net.Network{net.Network_TCP}, - FollowRedirect: true, - UserLevel: 1, + RewritePort: 53, + AllowedNetworks: []net.Network{net.Network_TCP}, + FollowRedirect: true, + UserLevel: 1, }, }, }) diff --git a/proxy/dns/config.pb.go b/proxy/dns/config.pb.go index 836f0af9..b8712719 100644 --- a/proxy/dns/config.pb.go +++ b/proxy/dns/config.pb.go @@ -139,7 +139,7 @@ type Config struct { state protoimpl.MessageState `protogen:"open.v1"` UserLevel uint32 `protobuf:"varint,1,opt,name=user_level,json=userLevel,proto3" json:"user_level,omitempty"` Rule []*DNSRuleConfig `protobuf:"bytes,2,rep,name=rule,proto3" json:"rule,omitempty"` - Server *net.Endpoint `protobuf:"bytes,3,opt,name=server,proto3" json:"server,omitempty"` + RewriteServer *net.Endpoint `protobuf:"bytes,3,opt,name=rewrite_server,json=rewriteServer,proto3" json:"rewrite_server,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -188,9 +188,9 @@ func (x *Config) GetRule() []*DNSRuleConfig { return nil } -func (x *Config) GetServer() *net.Endpoint { +func (x *Config) GetRewriteServer() *net.Endpoint { if x != nil { - return x.Server + return x.RewriteServer } return nil } @@ -203,12 +203,12 @@ const file_proxy_dns_config_proto_rawDesc = "" + "\rDNSRuleConfig\x122\n" + "\x06action\x18\x01 \x01(\x0e2\x1a.xray.proxy.dns.RuleActionR\x06action\x12\x14\n" + "\x05qtype\x18\x02 \x03(\x05R\x05qtype\x127\n" + - "\x06domain\x18\x03 \x03(\v2\x1f.xray.common.geodata.DomainRuleR\x06domain\"\x8d\x01\n" + + "\x06domain\x18\x03 \x03(\v2\x1f.xray.common.geodata.DomainRuleR\x06domain\"\x9c\x01\n" + "\x06Config\x12\x1d\n" + "\n" + "user_level\x18\x01 \x01(\rR\tuserLevel\x121\n" + - "\x04rule\x18\x02 \x03(\v2\x1d.xray.proxy.dns.DNSRuleConfigR\x04rule\x121\n" + - "\x06server\x18\x03 \x01(\v2\x19.xray.common.net.EndpointR\x06server*:\n" + + "\x04rule\x18\x02 \x03(\v2\x1d.xray.proxy.dns.DNSRuleConfigR\x04rule\x12@\n" + + "\x0erewrite_server\x18\x03 \x01(\v2\x19.xray.common.net.EndpointR\rrewriteServer*:\n" + "\n" + "RuleAction\x12\n" + "\n" + @@ -245,7 +245,7 @@ var file_proxy_dns_config_proto_depIdxs = []int32{ 0, // 0: xray.proxy.dns.DNSRuleConfig.action:type_name -> xray.proxy.dns.RuleAction 3, // 1: xray.proxy.dns.DNSRuleConfig.domain:type_name -> xray.common.geodata.DomainRule 1, // 2: xray.proxy.dns.Config.rule:type_name -> xray.proxy.dns.DNSRuleConfig - 4, // 3: xray.proxy.dns.Config.server:type_name -> xray.common.net.Endpoint + 4, // 3: xray.proxy.dns.Config.rewrite_server:type_name -> xray.common.net.Endpoint 4, // [4:4] is the sub-list for method output_type 4, // [4:4] is the sub-list for method input_type 4, // [4:4] is the sub-list for extension type_name diff --git a/proxy/dns/config.proto b/proxy/dns/config.proto index 866812d6..3be782d1 100644 --- a/proxy/dns/config.proto +++ b/proxy/dns/config.proto @@ -25,5 +25,5 @@ message DNSRuleConfig { message Config { uint32 user_level = 1; repeated DNSRuleConfig rule = 2; - xray.common.net.Endpoint server = 3; + xray.common.net.Endpoint rewrite_server = 3; } diff --git a/proxy/dns/dns.go b/proxy/dns/dns.go index 1b240206..2d678dd2 100644 --- a/proxy/dns/dns.go +++ b/proxy/dns/dns.go @@ -74,7 +74,7 @@ type Handler struct { client dns.Client fdns dns.FakeDNSEngine ownLinkVerifier ownLinkVerifier - server net.Destination + rewriteServer net.Destination timeout time.Duration rules []*DNSRule } @@ -87,8 +87,8 @@ func (h *Handler) Init(config *Config, dnsClient dns.Client, policyManager polic h.ownLinkVerifier = v } - if config.Server != nil { - h.server = config.Server.AsDestination() + if config.RewriteServer != nil { + h.rewriteServer = config.RewriteServer.AsDestination() } h.rules = make([]*DNSRule, 0, len(config.Rule)) @@ -161,14 +161,14 @@ func (h *Handler) Process(ctx context.Context, link *transport.Link, d internet. srcNetwork := ob.Target.Network dest := ob.Target - if h.server.Network != net.Network_Unknown { - dest.Network = h.server.Network + if h.rewriteServer.Network != net.Network_Unknown { + dest.Network = h.rewriteServer.Network } - if h.server.Address != nil { - dest.Address = h.server.Address + if h.rewriteServer.Address != nil { + dest.Address = h.rewriteServer.Address } - if h.server.Port != 0 { - dest.Port = h.server.Port + if h.rewriteServer.Port != 0 { + dest.Port = h.rewriteServer.Port } errors.LogInfo(ctx, "handling DNS traffic to ", dest) diff --git a/proxy/dns/dns_test.go b/proxy/dns/dns_test.go index 5df58c7b..6e4b468e 100644 --- a/proxy/dns/dns_test.go +++ b/proxy/dns/dns_test.go @@ -114,9 +114,9 @@ func TestUDPDNSTunnel(t *testing.T) { Inbound: []*core.InboundHandlerConfig{ { ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(net.LocalHostIP), - Port: uint32(port), - Networks: []net.Network{net.Network_UDP}, + RewriteAddress: net.NewIPOrDomain(net.LocalHostIP), + RewritePort: uint32(port), + AllowedNetworks: []net.Network{net.Network_UDP}, }), ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{ PortList: &net.PortList{Range: []*net.PortRange{net.SinglePortRange(serverPort)}}, @@ -233,9 +233,9 @@ func TestTCPDNSTunnel(t *testing.T) { Inbound: []*core.InboundHandlerConfig{ { ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(net.LocalHostIP), - Port: uint32(port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(net.LocalHostIP), + RewritePort: uint32(port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{ PortList: &net.PortList{Range: []*net.PortRange{net.SinglePortRange(serverPort)}}, @@ -319,9 +319,9 @@ func TestUDP2TCPDNSTunnel(t *testing.T) { Inbound: []*core.InboundHandlerConfig{ { ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(net.LocalHostIP), - Port: uint32(port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(net.LocalHostIP), + RewritePort: uint32(port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{ PortList: &net.PortList{Range: []*net.PortRange{net.SinglePortRange(serverPort)}}, @@ -332,7 +332,7 @@ func TestUDP2TCPDNSTunnel(t *testing.T) { Outbound: []*core.OutboundHandlerConfig{ { ProxySettings: serial.ToTypedMessage(&dns_proxy.Config{ - Server: &net.Endpoint{ + RewriteServer: &net.Endpoint{ Network: net.Network_TCP, }, }), @@ -409,9 +409,9 @@ func TestDNSRules(t *testing.T) { Inbound: []*core.InboundHandlerConfig{ { ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(net.LocalHostIP), - Port: uint32(port), - Networks: []net.Network{net.Network_UDP}, + RewriteAddress: net.NewIPOrDomain(net.LocalHostIP), + RewritePort: uint32(port), + AllowedNetworks: []net.Network{net.Network_UDP}, }), ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{ PortList: &net.PortList{Range: []*net.PortRange{net.SinglePortRange(serverPort)}}, diff --git a/proxy/dokodemo/config.go b/proxy/dokodemo/config.go index bb367051..45fc5dd1 100644 --- a/proxy/dokodemo/config.go +++ b/proxy/dokodemo/config.go @@ -6,7 +6,7 @@ import ( // GetPredefinedAddress returns the defined address from proto config. Null if address is not valid. func (v *Config) GetPredefinedAddress() net.Address { - addr := v.Address.AsAddress() + addr := v.RewriteAddress.AsAddress() if addr == nil { return nil } diff --git a/proxy/dokodemo/config.pb.go b/proxy/dokodemo/config.pb.go index 37e3c9db..0aca028d 100644 --- a/proxy/dokodemo/config.pb.go +++ b/proxy/dokodemo/config.pb.go @@ -23,16 +23,16 @@ const ( ) type Config struct { - state protoimpl.MessageState `protogen:"open.v1"` - Address *net.IPOrDomain `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - Port uint32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` - PortMap map[string]string `protobuf:"bytes,3,rep,name=port_map,json=portMap,proto3" json:"port_map,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + state protoimpl.MessageState `protogen:"open.v1"` + RewriteAddress *net.IPOrDomain `protobuf:"bytes,1,opt,name=rewrite_address,json=rewriteAddress,proto3" json:"rewrite_address,omitempty"` + RewritePort uint32 `protobuf:"varint,2,opt,name=rewrite_port,json=rewritePort,proto3" json:"rewrite_port,omitempty"` + PortMap map[string]string `protobuf:"bytes,3,rep,name=port_map,json=portMap,proto3" json:"port_map,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // List of networks that the Dokodemo accepts. - Networks []net.Network `protobuf:"varint,7,rep,packed,name=networks,proto3,enum=xray.common.net.Network" json:"networks,omitempty"` - FollowRedirect bool `protobuf:"varint,5,opt,name=follow_redirect,json=followRedirect,proto3" json:"follow_redirect,omitempty"` - UserLevel uint32 `protobuf:"varint,6,opt,name=user_level,json=userLevel,proto3" json:"user_level,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + AllowedNetworks []net.Network `protobuf:"varint,7,rep,packed,name=allowed_networks,json=allowedNetworks,proto3,enum=xray.common.net.Network" json:"allowed_networks,omitempty"` + FollowRedirect bool `protobuf:"varint,5,opt,name=follow_redirect,json=followRedirect,proto3" json:"follow_redirect,omitempty"` + UserLevel uint32 `protobuf:"varint,6,opt,name=user_level,json=userLevel,proto3" json:"user_level,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Config) Reset() { @@ -65,16 +65,16 @@ func (*Config) Descriptor() ([]byte, []int) { return file_proxy_dokodemo_config_proto_rawDescGZIP(), []int{0} } -func (x *Config) GetAddress() *net.IPOrDomain { +func (x *Config) GetRewriteAddress() *net.IPOrDomain { if x != nil { - return x.Address + return x.RewriteAddress } return nil } -func (x *Config) GetPort() uint32 { +func (x *Config) GetRewritePort() uint32 { if x != nil { - return x.Port + return x.RewritePort } return 0 } @@ -86,9 +86,9 @@ func (x *Config) GetPortMap() map[string]string { return nil } -func (x *Config) GetNetworks() []net.Network { +func (x *Config) GetAllowedNetworks() []net.Network { if x != nil { - return x.Networks + return x.AllowedNetworks } return nil } @@ -111,12 +111,12 @@ var File_proxy_dokodemo_config_proto protoreflect.FileDescriptor const file_proxy_dokodemo_config_proto_rawDesc = "" + "\n" + - "\x1bproxy/dokodemo/config.proto\x12\x13xray.proxy.dokodemo\x1a\x18common/net/address.proto\x1a\x18common/net/network.proto\"\xd2\x02\n" + - "\x06Config\x125\n" + - "\aaddress\x18\x01 \x01(\v2\x1b.xray.common.net.IPOrDomainR\aaddress\x12\x12\n" + - "\x04port\x18\x02 \x01(\rR\x04port\x12C\n" + - "\bport_map\x18\x03 \x03(\v2(.xray.proxy.dokodemo.Config.PortMapEntryR\aportMap\x124\n" + - "\bnetworks\x18\a \x03(\x0e2\x18.xray.common.net.NetworkR\bnetworks\x12'\n" + + "\x1bproxy/dokodemo/config.proto\x12\x13xray.proxy.dokodemo\x1a\x18common/net/address.proto\x1a\x18common/net/network.proto\"\xff\x02\n" + + "\x06Config\x12D\n" + + "\x0frewrite_address\x18\x01 \x01(\v2\x1b.xray.common.net.IPOrDomainR\x0erewriteAddress\x12!\n" + + "\frewrite_port\x18\x02 \x01(\rR\vrewritePort\x12C\n" + + "\bport_map\x18\x03 \x03(\v2(.xray.proxy.dokodemo.Config.PortMapEntryR\aportMap\x12C\n" + + "\x10allowed_networks\x18\a \x03(\x0e2\x18.xray.common.net.NetworkR\x0fallowedNetworks\x12'\n" + "\x0ffollow_redirect\x18\x05 \x01(\bR\x0efollowRedirect\x12\x1d\n" + "\n" + "user_level\x18\x06 \x01(\rR\tuserLevel\x1a:\n" + @@ -145,9 +145,9 @@ var file_proxy_dokodemo_config_proto_goTypes = []any{ (net.Network)(0), // 3: xray.common.net.Network } var file_proxy_dokodemo_config_proto_depIdxs = []int32{ - 2, // 0: xray.proxy.dokodemo.Config.address:type_name -> xray.common.net.IPOrDomain + 2, // 0: xray.proxy.dokodemo.Config.rewrite_address:type_name -> xray.common.net.IPOrDomain 1, // 1: xray.proxy.dokodemo.Config.port_map:type_name -> xray.proxy.dokodemo.Config.PortMapEntry - 3, // 2: xray.proxy.dokodemo.Config.networks:type_name -> xray.common.net.Network + 3, // 2: xray.proxy.dokodemo.Config.allowed_networks:type_name -> xray.common.net.Network 3, // [3:3] is the sub-list for method output_type 3, // [3:3] is the sub-list for method input_type 3, // [3:3] is the sub-list for extension type_name diff --git a/proxy/dokodemo/config.proto b/proxy/dokodemo/config.proto index 42008932..9ca62b06 100644 --- a/proxy/dokodemo/config.proto +++ b/proxy/dokodemo/config.proto @@ -10,14 +10,11 @@ import "common/net/address.proto"; import "common/net/network.proto"; message Config { - xray.common.net.IPOrDomain address = 1; - uint32 port = 2; - - map port_map = 3; - // List of networks that the Dokodemo accepts. - repeated xray.common.net.Network networks = 7; - + repeated xray.common.net.Network allowed_networks = 7; + xray.common.net.IPOrDomain rewrite_address = 1; + uint32 rewrite_port = 2; + map port_map = 3; bool follow_redirect = 5; uint32 user_level = 6; } diff --git a/proxy/dokodemo/dokodemo.go b/proxy/dokodemo/dokodemo.go index 38bfa17c..5d51c22e 100644 --- a/proxy/dokodemo/dokodemo.go +++ b/proxy/dokodemo/dokodemo.go @@ -32,22 +32,22 @@ func init() { } type DokodemoDoor struct { - policyManager policy.Manager - config *Config - address net.Address - port net.Port - portMap map[string]string - sockopt *session.Sockopt + policyManager policy.Manager + config *Config + rewriteAddress net.Address + rewritePort net.Port + portMap map[string]string + sockopt *session.Sockopt } // Init initializes the DokodemoDoor instance with necessary parameters. func (d *DokodemoDoor) Init(config *Config, pm policy.Manager, sockopt *session.Sockopt) error { - if len(config.Networks) == 0 { + if len(config.AllowedNetworks) == 0 { return errors.New("no network specified") } d.config = config - d.address = config.GetPredefinedAddress() - d.port = net.Port(config.Port) + d.rewriteAddress = config.GetPredefinedAddress() + d.rewritePort = net.Port(config.RewritePort) d.portMap = config.PortMap d.policyManager = pm d.sockopt = sockopt @@ -57,10 +57,10 @@ func (d *DokodemoDoor) Init(config *Config, pm policy.Manager, sockopt *session. // Network implements proxy.Inbound. func (d *DokodemoDoor) Network() []net.Network { - if slices.Contains(d.config.Networks, net.Network_TCP) { - return append(d.config.Networks, net.Network_UNIX) + if slices.Contains(d.config.AllowedNetworks, net.Network_TCP) { + return append(d.config.AllowedNetworks, net.Network_UNIX) } - return d.config.Networks + return d.config.AllowedNetworks } func (d *DokodemoDoor) policy() policy.Session { @@ -78,8 +78,8 @@ func (d *DokodemoDoor) Process(ctx context.Context, network net.Network, conn st } dest := net.Destination{ Network: network, - Address: d.address, - Port: d.port, + Address: d.rewriteAddress, + Port: d.rewritePort, } if !d.config.FollowRedirect { diff --git a/testing/scenarios/command_test.go b/testing/scenarios/command_test.go index 9b279938..37686e2e 100644 --- a/testing/scenarios/command_test.go +++ b/testing/scenarios/command_test.go @@ -62,9 +62,9 @@ func TestCommanderListenConfigurationItem(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -145,9 +145,9 @@ func TestCommanderRemoveHandler(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, { @@ -157,9 +157,9 @@ func TestCommanderRemoveHandler(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -240,9 +240,9 @@ func TestCommanderListHandlers(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, { @@ -252,9 +252,9 @@ func TestCommanderListHandlers(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -379,9 +379,9 @@ func TestCommanderAddRemoveUser(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -416,9 +416,9 @@ func TestCommanderAddRemoveUser(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -567,9 +567,9 @@ func TestCommanderStats(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -591,9 +591,9 @@ func TestCommanderStats(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, diff --git a/testing/scenarios/dokodemo_test.go b/testing/scenarios/dokodemo_test.go index 9e4991b6..6b77958d 100644 --- a/testing/scenarios/dokodemo_test.go +++ b/testing/scenarios/dokodemo_test.go @@ -87,9 +87,9 @@ func TestDokodemoTCP(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -181,9 +181,9 @@ func TestDokodemoUDP(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_UDP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_UDP}, }), }, }, diff --git a/testing/scenarios/feature_test.go b/testing/scenarios/feature_test.go index 65e53353..0b6dd7cb 100644 --- a/testing/scenarios/feature_test.go +++ b/testing/scenarios/feature_test.go @@ -53,9 +53,9 @@ func TestPassiveConnection(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -167,9 +167,9 @@ func TestProxy(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -301,9 +301,9 @@ func TestProxyOverKCP(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -380,9 +380,9 @@ func TestBlackhole(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, { @@ -391,9 +391,9 @@ func TestBlackhole(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest2.Address), - Port: uint32(dest2.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest2.Address), + RewritePort: uint32(dest2.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -506,9 +506,9 @@ func TestUDPConnection(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_UDP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_UDP}, }), }, }, @@ -552,9 +552,9 @@ func TestDomainSniffing(t *testing.T) { }, }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(net.LocalHostIP), - Port: 443, - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(net.LocalHostIP), + RewritePort: 443, + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, { diff --git a/testing/scenarios/metrics_test.go b/testing/scenarios/metrics_test.go index 8922b921..d7538477 100644 --- a/testing/scenarios/metrics_test.go +++ b/testing/scenarios/metrics_test.go @@ -54,9 +54,9 @@ func TestMetrics(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, diff --git a/testing/scenarios/policy_test.go b/testing/scenarios/policy_test.go index 8a5d6b24..588d07e5 100644 --- a/testing/scenarios/policy_test.go +++ b/testing/scenarios/policy_test.go @@ -112,9 +112,9 @@ func TestVMessClosing(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -214,9 +214,9 @@ func TestZeroBuffer(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, diff --git a/testing/scenarios/reverse_test.go b/testing/scenarios/reverse_test.go index 370bbb2e..15538694 100644 --- a/testing/scenarios/reverse_test.go +++ b/testing/scenarios/reverse_test.go @@ -77,9 +77,9 @@ func TestReverseProxy(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, { @@ -142,9 +142,9 @@ func TestReverseProxy(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -252,9 +252,9 @@ func TestReverseProxyLongRunning(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, { @@ -331,9 +331,9 @@ func TestReverseProxyLongRunning(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, diff --git a/testing/scenarios/shadowsocks_2022_test.go b/testing/scenarios/shadowsocks_2022_test.go index d7aa4ee5..c5e0f8b3 100644 --- a/testing/scenarios/shadowsocks_2022_test.go +++ b/testing/scenarios/shadowsocks_2022_test.go @@ -103,9 +103,9 @@ func testShadowsocks2022Tcp(t *testing.T, method string, password string) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -188,9 +188,9 @@ func testShadowsocks2022Udp(t *testing.T, method string, password string) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(udpDest.Address), - Port: uint32(udpDest.Port), - Networks: []net.Network{net.Network_UDP}, + RewriteAddress: net.NewIPOrDomain(udpDest.Address), + RewritePort: uint32(udpDest.Port), + AllowedNetworks: []net.Network{net.Network_UDP}, }), }, }, diff --git a/testing/scenarios/shadowsocks_test.go b/testing/scenarios/shadowsocks_test.go index b6003505..affa4124 100644 --- a/testing/scenarios/shadowsocks_test.go +++ b/testing/scenarios/shadowsocks_test.go @@ -68,9 +68,9 @@ func TestShadowsocksChaCha20Poly1305TCP(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -162,9 +162,9 @@ func TestShadowsocksAES256GCMTCP(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -257,9 +257,9 @@ func TestShadowsocksAES128GCMUDP(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_UDP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_UDP}, }), }, }, @@ -351,9 +351,9 @@ func TestShadowsocksAES128GCMUDPMux(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_UDP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_UDP}, }), }, }, @@ -440,9 +440,9 @@ func TestShadowsocksNone(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, diff --git a/testing/scenarios/socks_test.go b/testing/scenarios/socks_test.go index 104f6440..46425356 100644 --- a/testing/scenarios/socks_test.go +++ b/testing/scenarios/socks_test.go @@ -66,9 +66,9 @@ func TestSocksBridgeTCP(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -143,9 +143,9 @@ func TestSocksWithHttpRequest(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -209,9 +209,9 @@ func TestSocksBridageUDP(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_UDP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_UDP}, }), }, }, @@ -243,9 +243,9 @@ func TestSocksBridageUDP(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_UDP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_UDP}, }), }, }, @@ -320,9 +320,9 @@ func TestSocksBridageUDPWithRouting(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_UDP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_UDP}, }), }, }, @@ -358,9 +358,9 @@ func TestSocksBridageUDPWithRouting(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_UDP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_UDP}, }), }, }, diff --git a/testing/scenarios/tls_test.go b/testing/scenarios/tls_test.go index 85e043b8..c76ce4f6 100644 --- a/testing/scenarios/tls_test.go +++ b/testing/scenarios/tls_test.go @@ -84,9 +84,9 @@ func TestSimpleTLSConnection(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -197,9 +197,9 @@ func TestAutoIssuingCertificate(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -302,9 +302,9 @@ func TestTLSOverKCP(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -402,9 +402,9 @@ func TestTLSOverWebSocket(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -518,9 +518,9 @@ func TestGRPC(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -634,9 +634,9 @@ func TestGRPCMultiMode(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -743,9 +743,9 @@ func TestSimpleTLSConnectionPinned(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -842,9 +842,9 @@ func TestSimpleTLSConnectionPinnedWrongCert(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -940,9 +940,9 @@ func TestUTLSConnectionPinned(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -1040,9 +1040,9 @@ func TestUTLSConnectionPinnedWrongCert(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, diff --git a/testing/scenarios/transport_test.go b/testing/scenarios/transport_test.go index cb7b4e22..a0bd43f5 100644 --- a/testing/scenarios/transport_test.go +++ b/testing/scenarios/transport_test.go @@ -78,9 +78,9 @@ func TestHTTPConnectionHeader(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, diff --git a/testing/scenarios/vless_test.go b/testing/scenarios/vless_test.go index 08cb6384..ca176cf7 100644 --- a/testing/scenarios/vless_test.go +++ b/testing/scenarios/vless_test.go @@ -88,9 +88,9 @@ func TestVless(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -193,9 +193,9 @@ func TestVlessTls(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -316,9 +316,9 @@ func TestVlessXtlsVision(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -448,9 +448,9 @@ func TestVlessXtlsVisionReality(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -586,9 +586,9 @@ func TestVlessRealityFingerprints(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, diff --git a/testing/scenarios/vmess_test.go b/testing/scenarios/vmess_test.go index 0e232bd8..28b4f0e0 100644 --- a/testing/scenarios/vmess_test.go +++ b/testing/scenarios/vmess_test.go @@ -83,9 +83,9 @@ func TestVMessGCM(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -183,9 +183,9 @@ func TestVMessGCMReadv(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -286,9 +286,9 @@ func TestVMessGCMUDP(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_UDP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_UDP}, }), }, }, @@ -383,9 +383,9 @@ func TestVMessChacha20(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -481,9 +481,9 @@ func TestVMessNone(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -581,9 +581,9 @@ func TestVMessKCP(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -686,9 +686,9 @@ func TestVMessKCPLarge(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -792,9 +792,9 @@ func TestVMessGCMMux(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -906,9 +906,9 @@ func TestVMessGCMMuxUDP(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, { @@ -917,9 +917,9 @@ func TestVMessGCMMuxUDP(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(udpDest.Address), - Port: uint32(udpDest.Port), - Networks: []net.Network{net.Network_UDP}, + RewriteAddress: net.NewIPOrDomain(udpDest.Address), + RewritePort: uint32(udpDest.Port), + AllowedNetworks: []net.Network{net.Network_UDP}, }), }, }, @@ -1028,9 +1028,9 @@ func TestVMessZero(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -1125,9 +1125,9 @@ func TestVMessGCMLengthAuth(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, @@ -1227,9 +1227,9 @@ func TestVMessGCMLengthAuthPlusNoTerminationSignal(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, diff --git a/testing/scenarios/wireguard_test.go b/testing/scenarios/wireguard_test.go index 60f5d61a..18b0ef98 100644 --- a/testing/scenarios/wireguard_test.go +++ b/testing/scenarios/wireguard_test.go @@ -84,9 +84,9 @@ func TestWireguard(t *testing.T) { Listen: net.NewIPOrDomain(net.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: net.NewIPOrDomain(dest.Address), - Port: uint32(dest.Port), - Networks: []net.Network{net.Network_TCP}, + RewriteAddress: net.NewIPOrDomain(dest.Address), + RewritePort: uint32(dest.Port), + AllowedNetworks: []net.Network{net.Network_TCP}, }), }, }, diff --git a/transport/internet/finalmask/sudoku/sudoku_test.go b/transport/internet/finalmask/sudoku/sudoku_test.go index 1861606e..f0780e2b 100644 --- a/transport/internet/finalmask/sudoku/sudoku_test.go +++ b/transport/internet/finalmask/sudoku/sudoku_test.go @@ -292,9 +292,9 @@ func runVLESSRealityCase(t *testing.T, bin string, mode trafficMode, payloadSize Listen: xnet.NewIPOrDomain(xnet.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: xnet.NewIPOrDomain(backend.Address()), - Port: uint32(backend.Port()), - Networks: []xnet.Network{xnet.Network_TCP}, + RewriteAddress: xnet.NewIPOrDomain(backend.Address()), + RewritePort: uint32(backend.Port()), + AllowedNetworks: []xnet.Network{xnet.Network_TCP}, }), }, }, @@ -412,9 +412,9 @@ func runHysteria2Case(t *testing.T, bin string, mode trafficMode, payloadSize in Listen: xnet.NewIPOrDomain(xnet.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: xnet.NewIPOrDomain(backend.Address()), - Port: uint32(backend.Port()), - Networks: []xnet.Network{xnet.Network_TCP}, + RewriteAddress: xnet.NewIPOrDomain(backend.Address()), + RewritePort: uint32(backend.Port()), + AllowedNetworks: []xnet.Network{xnet.Network_TCP}, }), }, }, @@ -530,9 +530,9 @@ func runVLesseEncCase(t *testing.T, bin string, mode trafficMode, payloadSize in Listen: xnet.NewIPOrDomain(xnet.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: xnet.NewIPOrDomain(backend.Address()), - Port: uint32(backend.Port()), - Networks: []xnet.Network{xnet.Network_TCP}, + RewriteAddress: xnet.NewIPOrDomain(backend.Address()), + RewritePort: uint32(backend.Port()), + AllowedNetworks: []xnet.Network{xnet.Network_TCP}, }), }, }, @@ -630,9 +630,9 @@ func runVLESSXHTTPCase(t *testing.T, bin string, mode trafficMode, payloadSize i Listen: xnet.NewIPOrDomain(xnet.LocalHostIP), }), ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ - Address: xnet.NewIPOrDomain(backend.Address()), - Port: uint32(backend.Port()), - Networks: []xnet.Network{xnet.Network_TCP}, + RewriteAddress: xnet.NewIPOrDomain(backend.Address()), + RewritePort: uint32(backend.Port()), + AllowedNetworks: []xnet.Network{xnet.Network_TCP}, }), }, },