修订action,文档;为shadowTls做准备

This commit is contained in:
e1732a364fed
2000-01-01 00:00:00 +00:00
parent 4e19050315
commit a9992b3802
4 changed files with 39 additions and 33 deletions

View File

@@ -79,12 +79,12 @@ jobs:
sudo apt-get install build-essential libgtk-3-dev
- if: ${{ matrix.os != 'windows-latest' }}
name: set ASSET_NAME
name: set ASSET_NAME for !windows
run: |
echo "ASSET_NAME=vs_gui_${{ matrix.os }}_${{ matrix.goarch }}" >> $GITHUB_ENV
- if: ${{ matrix.os == 'windows-latest' }}
name: set ASSET_NAME
name: set ASSET_NAME for windows
run: |
echo "ASSET_NAME=vs_gui_${{ matrix.os }}_${{ matrix.goarch }}" | Out-File -FilePath $env:GITHUB_ENV -Append
@@ -94,24 +94,28 @@ jobs:
with:
go-version: 1.19
- if: ${{ matrix.os != 'macos-latest' }}
name: Build
run: |
cd cmd/verysimple/ && make -f Makefile_r_gui PACKNAME=${{ env.ASSET_NAME }} BUILD_VERSION=${{ github.event.inputs.tagName }}
- if: ${{ matrix.os == 'macos-latest' }}
name: macos Build
- name: Build
run: |
cd cmd/verysimple
go build -tags "gui" -trimpath -ldflags "-X 'main.Version=${{ github.event.inputs.tagName }}' -s -w -buildid="
gtar -cJf ${{ env.ASSET_NAME }}.tar.xz verysimple* -C ../../ examples/
rm verysimple*
- if: ${{ matrix.os != 'macos-latest' }}
name: tar (!macos)
run: |
cd cmd/verysimple && tar -cJf ${{ env.ASSET_NAME }}.tar.xz verysimple* -C ../../ examples/
- if: ${{ matrix.os == 'macos-latest' }}
name: gtar (macos)
run: |
cd cmd/verysimple && gtar -cJf ${{ env.ASSET_NAME }}.tar.xz verysimple* -C ../../ examples/
- name: touch xz archive
shell: bash
run: |
cd cmd/verysimple/ && touch -mt $(date +%Y01010000) *.tar.xz
cd cmd/verysimple
rm verysimple*
touch -mt $(date +%Y01010000) *.tar.xz
- name: Upload binaries to release
uses: svenstaro/upload-release-action@v2

View File

