e1732a364fed
|
95e0ce32e9
|
修订文档,代码;添加-dt, -geosite命令行参数, 以及相关的toml配置中的app配置
-dt可调节拨号超时秒数,app配置:dial_timeout
-geosite:app配置:geosite_folder
-geoip: app配置:geoip_file
|
2022-12-05 01:59:30 +08:00 |
|
e1732a364fed
|
a9a746ba2f
|
多项对接口的修改,为ss做准备:
取消Client的LocalAddr,改为 LocalTCPAddr 和 LocalUDPAddr
删除direct中的对应条目。这样可更清晰地配置双本地地址
将设置sendthrough设置双地址的代码移动到 proxy.newClient函数
这样不仅direct可指定不同的tcp和udp的本地地址,任何client协议都可以了
为ClientCreator 接口 添加 UseUDPAsMsgConn 方法,direct和ss返回true
在ss的client的EstablishUDPChannel进行自行拨号
在ss的server建立后,自动循环监听udp,绕过vs的基本监听机制。因为vs架构的限制,一个代理只能有一个唯一的传输层协议。
ServerCreator 接口 添加 AfterCommonConfServer 方法
|
2022-12-03 23:51:51 +08:00 |
|
e1732a364fed
|
5fcaee22d1
|
定义dual类型的Network,用于direct,ss和socks5
这三种协议在实际传输时可能同时用到tcp和udp. 如果没给出Network值,
那么默认的Network应该为dual
|
2022-12-03 16:39:02 +08:00 |
|
e1732a364fed
|
6e39f4f2f2
|
完成url标准格式,见docs/url.md; 修订代码
|
2022-12-02 11:09:40 +08:00 |
|
e1732a364fed
|
e788186d0a
|
实现按不同url格式进行初始化的特性
添加doc/url.md 解释文档
本commit修改了所有proxy的creator,以支持新的接口
URLToDialConf(url *url.URL, iv *DialConf, format int) (*DialConf, error)
URLToListenConf(url *url.URL, iv *ListenConf, format int) (*ListenConf, error)
这两者替代了原来的 NewClientFromUrl 以及 NewServerFromUrl
目前只是支持了vs标准格式;各个协议的原生格式等以后慢慢加。
未经过测试.
|
2022-10-27 11:43:44 +08:00 |
|
e1732a364fed
|
e43b920b4b
|
修订文档,Makefile,代码
令Makefile记录每次编译所用的 tag,这样用不同tag进行编译时,make可以感知到不同.
|
2022-05-05 18:10:22 +08:00 |
|
e1732a364fed
|
5867bac0b2
|
修订代码,文档,Makefile,示例
修复 没给出 -c参数而给出了 -L 参数时,未能成功运行 的bug
使Makefile 支持 免参数编译 当前系统的 可执行文件。
Makefile的 BUILD_VERSION 这次 添加了 显示 build_on 系统 和 all_go_files_md5 的功能。
md5的打印只支持 linux/darwin,且因为 darwin的命令是 md5 而不是 md5sum,导致输出有差别,所以导致md5总和也有差别.
|
2022-05-05 14:09:12 +08:00 |
|
e1732a364fed
|
00c25b914f
|
重命名proxy的一些接口和接口方法
|
2022-05-05 08:28:23 +08:00 |
|
hahafool
|
27872e7dfc
|
rename
|
2022-04-25 18:33:24 +08:00 |
|
hahafool
|
22fc0722f3
|
修订文档, 代码; 添加reject协议,与v2ray的blackhole等价;
RejectClient 直接在 proxy包内实现,而不是放在子包。
把direct也放到了proxy中。因为 direct和 reject是两个通用client,不需要单列出来。
|
2022-04-22 13:51:36 +08:00 |
|
hahahrfool
|
e5c38d6c8c
|
全面修订代码,文档
|
2022-04-17 11:43:19 +08:00 |
|
hahahrfool
|
a418808b81
|
修订代码
|
2022-04-10 22:28:06 +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
|
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
|
b31557df14
|
大范围修订代码,以试图防止内存逃逸到堆;
|
2022-03-31 13:33:58 +08:00 |
|
hahahrfool
|
f8ef685bdd
|
解决readv内存泄漏问题;解决转发时断连后的悬垂链接问题
在四点链接的情况下,我们只终端中间两点是不够的,要切三刀;
总之实践很简单,就是copy完成之后,要Close所有的链接
readv的话,系统readv数组和buffer不要在put进pool后相互引用
添加-bl 选项,可以自定义buf大小;注意越小可能越慢,建议buf大小保持在4k以上
添加-pp选项,可以生成cpu.pprof文件
修复其它小问题.
|
2022-03-31 01:32:58 +08:00 |
|
hahahrfool
|
f9872feee7
|
修订代码,文档,注释,示例.
|
2022-03-27 21:06:57 +08:00 |
|
hahahrfool
|
8c6ed6377d
|
修订代码;将addr的赋值从各个proxy自己的方法中提出来
|
2022-03-23 18:54:38 +08:00 |
|
hahahrfool
|
5661c8737f
|
添加readv功能;给出测试数据;修订代码,注释;
toml 新增 app.noreadv项,命令行参数新增 -readv
默认readv是打开状态,可以选择性关闭。
|
2022-03-22 14:12:32 +08:00 |
|
hahahrfool
|
b14c1d03c1
|
为godoc文档对注释进行修订
|
2022-03-21 09:13:10 +08:00 |
|
hahahrfool
|
bfb00c8e85
|
修订文档、注释,尝试引入 gobwas/ws
|
2022-03-20 09:15:58 +08:00 |
|
hahahrfool
|
6efc4de136
|
将unique重命名为dokodemo
发现unique功能和 dokodemo是一样的。之前我误解了dokodemo的机制. 好笨啊
|
2022-03-20 06:54:48 +08:00 |
|