修订文档,代码

This commit is contained in:
e1732a364fed
2000-01-01 00:00:00 +00:00
parent 5fcaee22d1
commit 9ccd5bac71
4 changed files with 36 additions and 7 deletions

View File

@@ -16,7 +16,7 @@
verysimple 实际上 谐音来自 V2ray Simple (显然只适用于汉语母语者), 意思就是极简.
verysimple 是一个 代理内核, 对标 v2ray/xray功能较为丰富。
verysimple 是一个 代理内核, 对标 v2ray/xray功能较为丰富,轻量级,极简,用户友好,新手向
本作的想法是使用自己的代码实现v2ray的所有的好的功能并摒弃差的功能而且使用自主研发的更简单的架构结合自主研发的新技术实现反超。
@@ -281,7 +281,7 @@ openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.crt -CAkey ca.key -se
### 架构
使用了简单的架构,单单因为架构简单 就可以 提升不少性能。
使用了简单的架构,单单因为架构简单 就可以 提升不少性能。而且可执行文件比其他内核小不少。
本作使用了分层架构网络层tls层高级层代理层等层级互不影响。
@@ -461,9 +461,16 @@ tls lazy encrypt 特性 运行时可以用 -lazy 参数打开(服务端客户
## 开发标准以及理念
KISS, Keep it Simple and Stupid
文档尽量多,代码尽量少. 同时本作不追求极致模块化, 可以进行适当耦合. 一切以速度、浅显易懂 优先
KISS, Keep it Simple and Stupid
如果你阅读代码,你有时可能看到一些“比较脏” 的代码,如包含一些 goto 跳跃,或者步骤比较繁琐的函数。
但仔细思考比较,就会发现,这种代码的不是运行速度更快,就是更加直观易懂。
比如某些需要defer的地方我们故意不defer而是单独放在每个return前面。这是因为defer会降低性能。类似的地方有很多。
当然,如果美化代码利大于弊,我们肯定在后期慢慢改进。
### 文档
@@ -507,7 +514,20 @@ MIT协议即你用的时候也要附带一个MIT文件然后作者不承
## 历史
启发自我fork的v2simple不过原作者的架构还是有点欠缺我就直接完全重构了完全使用我自己的代码。
首先阅读v2simple项目一个很好的启蒙项目
https://github.com/jarvisgally/v2simple
读了v2simple后, 我fork了一个版本, 不过原作者没附带任何开源协议,而且原作者的架构还是有点欠缺。
后来就直接完全重构了,新建了本项目,完全使用自己的代码。没想到大有发展,功高盖主。
但是本作继承了v2simple的精神即尽量simple。我极力支持这种精神也试图让这个精神在verysimple项目中处处体现。
本作继承了它的如下特点:
1. url配置的方式
2. 转发逻辑直接放在main.go 中
3. 架构简单
## 开发计划
@@ -631,7 +651,7 @@ MIT协议作者不负任何责任。本项目 适合内网测试使用,以
为了支持hysteria 的阻塞控制,从 https://github.com/HyNetwork/hysteria 的 pkg/congestion里拷贝了 brutal.go 和 pacer.go 到我们的 quic文件夹中.
grpcSimple的客户端实现部分 借鉴了 clash 的gun的代码该文件单独属于MIT协议。clash的gun又是借鉴 Qv2ray的gun的
grpcSimple的客户端实现部分 借鉴了 clash 的gun的代码该文件单独属于MIT协议。(clash的gun又是借鉴 Qv2ray的gun的
tproxy借鉴了 https://github.com/LiamHaworth/go-tproxy/ , trojan-go也借鉴了它

View File

@@ -75,7 +75,7 @@ sudo cp examples/vlesss.server.toml server.toml
同样,视你的权限来酌情在命令前面添加 `sudo`
上面这个nohub这行命令,可以写到一个文件里,比如 run.sh, 然后用 `chmod +x run.sh` 将其变为可执行文件, 之后你只要运行 run.sh 就可以后台运行了。
上面这个nohup这行命令,可以写到一个文件里,比如 run.sh, 然后用 `chmod +x run.sh` 将其变为可执行文件, 之后你只要运行 run.sh 就可以后台运行了。
如果你会crontab还可以在里面设置开机运行该脚本。这种方式就比 systemctl轻量多了而且还适用于openwrt。

View File

@@ -3,6 +3,8 @@
vs的通用url格式并不遵循现存市面上的其他格式而是针对vs的架构逻辑所设计的新格式。如果你是一个vs老手则使用vs的通用url格式你会感觉得心应手。
本通用格式既可以用于listen也可以用于dial
注意要想读懂本文档需要了解url的基础知识。
https://datatracker.ietf.org/doc/html/rfc1738
@@ -25,6 +27,8 @@ vlesss://a684455c-b14f-11ea-bf0d-42010aaa0003@127.0.0.1:4433?insecure=true&v=0&u
vlesss://a684455c-b14f-11ea-bf0d-42010aaa0003@127.0.0.1:4433?adv=quic&v=0&extra.maxStreamsInOneConn=6&extra.congestion_control=hy&extra.mbps=1024#my_vless_quic
vmess://a684455c-b14f-11ea-bf0d-42010aaa0003@127.0.0.1:4433?http=true&header.host=myhost.com
dokodemo://?target.ip=1.1.1.1&target.port=80#my_doko
shadowsocks://aes-128-gcm:mypasswordxxxxx@127.0.0.1:8000#my_ss
@@ -39,7 +43,7 @@ socks5://127.0.0.1:1080#my_socks5
### scheme
即冒号前的部分表示proxy所使用的具体协议如 vmess, vless, ss, http, socks5, trojan
即冒号前的部分表示proxy所使用的具体协议如 vmess, vless, shadowsocks, http, socks5, trojan
如果后加上了s就表示使用tls层比如https或者 vlesss。注意vless和trojan都必须要加s才能在公网中不被发现否则就是裸奔。任何proxy都可以加s。

View File

@@ -22,6 +22,11 @@ func (ServerCreator) MultiTransportLayer() bool {
return false
}
func (ServerCreator) NewServer(lc *proxy.ListenConf) (proxy.Server, error) {
if lc.Network == "" {
lc.Network = netLayer.DualNetworkName
}
uuidStr := lc.Uuid
var mp MethodPass