mirror of
https://github.com/e1732a364fed/v2ray_simple.git
synced 2025-12-24 13:27:56 +08:00
修缮代码;修正路由中传输层配置录入的一个错误.
gitignore屏蔽掉程序目录下的配置文件
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -5,6 +5,7 @@ server.toml
|
||||
v2ray_simple
|
||||
v2ray_simple_*
|
||||
cmd/verysimple/verysimple
|
||||
cmd/verysimple/*.toml
|
||||
verysimple_*
|
||||
*.exe
|
||||
*.DS_Store
|
||||
|
||||
@@ -10,8 +10,6 @@ const (
|
||||
KCP
|
||||
Quic //quic是一个横跨多个层的协议,这里也算一个,毕竟与kcp类似
|
||||
|
||||
//一般而言,我们除了tcp和udp的协议只用于出口,不用于入口
|
||||
//不过,如果是多级代理串联的话,也会碰到需要 kcp等流量作为入口等情况。
|
||||
)
|
||||
|
||||
//若字符串无法被解析为网络类型,则返回 UnknownNetwork
|
||||
|
||||
@@ -90,8 +90,10 @@ func ListenAndAccept(network, addr string, sockopt *Sockopt, xver int, acceptFun
|
||||
if network == "" {
|
||||
network = "tcp"
|
||||
}
|
||||
switch network {
|
||||
case "tcp", "tcp4", "tcp6":
|
||||
p := StrToTransportProtocol(network)
|
||||
|
||||
switch p {
|
||||
case TCP:
|
||||
var tcplistener *net.TCPListener
|
||||
|
||||
var ta *net.TCPAddr
|
||||
@@ -113,7 +115,7 @@ func ListenAndAccept(network, addr string, sockopt *Sockopt, xver int, acceptFun
|
||||
|
||||
listener = tcplistener
|
||||
|
||||
case "udp", "udp4", "udp6":
|
||||
case UDP:
|
||||
|
||||
//udp 的透明代理等设置sockopt的情况并不使用本函数监听, 而是使用 ListenUDP_withOpt.
|
||||
|
||||
@@ -129,7 +131,7 @@ func ListenAndAccept(network, addr string, sockopt *Sockopt, xver int, acceptFun
|
||||
}
|
||||
go loopAccept(listener, xver, acceptFunc)
|
||||
|
||||
case "unix":
|
||||
case UNIX:
|
||||
// 参考 https://eli.thegreenplace.net/2019/unix-domain-sockets-in-go/
|
||||
//监听 unix domain socket后,就会自动创建 相应文件;
|
||||
// 而且程序退出后,该文件不会被删除
|
||||
|
||||
@@ -146,10 +146,6 @@ func (rs *RouteSet) IsIn(td *TargetDescription) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
if rs.IsNoLimitForNetworkLayer() { //necessary
|
||||
return true
|
||||
}
|
||||
|
||||
return rs.IsAddrIn(td.Addr)
|
||||
|
||||
}
|
||||
@@ -197,6 +193,10 @@ func (rs *RouteSet) IsAddrIn(a Addr) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
if rs.IsNoLimitForNetworkLayer() { //necessary
|
||||
return true
|
||||
}
|
||||
|
||||
//开始网络层判断
|
||||
if len(a.IP) > 0 {
|
||||
if rs.NetRanger != nil && rs.NetRanger.Len() > 0 {
|
||||
|
||||
@@ -146,9 +146,13 @@ func LoadRuleForRouteSet(rule *RuleConf) (rs *RouteSet) {
|
||||
}
|
||||
}
|
||||
|
||||
for _, ns := range rule.Network {
|
||||
tp := StrToTransportProtocol(ns)
|
||||
rs.AllowedTransportLayerProtocols |= tp
|
||||
if len(rule.Network) > 0 {
|
||||
rs.AllowedTransportLayerProtocols = 0 //因为 NewFullRouteSet 默认会同时允许 tcp和udp,所以在自定义网络层规则时,我们不用默认值。
|
||||
|
||||
for _, netStr := range rule.Network {
|
||||
tp := StrToTransportProtocol(netStr)
|
||||
rs.AllowedTransportLayerProtocols |= tp
|
||||
}
|
||||
}
|
||||
|
||||
return rs
|
||||
|
||||
Reference in New Issue
Block a user