e1732a364fed
|
a704f77eb4
|
重构readv代码,将MultiReader分为 BuffersReader和Readver两种
Readver是因为可以暴露出底层连接所以能加速;而BuffersReader是
因为协议对于多buf的读取支持良好所以可以加速,逻辑完全不同
|
2022-12-26 07:50:44 +08:00 |
|
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
|
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
|
6e39f4f2f2
|
完成url标准格式,见docs/url.md; 修订代码
|
2022-12-02 11:09:40 +08:00 |
|
e1732a364fed
|
0546be296e
|
修订文档,示例,代码
|
2022-11-30 19:32:46 +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
|
cd8734a719
|
继续优化日志输出 和 注释
|
2022-09-14 10:22:01 +08:00 |
|
e1732a364fed
|
794f3e71ec
|
优化注释,代码
|
2022-06-06 21:37:55 +08:00 |
|
e1732a364fed
|
8ea496dbfb
|
修订代码;粘连vmess的请求包以及首包
发现clash的代码似乎没有粘包发送,而是会分包发送,则会造成明显流量特征。
我们粘着发送,就没有 握手包的特征了.
服务端的响应包也同理处理。
|
2022-05-18 01:58:02 +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
|
15c35839c4
|
修订文档,代码; 修改User定义
令User 包含 ID 和 Auth 两种信息
|
2022-05-12 23:58:34 +08:00 |
|
e1732a364fed
|
3eab92090d
|
更新文档,示例,注释
|
2022-05-12 17:06:23 +08:00 |
|
e1732a364fed
|
3bc3540a16
|
修订代码,文档;实现 分流匹配user,
令 vless 和 trojan的 建立的连接 均实现 utils.User 接口
fix #78 , route 匹配tag 过早返回 true
|
2022-05-12 14:10:56 +08:00 |
|
e1732a364fed
|
a94e8966c1
|
令trojan支持多用户 ;试图令trojan支持lazy;
trojan支持lazy的试图 失败,原因未知;
令lazy代码不再局限于vless
优化trojan的 密码 格式转换的代码, 新增 trojan.User 类型
|
2022-05-12 09:43:16 +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
|
ef89beb653
|
修订代码;修复socks5的dial连不上的愚蠢bug
|
2022-05-06 21:36:37 +08:00 |
|
e1732a364fed
|
00c25b914f
|
重命名proxy的一些接口和接口方法
|
2022-05-05 08:28:23 +08:00 |
|
e1732a364fed
|
6c24c18a67
|
修订代码,文档
|
2022-05-04 12:16:00 +08:00 |
|
e1732a364fed
|
1bac60b50f
|
修订代码,文档
|
2022-04-29 18:23:50 +08:00 |
|
hahafool
|
27872e7dfc
|
rename
|
2022-04-25 18:33:24 +08:00 |
|
hahafool
|
fb1e639c55
|
添加 grpc multiMode, 应该与xray兼容
|
2022-04-24 20:04:10 +08:00 |
|
hahafool
|
4c6e5b79c4
|
修订文档, makefile, 代码; 添加vless的v1添加mux支持.
减少 firstPayload的timeout,从1秒减少到100ms.
v1 的mux 和trojan一样,使用 smux + simplesocks的方式。
|
2022-04-22 19:00:50 +08:00 |
|
hahafool
|
e7ae557b91
|
修订文档, sockopt 和 utils包的代码.
|
2022-04-21 21:34:56 +08:00 |
|
hahahrfool
|
e5c38d6c8c
|
全面修订代码,文档
|
2022-04-17 11:43:19 +08:00 |
|
hahahrfool
|
96d98fd65a
|
修订代码,文档,注释;试图实现内层smux;dial配置添加use_mux选项
为了实现内层mux,对 main.go 里的函数做了一些重构,
现在 handshakeInserver_and_passToOutClient 会调用 handshakeInserver 函数 和 passToOutClient 函数
且 fallback部分的代码提出来 放到了 checkfallback 函数中
内层mux还未经过测试
|
2022-04-14 20:46:14 +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
|
375c95fa4e
|
进一步修订代码、文档, 完善vless v1并通过go test.添加 vless1_udp_multi 配置
添加 vless_v1 示例文件。
|
2022-04-11 20:13:52 +08:00 |
|
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
|
a418808b81
|
修订代码
|
2022-04-10 22:28:06 +08:00 |
|
hahahrfool
|
aad3632e3d
|
修订代码、文档
|
2022-04-10 12:09:49 +08:00 |
|
hahahrfool
|
3dc53554df
|
修订代码, 实现trojan协议
|
2022-04-08 22:44:01 +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
|
b97e990b44
|
尝试引入zap包作为log包
|
2022-03-31 18:28:57 +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
|
81160e8db2
|
广泛修订代码, 注释
|
2022-03-28 22:07:18 +08:00 |
|
hahahrfool
|
e9c9467a72
|
修订代码,文档,注释
|
2022-03-27 14:09:53 +08:00 |
|
hahahrfool
|
aace001585
|
全面修订splice和readv的代码,极大提升性能; 添加生成uuid命令
|
2022-03-27 12:04:12 +08:00 |
|
hahahrfool
|
146f7cf926
|
修复大量与websocket和回落相关的bug;
修复 websocket时无回落的问题
修复 websocket不匹配时直接返回内部错误字符串导致 可探测 的超级bug
修复回落不匹配问题
修复websocket时readv闪退问题
修复 命令行 loglevel参数被配置文件覆盖问题
修复获取tls 的 alpn和 sni时遇到空指针闪退问题
将默认fallback地址的赋值放到通用代码中;
移除 ErrSingleFallback, 改用utils.ErrFirstBuffer
使ws的server可以返回 预设的path
|
2022-03-24 13:42:34 +08:00 |
|
hahahrfool
|
8c6ed6377d
|
修订代码;将addr的赋值从各个proxy自己的方法中提出来
|
2022-03-23 18:54:38 +08:00 |
|
hahahrfool
|
4d2bbaeceb
|
完善对writev的支持;为vless和ws实现MultiWriter;修订代码
|
2022-03-22 22:39:26 +08:00 |
|
hahahrfool
|
5661c8737f
|
添加readv功能;给出测试数据;修订代码,注释;
toml 新增 app.noreadv项,命令行参数新增 -readv
默认readv是打开状态,可以选择性关闭。
|
2022-03-22 14:12:32 +08:00 |
|
hahahrfool
|
548675e002
|
添加自定义网络层功能;添加udp网络层支持
配置中,listen和dial中,可添加 network = "udp" 字段,不添加则默认tcp
|
2022-03-21 21:19:31 +08:00 |
|
hahahrfool
|
7f01079688
|
添加多服务器监听支持;给ProxyCommon添加一些打印全称的机制
给ProxyCommon接口添加 MiddleName,IsUDP 方法; 添加 GetFullName 函数
将 proxy.CmdTCP , CmdUDP, CmdMux 这三个常量从proxy移动到 vless
修订示例文件
|
2022-03-20 22:25:56 +08:00 |
|
hahahrfool
|
b1c4f5a5d1
|
feat:完整实现websocket.修订文档,注释,代码
添加了 ws.server.toml 和 ws.client.toml 这两个示例文件.
|
2022-03-20 16:59:58 +08:00 |
|