Commit Graph

16 Commits

Author SHA1 Message Date
hahahrfool
c5ab5a201c 由新的udp架构重新设计udp分离信道传输方式和vless v1协议并初步实现代码 2022-04-11 18:47:35 +08:00
hahahrfool
ca01f2494b 修订文档, 修订、优化代码
netLayer的 Relay 和 Relay_UDP 函数现在同时记录下载以及上传总流量

为了给 udp 的 单路 fullcone 机制作准备, 代码作出如下改动:
main.go 中的 dialClient 现在分成 dialClient 和 dialClient_andRelay 这两个函数。

变更 proxy.Client 接口,新增 IsUDP_MultiChannel 和 SetUDPDialFunc 方法

移除 vless v1部分的 crumfurs代码。 因为现在最新计划 将不再使用单独 crumfurs信道。

可参考 最新 vless_v1.md 文档中的改变。
2022-04-11 12:03:53 +08:00
hahahrfool
1caa5e26c8 修订代码;修复udp direct 时 重复dial的问题 2022-04-11 08:21:32 +08:00
hahahrfool
a225a7409d 修订文档,示例;修复trojan的udp的bug以及dokodemo的udp的bug;
在根目录添加 trojan 的 udp 的go test,并通过了测试
2022-04-10 21:42:38 +08:00
hahahrfool
651bd12e72 修订代码;重命名netLayer一些结构和接口
Uni_UDPConn 重新改名为 UDPConn, 添加方法以让其实现 MsgConn 接口

MsgConn接口名称改变,
ReadFrom 改为 ReadMsgFrom, WriteTo 改为 WriteMsgTo
2022-04-09 14:18:54 +08:00
hahahrfool
86e631b491 修订代码,注释 2022-04-09 02:00:03 +08:00
hahahrfool
ce735dbb99 修订udp代码; dial配置 添加 fullcone 选项;默认为非fullcone
现在整个程序均通过了go test, main 也可以正常运行了。

Relay_UDP 函数添加流量计数;

发现之前 Relay函数的流量计数 在main.go里参数传反了,导致实际上计数的是上传而不是下载,已修复

对fullcone的情况做了特别考量。MsgConn的 Close函数在fullcone时不能随便被调用。

因此我添加了一个 CloseConnWithRaddr(raddr Addr) error  方法,以及 Fullcone() bool     方法

在utils包的init部分使用 rand 随机种子
2022-04-08 20:31:59 +08:00
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
30eb874dc2 修订代码,示例;添加 udp_timeout 配置 2022-04-07 14:03:31 +08:00
hahahrfool
88f32208c3 修订代码、注释;试图解决所有udp不会关闭退出的问题;UDP_timeout设为3分钟 2022-04-05 16:13:48 +08:00
hahahrfool
0afb00dbf1 修订代码, 在socks5转发udp到direct时添加timeout和close机制
默认 UDP_timeout 暂且设为2小时

给 UDPRequestWriter 加 CloseUDPRequestWriter 方法,专门用于这种情况

添加 UDP_Putter_Generator 接口,且direct实现了该接口

为 UDP_Pipe添加 Close机制
2022-04-05 14:28:37 +08:00
hahahrfool
b31557df14 大范围修订代码,以试图防止内存逃逸到堆; 2022-03-31 13:33:58 +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
95aae83eb8 尝试引入grpc; 尝试将handleNewIncomeConnection函数拆分;
把 handleNewIncomeConnection 拆出一个 handshakeInserver_and_passToOutClient 函数出来;
这是为了配合即将实现的 grpc的多路复用的情况.

修复一个 RelayUDP_to_Direct 函数中的小错误; 是当时疏忽了, 导致实际转发udp会闪退.
2022-03-25 15:55:23 +08:00
hahahrfool
536a84def6 修订代码,注释,文档 2022-03-22 16:46:05 +08:00
hahahrfool
548675e002 添加自定义网络层功能;添加udp网络层支持
配置中,listen和dial中,可添加 network = "udp" 字段,不添加则默认tcp
2022-03-21 21:19:31 +08:00