minor improvement.

This commit is contained in:
hahahrfool
2022-03-23 09:34:49 +08:00
parent 0a69fbacbf
commit f3279c27af
4 changed files with 5 additions and 82 deletions

View File

@@ -225,7 +225,7 @@ verysimple -c server.toml
标准模式使用toml格式类似windows的ini对新手友好不容易写错。推荐直接使用标准模式。 标准模式使用toml格式类似windows的ini对新手友好不容易写错。推荐直接使用标准模式。
本作的 examples文件夹中的 vlesss.client.toml, vlesss.server.toml , z_multi.client.toml 等文件中 提供了大量解释性的注释, 对新手很友好 本作的 examples文件夹中的 vlesss.client.toml, vlesss.server.toml , multi.client.toml 等文件中 提供了大量解释性的注释, 对新手很友好, 一定要读一下,才可以熟练掌握配置格式。
### 兼容模式 ### 兼容模式

View File

@@ -1,49 +0,0 @@
# 本示例文件之所以 以 z_ 开头,是为了确保 “所有示例文件” 的开头字母都是 v 及v以后的字母
# 这样可以保证示例文件 尽量被 放在文件夹列表的末尾
[app]
loglevel = 1
default_uuid = "a684455c-b14f-11ea-bf0d-42010aaa0003"
[[listen]]
protocol = "socks5"
host = "127.0.0.1"
port = 10800
[[dial]]
tag = "my_vless1"
protocol = "vlesss"
host = "127.0.0.1"
port = 4433
version = 0
insecure = true
utls = true
[[dial]]
tag = "my_ws1"
protocol = "vlesss"
host = "127.0.0.1"
port = 4434
insecure = true
utls = true
advancedLayer = "ws"
path = "/ohmygod_verysimple_is_very_simple"
# route就是分流规则分流规则从上到下匹配匹配到哪一个就用哪一个.
[[route]]
dialTag = "my_ws1"
country = ["CN"]
[[route]]
dialTag = "my_vless1"
# 这里我们只给了tag, 没给其它限定条件,也就是说肯定会匹配到这一条 规则
# 如果所有route均不匹配则数据会流向 proxy 这个tag如果这个tag没有具体的dial则流向第一个dial
# 如果匹配了mycountry, 则数据会直接被直连.
# 其它分流匹配示例:
# ip = ["0.0.0.0/8","10.0.0.0/8","fe80::/10","10.0.0.1"]
# domain = ["www.google.com","www.twitter.com"]
# network = ["tcp","udp"]
# inTag = ["tag1","tag2"]

View File

@@ -1,30 +0,0 @@
[app]
loglevel = 1
default_uuid = "a684455c-b14f-11ea-bf0d-42010aaa0003"
[[listen]]
tag = "my_vlesss1"
protocol = "vlesss"
host = "0.0.0.0"
port = 4433
insecure = true
fallback = ":80"
cert = "cert.pem"
key = "cert.key"
[[listen]]
tag = "my_ws1"
protocol = "vlesss"
host = "0.0.0.0"
port = 4434
insecure = true
cert = "cert.pem"
key = "cert.key"
advancedLayer = "ws"
path = "/ohmygod_verysimple_is_very_simple"
[[dial]]
protocol = "direct"

View File

@@ -31,12 +31,14 @@ func GetRawConn(reader io.Reader) syscall.RawConn {
} }
/* ReadFromMultiReader 用于读端实现了 readv但是写端的情况比如 从socks5读取 数据, 等裸协议的情况。 /* ReadFromMultiReader 用于读端实现了 readv但是写端的情况比如 从socks5读取 数据, 等裸协议的情况。
返回错误时,依然返回原 buffer或者新分配的buffer. 本函数不负责 释放分配的内存. 这样有时可以重复利用缓存。
若allocedBuffers未给出会使用 utils.AllocMTUBuffers 来初始化 缓存。 若allocedBuffers未给出会使用 utils.AllocMTUBuffers 来初始化 缓存。
返回错误时,依然会返回 原buffer 或者 在函数内部新分配的buffer. 本函数不负责 释放分配的内存. 这样有时可以重复利用缓存。
小贴士:将该 net.Buffers 写入io.Writer的话只需使用 其WriteTo方法, 即可自动适配writev。 小贴士:将该 net.Buffers 写入io.Writer的话只需使用 其WriteTo方法, 即可自动适配writev。
TryCopy函数使用到了本函数。 TryCopy函数使用到了本函数 来进行readv相关操作
*/ */
func ReadFromMultiReader(rawReadConn syscall.RawConn, mr utils.MultiReader, allocedBuffers net.Buffers) (net.Buffers, error) { func ReadFromMultiReader(rawReadConn syscall.RawConn, mr utils.MultiReader, allocedBuffers net.Buffers) (net.Buffers, error) {