Commit Graph

82 Commits

Author SHA1 Message Date
e1732a364fed
3c754a0a89 feat: 实现 shadowTls v2;修订示例,文档,代码; 添加shadowTls的示例文件
shadowTls v2时客户端自动使用utls,且增强了探测防御

proxy.SetCommonReadTimeout -> netLayer.SetCommonReadTimeout

tlsLayer 配置也使用Extra,目前用于 shadowTls
2022-12-22 17:06:35 +08:00
e1732a364fed
12f7dd1bc6 移除 ClientCreator.UseUDPAsMsgConn 方法 2022-12-21 14:08:31 +08:00
e1732a364fed
097db3b017 MsgConn接口方法重命名:WriteMsgTo -> WriteMsg 2022-12-19 20:26:36 +08:00
e1732a364fed
2da0e63558 MsgConn接口方法重命名:ReadMsgFrom -> ReadMsg 2022-12-19 20:18:35 +08:00
e1732a364fed
f2297721e4 fix #141, 修订代码; direct若配置了sendThough,则会打印该地址 2022-12-05 12:02:48 +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
4f82db83c6 修复socks5的client的udp associate的问题 2022-12-03 08:11:08 +08:00
e1732a364fed
6e39f4f2f2 完成url标准格式,见docs/url.md; 修订代码 2022-12-02 11:09:40 +08:00
e1732a364fed
59bab50e92 对上一个commit的补充 2022-10-31 19:34:15 +08:00
e1732a364fed
806cbfad82 修复一处socks5的udp代码中可能的空指针错误;关联 #157 2022-10-31 19:27:25 +08:00
e1732a364fed
0503cf89cb 令socks5收到不同地址的udp请求时仅warn而不阻断,关联#157 2022-10-31 19:05:20 +08:00
e1732a364fed
89e70ed84b 修订文档;修复使用proxyProtocol时闪退的bug;修复一处test错误. 2022-10-31 15:01:32 +08:00
e1732a364fed
2c0ec27dbd 修缮vmess,防止空指针panic;修缮test代码 2022-10-27 12:40:59 +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
b3e77d7f08 minor improvement;
follow a PR in LiamHaworth/go-tproxy (#10)
2022-09-13 22:27:15 +08:00
e1732a364fed
ec1ed3e8a5 修订文档; 添加shadowsocks协议支持;目前仅支持传输tcp 2022-05-26 11:42:36 +08:00
e1732a364fed
c07ac27128 修订示例,文档,代码;主要修复如下两个 udp问题:
设置 socks5 的超时,包括fullcone。

修订tproxy代码,修复tproxy代码中的 两个缺陷

缺陷一:

在旧的tproxy代码中,如果读到了以前存在过的 udp源地址发来的信息的话,会继续返回 原来的 MsgConn

这时,会造成 给 主代码 提供 两个相同的 MsgConn的情况,不仅不正确,而且会导致 严重的并发问题

缺陷二:

旧代码中,tproxy的 缓存map 一直在增长,却没有 删除机制,这个也是个重大缺陷, 会导致内存泄漏
2022-05-22 19:19:43 +08:00
e1732a364fed
243cd684af 修复一个来自1.2.1的bug; 从GetMTU取出的长度有时不为MTU
这是因为存放代码有错误。这个bug可能很早就有,就不追究了,修复即可
2022-05-18 02:31:41 +08:00
e1732a364fed
45ccfee83f 修订文档,代码; 实现vmess服务端!
本vmess服务端实现并非 完整服务端,目前没有动态端口等功能

而且目前没有实现防重放功能。目前代码仅作为一个最基本可用服务端,

后面还要继续完善该代码,至少要添加 防重放功能。
2022-05-18 00:19:41 +08:00
e1732a364fed
41db97b8cf 修订代码,示例;修复一个 toml多行字符串的bug 2022-05-16 13:20:32 +08:00
e1732a364fed
bdcda5b930 修订代码, 在socks5/http的uuid格式不正确时,不报错,而是给出一个warn, #98 2022-05-16 13:09:20 +08:00
e1732a364fed
c222b2ca8f 修订代码 2022-05-16 10:56:15 +08:00
e1732a364fed
961bde8d6d 令所有proxy均支持fullcone配置.只有当listen和dial都为fullcone时,才真fullcone 2022-05-15 23:20:33 +08:00
e1732a364fed
93dee66a77 修订代码,防止listen以及RandPort无限循环, 关联 #88 2022-05-15 21:23:24 +08:00
e1732a364fed
dfb7043624 修改udp握手的定义,新增udp的firstPayload参数;(尚未在main.go中支持) 2022-05-14 18:39:29 +08:00
e1732a364fed
c2d842cb23 添加vmess的客户端代码 2022-05-14 09:27:11 +08:00
e1732a364fed
fa50ff60b4 修复socks5的test闪退的问题 2022-05-14 07:57:36 +08:00
e1732a364fed
de9ea5fefa 试图令http支持多用户;修订代码
已验证socks5的多用户功能,并修订了 socks5.toml 示例

proxy的url打印时,在尾缀添加#tag
2022-05-13 23:01:18 +08:00
e1732a364fed
71a4e746e1 试图令socks5的server支持多用户 2022-05-13 22:07:26 +08:00
e1732a364fed
644a67fe74 listen新增users配置,可设置多个用户;配置格式及含义变动:
url 配置中 将 version=0 改为 v=0

listen的Version字段 含义改变。如果 listen (服务端)指定了 版本为 0,则它将只支持v0,不会支持v1. 如果你要支持v1,可以不填写 v,或者填写为1
2022-05-12 08:23:36 +08:00
e1732a364fed
72d9e97053 fix #75 : iics在 quic时输出日志会闪退;修订代码,文档; 2022-05-10 12:01:15 +08:00
e1732a364fed
7d6b743058 修订代码,示例; 支持嗅探tls中的 sni,以便分流;转发日志添加id
修复tls sniff中padding 扩展的错误,

为 iics新增 baseid 成员,并在每一个日志输出 均附带 该id,便于追踪

该id固定为6位长度。且使用了pool来缓存zap.Field, 以及一系列 iics.CanLogErr 这种方法。
2022-05-09 15:08:48 +08:00
e1732a364fed
3fabc38c69 令socks5支持用户名密码 2022-05-08 17:43:34 +08:00
e1732a364fed
9c40033ce7 在golang lint的帮助下全面修订代码 2022-05-07 10:19:59 +08:00
e1732a364fed
ef89beb653 修订代码;修复socks5的dial连不上的愚蠢bug 2022-05-06 21:36:37 +08:00
e1732a364fed
d0daa68cb6 修订代码,令trojan支持回落;添加共用端口的回落示例,实测可用. 2022-05-06 19:27:34 +08:00
e1732a364fed
f6662ab57b 将socks5的dial注册到proxy
被汇报,有人有特殊需求要在内网里dial,那么还是加上socks5的client吧
2022-05-06 17:33:50 +08:00
e1732a364fed
e43b920b4b 修订文档,Makefile,代码
令Makefile记录每次编译所用的 tag,这样用不同tag进行编译时,make可以感知到不同.
2022-05-05 18:10:22 +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
hahafool
e7ae557b91 修订文档, sockopt 和 utils包的代码. 2022-04-21 21:34:56 +08:00
hahafool
9a1afe18c9 修订netLayer和proxy包的代码; 添加日志文件功能;试图添加tproxy功能 2022-04-20 09:18:49 +08:00
hahafool
6ecbfe7b18 修订文档;添加http伪装头;修复一个path的bug
http头配置同时 支持ws。添加相关的示例文件.

修复 path 为 "/" 时无法连接的bug, 这是因为原代码在 requestfilter.go中, bs[5] == ' ' 这个判断没有过滤 Get / http1.1 等类似的情况

将 filter.go 重命名为 requestfilter.go ,因为现在也产生了过滤response的可能性。
2022-04-18 21:59:46 +08:00
hahahrfool
e5c38d6c8c 全面修订代码,文档 2022-04-17 11:43:19 +08:00
hahahrfool
8eecbacc57 netLayer.RandPort 添加 mustValid, isudp参数, 保证端口可用. 2022-04-16 10:10:06 +08:00
hahahrfool
476c59fd28 修订代码,文档; 试图实现socks5客户端; 2022-04-15 13:48:07 +08:00
hahahrfool
f4842fc5e6 修订文档,代码; 部分支持socks5的udp客户端; 修复v1的udp multi问题;
发现之前的代码虽然通过了 go test 测试,但是因为test 代码并不全面,导致没有触发 multi

这次设计了新的test代码,可以触发multi,并顺便找出了之前main.go 的代码存在的问题,并修复了。

修复 socks5 转发 udp时, 返回udp地址为0.0.0.0的问题。因为socks5的握手是不包含请求的, 所以要额外加一步读取udp请求。

也因为这个 “初次地址”问题,给 RelayUDP_separate 加了一个 firstAddr 参数。
2022-04-12 00:38:56 +08:00
hahahrfool
aad3632e3d 修订代码、文档 2022-04-10 12:09:49 +08:00