mirror of
https://github.com/v2fly/v2ray-core.git
synced 2025-01-02 15:36:41 -05:00
network proto
This commit is contained in:
parent
fbdb1e09d7
commit
c518726910
@ -49,7 +49,7 @@ func (this *Router) ResolveIP(dest v2net.Destination) []v2net.Destination {
|
|||||||
}
|
}
|
||||||
dests := make([]v2net.Destination, len(ips))
|
dests := make([]v2net.Destination, len(ips))
|
||||||
for idx, ip := range ips {
|
for idx, ip := range ips {
|
||||||
if dest.Network() == v2net.TCPNetwork {
|
if dest.Network() == v2net.Network_TCP {
|
||||||
dests[idx] = v2net.TCPDestination(v2net.IPAddress(ip), dest.Port())
|
dests[idx] = v2net.TCPDestination(v2net.IPAddress(ip), dest.Port())
|
||||||
} else {
|
} else {
|
||||||
dests[idx] = v2net.UDPDestination(v2net.IPAddress(ip), dest.Port())
|
dests[idx] = v2net.UDPDestination(v2net.IPAddress(ip), dest.Port())
|
||||||
|
@ -21,7 +21,7 @@ func TestSimpleRouter(t *testing.T) {
|
|||||||
Rules: []*Rule{
|
Rules: []*Rule{
|
||||||
{
|
{
|
||||||
Tag: "test",
|
Tag: "test",
|
||||||
Condition: NewNetworkMatcher(v2net.Network("tcp").AsList()),
|
Condition: NewNetworkMatcher(v2net.Network_TCP.AsList()),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,8 @@ Package net is a generated protocol buffer package.
|
|||||||
|
|
||||||
It is generated from these files:
|
It is generated from these files:
|
||||||
v2ray.com/core/common/net/address.proto
|
v2ray.com/core/common/net/address.proto
|
||||||
|
v2ray.com/core/common/net/destination.proto
|
||||||
|
v2ray.com/core/common/net/network.proto
|
||||||
v2ray.com/core/common/net/port.proto
|
v2ray.com/core/common/net/port.proto
|
||||||
|
|
||||||
It has these top-level messages:
|
It has these top-level messages:
|
||||||
|
@ -44,7 +44,7 @@ type tcpDestination struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (dest *tcpDestination) Network() Network {
|
func (dest *tcpDestination) Network() Network {
|
||||||
return TCPNetwork
|
return Network_TCP
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dest *tcpDestination) Address() Address {
|
func (dest *tcpDestination) Address() Address {
|
||||||
@ -78,7 +78,7 @@ func (dest *tcpDestination) Equals(another Destination) bool {
|
|||||||
if dest == nil || another == nil {
|
if dest == nil || another == nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if another.Network() != TCPNetwork {
|
if another.Network() != Network_TCP {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return dest.Port() == another.Port() && dest.Address().Equals(another.Address())
|
return dest.Port() == another.Port() && dest.Address().Equals(another.Address())
|
||||||
@ -90,7 +90,7 @@ type udpDestination struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (dest *udpDestination) Network() Network {
|
func (dest *udpDestination) Network() Network {
|
||||||
return UDPNetwork
|
return Network_UDP
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dest *udpDestination) Address() Address {
|
func (dest *udpDestination) Address() Address {
|
||||||
@ -124,7 +124,7 @@ func (dest *udpDestination) Equals(another Destination) bool {
|
|||||||
if dest == nil || another == nil {
|
if dest == nil || another == nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if another.Network() != UDPNetwork {
|
if another.Network() != Network_UDP {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return dest.Port() == another.Port() && dest.Address().Equals(another.Address())
|
return dest.Port() == another.Port() && dest.Address().Equals(another.Address())
|
||||||
|
27
common/net/destination.pb.go
Normal file
27
common/net/destination.pb.go
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
// Code generated by protoc-gen-go.
|
||||||
|
// source: v2ray.com/core/common/net/destination.proto
|
||||||
|
// DO NOT EDIT!
|
||||||
|
|
||||||
|
package net
|
||||||
|
|
||||||
|
import proto "github.com/golang/protobuf/proto"
|
||||||
|
import fmt "fmt"
|
||||||
|
import math "math"
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ = proto.Marshal
|
||||||
|
var _ = fmt.Errorf
|
||||||
|
var _ = math.Inf
|
||||||
|
|
||||||
|
func init() { proto.RegisterFile("v2ray.com/core/common/net/destination.proto", fileDescriptor1) }
|
||||||
|
|
||||||
|
var fileDescriptor1 = []byte{
|
||||||
|
// 98 bytes of a gzipped FileDescriptorProto
|
||||||
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xd2, 0x2e, 0x33, 0x2a, 0x4a,
|
||||||
|
0xac, 0xd4, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xce, 0x2f, 0x4a, 0xd5, 0x4f, 0xce, 0xcf, 0xcd, 0xcd,
|
||||||
|
0xcf, 0xd3, 0xcf, 0x4b, 0x2d, 0xd1, 0x4f, 0x49, 0x2d, 0x2e, 0xc9, 0xcc, 0x4b, 0x2c, 0xc9, 0xcc,
|
||||||
|
0xcf, 0xd3, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x92, 0x4c, 0xce, 0xcf, 0xd5, 0x83, 0x69, 0x28,
|
||||||
|
0x4a, 0xd5, 0x83, 0x28, 0xd6, 0xcb, 0x4b, 0x2d, 0x71, 0x62, 0x8d, 0x62, 0xce, 0x4b, 0x2d, 0x49,
|
||||||
|
0x62, 0x03, 0x2b, 0x34, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x95, 0x64, 0x1f, 0x93, 0x57, 0x00,
|
||||||
|
0x00, 0x00,
|
||||||
|
}
|
4
common/net/destination.proto
Normal file
4
common/net/destination.proto
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package com.v2ray.core.common.net;
|
||||||
|
option go_package = "net";
|
@ -6,30 +6,38 @@ import (
|
|||||||
"v2ray.com/core/common/collect"
|
"v2ray.com/core/common/collect"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
func ParseNetwork(nwStr string) Network {
|
||||||
// TCPNetwork represents the TCP network.
|
if network, found := Network_value[nwStr]; found {
|
||||||
TCPNetwork = Network("tcp")
|
return Network(network)
|
||||||
|
}
|
||||||
// UDPNetwork represents the UDP network.
|
switch strings.ToLower(nwStr) {
|
||||||
UDPNetwork = Network("udp")
|
case "tcp":
|
||||||
|
return Network_TCP
|
||||||
// KCPNetwork represents the KCP network.
|
case "udp":
|
||||||
KCPNetwork = Network("kcp")
|
return Network_UDP
|
||||||
|
case "kcp":
|
||||||
// WSNetwork represents the Websocket over HTTP network.
|
return Network_KCP
|
||||||
WSNetwork = Network("ws")
|
case "ws":
|
||||||
)
|
return Network_WebSocket
|
||||||
|
default:
|
||||||
// Network represents a communication network on internet.
|
return Network_Unknown
|
||||||
type Network string
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (this Network) AsList() *NetworkList {
|
func (this Network) AsList() *NetworkList {
|
||||||
list := NetworkList([]Network{this})
|
list := NetworkList([]Network{this})
|
||||||
return &list
|
return &list
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this Network) String() string {
|
func (this Network) SystemString() string {
|
||||||
return string(this)
|
switch this {
|
||||||
|
case Network_TCP, Network_RawTCP:
|
||||||
|
return "tcp"
|
||||||
|
case Network_UDP, Network_KCP:
|
||||||
|
return "udp"
|
||||||
|
default:
|
||||||
|
return "unknown"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NetworkList is a list of Networks.
|
// NetworkList is a list of Networks.
|
||||||
@ -39,7 +47,7 @@ type NetworkList []Network
|
|||||||
func NewNetworkList(networks collect.StringList) NetworkList {
|
func NewNetworkList(networks collect.StringList) NetworkList {
|
||||||
list := NetworkList(make([]Network, networks.Len()))
|
list := NetworkList(make([]Network, networks.Len()))
|
||||||
for idx, network := range networks {
|
for idx, network := range networks {
|
||||||
list[idx] = Network(strings.ToLower(strings.TrimSpace(network)))
|
list[idx] = ParseNetwork(network)
|
||||||
}
|
}
|
||||||
return list
|
return list
|
||||||
}
|
}
|
||||||
|
67
common/net/network.pb.go
Normal file
67
common/net/network.pb.go
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
// Code generated by protoc-gen-go.
|
||||||
|
// source: v2ray.com/core/common/net/network.proto
|
||||||
|
// DO NOT EDIT!
|
||||||
|
|
||||||
|
package net
|
||||||
|
|
||||||
|
import proto "github.com/golang/protobuf/proto"
|
||||||
|
import fmt "fmt"
|
||||||
|
import math "math"
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ = proto.Marshal
|
||||||
|
var _ = fmt.Errorf
|
||||||
|
var _ = math.Inf
|
||||||
|
|
||||||
|
type Network int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
Network_Unknown Network = 0
|
||||||
|
Network_RawTCP Network = 1
|
||||||
|
Network_TCP Network = 2
|
||||||
|
Network_UDP Network = 3
|
||||||
|
Network_KCP Network = 4
|
||||||
|
Network_WebSocket Network = 5
|
||||||
|
)
|
||||||
|
|
||||||
|
var Network_name = map[int32]string{
|
||||||
|
0: "Unknown",
|
||||||
|
1: "RawTCP",
|
||||||
|
2: "TCP",
|
||||||
|
3: "UDP",
|
||||||
|
4: "KCP",
|
||||||
|
5: "WebSocket",
|
||||||
|
}
|
||||||
|
var Network_value = map[string]int32{
|
||||||
|
"Unknown": 0,
|
||||||
|
"RawTCP": 1,
|
||||||
|
"TCP": 2,
|
||||||
|
"UDP": 3,
|
||||||
|
"KCP": 4,
|
||||||
|
"WebSocket": 5,
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x Network) String() string {
|
||||||
|
return proto.EnumName(Network_name, int32(x))
|
||||||
|
}
|
||||||
|
func (Network) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{0} }
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
proto.RegisterEnum("com.v2ray.core.common.net.Network", Network_name, Network_value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() { proto.RegisterFile("v2ray.com/core/common/net/network.proto", fileDescriptor2) }
|
||||||
|
|
||||||
|
var fileDescriptor2 = []byte{
|
||||||
|
// 159 bytes of a gzipped FileDescriptorProto
|
||||||
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x52, 0x2f, 0x33, 0x2a, 0x4a,
|
||||||
|
0xac, 0xd4, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xce, 0x2f, 0x4a, 0xd5, 0x4f, 0xce, 0xcf, 0xcd, 0xcd,
|
||||||
|
0xcf, 0xd3, 0xcf, 0x4b, 0x2d, 0x01, 0xe1, 0xf2, 0xfc, 0xa2, 0x6c, 0xbd, 0x82, 0xa2, 0xfc, 0x92,
|
||||||
|
0x7c, 0x21, 0xc9, 0xe4, 0xfc, 0x5c, 0x3d, 0x98, 0xe2, 0xa2, 0x54, 0x3d, 0x88, 0x42, 0xbd, 0xbc,
|
||||||
|
0xd4, 0x12, 0x2d, 0x1f, 0x2e, 0x76, 0x3f, 0x88, 0x5a, 0x21, 0x6e, 0x2e, 0xf6, 0xd0, 0xbc, 0xec,
|
||||||
|
0xbc, 0xfc, 0xf2, 0x3c, 0x01, 0x06, 0x21, 0x2e, 0x2e, 0xb6, 0xa0, 0xc4, 0xf2, 0x10, 0xe7, 0x00,
|
||||||
|
0x01, 0x46, 0x21, 0x76, 0x2e, 0x66, 0x10, 0x83, 0x09, 0xc4, 0x08, 0x75, 0x09, 0x10, 0x60, 0x06,
|
||||||
|
0x31, 0xbc, 0x9d, 0x03, 0x04, 0x58, 0x84, 0x78, 0xb9, 0x38, 0xc3, 0x53, 0x93, 0x82, 0xf3, 0x93,
|
||||||
|
0xb3, 0x53, 0x4b, 0x04, 0x58, 0x9d, 0x58, 0xa3, 0x98, 0xf3, 0x52, 0x4b, 0x92, 0xd8, 0xc0, 0xd6,
|
||||||
|
0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x83, 0xa9, 0x75, 0xb3, 0xa1, 0x00, 0x00, 0x00,
|
||||||
|
}
|
13
common/net/network.proto
Normal file
13
common/net/network.proto
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package com.v2ray.core.common.net;
|
||||||
|
option go_package = "net";
|
||||||
|
|
||||||
|
enum Network {
|
||||||
|
Unknown = 0;
|
||||||
|
RawTCP = 1;
|
||||||
|
TCP = 2;
|
||||||
|
UDP = 3;
|
||||||
|
KCP = 4;
|
||||||
|
WebSocket = 5;
|
||||||
|
}
|
@ -16,8 +16,8 @@ func TestArrayNetworkList(t *testing.T) {
|
|||||||
var list NetworkList
|
var list NetworkList
|
||||||
err := json.Unmarshal([]byte("[\"Tcp\"]"), &list)
|
err := json.Unmarshal([]byte("[\"Tcp\"]"), &list)
|
||||||
assert.Error(err).IsNil()
|
assert.Error(err).IsNil()
|
||||||
assert.Bool(list.HasNetwork(Network("tcp"))).IsTrue()
|
assert.Bool(list.HasNetwork(ParseNetwork("tcp"))).IsTrue()
|
||||||
assert.Bool(list.HasNetwork(Network("udp"))).IsFalse()
|
assert.Bool(list.HasNetwork(ParseNetwork("udp"))).IsFalse()
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestStringNetworkList(t *testing.T) {
|
func TestStringNetworkList(t *testing.T) {
|
||||||
@ -26,8 +26,8 @@ func TestStringNetworkList(t *testing.T) {
|
|||||||
var list NetworkList
|
var list NetworkList
|
||||||
err := json.Unmarshal([]byte("\"TCP, ip\""), &list)
|
err := json.Unmarshal([]byte("\"TCP, ip\""), &list)
|
||||||
assert.Error(err).IsNil()
|
assert.Error(err).IsNil()
|
||||||
assert.Bool(list.HasNetwork(Network("tcp"))).IsTrue()
|
assert.Bool(list.HasNetwork(ParseNetwork("tcp"))).IsTrue()
|
||||||
assert.Bool(list.HasNetwork(Network("udp"))).IsFalse()
|
assert.Bool(list.HasNetwork(ParseNetwork("udp"))).IsFalse()
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestInvalidNetworkJson(t *testing.T) {
|
func TestInvalidNetworkJson(t *testing.T) {
|
||||||
|
@ -22,15 +22,15 @@ type PortRange struct {
|
|||||||
func (m *PortRange) Reset() { *m = PortRange{} }
|
func (m *PortRange) Reset() { *m = PortRange{} }
|
||||||
func (m *PortRange) String() string { return proto.CompactTextString(m) }
|
func (m *PortRange) String() string { return proto.CompactTextString(m) }
|
||||||
func (*PortRange) ProtoMessage() {}
|
func (*PortRange) ProtoMessage() {}
|
||||||
func (*PortRange) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
|
func (*PortRange) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} }
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
proto.RegisterType((*PortRange)(nil), "com.v2ray.core.common.net.PortRange")
|
proto.RegisterType((*PortRange)(nil), "com.v2ray.core.common.net.PortRange")
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { proto.RegisterFile("v2ray.com/core/common/net/port.proto", fileDescriptor1) }
|
func init() { proto.RegisterFile("v2ray.com/core/common/net/port.proto", fileDescriptor3) }
|
||||||
|
|
||||||
var fileDescriptor1 = []byte{
|
var fileDescriptor3 = []byte{
|
||||||
// 137 bytes of a gzipped FileDescriptorProto
|
// 137 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x34, 0xcc, 0xb1, 0x0a, 0xc2, 0x40,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x34, 0xcc, 0xb1, 0x0a, 0xc2, 0x40,
|
||||||
0x0c, 0x87, 0x71, 0x7a, 0x56, 0xc1, 0x03, 0x1d, 0x6e, 0xaa, 0x9b, 0x88, 0x83, 0x53, 0x02, 0xfa,
|
0x0c, 0x87, 0x71, 0x7a, 0x56, 0xc1, 0x03, 0x1d, 0x6e, 0xaa, 0x9b, 0x88, 0x83, 0x53, 0x02, 0xfa,
|
||||||
|
@ -73,13 +73,13 @@ func (this *DokodemoDoor) Start() error {
|
|||||||
}
|
}
|
||||||
this.accepting = true
|
this.accepting = true
|
||||||
|
|
||||||
if this.config.Network.HasNetwork(v2net.TCPNetwork) {
|
if this.config.Network.HasNetwork(v2net.Network_TCP) {
|
||||||
err := this.ListenTCP()
|
err := this.ListenTCP()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if this.config.Network.HasNetwork(v2net.UDPNetwork) {
|
if this.config.Network.HasNetwork(v2net.Network_UDP) {
|
||||||
err := this.ListenUDP()
|
err := this.ListenUDP()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -56,7 +56,7 @@ func TestDokodemoTCP(t *testing.T) {
|
|||||||
dokodemo := NewDokodemoDoor(&Config{
|
dokodemo := NewDokodemoDoor(&Config{
|
||||||
Address: v2net.LocalHostIP,
|
Address: v2net.LocalHostIP,
|
||||||
Port: tcpServer.Port,
|
Port: tcpServer.Port,
|
||||||
Network: v2net.TCPNetwork.AsList(),
|
Network: v2net.Network_TCP.AsList(),
|
||||||
Timeout: 600,
|
Timeout: 600,
|
||||||
}, space, &proxy.InboundHandlerMeta{
|
}, space, &proxy.InboundHandlerMeta{
|
||||||
Address: v2net.LocalHostIP,
|
Address: v2net.LocalHostIP,
|
||||||
@ -126,7 +126,7 @@ func TestDokodemoUDP(t *testing.T) {
|
|||||||
dokodemo := NewDokodemoDoor(&Config{
|
dokodemo := NewDokodemoDoor(&Config{
|
||||||
Address: v2net.LocalHostIP,
|
Address: v2net.LocalHostIP,
|
||||||
Port: udpServer.Port,
|
Port: udpServer.Port,
|
||||||
Network: v2net.UDPNetwork.AsList(),
|
Network: v2net.Network_UDP.AsList(),
|
||||||
Timeout: 600,
|
Timeout: 600,
|
||||||
}, space, &proxy.InboundHandlerMeta{
|
}, space, &proxy.InboundHandlerMeta{
|
||||||
Address: v2net.LocalHostIP,
|
Address: v2net.LocalHostIP,
|
||||||
|
@ -58,7 +58,7 @@ func (this *FreedomConnection) ResolveIP(destination v2net.Destination) v2net.De
|
|||||||
|
|
||||||
ip := ips[dice.Roll(len(ips))]
|
ip := ips[dice.Roll(len(ips))]
|
||||||
var newDest v2net.Destination
|
var newDest v2net.Destination
|
||||||
if destination.Network() == v2net.TCPNetwork {
|
if destination.Network() == v2net.Network_TCP {
|
||||||
newDest = v2net.TCPDestination(v2net.IPAddress(ip), destination.Port())
|
newDest = v2net.TCPDestination(v2net.IPAddress(ip), destination.Port())
|
||||||
} else {
|
} else {
|
||||||
newDest = v2net.UDPDestination(v2net.IPAddress(ip), destination.Port())
|
newDest = v2net.UDPDestination(v2net.IPAddress(ip), destination.Port())
|
||||||
@ -112,7 +112,7 @@ func (this *FreedomConnection) Dispatch(destination v2net.Destination, payload *
|
|||||||
var reader io.Reader = conn
|
var reader io.Reader = conn
|
||||||
|
|
||||||
timeout := this.timeout
|
timeout := this.timeout
|
||||||
if destination.Network() == v2net.UDPNetwork {
|
if destination.Network() == v2net.Network_UDP {
|
||||||
timeout = 16
|
timeout = 16
|
||||||
}
|
}
|
||||||
if timeout > 0 {
|
if timeout > 0 {
|
||||||
|
@ -49,7 +49,7 @@ func (this *VMessOutboundHandler) Dispatch(target v2net.Destination, payload *al
|
|||||||
log.Info("VMess|Outbound: Tunneling request to ", target, " via ", rec.Destination())
|
log.Info("VMess|Outbound: Tunneling request to ", target, " via ", rec.Destination())
|
||||||
|
|
||||||
command := protocol.RequestCommandTCP
|
command := protocol.RequestCommandTCP
|
||||||
if target.Network() == v2net.UDPNetwork {
|
if target.Network() == v2net.Network_UDP {
|
||||||
command = protocol.RequestCommandUDP
|
command = protocol.RequestCommandUDP
|
||||||
}
|
}
|
||||||
request := &protocol.RequestHeader{
|
request := &protocol.RequestHeader{
|
||||||
|
@ -20,25 +20,25 @@ type DestinationSubject struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *DestinationSubject) IsTCP() {
|
func (this *DestinationSubject) IsTCP() {
|
||||||
if this.value.Network() != v2net.TCPNetwork {
|
if this.value.Network() != v2net.Network_TCP {
|
||||||
this.Fail("is", "a TCP destination")
|
this.Fail("is", "a TCP destination")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *DestinationSubject) IsNotTCP() {
|
func (this *DestinationSubject) IsNotTCP() {
|
||||||
if this.value.Network() == v2net.TCPNetwork {
|
if this.value.Network() == v2net.Network_TCP {
|
||||||
this.Fail("is not", "a TCP destination")
|
this.Fail("is not", "a TCP destination")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *DestinationSubject) IsUDP() {
|
func (this *DestinationSubject) IsUDP() {
|
||||||
if this.value.Network() != v2net.UDPNetwork {
|
if this.value.Network() != v2net.Network_UDP {
|
||||||
this.Fail("is", "a UDP destination")
|
this.Fail("is", "a UDP destination")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *DestinationSubject) IsNotUDP() {
|
func (this *DestinationSubject) IsNotUDP() {
|
||||||
if this.value.Network() == v2net.UDPNetwork {
|
if this.value.Network() == v2net.Network_UDP {
|
||||||
this.Fail("is not", "a UDP destination")
|
this.Fail("is not", "a UDP destination")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,13 +47,13 @@ func (this *StreamSettings) UnmarshalJSON(data []byte) error {
|
|||||||
if err := json.Unmarshal(data, jsonConfig); err != nil {
|
if err := json.Unmarshal(data, jsonConfig); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if jsonConfig.Network.HasNetwork(v2net.KCPNetwork) {
|
if jsonConfig.Network.HasNetwork(v2net.Network_KCP) {
|
||||||
this.Type |= StreamConnectionTypeKCP
|
this.Type |= StreamConnectionTypeKCP
|
||||||
}
|
}
|
||||||
if jsonConfig.Network.HasNetwork(v2net.WSNetwork) {
|
if jsonConfig.Network.HasNetwork(v2net.Network_WebSocket) {
|
||||||
this.Type |= StreamConnectionTypeWebSocket
|
this.Type |= StreamConnectionTypeWebSocket
|
||||||
}
|
}
|
||||||
if jsonConfig.Network.HasNetwork(v2net.TCPNetwork) {
|
if jsonConfig.Network.HasNetwork(v2net.Network_TCP) {
|
||||||
this.Type |= StreamConnectionTypeTCP
|
this.Type |= StreamConnectionTypeTCP
|
||||||
}
|
}
|
||||||
this.Security = StreamSecurityTypeNone
|
this.Security = StreamSecurityTypeNone
|
||||||
|
@ -27,7 +27,7 @@ func Dial(src v2net.Address, dest v2net.Destination, settings *StreamSettings) (
|
|||||||
|
|
||||||
var connection Connection
|
var connection Connection
|
||||||
var err error
|
var err error
|
||||||
if dest.Network() == v2net.TCPNetwork {
|
if dest.Network() == v2net.Network_TCP {
|
||||||
switch {
|
switch {
|
||||||
case settings.IsCapableOf(StreamConnectionTypeTCP):
|
case settings.IsCapableOf(StreamConnectionTypeTCP):
|
||||||
connection, err = TCPDialer(src, dest)
|
connection, err = TCPDialer(src, dest)
|
||||||
|
@ -25,7 +25,7 @@ func (this *DefaultSystemDialer) Dial(src v2net.Address, dest v2net.Destination)
|
|||||||
}
|
}
|
||||||
if src != nil && src != v2net.AnyIP {
|
if src != nil && src != v2net.AnyIP {
|
||||||
var addr net.Addr
|
var addr net.Addr
|
||||||
if dest.Network() == v2net.TCPNetwork {
|
if dest.Network() == v2net.Network_TCP {
|
||||||
addr = &net.TCPAddr{
|
addr = &net.TCPAddr{
|
||||||
IP: src.IP(),
|
IP: src.IP(),
|
||||||
Port: 0,
|
Port: 0,
|
||||||
@ -38,7 +38,7 @@ func (this *DefaultSystemDialer) Dial(src v2net.Address, dest v2net.Destination)
|
|||||||
}
|
}
|
||||||
dialer.LocalAddr = addr
|
dialer.LocalAddr = addr
|
||||||
}
|
}
|
||||||
return dialer.Dial(dest.Network().String(), dest.NetAddr())
|
return dialer.Dial(dest.Network().SystemString(), dest.NetAddr())
|
||||||
}
|
}
|
||||||
|
|
||||||
type SystemDialerAdapter interface {
|
type SystemDialerAdapter interface {
|
||||||
@ -56,7 +56,7 @@ func WithAdapter(dialer SystemDialerAdapter) SystemDialer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *SimpleSystemDialer) Dial(src v2net.Address, dest v2net.Destination) (net.Conn, error) {
|
func (this *SimpleSystemDialer) Dial(src v2net.Address, dest v2net.Destination) (net.Conn, error) {
|
||||||
return this.adapter.Dial(dest.Network().String(), dest.NetAddr())
|
return this.adapter.Dial(dest.Network().SystemString(), dest.NetAddr())
|
||||||
}
|
}
|
||||||
|
|
||||||
// UseAlternativeSystemDialer replaces the current system dialer with a given one.
|
// UseAlternativeSystemDialer replaces the current system dialer with a given one.
|
||||||
|
@ -19,7 +19,7 @@ func Dial(src v2net.Address, dest v2net.Destination) (internet.Connection, error
|
|||||||
}
|
}
|
||||||
id := src.String() + "-" + dest.NetAddr()
|
id := src.String() + "-" + dest.NetAddr()
|
||||||
var conn net.Conn
|
var conn net.Conn
|
||||||
if dest.Network() == v2net.TCPNetwork && effectiveConfig.ConnectionReuse {
|
if dest.Network() == v2net.Network_TCP && effectiveConfig.ConnectionReuse {
|
||||||
conn = globalCache.Get(id)
|
conn = globalCache.Get(id)
|
||||||
}
|
}
|
||||||
if conn == nil {
|
if conn == nil {
|
||||||
|
@ -23,7 +23,7 @@ func Dial(src v2net.Address, dest v2net.Destination) (internet.Connection, error
|
|||||||
}
|
}
|
||||||
id := src.String() + "-" + dest.NetAddr()
|
id := src.String() + "-" + dest.NetAddr()
|
||||||
var conn *wsconn
|
var conn *wsconn
|
||||||
if dest.Network() == v2net.TCPNetwork && effectiveConfig.ConnectionReuse {
|
if dest.Network() == v2net.Network_TCP && effectiveConfig.ConnectionReuse {
|
||||||
connt := globalCache.Get(id)
|
connt := globalCache.Get(id)
|
||||||
if connt != nil {
|
if connt != nil {
|
||||||
conn = connt.(*wsconn)
|
conn = connt.(*wsconn)
|
||||||
|
Loading…
Reference in New Issue
Block a user