mirror of
https://github.com/e1732a364fed/v2ray_simple.git
synced 2025-12-24 13:27:56 +08:00
修订文档,代码
This commit is contained in:
30
README.md
30
README.md
@@ -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也借鉴了它)
|
||||
|
||||
|
||||
@@ -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。
|
||||
|
||||
|
||||
@@ -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。
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user