Commit Graph

18 Commits

Author SHA1 Message Date
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
e732ea3c3b 修订代码;修复loglevel为debug时失效问题;dns请求加锁,已经可用 2022-04-01 12:31:47 +08:00
hahahrfool
f310803218 修订代码 2022-03-31 14:10:05 +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
1b6dfde7b6 修订代码,试图防止udp被lazy处理;修订文档,注释 2022-03-28 08:33:50 +08:00
hahahrfool
b46ee2a7ee 改进readv代码, 将readv的buf长度与MTU脱钩.
netLayer/readv.go中 目前有两个可变的变量,目前暂时调为下面的值:
const readv_buffer_allocLen = 8
const ReadvSingleBufLen = 4096

实际上这个不方便大家手动调节的,因为如果大家遇到readv减速了的情况的话,直接关闭readv即可.
2022-03-26 19:39:36 +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
hahahrfool
405207bc56 将netLayer抽象出来,proxy.Addr现在变成netLayer.Addr
netLayer里包含关于 网络层 以及传输层 的各种定义.

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

而且增添了第一个外部依赖包,github.com/yl2chen/cidranger包.
2022-03-16 09:01:43 +08:00
hahahrfool
fa1c5db1ef 上一个commit修改了函数签名,不好,太笨,还是不改好
proxy.Server返回的 *bytes.Buffer只被用于Fallback,所以直接放到Fallback里就行
2022-03-16 08:19:09 +08:00
hahahrfool
861d5a74c5 添加fallback功能,修改了proxy.Server接口,修订文档 2022-03-16 04:16:19 +08:00
hahahrfool
f680b1a6e8 改进注释;给vlessv1的CRUMFURS 增加 udp长度头 2022-03-10 16:28:31 +08:00
hahahrfool
d345559631 minor update 2022-03-10 14:49:23 +08:00
hahahrfool
fd1eb29aa2 改进代码;修复vless v0 的 udp 部分的bug 2022-03-10 11:43:33 +08:00
hahahrfool
395f726cd4 实现vless v0的udp的数据包长度的传输;完善vless_test 2022-03-10 01:31:55 +08:00
hahahrfool
009162cf40 first 2022-03-09 21:27:13 +08:00