Commit Graph

25 Commits

Author SHA1 Message Date
hahahrfool
447bd8749a 重构所有udp部分的代码! 摒弃了过去非常复杂的upd转发机制;
不再使用 UDP_Putter 等机制去转发udp,而是用一个 netLayer.MsgConn 结构

proxy.Server 和 proxy.Client 接口改动,

Client在握手udp时不再使用handshake方法, 而是用新的 EstablishUDPChannel 方法

Server 在 Handshake时会选择性返回两种接口,io.ReadWriteCloser 用于tcp, netLayer.MsgConn 用于 udp

此时vless、socks5、direct 的udp转发都已经成功经过了 go test 验证, 但是 main.go 还未修改。
2022-04-08 13:49:56 +08:00
hahahrfool
2d384314f4 修订,重构代码, 修复dns的bug; 添加Dns的DoT功能.
修复dns配置中"特殊服务器" 无法被正确配置、使用的bug

将 proxy.Standard结构 移动到 项目根目录的 StandardConf.
将 proxy.AppConf, LoadTomlConfStr, LoadTomlConfFile 函数 移动到根目录

因为 StandardConf和 AppConf里包含很多App级别的配置, 不宜放到proxy子包中

将 proxy.RuleConf 移动到 netLayer
将 proxy.LoadRulesForRoutePolicy 移动到 netLayer
将 proxy.LoadDnsMachine 移动到 netLayer

在dnsquery失败后,会判断错误, 若发现是Read错误,则会试图重新拨号
2022-04-07 13:45:24 +08:00
hahahrfool
f6081cc8be 修订代码;添加【下载geosite文件】的交互命令,可自动通过节点下载 2022-04-05 19:08:44 +08:00
hahahrfool
3a997a32bc 修订代码,示例;添加geosite分流,域名现已支持full,sub,regex,geosite,match 2022-04-05 08:59:26 +08:00
hahahrfool
60329c2109 修复ipv6判断写反的bug,此bug恰巧会导致ipv6主机无法访问ipv6 2022-04-03 17:58:26 +08:00
hahahrfool
d4c893e579 修订代码,修复一个尴尬bug导致域名无法拨号. 2022-04-03 07:19:29 +08:00
hahahrfool
765f0bb113 修订代码;将默认loglevel改为warn;提前判断本机是否具有ipv6; 2022-04-02 20:36:15 +08:00
hahahrfool
dfecd89d14 添加dns功能; 解决grpc 悬垂链接问题;
该悬垂问题可能就是v2ray/xray的 “grpc断流问题”,已被本commit轻松搞定。

dns配置:

[dns]
servers = [
  "udp://114.114.114.114:53"      # 如果把该url指向我们dokodemo监听的端口,就可以达到通过节点请求dns的目的.
]

[dns.hosts]     # 自己定义的dns解析
"www.myfake.com" = "11.22.33.44"
"www.myfake2.com" = "11.222.33.44"

一旦配置了dns项,则所有dns都会试图向默认dns服务器请求;

该功能尚不完善。
2022-04-01 00:26:35 +08:00
hahahrfool
b31557df14 大范围修订代码,以试图防止内存逃逸到堆; 2022-03-31 13:33:58 +08:00
hahahrfool
b63b90400a bump version->v1.1.0.3; minor improve 2022-03-29 19:11:17 +08:00
hahahrfool
f2adcdcd45 防止udp转发时被裸奔;修缮socks udp associate
修订代码,文档,示例

添加 NumErr 结构; 从 handshakeInserver_and_passToOutClient 函数 分离出一个 dialClient 函数。

在socks5包中添加 client.go 文件,以及三个udp相关的客户端请求udp函数

之前的udp associate代码被证明是有很多bug的,现在被我一一修复,并通过了 udp_test.go的测试。
2022-03-29 19:00:14 +08:00
hahahrfool
81160e8db2 广泛修订代码, 注释 2022-03-28 22:07:18 +08:00
hahahrfool
a579dc1d40 修订代码,注释,示例,文档 2022-03-28 09:39:41 +08:00
hahahrfool
e9c9467a72 修订代码,文档,注释 2022-03-27 14:09:53 +08:00
hahahrfool
63682dfae4 完整实现grpc;修订代码, 注释;修复udp的bug和windows中路径bug; 2022-03-25 20:34:54 +08:00
hahahrfool
363f0fac00 添加sni和alpn回落;修订代码
xray使用这种结构来匹配fallback: map[string]map[string]map[string]*Fallback

很繁琐,如果fallback匹配项目越来越多那不是就一大串了?

本作使用集合方式进行匹配,可扩展性更强
2022-03-24 09:02:38 +08:00
hahahrfool
a40a343510 在route中使用netip.Addr;修订代码;添加一些go test 2022-03-23 17:37:23 +08:00
hahahrfool
778535290f 在udp中使用net/netip包;从此开始使用go1.18内容;修订代码 2022-03-23 12:47:09 +08:00
hahahrfool
536a84def6 修订代码,注释,文档 2022-03-22 16:46:05 +08:00
hahahrfool
5661c8737f 添加readv功能;给出测试数据;修订代码,注释;
toml 新增 app.noreadv项,命令行参数新增 -readv

默认readv是打开状态,可以选择性关闭。
2022-03-22 14:12:32 +08:00
hahahrfool
e75860ef7a 添加ws的0-rtt支持;兼容xray/v2ray; 修订示例文件
earlydata 的最大长度 本作直接固定为2048长度。

配置文件格式:

extra = { ws_earlydata = true }
2022-03-22 02:31:47 +08:00
hahahrfool
7b8e96f736 增加对 unix domain socket的支持 2022-03-21 21:58:15 +08:00
hahahrfool
548675e002 添加自定义网络层功能;添加udp网络层支持
配置中,listen和dial中,可添加 network = "udp" 字段,不添加则默认tcp
2022-03-21 21:19:31 +08:00
hahahrfool
dbe499cc08 添加unique协议, 详情见wiki 2022-03-19 18:39:16 +08:00
hahahrfool
405207bc56 将netLayer抽象出来,proxy.Addr现在变成netLayer.Addr
netLayer里包含关于 网络层 以及传输层 的各种定义.

这里为了添加 类似 v2simple的 common.Matcher的功能,特地抽象出来一个层.

而且增添了第一个外部依赖包,github.com/yl2chen/cidranger包.
2022-03-16 09:01:43 +08:00