mirror of
https://github.com/e1732a364fed/v2ray_simple.git
synced 2025-12-24 13:27:56 +08:00
取消Client的LocalAddr,改为 LocalTCPAddr 和 LocalUDPAddr 删除direct中的对应条目。这样可更清晰地配置双本地地址 将设置sendthrough设置双地址的代码移动到 proxy.newClient函数 这样不仅direct可指定不同的tcp和udp的本地地址,任何client协议都可以了 为ClientCreator 接口 添加 UseUDPAsMsgConn 方法,direct和ss返回true 在ss的client的EstablishUDPChannel进行自行拨号 在ss的server建立后,自动循环监听udp,绕过vs的基本监听机制。因为vs架构的限制,一个代理只能有一个唯一的传输层协议。 ServerCreator 接口 添加 AfterCommonConfServer 方法
37 lines
842 B
Go
37 lines
842 B
Go
package netLayer
|
||
|
||
const UnknownNetwork = 0
|
||
const (
|
||
// Transport Layer Protocols, 使用uint16 mask,所以最多支持16种
|
||
TCP uint16 = 1 << iota
|
||
UDP
|
||
Dual //use both tcp and udp
|
||
UNIX //unix domain socket
|
||
IP
|
||
Raw_socket
|
||
KCP
|
||
Quic //quic是一个横跨多个层的协议,这里也算一个,毕竟与kcp类似
|
||
|
||
)
|
||
|
||
// 若字符串无法被解析为网络类型,则返回 UnknownNetwork
|
||
func StrToTransportProtocol(s string) uint16 {
|
||
switch s {
|
||
case "tcp", "tcp4", "tcp6", "TCP", "TCP4", "TCP6":
|
||
return TCP
|
||
case "udp", "udp4", "udp6", "UDP", "UDP4", "UDP6":
|
||
return UDP
|
||
case DualNetworkName, "mix", "mixed", "Mix", "MIX":
|
||
return Dual
|
||
case "unix", "Unix", "UNIX":
|
||
return UNIX
|
||
case "raw", "RAW":
|
||
return Raw_socket
|
||
case "kcp", "KCP":
|
||
return KCP
|
||
case "quic", "Quic", "QUIC":
|
||
return Quic
|
||
}
|
||
return UnknownNetwork
|
||
}
|