v1.0 Sing-box Family bucket.

This commit is contained in:
fscarmen
2023-11-06 16:05:07 +00:00
parent 7ba365a33c
commit aaf1f4e07b
3 changed files with 287 additions and 22 deletions
+37
View File
@@ -0,0 +1,37 @@
name: GitHub Actions Mirror
on:
workflow_dispatch:
schedule:
- cron: '15 20 * * *'
jobs:
mirror_to_gitlab:
runs-on: ubuntu-latest
steps:
- name: 'Checkout'
uses: actions/checkout@v4.1.1
with:
fetch-depth: 0
- name: 'Mirror to gitlab'
uses: pixta-dev/repository-mirroring-action@v1.1.1
with:
target_repo_url:
git@gitlab.com:${{ github.repository }}.git
ssh_private_key:
${{ secrets.PRIVATE_KEY }}
mirror_to_bitbucket:
runs-on: ubuntu-latest
steps:
- name: 'Checkout'
uses: actions/checkout@v4.1.1
with:
fetch-depth: 0
- name: 'Mirror to bitbucket'
uses: pixta-dev/repository-mirroring-action@v1.1.1
with:
target_repo_url:
git@bitbucket.org:${{ github.repository }}.git
ssh_private_key:
${{ secrets.PRIVATE_KEY }}
+3 -2
View File
@@ -15,7 +15,7 @@
* * * * * *
## 更新信息 ## 更新信息
2023.10.29 v1.0 正式版 1. Sing-box Family bucket v1.0; 2. After installing, add [sb] shortcut; 1. Sing-box 全家桶 v1.0; 2. 安装后,增加 [sb] 的快捷运行方式. 2023.10.29 v1.0 正式版 1. Sing-box Family bucket v1.0; 2. After installing, add [sb] shortcut; 3. Output the configuration for Sing-box Client; 1. Sing-box 全家桶 v1.0; 2. 安装后,增加 [sb] 的快捷运行方式; 3. 输出 Sing-box Client 配置
<details> <details>
<summary>历史更新 history(点击即可展开或收起)</summary> <summary>历史更新 history(点击即可展开或收起)</summary>
@@ -40,7 +40,7 @@
## 项目特点: ## 项目特点:
* 一键部署多协议,可以单选、多选或全选 ShadowTLS v3 / Reality / Hysteria2 / Tuic V5 / ShadowSocks / Trojan / Vmess + ws / Vless + ws + tls, 总有一款适合你 * 一键部署多协议,可以单选、多选或全选 ShadowTLS v3 / Reality / Hysteria2 / Tuic V5 / ShadowSocks / Trojan / Vmess + ws / Vless + ws + tls, 总有一款适合你
* 节点信息 V2rayN / Clash Meta / 小火箭 / Nekobox 链接方式输出 * 节点信息输出到 V2rayN / Clash Meta / 小火箭 / Nekobox / Sing-box
* 自定义端口,适合有限开放端口的 nat 小鸡 * 自定义端口,适合有限开放端口的 nat 小鸡
* 内置 warp 链式代理解锁 chatGPT * 内置 warp 链式代理解锁 chatGPT
* 不需要域名 ( vmess / vless 方案例外) * 不需要域名 ( vmess / vless 方案例外)
@@ -122,6 +122,7 @@ bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-b
## 鸣谢下列作者的文章和项目: ## 鸣谢下列作者的文章和项目:
千歌 sing-box 模板: https://github.com/chika0801/sing-box-examples 千歌 sing-box 模板: https://github.com/chika0801/sing-box-examples
瞎折腾 sing-box 模板: https://t.me/ztvps/37
## 免责声明: ## 免责声明:
+246 -19
View File
@@ -4,7 +4,7 @@
VERSION='v1.0' VERSION='v1.0'
# 各变量默认值 # 各变量默认值
GH_PROXY='https://ghproxy.com/' # GH_PROXY='https://ghproxy.com/' # 不稳定,暂不使用
TEMP_DIR='/tmp/sing-box' TEMP_DIR='/tmp/sing-box'
WORK_DIR='/etc/sing-box' WORK_DIR='/etc/sing-box'
START_PORT_DEFAULT='8881' START_PORT_DEFAULT='8881'
@@ -22,8 +22,8 @@ mkdir -p $TEMP_DIR
E[0]="Language:\n 1. English (default) \n 2. 简体中文" E[0]="Language:\n 1. English (default) \n 2. 简体中文"
C[0]="${E[0]}" C[0]="${E[0]}"
E[1]="1. Sing-box Family bucket v1.0; 2. After installing, add [sb] shortcut." E[1]="1. Sing-box Family bucket v1.0; 2. After installing, add [ sb ] shortcut; 3. Output the configuration for Sing-box Client"
C[1]="1. Sing-box 全家桶 v1.0; 2. 安装后,增加 [sb] 的快捷运行方式" C[1]="1. Sing-box 全家桶 v1.0; 2. 安装后,增加 [ sb ] 的快捷运行方式; 3. 输出 Sing-box Client 的配置"
E[2]="This project is designed to add sing-box support for multiple protocols to VPS, details: [https://github.com/fscarmen/sing-box]\n Script Features:\n\t • Deploy multiple protocols with one click, there is always one for you!\n\t • Custom ports for nat machine with limited open ports.\n\t • Built-in warp chained proxy to unlock chatGPT.\n\t • No domain name is required.\n\t • Support system: Ubuntu, Debian, CentOS, Alpine and Arch Linux 3.\n\t • Support architecture: AMD,ARM and s390x\n" E[2]="This project is designed to add sing-box support for multiple protocols to VPS, details: [https://github.com/fscarmen/sing-box]\n Script Features:\n\t • Deploy multiple protocols with one click, there is always one for you!\n\t • Custom ports for nat machine with limited open ports.\n\t • Built-in warp chained proxy to unlock chatGPT.\n\t • No domain name is required.\n\t • Support system: Ubuntu, Debian, CentOS, Alpine and Arch Linux 3.\n\t • Support architecture: AMD,ARM and s390x\n"
C[2]="本项目专为 VPS 添加 sing-box 支持的多种协议, 详细说明: [https://github.com/fscarmen/sing-box]\n 脚本特点:\n\t • 一键部署多协议,总有一款适合你\n\t • 自定义端口,适合有限开放端口的 nat 小鸡\n\t • 内置 warp 链式代理解锁 chatGPT\n\t • 不需要域名\n\t • 智能判断操作系统: Ubuntu 、Debian 、CentOS 、Alpine 和 Arch Linux,请务必选择 LTS 系统\n\t • 支持硬件结构类型: AMD 和 ARM\n" C[2]="本项目专为 VPS 添加 sing-box 支持的多种协议, 详细说明: [https://github.com/fscarmen/sing-box]\n 脚本特点:\n\t • 一键部署多协议,总有一款适合你\n\t • 自定义端口,适合有限开放端口的 nat 小鸡\n\t • 内置 warp 链式代理解锁 chatGPT\n\t • 不需要域名\n\t • 智能判断操作系统: Ubuntu 、Debian 、CentOS 、Alpine 和 Arch Linux,请务必选择 LTS 系统\n\t • 支持硬件结构类型: AMD 和 ARM\n"
E[3]="Input errors up to 5 times.The script is aborted." E[3]="Input errors up to 5 times.The script is aborted."
@@ -162,8 +162,10 @@ E[69]="Install sba scripts (argo + sing-box) [https://github.com/fscarmen/sba]"
C[69]="安装 sba 脚本 (argo + sing-box) [https://github.com/fscarmen/sba]" C[69]="安装 sba 脚本 (argo + sing-box) [https://github.com/fscarmen/sba]"
E[70]="Please set inSecure in tls to true." E[70]="Please set inSecure in tls to true."
C[70]="请把 tls 里的 inSecure 设置为 true" C[70]="请把 tls 里的 inSecure 设置为 true"
E[71]="Create shortcut [sb] successfully." E[71]="Create shortcut [ sb ] successfully."
C[71]="创建快捷 [sb] 指令成功!" C[71]="创建快捷 [ sb ] 指令成功!"
E[72]="The full template can be found at: https://t.me/ztvps/37"
C[72]="完整模板可参照: https://t.me/ztvps/37"
# 自定义字体彩色,read 函数 # 自定义字体彩色,read 函数
warning() { echo -e "\033[31m\033[01m$*\033[0m"; } # 红色 warning() { echo -e "\033[31m\033[01m$*\033[0m"; } # 红色
@@ -248,10 +250,9 @@ check_install() {
if [[ $STATUS = "$(text 26)" ]] && [ ! -s $WORK_DIR/sing-box ]; then if [[ $STATUS = "$(text 26)" ]] && [ ! -s $WORK_DIR/sing-box ]; then
{ {
local ONLINE=$(wget -qO- "https://api.github.com/repos/SagerNet/sing-box/releases/latest" | grep "tag_name" | sed "s@.*\"v\(.*\)\",@\1@g") local ONLINE=$(wget -qO- "https://api.github.com/repos/SagerNet/sing-box/releases/latest" | grep "tag_name" | sed "s@.*\"v\(.*\)\",@\1@g")
ONLINE=${ONLINE:-'1.5.2'} ONLINE=${ONLINE:-'1.6.0'}
wget -qO $TEMP_DIR/sing-box.tar.gz ${GH_PROXY}https://github.com/SagerNet/sing-box/releases/download/v$ONLINE/sing-box-$ONLINE-linux-$SING_BOX_ARCH.tar.gz >/dev/null 2>&1 wget -c ${GH_PROXY}https://github.com/SagerNet/sing-box/releases/download/v$ONLINE/sing-box-$ONLINE-linux-$SING_BOX_ARCH.tar.gz -qO- | tar xz -C $TEMP_DIR sing-box-$ONLINE-linux-$SING_BOX_ARCH/sing-box
tar xzf $TEMP_DIR/sing-box.tar.gz -C $TEMP_DIR sing-box-$ONLINE-linux-$SING_BOX_ARCH/sing-box >/dev/null 2>&1 [ -s $TEMP_DIR/sing-box-$ONLINE-linux-$SING_BOX_ARCH/sing-box ] && mv $TEMP_DIR/sing-box-$ONLINE-linux-$SING_BOX_ARCH/sing-box $TEMP_DIR
mv $TEMP_DIR/sing-box-$ONLINE-linux-$SING_BOX_ARCH/sing-box $TEMP_DIR >/dev/null 2>&1
}& }&
fi fi
} }
@@ -950,8 +951,8 @@ export_list() {
[ -s $WORK_DIR/conf/*_SHADOWTLS_inbounds.json ] && PORT_SHADOWTLS=$(sed -n '/listen_port/s/[^0-9]\+//gp' $WORK_DIR/conf/*_SHADOWTLS_inbounds.json) [ -s $WORK_DIR/conf/*_SHADOWTLS_inbounds.json ] && PORT_SHADOWTLS=$(sed -n '/listen_port/s/[^0-9]\+//gp' $WORK_DIR/conf/*_SHADOWTLS_inbounds.json)
[ -s $WORK_DIR/conf/*_SHADOWSOCKS_inbounds.json ] && PORT_SHADOWSOCKS=$(sed -n '/listen_port/s/[^0-9]\+//gp' $WORK_DIR/conf/*_SHADOWSOCKS_inbounds.json) [ -s $WORK_DIR/conf/*_SHADOWSOCKS_inbounds.json ] && PORT_SHADOWSOCKS=$(sed -n '/listen_port/s/[^0-9]\+//gp' $WORK_DIR/conf/*_SHADOWSOCKS_inbounds.json)
[ -s $WORK_DIR/conf/*_TROJAN_inbounds.json ] && PORT_TROJAN=$(sed -n '/listen_port/s/[^0-9]\+//gp' $WORK_DIR/conf/*_TROJAN_inbounds.json) [ -s $WORK_DIR/conf/*_TROJAN_inbounds.json ] && PORT_TROJAN=$(sed -n '/listen_port/s/[^0-9]\+//gp' $WORK_DIR/conf/*_TROJAN_inbounds.json)
[ -s $WORK_DIR/conf/*_VMESS_WS_inbounds.json ] && WS_SERVER_IP=${WS_SERVER_IP:-"$(grep -A2 "{name.*vmess[ ]\+ws" $WORK_DIR/list | awk -F'[][]' 'NR==3 {print $2}'))"} && VMESS_HOST_DOMAIN=${VMESS_HOST_DOMAIN:-"$(grep -A2 "{name.*vmess[ ]\+ws" $WORK_DIR/list | awk -F'[][]' 'NR==3 {print $4}')"} && PORT_VMESS_WS=${PORT_VMESS_WS:-"$(sed -n '/listen_port/s/[^0-9]\+//gp' $WORK_DIR/conf/*_VMESS_WS_inbounds.json)"} && CDN=${CDN:-"$(sed -n "s/.*{name.*vmess[ ]\+ws.*server:[ ]\+\([^,]\+\).*/\1/gp" $WORK_DIR/list)"} [ -s $WORK_DIR/conf/*_VMESS_WS_inbounds.json ] && WS_SERVER_IP=${WS_SERVER_IP:-"$(grep -A2 "{name.*vmess[ ]\+ws" $WORK_DIR/list | awk -F'[][]' 'NR==3 {print $2}')"} && VMESS_HOST_DOMAIN=${VMESS_HOST_DOMAIN:-"$(grep -A2 "{name.*vmess[ ]\+ws" $WORK_DIR/list | awk -F'[][]' 'NR==3 {print $4}')"} && PORT_VMESS_WS=${PORT_VMESS_WS:-"$(sed -n '/listen_port/s/[^0-9]\+//gp' $WORK_DIR/conf/*_VMESS_WS_inbounds.json)"} && CDN=${CDN:-"$(sed -n "s/.*{name.*vmess[ ]\+ws.*server:[ ]\+\([^,]\+\).*/\1/gp" $WORK_DIR/list)"}
[ -s $WORK_DIR/conf/*_VLESS_WS_inbounds.json ] && WS_SERVER_IP=${WS_SERVER_IP:-"$(grep -A2 "{name.*vless[ ]\+ws" $WORK_DIR/list | awk -F'[][]' 'NR==3 {print $2}'))"} && VLESS_HOST_DOMAIN=${VLESS_HOST_DOMAIN:-"$(grep -A2 "{name.*vless[ ]\+ws" $WORK_DIR/list | awk -F'[][]' 'NR==3 {print $4}')"} && PORT_VLESS_WS=${PORT_VLESS_WS:-"$(sed -n '/listen_port/s/[^0-9]\+//gp' $WORK_DIR/conf/*_VLESS_WS_inbounds.json)"} && CDN=${CDN:-"$(sed -n "s/.*{name.*vless[ ]\+ws.*server:[ ]\+\([^,]\+\).*/\1/gp" $WORK_DIR/list)"} [ -s $WORK_DIR/conf/*_VLESS_WS_inbounds.json ] && WS_SERVER_IP=${WS_SERVER_IP:-"$(grep -A2 "{name.*vless[ ]\+ws" $WORK_DIR/list | awk -F'[][]' 'NR==3 {print $2}')"} && VLESS_HOST_DOMAIN=${VLESS_HOST_DOMAIN:-"$(grep -A2 "{name.*vless[ ]\+ws" $WORK_DIR/list | awk -F'[][]' 'NR==3 {print $4}')"} && PORT_VLESS_WS=${PORT_VLESS_WS:-"$(sed -n '/listen_port/s/[^0-9]\+//gp' $WORK_DIR/conf/*_VLESS_WS_inbounds.json)"} && CDN=${CDN:-"$(sed -n "s/.*{name.*vless[ ]\+ws.*server:[ ]\+\([^,]\+\).*/\1/gp" $WORK_DIR/list)"}
fi fi
# IPv6 时的 IP 处理 # IPv6 时的 IP 处理
@@ -1027,7 +1028,7 @@ $(info "$(text 54)
\"password\":\"${UUID}\", \"password\":\"${UUID}\",
\"server\":\"${SERVER_IP}\", \"server\":\"${SERVER_IP}\",
\"server_port\":${PORT_TUIC}, \"server_port\":${PORT_TUIC},
\"tag\":\"proxy\", \"tag\": \"proxy\",
\"tls\":{ \"tls\":{
\"alpn\":[ \"alpn\":[
\"h3\", \"h3\",
@@ -1063,7 +1064,7 @@ $(info "$(text 54)
\"listen_port\":${PORT_SHADOWTLS}, \"listen_port\":${PORT_SHADOWTLS},
\"sniff\":true, \"sniff\":true,
\"sniff_override_destination\":false, \"sniff_override_destination\":false,
\"tag\":\"ShadowTLS\", \"tag\": \"ShadowTLS\",
\"type\":\"mixed\" \"type\":\"mixed\"
} }
], ],
@@ -1081,10 +1082,14 @@ $(info "$(text 54)
\"password\":\"${UUID}\", \"password\":\"${UUID}\",
\"server\":\"${SERVER_IP}\", \"server\":\"${SERVER_IP}\",
\"server_port\":${PORT_SHADOWTLS}, \"server_port\":${PORT_SHADOWTLS},
\"tag\":\"shadowtls-out\", \"tag\": \"shadowtls-out\",
\"tls\":{ \"tls\":{
\"enabled\":true, \"enabled\":true,
\"server_name\":\"${TLS_SERVER}\" \"server_name\":\"${TLS_SERVER}\",
\"utls\": {
\"enabled\": true,
\"fingerprint\": \"chrome\"
}
}, },
\"type\":\"shadowtls\", \"type\":\"shadowtls\",
\"version\":3 \"version\":3
@@ -1239,7 +1244,7 @@ $(hint "nekoray://custom#$(base64 -w0 <<< "{\"_v\":0,\"addr\":\"127.0.0.1\",\"cm
nekoray://shadowsocks#$(base64 -w0 <<< "{\"_v\":0,\"method\":\"2022-blake3-aes-128-gcm\",\"name\":\"2-ss-not-use\",\"pass\":\"${SHADOWTLS_PASSWORD}\",\"port\":0,\"stream\":{\"ed_len\":0,\"insecure\":false,\"mux_s\":0,\"net\":\"tcp\"},\"uot\":0}") nekoray://shadowsocks#$(base64 -w0 <<< "{\"_v\":0,\"method\":\"2022-blake3-aes-128-gcm\",\"name\":\"2-ss-not-use\",\"pass\":\"${SHADOWTLS_PASSWORD}\",\"port\":0,\"stream\":{\"ed_len\":0,\"insecure\":false,\"mux_s\":0,\"net\":\"tcp\"},\"uot\":0}")
$(text 48)") $(text 48)")
EOF EOF
[ -n "$PORT_SHADOWSOCKS" ] && cat >> $WORK_DIR/list << EOF [ -n "$PORT_SHADOWSOCKS" ] && cat >> $WORK_DIR/list << EOF
---------------------------- ----------------------------
@@ -1263,7 +1268,230 @@ $(text 52)")
EOF EOF
cat >> $WORK_DIR/list << EOF cat >> $WORK_DIR/list << EOF
******************************************* *******************************************
┌────────────────┐
│ │
│ $(warning "Sing-box") │
│ │
└────────────────┘
----------------------------
$(info "{
\"outbounds\":[")
EOF EOF
[ -n "$PORT_REALITY" ] && cat >> $WORK_DIR/list << EOF
$(info " {
\"type\": \"vless\",
\"tag\": \"${NODE_NAME} vless-reality-vision\",
\"server\":\"${SERVER_IP}\",
\"server_port\":${PORT_REALITY},
\"uuid\":\"${UUID}\",
\"flow\":\"xtls-rprx-vision\",
\"packet_encoding\":\"xudp\",
\"tls\":{
\"enabled\":true,
\"server_name\":\"${TLS_SERVER}\",
\"utls\":{
\"enabled\":true,
\"fingerprint\":\"chrome\"
},
\"reality\":{
\"enabled\":true,
\"public_key\":\"${REALITY_PUBLIC}\",
\"short_id\":\"\"
}
},
\"multiplex\": {
\"enabled\": true,
\"protocol\": \"h2mux\",
\"max_connections\": 16,
\"padding\": true
}
},")
EOF
[ -n "$PORT_HYSTERIA2" ] && cat >> $WORK_DIR/list << EOF
$(info " {
\"type\": \"hysteria2\",
\"tag\": \"${NODE_NAME} hysteria2\",
\"server\": \"${SERVER_IP}\",
\"server_port\": ${PORT_HYSTERIA2},
\"up_mbps\": 200,
\"down_mbps\": 1000,
\"obfs\": {
\"type\": \"salamander\",
\"password\": \"${UUID}\"
},
\"password\": \"${UUID}\",
\"tls\": {
\"enabled\": true,
\"insecure\": true,
\"server_name\": \"\",
\"alpn\": [ \"h3\" ]
}
},")
EOF
[ -n "$PORT_TUIC" ] && cat >> $WORK_DIR/list << EOF
$(info " {
\"type\": \"tuic\",
\"tag\": \"${NODE_NAME} tuic\",
\"server\": \"${SERVER_IP}\",
\"server_port\": ${PORT_TUIC},
\"uuid\": \"${UUID}\",
\"password\": \"${UUID}\",
\"congestion_control\": \"bbr\",
\"udp_relay_mode\": \"native\",
\"zero_rtt_handshake\": false,
\"heartbeat\": \"10s\",
\"tls\": {
\"enabled\": true,
\"insecure\": true,
\"server_name\": \"\",
\"alpn\": [ \"h3\" ]
}
},")
EOF
[ -n "$PORT_SHADOWTLS" ] && cat >> $WORK_DIR/list << EOF
$(info " {
\"type\": \"shadowsocks\",
\"tag\": \"${NODE_NAME} ShadowTLS v3\",
\"method\": \"2022-blake3-aes-128-gcm\",
\"password\": \"${SHADOWTLS_PASSWORD}\",
\"detour\": \"shadowtls-out\",
\"udp_over_tcp\": false,
\"multiplex\": {
\"enabled\": true,
\"protocol\": \"h2mux\",
\"max_connections\": 16,
\"padding\": true
}
},
{
\"type\": \"shadowtls\",
\"tag\": \"shadowtls-out\",
\"server\": \"${SERVER_IP}\",
\"server_port\": ${PORT_SHADOWTLS},
\"version\": 3,
\"password\": \"${UUID}\",
\"tls\": {
\"enabled\": true,
\"server_name\": \"${TLS_SERVER}\",
\"utls\": {
\"enabled\": true,
\"fingerprint\": \"chrome\"
}
}
},")
EOF
[ -n "$PORT_SHADOWSOCKS" ] && cat >> $WORK_DIR/list << EOF
$(info " {
\"type\": \"shadowsocks\",
\"tag\": \"${NODE_NAME} ss\",
\"server\": \"${SERVER_IP}\",
\"server_port\": ${PORT_SHADOWSOCKS},
\"method\": \"aes-128-gcm\",
\"password\": \"${UUID}\",
\"multiplex\": {
\"enabled\": true,
\"protocol\": \"h2mux\",
\"max_connections\": 16,
\"padding\": true
}
},")
EOF
[ -n "$PORT_TROJAN" ] && cat >> $WORK_DIR/list << EOF
$(info " {
\"type\": \"trojan\",
\"tag\": \"${NODE_NAME} trojan\",
\"server\": \"${SERVER_IP}\",
\"server_port\": ${PORT_TROJAN},
\"password\": \"${UUID}\",
\"tls\": {
\"enabled\":true,
\"insecure\": true,
\"server_name\":\"\",
\"utls\": {
\"enabled\":true,
\"fingerprint\":\"chrome\"
}
},
\"multiplex\": {
\"enabled\":true,
\"protocol\":\"h2mux\",
\"max_connections\": 16,
\"padding\":true
}
},")
EOF
[ -n "$PORT_VMESS_WS" ] && TYPE_HOST_DOMAIN=$VMESS_HOST_DOMAIN && TYPE_PORT_WS=$PORT_VMESS_WS && cat >> $WORK_DIR/list << EOF
$(info " {
\"type\": \"vmess\",
\"tag\": \"${NODE_NAME} vmess ws\",
\"server\":\"${CDN}\",
\"server_port\":80,
\"uuid\":\"${UUID}\",
\"transport\": {
\"type\":\"ws\",
\"path\":\"/${UUID}-vmess\",
\"headers\": {
\"Host\": \"${VMESS_HOST_DOMAIN}\"
},
\"max_early_data\":2408,
\"early_data_header_name\":\"Sec-WebSocket-Protocol\"
},
\"multiplex\": {
\"enabled\":true,
\"protocol\":\"h2mux\",
\"max_streams\":16,
\"padding\":true
}
},")
EOF
[ -n "$PORT_VLESS_WS" ] && TYPE_HOST_DOMAIN=$VLESS_HOST_DOMAIN && TYPE_PORT_WS=$PORT_VLESS_WS && cat >> $WORK_DIR/list << EOF
$(info " {
\"type\": \"vless\",
\"tag\": \"${NODE_NAME} vless ws\",
\"server\":\"${CDN}\",
\"server_port\":443,
\"uuid\":\"${UUID}\",
\"tls\": {
\"enabled\":true,
\"server_name\":\"${VLESS_HOST_DOMAIN}\",
\"utls\": {
\"enabled\":true,
\"fingerprint\":\"chrome\"
}
},
\"transport\": {
\"type\":\"ws\",
\"path\":\"/${UUID}-vless\",
\"headers\": {
\"Host\": \"${VLESS_HOST_DOMAIN}\"
},
\"max_early_data\":2408,
\"early_data_header_name\":\"Sec-WebSocket-Protocol\"
},
\"multiplex\": {
\"enabled\":true,
\"protocol\":\"h2mux\",
\"max_streams\":16,
\"padding\":true
}
},")
EOF
sed -i '$s/},/}/' $WORK_DIR/list
cat >> $WORK_DIR/list << EOF
$(info " ]
}
$(text 72)")
EOF
[ -n "$PORT_VMESS_WS" ] && TYPE_HOST_DOMAIN=$VMESS_HOST_DOMAIN && TYPE_PORT_WS=$PORT_VMESS_WS && hint "\n $(text 52)" >> $WORK_DIR/list
[ -n "$PORT_VLESS_WS" ] && TYPE_HOST_DOMAIN=$VLESS_HOST_DOMAIN && TYPE_PORT_WS=$PORT_VLESS_WS && hint "\n $(text 52)" >> $WORK_DIR/list
# 显示节点信息
cat $WORK_DIR/list cat $WORK_DIR/list
# 显示脚本使用情况数据 # 显示脚本使用情况数据
@@ -1502,8 +1730,7 @@ version() {
if [[ "$UPDATE" = [Yy] ]]; then if [[ "$UPDATE" = [Yy] ]]; then
check_system_info check_system_info
wget -O $TEMP_DIR/sing-box.tar.gz ${GH_PROXY}https://github.com/SagerNet/sing-box/releases/download/v$ONLINE/sing-box-$ONLINE-linux-$SING_BOX_ARCH.tar.gz wget -c ${GH_PROXY}https://github.com/SagerNet/sing-box/releases/download/v$ONLINE/sing-box-$ONLINE-linux-$SING_BOX_ARCH.tar.gz -qO- | tar xz -C $TEMP_DIR sing-box-$ONLINE-linux-$SING_BOX_ARCH/sing-box
tar xzf $TEMP_DIR/sing-box.tar.gz -C $TEMP_DIR sing-box-$ONLINE-linux-$SING_BOX_ARCH/sing-box
if [ -s $TEMP_DIR/sing-box-$ONLINE-linux-$SING_BOX_ARCH/sing-box ]; then if [ -s $TEMP_DIR/sing-box-$ONLINE-linux-$SING_BOX_ARCH/sing-box ]; then
systemctl stop sing-box systemctl stop sing-box
@@ -1611,7 +1838,7 @@ while getopts ":P:p:OoUuVvNnBbRr" OPTNAME; do
'U'|'u' ) select_language; check_system_info; uninstall; exit 0 ;; 'U'|'u' ) select_language; check_system_info; uninstall; exit 0 ;;
'N'|'n' ) select_language; [ ! -s $WORK_DIR/list ] && error " Sing-box $(text 26) "; export_list; exit 0 ;; 'N'|'n' ) select_language; [ ! -s $WORK_DIR/list ] && error " Sing-box $(text 26) "; export_list; exit 0 ;;
'V'|'v' ) select_language; check_arch; version; exit 0 ;; 'V'|'v' ) select_language; check_arch; version; exit 0 ;;
'B'|'b' ) select_language; bash <(wget -qO- --no-check-certificate "https://raw.githubusercontents.com/ylx2016/Linux-NetSpeed/master/tcp.sh"); exit ;; 'B'|'b' ) select_language; bash <(wget -qO- --no-check-certificate "https://raw.githubusercontent.com/ylx2016/Linux-NetSpeed/master/tcp.sh"); exit ;;
'R'|'r' ) select_language; check_system_info; change_protocals; exit 0 ;; 'R'|'r' ) select_language; check_system_info; change_protocals; exit 0 ;;
esac esac
done done