@@ -34,15 +34,15 @@ vs的一些亮点是 全协议readv加速lazy技术vless v1hysteria 阻
## 支持的功能
socks5(包括 udp associate 以及用户密码)/http(以及用户密码)/socks5http(与clash的mixed等价)/dokodemo/tproxy(透明代理)/trojan/simplesocks/vless(v0/**v1**)/vmess/shadowsocks, 多用户, http头
socks5(包括 udp associate 以及用户密码)/http(以及用户密码)/socks5http(与clash的mixed等价)/dokodemo/tproxy/tun/trojan/simplesocks/vless(v0/**v1**)/vmess/shadowsocks, 多用户, http头
ws(以及earlydata)/grpc(以及multiMode,uTls以及 **支持回落的 grpcSimple**)/quic(以及**hy阻控、手动挡** 和 0-rtt)/smux,
dns(udp/tls)/route(geoip/geosite,分流功能完全与v2ray等价)/fallback(path/sni/alpn/PROXY protocol v1/v2), sniffing(tls), rejectUnknownSni(tls)
dns(udp/tls)/route(geoip/geosite,分流功能完全与v2ray等价)/fallback(path/sni/alpn/PROXY protocol v1/v2), sniffing(tls)
tcp/udp(以及fullcone)/unix domain socket, tls(包括客户端证书验证), uTls,**【tls lazy encrypt】**, http伪装头**可支持回落**,PROXY protocol v1/v2 监听,
tcp/udp(以及fullcone)/unix domain socket, tls(包括生成随机证书;客户端证书验证;rejectUnknownSni), uTls,**【tls lazy encrypt】**, http伪装头**可支持回落**,PROXY protocol v1/v2 监听,
cli(**交互模式**)/apiServer, Docker, docker-compose.
cli(**交互模式**)/**gui/vsb计划(flutter写的面板)**/apiServer, Docker, docker-compose.
为了不吓跑小白,本 README 把安装、使用方式 放在了前面,如果你要直接阅读本作的技术介绍部分,点击跳转 -> [创新点](#创新点)
@@ -671,11 +671,11 @@ MIT协议作者不负任何责任。本项目 适合内网测试使用,以
## 鸣谢
为了支持hysteria 的阻塞控制,从 https://github.com/HyNetwork/hysteria 的 pkg/congestion里拷贝了 brutal.go 和 pacer.go 到我们的 quic文件夹中.
为了支持hysteria 的阻塞控制,从 [hysteria](https://github.com/HyNetwork/hysteria) 的 pkg/congestion里拷贝了 brutal.go 和 pacer.go 到我们的 quic文件夹中.
grpcSimple的客户端实现部分 借鉴了 clash 的gun的代码该文件单独属于MIT协议。(clash的gun又是借鉴 Qv2ray的gun的
tproxy借鉴了 https://github.com/LiamHaworth/go-tproxy/ , trojan-go也借鉴了它; 它有数个bug, 已经都在本作修复)
tproxy借鉴了 [这个](https://github.com/LiamHaworth/go-tproxy/) , trojan-go也借鉴了它; 它有数个bug, 已经都在本作修复)
来自v2ray的代码有quic的嗅探geosite文件的解析(v2fly/domain-list-community), vmess的 ShakeSizeParser 和 openAEADHeader 等函数。
@@ -683,10 +683,12 @@ tproxy借鉴了 https://github.com/LiamHaworth/go-tproxy/ , trojan-go也借
以上借鉴的代码都是用的MIT协议。
vmess 的客户端代码 来自 github.com/Dreamacro/clash/transport/vmess, 使用的是 GPLv3协议。该协议直接 放在 proxy/vmess/ 文件夹下了。
vmess 的客户端代码 来自 [clash](github.com/Dreamacro/clash/transport/vmess), 使用的是 GPLv3协议。该协议直接 放在 proxy/vmess/ 文件夹下了。
同时通过该vmess 客户端代码 反推出了 对应的服务端代码。
tun 的代码 来自 [tun2socks](github.com/xjasonlyu/tun2socks) , 使用的是 GPLv3协议。该协议直接放在 netLayer/tun 文件夹下了。
## Stargazers over time
[![Stargazers over time](https://starchart.cc/e1732a364fed/v2ray_simple.svg)](https://starchart.cc/e1732a364fed/v2ray_simple)

View File

@@ -1,6 +0,0 @@
# 本文件用于编译release版的 vs_gui, 用于github action中的matrix, 所以不需要在这里指定GOOS
all:
go build -tags "gui $(tags)" -trimpath -ldflags "-X 'main.Version=${BUILD_VERSION}' -s -w -buildid="
tar -cJf ${PACKNAME}.tar.xz verysimple* -C ../../ examples/
rm verysimple*

View File

@@ -11,9 +11,10 @@ import (
const (
official = iota
utlsPackage
shadowTls
)
//参考 crypt/tls 的 conn.go 注意,如果上游代码的底层结构发生了改变,则这里也要跟着修改,保持头部结构一致
// 参考 crypt/tls 的 conn.go 注意,如果上游代码的底层结构发生了改变,则这里也要跟着修改,保持头部结构一致
type faketlsconn struct {
conn net.Conn
isClient bool
@@ -57,40 +58,45 @@ func (c *Conn) GetTeeConn() *TeeConn {
}
//return c.Conn.ConnectionState().NegotiatedProtocol
// return c.Conn.ConnectionState().NegotiatedProtocol
func (c *Conn) GetAlpn() string {
if c.tlsPackageType == utlsPackage {
switch c.tlsPackageType {
case utlsPackage:
cc := (*utls.Conn)(c.ptr)
if cc == nil {
return ""
}
return cc.ConnectionState().NegotiatedProtocol
} else {
case official:
cc := (*tls.Conn)(c.ptr)
if cc == nil {
return ""
}
return cc.ConnectionState().NegotiatedProtocol
}
}
return ""
}
func (c *Conn) GetSni() string {
if c.tlsPackageType == utlsPackage {
switch c.tlsPackageType {
case utlsPackage:
cc := (*utls.Conn)(c.ptr)
if cc == nil {
return ""
}
return cc.ConnectionState().ServerName
} else {
case official:
cc := (*tls.Conn)(c.ptr)
if cc == nil {
return ""
}
return cc.ConnectionState().ServerName
}
return ""
}