修缮代码;修正路由中传输层配置录入的一个错误.

gitignore屏蔽掉程序目录下的配置文件
This commit is contained in:
e1732a364fed
2000-01-01 00:00:00 +00:00
parent abbdcd95a4
commit 27c81b60e8
5 changed files with 18 additions and 13 deletions

1
.gitignore vendored
View File

@@ -5,6 +5,7 @@ server.toml
v2ray_simple
v2ray_simple_*
cmd/verysimple/verysimple
cmd/verysimple/*.toml
verysimple_*
*.exe
*.DS_Store

View File

@@ -10,8 +10,6 @@ const (
KCP
Quic //quic是一个横跨多个层的协议这里也算一个毕竟与kcp类似
//一般而言我们除了tcp和udp的协议只用于出口不用于入口
//不过,如果是多级代理串联的话,也会碰到需要 kcp等流量作为入口等情况。
)
//若字符串无法被解析为网络类型,则返回 UnknownNetwork

View File

@@ -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后就会自动创建 相应文件;
// 而且程序退出后,该文件不会被删除

View File

@@ -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 {

View File

@@ -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