mirror of
https://github.com/fscarmen/sing-box.git
synced 2026-08-10 17:55:16 +08:00
v1.2.2 Complete 8 non-interactive installation modes.
This commit is contained in:
@@ -19,16 +19,18 @@
|
||||
|
||||
* * *
|
||||
## 1.更新信息
|
||||
2024.05.03 v1.2.2 Complete 8 non-interactive installation modes, direct output results. Suitable for mass installation scenarios. You can put the commands in the favorites of the ssh software. Please refer to the README.md description for details. 完善8种无交互安装模式,直接输出结果,适合大量装机的情景,可以把命令放在 ssh 软件的收藏夹,详细请参考README.md 说明
|
||||
|
||||
2024.04.16 v1.2.1 1. Fix the bug of dynamically adding and removing protocols; 2. CentOS 7 add EPEL to install nginx; 1. 修复动态增加和删除协议的 bug; 2. CentOS 7 增加 EPEL 软件仓库,以便安装 Nginx
|
||||
|
||||
2024.04.12 v1.2.0 1. Add Cloudflare Argo Tunnel, so that 10 protocols, including the transport mode of ws, no longer need to bring our own domain; 2. Cloudflare Argo Tunnel supports try, Json and Token methods. Use of [sb -t] online switching; 3. Cloudflare Argo Tunnel switch is [sb -a], and the Sing-box switch is changed from [sb -o] to [sb -s]; 4. If Json or Token Argo is used, the subscription address is the domain name; 5. For details: https://github.com/fscarmen/sing-box; 1. 增加 Cloudflare Argo Tunnel,让包括传输方式为ws在内的10个协议均不再需要自带域名; 2. Cloudflare Argo Tunnel 支持临时、Json 和 Token 方式,支持使用 [sb -t] 在线切换; 3. Cloudflare Argo Tunnel 开关为 [sb -a],Sing-box 开关从 [sb -o] 更换为 [sb -s]; 4. 若使用 Json 或者 Token 固定域名 Argo,则订阅地址则使用该域名; 5. 详细参考: https://github.com/fscarmen/sing-box
|
||||
|
||||
2024.04.01 sing-box + argo container version is newly launched, for details: https://github.com/fscarmen/sing-box; sing-box 全家桶 + argo 容器版本全新上线,详细参考: https://github.com/fscarmen/sing-box
|
||||
|
||||
<details>
|
||||
<summary>历史更新 history(点击即可展开或收起)</summary>
|
||||
<br>
|
||||
|
||||
>2024.04.12 v1.2.0 1. Add Cloudflare Argo Tunnel, so that 10 protocols, including the transport mode of ws, no longer need to bring our own domain; 2. Cloudflare Argo Tunnel supports try, Json and Token methods. Use of [sb -t] online switching; 3. Cloudflare Argo Tunnel switch is [sb -a], and the Sing-box switch is changed from [sb -o] to [sb -s]; 4. If Json or Token Argo is used, the subscription address is the domain name; 5. For details: https://github.com/fscarmen/sing-box; 1. 增加 Cloudflare Argo Tunnel,让包括传输方式为ws在内的10个协议均不再需要自带域名; 2. Cloudflare Argo Tunnel 支持临时、Json 和 Token 方式,支持使用 [sb -t] 在线切换; 3. Cloudflare Argo Tunnel 开关为 [sb -a],Sing-box 开关从 [sb -o] 更换为 [sb -s]; 4. 若使用 Json 或者 Token 固定域名 Argo,则订阅地址则使用该域名; 5. 详细参考: https://github.com/fscarmen/sing-box
|
||||
>
|
||||
>2024.04.01 sing-box + argo container version is newly launched, for details: https://github.com/fscarmen/sing-box; sing-box 全家桶 + argo 容器版本全新上线,详细参考: https://github.com/fscarmen/sing-box
|
||||
>
|
||||
>2024.03.27 v1.1.11 Add two non-interactive installation modes: 1. pass parameter; 2.kv file, for details: https://github.com/fscarmen/sing-box; 增加两个的无交互安装模式: 1. 传参;2.kv 文件,详细参考: https://github.com/fscarmen/sing-box
|
||||
>
|
||||
>2024.03.26 v1.1.10 Thanks to UUb for the official change of the compilation, dependencies jq, qrencode from apt installation to download the binary file, reduce the installation time of about 15 seconds, the implementation of the project's positioning of lightweight, as far as possible to install the least system dependencies; 感谢 UUb 兄弟的官改编译,依赖 jq, qrencode 从 apt 安装改为下载二进制文件,缩减安装时间约15秒,贯彻项目轻量化的定位,尽最大可能安装最少的系统依赖
|
||||
@@ -118,6 +120,11 @@ bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-b
|
||||
```
|
||||
|
||||
### 方式2. KV 传参,举例
|
||||
|
||||
<details>
|
||||
<summary> 使用 Origin Rule + 订阅</summary>
|
||||
<br>
|
||||
|
||||
```
|
||||
bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-box.sh) \
|
||||
--LANGUAGE c \
|
||||
@@ -125,13 +132,155 @@ bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-b
|
||||
--START_PORT 8881 \
|
||||
--PORT_NGINX 60000 \
|
||||
--SERVER_IP 123.123.123.123 \
|
||||
--CDN www.who.int \
|
||||
--CDN dash.cloudflare.com \
|
||||
--VMESS_HOST_DOMAIN vmess.test.com \
|
||||
--VLESS_HOST_DOMAIN vless.test.com \
|
||||
--UUID_CONFIRM 20f7fca4-86e5-4ddf-9eed-24142073d197 \
|
||||
--NODE_NAME_CONFIRM test
|
||||
--SUBSCRIBE=true \
|
||||
--NODE_NAME_CONFIRM bundle
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary> 使用 Origin Rule ,不要订阅 </summary>
|
||||
<br>
|
||||
|
||||
```
|
||||
bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-box.sh) \
|
||||
--LANGUAGE c \
|
||||
--CHOOSE_PROTOCOLS a \
|
||||
--START_PORT 8881 \
|
||||
--PORT_NGINX 60000 \
|
||||
--SERVER_IP 123.123.123.123 \
|
||||
--CDN dash.cloudflare.com \
|
||||
--VMESS_HOST_DOMAIN vmess.test.com \
|
||||
--VLESS_HOST_DOMAIN vless.test.com \
|
||||
--UUID_CONFIRM 20f7fca4-86e5-4ddf-9eed-24142073d197 \
|
||||
--NODE_NAME_CONFIRM bundle
|
||||
```
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary> 使用 Argo 临时隧道 + 订阅 </summary>
|
||||
<br>
|
||||
|
||||
```
|
||||
bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-box.sh) \
|
||||
--LANGUAGE c \
|
||||
--CHOOSE_PROTOCOLS a \
|
||||
--START_PORT 8881 \
|
||||
--PORT_NGINX 60000 \
|
||||
--SERVER_IP 123.123.123.123 \
|
||||
--CDN dash.cloudflare.com \
|
||||
--UUID_CONFIRM 20f7fca4-86e5-4ddf-9eed-24142073d197 \
|
||||
--SUBSCRIBE=true \
|
||||
--ARGO=true \
|
||||
--NODE_NAME_CONFIRM bundle
|
||||
```
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary> 使用 Argo 临时隧道,不要订阅 </summary>
|
||||
<br>
|
||||
|
||||
```
|
||||
bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-box.sh) \
|
||||
--LANGUAGE c \
|
||||
--CHOOSE_PROTOCOLS a \
|
||||
--START_PORT 8881 \
|
||||
--PORT_NGINX 60000 \
|
||||
--SERVER_IP 123.123.123.123 \
|
||||
--CDN dash.cloudflare.com \
|
||||
--UUID_CONFIRM 20f7fca4-86e5-4ddf-9eed-24142073d197 \
|
||||
--ARGO=true \
|
||||
--NODE_NAME_CONFIRM bundle
|
||||
```
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary> 使用 Argo Json 隧道 + 订阅 </summary>
|
||||
<br>
|
||||
|
||||
```
|
||||
bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-box.sh) \
|
||||
--LANGUAGE c \
|
||||
--CHOOSE_PROTOCOLS a \
|
||||
--START_PORT 8881 \
|
||||
--PORT_NGINX 60000 \
|
||||
--SERVER_IP 123.123.123.123 \
|
||||
--CDN dash.cloudflare.com \
|
||||
--UUID_CONFIRM 20f7fca4-86e5-4ddf-9eed-24142073d197 \
|
||||
--SUBSCRIBE=true \
|
||||
--ARGO=true \
|
||||
--ARGO_DOMAIN=sb.argo.com \
|
||||
--ARGO_AUTH='{"AccountTag":"9cc9e3e4d8f29d2a02e297f14f20513a","TunnelSecret":"6AYfKBOoNlPiTAuWg64ZwujsNuERpWLm6pPJ2qpN8PM=","TunnelID":"1ac55430-f4dc-47d5-a850-bdce824c4101"}' \
|
||||
--NODE_NAME_CONFIRM bundle
|
||||
```
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary> 使用 Argo Json 隧道,不要订阅 </summary>
|
||||
<br>
|
||||
|
||||
```
|
||||
bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-box.sh) \
|
||||
--LANGUAGE c \
|
||||
--CHOOSE_PROTOCOLS a \
|
||||
--START_PORT 8881 \
|
||||
--PORT_NGINX 60000 \
|
||||
--SERVER_IP 123.123.123.123 \
|
||||
--CDN dash.cloudflare.com \
|
||||
--UUID_CONFIRM 20f7fca4-86e5-4ddf-9eed-24142073d197 \
|
||||
--ARGO=true \
|
||||
--ARGO_DOMAIN=sb.argo.com \
|
||||
--ARGO_AUTH='{"AccountTag":"9cc9e3e4d8f29d2a02e297f14f20513a","TunnelSecret":"6AYfKBOoNlPiTAuWg64ZwujsNuERpWLm6pPJ2qpN8PM=","TunnelID":"1ac55430-f4dc-47d5-a850-bdce824c4101"}' \
|
||||
--NODE_NAME_CONFIRM bundle
|
||||
```
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary> 使用 Argo Token 隧道 + 订阅 </summary>
|
||||
<br>
|
||||
|
||||
```
|
||||
bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-box.sh) \
|
||||
--LANGUAGE c \
|
||||
--CHOOSE_PROTOCOLS a \
|
||||
--START_PORT 8881 \
|
||||
--PORT_NGINX 60000 \
|
||||
--SERVER_IP 123.123.123.123 \
|
||||
--CDN dash.cloudflare.com \
|
||||
--UUID_CONFIRM 20f7fca4-86e5-4ddf-9eed-24142073d197 \
|
||||
--SUBSCRIBE=true \
|
||||
--ARGO=true \
|
||||
--ARGO_DOMAIN=sb.argo.com \
|
||||
--ARGO_AUTH='sudo cloudflared service install eyJhIjoiOWNjOWUzZTRkOGYyOWQyYTAyZTI5N2YxNGYyMDUxM2EiLCJ0IjoiOGNiZDA4ZjItNGM0MC00OGY1LTlmZDYtZjlmMWQ0YTcxMjUyIiwicyI6IllXWTFORGN4TW1ZdE5HTXdZUzAwT0RaakxUbGxNMkl0Wm1VMk5URTFOR0l4TkdKayJ9' \
|
||||
--NODE_NAME_CONFIRM bundle
|
||||
```
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary> 使用 Argo Token 隧道,不要订阅 </summary>
|
||||
<br>
|
||||
|
||||
```
|
||||
bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-box.sh) \
|
||||
--LANGUAGE c \
|
||||
--CHOOSE_PROTOCOLS a \
|
||||
--START_PORT 8881 \
|
||||
--PORT_NGINX 60000 \
|
||||
--SERVER_IP 123.123.123.123 \
|
||||
--CDN dash.cloudflare.com \
|
||||
--UUID_CONFIRM 20f7fca4-86e5-4ddf-9eed-24142073d197 \
|
||||
--ARGO=true \
|
||||
--ARGO_DOMAIN=sb.argo.com \
|
||||
--ARGO_AUTH='sudo cloudflared service install eyJhIjoiOWNjOWUzZTRkOGYyOWQyYTAyZTI5N2YxNGYyMDUxM2EiLCJ0IjoiOGNiZDA4ZjItNGM0MC00OGY1LTlmZDYtZjlmMWQ0YTcxMjUyIiwicyI6IllXWTFORGN4TW1ZdE5HTXdZUzAwT0RaakxUbGxNMkl0Wm1VMk5URTFOR0l4TkdKayJ9' \
|
||||
--NODE_NAME_CONFIRM bundle
|
||||
```
|
||||
</details>
|
||||
|
||||
|
||||
### 参数说明
|
||||
| Key 大小写不敏感(Case Insensitive)| Value |
|
||||
| --------------- | ----------- |
|
||||
@@ -144,6 +293,9 @@ bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-b
|
||||
| --VMESS_HOST_DOMAIN | vmess sni 域名,如 --CHOOSE_PROTOCOLS 是 [a,h] 时需要 |
|
||||
| --VLESS_HOST_DOMAIN | vless sni 域名,如 --CHOOSE_PROTOCOLS 是 [a,i] 时需要 |
|
||||
| --UUID_CONFIRM | 协议的 uuid 或者 password |
|
||||
| --ARGO | 是否使用 Argo Tunnel,如果是填 true,如果使用 Origin rules,则可以忽略本 Key |
|
||||
| --ARGO_DOMAIN | 固定 Argo 域名,即是 Json 或者 Token 隧道的域名 |
|
||||
| --ARGO_AUTH | Json 或者 Token 隧道的内容 |
|
||||
| --NODE_NAME_CONFIRM | 节点名 |
|
||||
|
||||
|
||||
@@ -172,8 +324,9 @@ bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-b
|
||||
* 支持三种 Argo 类型隧道: 临时 (不需要域名) / Json / Token
|
||||
* 需要20个连续可用的端口,以 `START_PORT` 开始第一个
|
||||
|
||||
|
||||
### Docker 部署
|
||||
<details>
|
||||
<summary> Docker 部署 </summary>
|
||||
<br>
|
||||
|
||||
```
|
||||
docker run -dit \
|
||||
@@ -193,16 +346,19 @@ docker run -dit \
|
||||
-e VLESS_WS=true \
|
||||
-e H2_REALITY=true \
|
||||
-e GRPC_REALITY=true \
|
||||
-e UUID=68fe8d27-cbc8-4e72-90b7-70d3bb69dfd3 \
|
||||
-e UUID=20f7fca4-86e5-4ddf-9eed-24142073d197 \
|
||||
-e CDN=www.csgo.com \
|
||||
-e NODE_NAME=sing-box \
|
||||
-e ARGO_DOMAIN=sb.argo.com \
|
||||
-e ARGO_AUTH='{"AccountTag":"9cc9e3e4d8f29d2a02e297f14f20513a","TunnelSecret":"6AYfKBOoNlPiTAuWg64ZwujsNuERpWLm6pPJ2qpN8PM=","TunnelID":"1ac55430-f4dc-47d5-a850-bdce824c4101"}' \
|
||||
fscarmen/sb
|
||||
```
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary> Docker Compose 部署 </summary>
|
||||
<br>
|
||||
|
||||
### Docker Compose 部署
|
||||
```
|
||||
version: '3.8'
|
||||
networks:
|
||||
@@ -232,12 +388,13 @@ services:
|
||||
- VLESS_WS=true
|
||||
- H2_REALITY=true
|
||||
- GRPC_REALITY=true
|
||||
- UUID=68fe8d27-cbc8-4e72-90b7-70d3bb69dfd3
|
||||
- UUID=20f7fca4-86e5-4ddf-9eed-24142073d197
|
||||
- CDN=www.csgo.com
|
||||
- NODE_NAME=sing-box
|
||||
- ARGO_DOMAIN=sb.argo.com
|
||||
- ARGO_AUTH=eyJhIjoiOWNjOWUzZTRkOGYyOWQyYTAyZTI5N2YxNGYyMDUxM2EiLCJ0IjoiOGNiZDA4ZjItNGM0MC00OGY1LTlmZDYtZjlmMWQ0YTcxMjUyIiwicyI6IllXWTFORGN4TW1ZdE5HTXdZUzAwT0RaakxUbGxNMkl0Wm1VMk5URTFOR0l4TkdKayJ9
|
||||
```
|
||||
</details>
|
||||
|
||||
|
||||
### 常用指令
|
||||
|
||||
@@ -8,4 +8,7 @@ CDN=
|
||||
VMESS_HOST_DOMAIN=
|
||||
VLESS_HOST_DOMAIN=
|
||||
UUID_CONFIRM=
|
||||
ARGO=
|
||||
ARGO_DOMAIN=
|
||||
ARGO_AUTH=
|
||||
NODE_NAME_CONFIRM=
|
||||
+70
-38
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# 当前脚本版本号
|
||||
VERSION='v1.2.1 (2024.04.16)'
|
||||
VERSION='v1.2.2 (2024.05.03)'
|
||||
|
||||
# 各变量默认值
|
||||
GH_PROXY=''
|
||||
@@ -14,7 +14,7 @@ TLS_SERVER_DEFAULT=addons.mozilla.org
|
||||
PROTOCOL_LIST=("XTLS + reality" "hysteria2" "tuic" "ShadowTLS" "shadowsocks" "trojan" "vmess + ws" "vless + ws + tls" "H2 + reality" "gRPC + reality")
|
||||
NODE_TAG=("xtls-reality" "hysteria2" "tuic" "ShadowTLS" "shadowsocks" "trojan" "vmess-ws" "vless-ws-tls" "h2-reality" "grpc-reality")
|
||||
CONSECUTIVE_PORTS=${#PROTOCOL_LIST[@]}
|
||||
CDN_DOMAIN=("cn.azhz.eu.org" "visa.com" "skk.moe" "time.cloudflare.com" "csgo.com")
|
||||
CDN_DOMAIN=("cn.azhz.eu.org" "visa.com" "skk.moe" "dashboard.cloudflare.com" "csgo.com")
|
||||
SUBSCRIBE_TEMPLATE="https://raw.githubusercontent.com/fscarmen/client_template/main"
|
||||
|
||||
trap "rm -rf $TEMP_DIR >/dev/null 2>&1 ; echo -e '\n' ;exit 1" INT QUIT TERM EXIT
|
||||
@@ -23,8 +23,8 @@ mkdir -p $TEMP_DIR
|
||||
|
||||
E[0]="Language:\n 1. English (default) \n 2. 简体中文"
|
||||
C[0]="${E[0]}"
|
||||
E[1]="1. Fix the bug of dynamically adding and removing protocols; 2. CentOS 7 add EPEL to install nginx"
|
||||
C[1]="1. 修复动态增加和删除协议的 bug; 2. CentOS 7 增加 EPEL 软件仓库,以便安装 Nginx"
|
||||
E[1]="Complete 8 non-interactive installation modes, direct output results. Suitable for mass installation scenarios. You can put the commands in the favorites of the ssh software. Please refer to the README.md description for details."
|
||||
C[1]="完善8种无交互安装模式,直接输出结果,适合大量装机的情景,可以把命令放在 ssh 软件的收藏夹,详细请参考README.md 说明"
|
||||
E[2]="Downloading Sing-box. Please wait a seconds ..."
|
||||
C[2]="下载 Sing-box 中,请稍等 ..."
|
||||
E[3]="Input errors up to 5 times.The script is aborted."
|
||||
@@ -312,7 +312,7 @@ input_nginx_port() {
|
||||
input_argo_auth() {
|
||||
local IS_CHANGE_ARGO=$1
|
||||
[ -n "$IS_CHANGE_ARGO" ] && local EMPTY_ERROR_TIME=5
|
||||
local DOMAIN_ERROR_TIME=5
|
||||
local DOMAIN_ERROR_TIME=6
|
||||
|
||||
# 处理可能输入的错误,去掉开头和结尾的空格,去掉最后的 :
|
||||
if [ "$IS_CHANGE_ARGO" = 'is_change_argo' ]; then
|
||||
@@ -322,31 +322,37 @@ input_argo_auth() {
|
||||
reading "\n $(text 88) " ARGO_DOMAIN
|
||||
[ -n "$IS_CHANGE_ARGO" ] && ARGO_DOMAIN=$(sed 's/[ ]*//g; s/:[ ]*//' <<< "$ARGO_DOMAIN")
|
||||
done
|
||||
else
|
||||
elif [ "$NONINTERACTIVE_INSTALL" != 'noninteractive_install' ]; then
|
||||
[ -z "$ARGO_DOMAIN" ] && reading "\n $(text 87) " ARGO_DOMAIN
|
||||
ARGO_DOMAIN=$(sed 's/[ ]*//g; s/:[ ]*//' <<< "$ARGO_DOMAIN")
|
||||
fi
|
||||
|
||||
if [[ -z "$ARGO_DOMAIN" && ( "$ARGO_DOMAIN" =~ trycloudflare\.com$ || "$IS_CHANGE_ARGO" = 'is_add_protocols' || "$IS_CHANGE_ARGO" = 'is_install' ) ]]; then
|
||||
if [[ -z "$ARGO_DOMAIN" && ( "$ARGO_DOMAIN" =~ trycloudflare\.com$ || "$IS_CHANGE_ARGO" = 'is_add_protocols' || "$IS_CHANGE_ARGO" = 'is_install' || "$NONINTERACTIVE_INSTALL" = 'noninteractive_install' ) ]]; then
|
||||
ARGO_RUNS="$WORK_DIR/cloudflared tunnel --edge-ip-version auto --no-autoupdate --url http://localhost:$PORT_NGINX"
|
||||
elif [[ -n "${ARGO_DOMAIN}" && -z "${ARGO_AUTH}" ]]; then
|
||||
elif [ -n "${ARGO_DOMAIN}" ]; then
|
||||
if [ -z "${ARGO_AUTH}" ]; then
|
||||
until [[ "$ARGO_AUTH" =~ TunnelSecret || "$ARGO_AUTH" =~ ^[A-Z0-9a-z=]{120,250}$ || "$ARGO_AUTH" =~ .*cloudflared.*service[[:space:]]+install[[:space:]]+[A-Z0-9a-z=]{1,100} ]]; do
|
||||
[ "$DOMAIN_ERROR_TIME" != 6 ] && warning "\n $(text 86) \n"
|
||||
(( DOMAIN_ERROR_TIME-- )) || true
|
||||
[ "$DOMAIN_ERROR_TIME" != 0 ] && reading "\n $(text 85) " ARGO_AUTH || error "\n $(text 3) \n"
|
||||
done
|
||||
fi
|
||||
|
||||
# 根据 ARGO_AUTH 的内容,自行判断是 Json 还是 Token
|
||||
if [[ "$ARGO_AUTH" =~ TunnelSecret ]]; then
|
||||
ARGO_TYPE=is_json_argo
|
||||
ARGO_JSON=${ARGO_AUTH//[ ]/}
|
||||
[ "$IS_CHANGE_ARGO" = 'is_install' ] && export_argo_json_file $TEMP_DIR || export_argo_json_file $WORK_DIR
|
||||
ARGO_RUNS="$WORK_DIR/cloudflared tunnel --edge-ip-version auto --config $WORK_DIR/tunnel.yml run"
|
||||
elif [[ "$ARGO_AUTH" =~ ^[A-Z0-9a-z=]{120,250}$ ]]; then
|
||||
ARGO_TYPE=is_token_argo
|
||||
ARGO_TOKEN=$ARGO_AUTH
|
||||
ARGO_RUNS="$WORK_DIR/cloudflared tunnel --edge-ip-version auto run --token ${ARGO_TOKEN}"
|
||||
elif [[ "$ARGO_AUTH" =~ .*cloudflared.*service[[:space:]]+install[[:space:]]+[A-Z0-9a-z=]{1,100} ]]; then
|
||||
ARGO_TYPE=is_token_argo
|
||||
ARGO_TOKEN=$(awk -F ' ' '{print $NF}' <<< "$ARGO_AUTH")
|
||||
ARGO_RUNS="$WORK_DIR/cloudflared tunnel --edge-ip-version auto run --token ${ARGO_TOKEN}"
|
||||
else
|
||||
warning "\n $(text 86) \n"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -432,7 +438,7 @@ check_install() {
|
||||
{
|
||||
local VERSION_LATEST=$(wget --no-check-certificate -qO- "https://api.github.com/repos/SagerNet/sing-box/releases" | awk -F '["v-]' '/tag_name/{print $5}' | sort -r | sed -n '1p')
|
||||
local ONLINE=$(wget --no-check-certificate -qO- "https://api.github.com/repos/SagerNet/sing-box/releases" | awk -F '["v]' -v var="tag_name.*$VERSION_LATEST" '$0 ~ var {print $5; exit}')
|
||||
ONLINE=${ONLINE:-'1.9.0-rc.2'}
|
||||
ONLINE=${ONLINE:-'1.9.0-rc.14'}
|
||||
wget --no-check-certificate --continue ${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 >/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
|
||||
wget --no-check-certificate --continue -qO $TEMP_DIR/jq ${GH_PROXY}https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-$JQ_ARCH >/dev/null 2>&1 && chmod +x $TEMP_DIR/jq >/dev/null 2>&1
|
||||
@@ -440,7 +446,9 @@ check_install() {
|
||||
}&
|
||||
fi
|
||||
|
||||
if [ "$NONINTERACTIVE_INSTALL" != 'noninteractive_install' ]; then
|
||||
STATUS[1]=$(text 26) && IS_ARGO=no_argo && [ -s /etc/systemd/system/argo.service ] && IS_ARGO=is_argo && STATUS[1]=$(text 27) && [ "$(systemctl is-active argo)" = 'active' ] && STATUS[1]=$(text 28)
|
||||
fi
|
||||
if [ -s /etc/systemd/system/argo.service ]; then
|
||||
local ARGO_CONTENT=$(cat /etc/systemd/system/argo.service)
|
||||
if grep -q '\--token' <<< "$ARGO_CONTENT"; then
|
||||
@@ -451,7 +459,7 @@ check_install() {
|
||||
ARGO_TYPE=is_quicktunnel_argo
|
||||
fi
|
||||
fi
|
||||
[[ "${STATUS[1]}" = "$(text 26)" ]] && [ ! -s $WORK_DIR/cloudflared ] && { wget --no-check-certificate -qO $TEMP_DIR/cloudflared https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-$ARGO_ARCH >/dev/null 2>&1 && chmod +x $TEMP_DIR/cloudflared >/dev/null 2>&1; }&
|
||||
[[ "${STATUS[1]}" = "$(text 26)" || "$NONINTERACTIVE_INSTALL" = 'noninteractive_install' ]] && [ ! -s $WORK_DIR/cloudflared ] && { wget --no-check-certificate -qO $TEMP_DIR/cloudflared https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-$ARGO_ARCH >/dev/null 2>&1 && chmod +x $TEMP_DIR/cloudflared >/dev/null 2>&1; }&
|
||||
}
|
||||
|
||||
# 检测 sing-box 的状态
|
||||
@@ -599,27 +607,22 @@ input_start_port() {
|
||||
# 定义 Sing-box 变量
|
||||
sing-box_variables() {
|
||||
if grep -qi 'cloudflare' <<< "$ASNORG4$ASNORG6"; then
|
||||
if grep -qi 'cloudflare' <<< "$ASNORG6" && [ -n "$WAN4" ] && ! grep -qi 'cloudflare' <<< "$ASNORG4"; then
|
||||
SERVER_IP_DEFAULT=$WAN4
|
||||
elif grep -qi 'cloudflare' <<< "$ASNORG4" && [ -n "$WAN6" ] && ! grep -qi 'cloudflare' <<< "$ASNORG6"; then
|
||||
SERVER_IP_DEFAULT=$WAN6
|
||||
else
|
||||
local a=6
|
||||
until [ -n "$SERVER_IP" ]; do
|
||||
((a--)) || true
|
||||
[ "$a" = 0 ] && error "\n $(text 3) \n"
|
||||
reading "\n $(text 46) " SERVER_IP
|
||||
done
|
||||
if [[ "$SERVER_IP" =~ : ]]; then
|
||||
WARP_ENDPOINT=2606:4700:d0::a29f:c101
|
||||
DOMAIN_STRATEG=prefer_ipv6
|
||||
else
|
||||
WARP_ENDPOINT=162.159.193.10
|
||||
DOMAIN_STRATEG=prefer_ipv4
|
||||
fi
|
||||
elif [ -n "$WAN4" ]; then
|
||||
SERVER_IP_DEFAULT=$WAN4
|
||||
WARP_ENDPOINT=162.159.193.10
|
||||
DOMAIN_STRATEG=prefer_ipv4
|
||||
elif [ -n "$WAN6" ]; then
|
||||
SERVER_IP_DEFAULT=$WAN6
|
||||
WARP_ENDPOINT=2606:4700:d0::a29f:c101
|
||||
DOMAIN_STRATEG=prefer_ipv6
|
||||
fi
|
||||
|
||||
# 检测是否解锁 chatGPT
|
||||
@@ -656,6 +659,15 @@ sing-box_variables() {
|
||||
SERVER_IP=${SERVER_IP:-"$SERVER_IP_DEFAULT"} && WS_SERVER_IP_SHOW=$SERVER_IP
|
||||
[ -z "$SERVER_IP" ] && error " $(text 47) "
|
||||
|
||||
# 根据服务 IP,使用不同的 warp 配置
|
||||
if [[ "$SERVER_IP" =~ : ]]; then
|
||||
WARP_ENDPOINT=2606:4700:d0::a29f:c101
|
||||
DOMAIN_STRATEG=prefer_ipv6
|
||||
else
|
||||
WARP_ENDPOINT=162.159.193.10
|
||||
DOMAIN_STRATEG=prefer_ipv4
|
||||
fi
|
||||
|
||||
# 如选择有 h. vmess + ws 或 i. vless + ws 时,先检测是否有支持的 http 端口可用,如有则要求输入域名和 cdn
|
||||
if [[ "${INSTALL_PROTOCOLS[@]}" =~ 'h' ]]; then
|
||||
if [ "$IS_ARGO" = 'is_argo' ]; then
|
||||
@@ -1623,7 +1635,7 @@ fetch_quicktunnel_domain() {
|
||||
fi
|
||||
[[ -z "$METRICS_ADDRESS" && "$CLOUDFLARED_PID" =~ ^[0-9]+$ ]] && METRICS_ADDRESS=$(ss -nltp | grep "pid=$CLOUDFLARED_PID" | awk '{print $4}')
|
||||
ARGO_DOMAIN=$(wget -qO- http://$METRICS_ADDRESS/quicktunnel | awk -F '"' '{print $4}')
|
||||
[[ ! "$ARGO_DOMAIN" =~ trycloudflare\.com$ ]] && (( QUICKTUNNEL_ERROR_TIME-- )) && sleep 1 || break
|
||||
[[ ! "$ARGO_DOMAIN" =~ trycloudflare\.com$ ]] && (( QUICKTUNNEL_ERROR_TIME-- )) && sleep 2 || break
|
||||
[ "$QUICKTUNNEL_ERROR_TIME" = '0' ] && error " $(text 93) "
|
||||
done
|
||||
|
||||
@@ -1674,7 +1686,9 @@ EOF
|
||||
check_install
|
||||
sleep 1
|
||||
check_sing-box_status
|
||||
[ "$IS_ARGO" = 'is_argo' ] && check_argo_status
|
||||
if [ "$IS_ARGO" = 'is_argo' ]; then
|
||||
[ "$NONINTERACTIVE_INSTALL" = 'noninteractive_install' ] && cmd_systemctl enable argo || check_argo_status
|
||||
fi
|
||||
}
|
||||
|
||||
export_list() {
|
||||
@@ -1703,7 +1717,7 @@ export_list() {
|
||||
fi
|
||||
|
||||
# 使用 Argo 时,获取临时隧道域名
|
||||
ls /etc/sing-box/conf/*-ws*inbounds.json >/dev/null 2>&1 && [ -z "$ARGO_DOMAIN" ] && [ "${STATUS[1]}" = "$(text 28)" ] && fetch_quicktunnel_domain
|
||||
ls $WORK_DIR/conf/*-ws*inbounds.json >/dev/null 2>&1 && [ "$IS_ARGO" = 'is_argo' ] && [ -z "$ARGO_DOMAIN" ] && [[ "${STATUS[1]}" = "$(text 28)" || "$NONINTERACTIVE_INSTALL" = 'noninteractive_install' ]] && fetch_quicktunnel_domain
|
||||
|
||||
# 如果使用 Json 或者 Token Argo,则使用加密的而且是固定的 Argo 隧道域名,否则使用 IP:PORT 的 http 服务
|
||||
[[ "$ARGO_TYPE" = 'is_token_argo' || "$ARGO_TYPE" = 'is_json_argo' ]] && SUBSCRIBE_ADDRESS="https://$ARGO_DOMAIN" || SUBSCRIBE_ADDRESS="http://${SERVER_IP_1}:${PORT_NGINX}"
|
||||
@@ -1738,7 +1752,7 @@ export_list() {
|
||||
$CLASH_TROJAN
|
||||
"
|
||||
if [ -n "$PORT_VMESS_WS" ]; then
|
||||
if [[ "${STATUS[1]}" =~ $(text 27)|$(text 28) ]]; then
|
||||
if [[ "${STATUS[1]}" =~ $(text 27)|$(text 28) ]] || [[ "$IS_ARGO" = 'is_argo' && "$NONINTERACTIVE_INSTALL" = 'noninteractive_install' ]]; then
|
||||
local CLASH_VMESS_WS="- {name: \"${NODE_NAME[17]} ${NODE_TAG[6]}\", type: vmess, server: ${CDN[17]}, port: 80, uuid: ${UUID[17]}, udp: true, tls: false, alterId: 0, cipher: none, skip-cert-verify: true, network: ws, ws-opts: { path: \"/$VMESS_WS_PATH\", headers: {Host: $ARGO_DOMAIN} }, smux: { enabled: true, protocol: 'h2mux', padding: true, max-connections: '8', min-streams: '16', statistic: true, only-tcp: false } }" &&
|
||||
local CLASH_SUBSCRIBE+="
|
||||
$CLASH_VMESS_WS
|
||||
@@ -1758,7 +1772,7 @@ export_list() {
|
||||
fi
|
||||
|
||||
if [ -n "$PORT_VLESS_WS" ]; then
|
||||
if [[ "${STATUS[1]}" =~ $(text 27)|$(text 28) ]]; then
|
||||
if [[ "${STATUS[1]}" =~ $(text 27)|$(text 28) ]] || [[ "$IS_ARGO" = 'is_argo' && "$NONINTERACTIVE_INSTALL" = 'noninteractive_install' ]]; then
|
||||
local CLASH_VLESS_WS="- {name: \"${NODE_NAME[18]} ${NODE_TAG[7]}\", type: vless, server: ${CDN[18]}, port: 443, uuid: ${UUID[18]}, udp: true, tls: true, servername: $ARGO_DOMAIN, network: ws, skip-cert-verify: true, ws-opts: { path: \"/$VLESS_WS_PATH\", headers: {Host: $ARGO_DOMAIN}, max-early-data: 2048, early-data-header-name: Sec-WebSocket-Protocol }, smux: { enabled: true, protocol: 'h2mux', padding: true, max-connections: '8', min-streams: '16', statistic: true, only-tcp: false } }" &&
|
||||
local CLASH_SUBSCRIBE+="
|
||||
$CLASH_VLESS_WS
|
||||
@@ -1822,7 +1836,7 @@ ss://$(echo -n "${SHADOWSOCKS_METHOD}:${UUID[15]}@${SERVER_IP_2}:$PORT_SHADOWSOC
|
||||
trojan://$TROJAN_PASSWORD@${SERVER_IP_1}:$PORT_TROJAN?allowInsecure=1#${NODE_NAME[16]}%20${NODE_TAG[5]}
|
||||
"
|
||||
if [ -n "$PORT_VMESS_WS" ]; then
|
||||
if [[ "${STATUS[1]}" =~ $(text 27)|$(text 28) ]]; then
|
||||
if [[ "${STATUS[1]}" =~ $(text 27)|$(text 28) ]] || [[ "$IS_ARGO" = 'is_argo' && "$NONINTERACTIVE_INSTALL" = 'noninteractive_install' ]]; then
|
||||
local SHADOWROCKET_SUBSCRIBE+="
|
||||
----------------------------
|
||||
vmess://$(echo -n "none:${UUID[17]}@${CDN[17]}:80" | base64 -w0)?remarks=${NODE_NAME[17]}%20${NODE_TAG[6]}&obfsParam=$ARGO_DOMAIN&path=/$VMESS_WS_PATH&obfs=websocket&alterId=0
|
||||
@@ -1841,7 +1855,7 @@ vmess://$(echo -n "none:${UUID[17]}@${CDN[17]}:80" | base64 -w0)?remarks=${NODE_
|
||||
fi
|
||||
|
||||
if [ -n "$PORT_VLESS_WS" ]; then
|
||||
if [[ "${STATUS[1]}" =~ $(text 27)|$(text 28) ]]; then
|
||||
if [[ "${STATUS[1]}" =~ $(text 27)|$(text 28) ]] || [[ "$IS_ARGO" = 'is_argo' && "$NONINTERACTIVE_INSTALL" = 'noninteractive_install' ]]; then
|
||||
local SHADOWROCKET_SUBSCRIBE+="
|
||||
----------------------------
|
||||
vless://$(echo -n "auto:${UUID[18]}@${CDN[18]}:443" | base64 -w0)?remarks=${NODE_NAME[18]}%20${NODE_TAG[7]}&obfsParam=$ARGO_DOMAIN&path=/$VLESS_WS_PATH?ed=2048&obfs=websocket&tls=1&peer=$ARGO_DOMAIN&allowInsecure=1
|
||||
@@ -1948,7 +1962,7 @@ trojan://$TROJAN_PASSWORD@${SERVER_IP_1}:$PORT_TROJAN?security=tls&type=tcp&head
|
||||
# $(text 70)"
|
||||
|
||||
if [ -n "$PORT_VMESS_WS" ]; then
|
||||
if [[ "${STATUS[1]}" =~ $(text 27)|$(text 28) ]]; then
|
||||
if [[ "${STATUS[1]}" =~ $(text 27)|$(text 28) ]] || [[ "$IS_ARGO" = 'is_argo' && "$NONINTERACTIVE_INSTALL" = 'noninteractive_install' ]]; then
|
||||
local V2RAYN_SUBSCRIBE+="
|
||||
----------------------------
|
||||
vmess://$(echo -n "{ \"v\": \"2\", \"ps\": \"${NODE_NAME[17]} ${NODE_TAG[6]}\", \"add\": \"${CDN[18]}\", \"port\": \"80\", \"id\": \"${UUID[18]}\", \"aid\": \"0\", \"scy\": \"none\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"$ARGO_DOMAIN\", \"path\": \"/$VMESS_WS_PATH\", \"tls\": \"\", \"sni\": \"\", \"alpn\": \"\" }" | base64 -w0)"
|
||||
@@ -1966,7 +1980,7 @@ vmess://$(echo -n "{ \"v\": \"2\", \"ps\": \"${NODE_NAME[17]} ${NODE_TAG[6]}\",
|
||||
fi
|
||||
|
||||
if [ -n "$PORT_VLESS_WS" ]; then
|
||||
if [[ "${STATUS[1]}" =~ $(text 27)|$(text 28) ]]; then
|
||||
if [[ "${STATUS[1]}" =~ $(text 27)|$(text 28) ]] || [[ "$IS_ARGO" = 'is_argo' && "$NONINTERACTIVE_INSTALL" = 'noninteractive_install' ]]; then
|
||||
local V2RAYN_SUBSCRIBE+="
|
||||
----------------------------
|
||||
vless://${UUID[18]}@${CDN[18]}:443?encryption=none&security=tls&sni=$ARGO_DOMAIN&type=ws&host=$ARGO_DOMAIN&path=%2F$VLESS_WS_PATH%3Fed%3D2048#${NODE_NAME[18]// /%20}%20${NODE_TAG[7]}"
|
||||
@@ -2021,7 +2035,7 @@ ss://$(echo -n "${SHADOWSOCKS_METHOD}:${UUID[15]}" | base64 -w0)@${SERVER_IP_1}:
|
||||
trojan://$TROJAN_PASSWORD@${SERVER_IP_1}:$PORT_TROJAN?security=tls&allowInsecure=1&fp=random&type=tcp#${NODE_NAME[16]} ${NODE_TAG[5]}"
|
||||
|
||||
if [ -n "$PORT_VMESS_WS" ]; then
|
||||
if [[ "${STATUS[1]}" =~ $(text 27)|$(text 28) ]]; then
|
||||
if [[ "${STATUS[1]}" =~ $(text 27)|$(text 28) ]] || [[ "$IS_ARGO" = 'is_argo' && "$NONINTERACTIVE_INSTALL" = 'noninteractive_install' ]]; then
|
||||
NEKOBOX_SUBSCRIBE+="
|
||||
----------------------------
|
||||
vmess://$(echo -n "{\"add\":\"${CDN[17]}\",\"aid\":\"0\",\"host\":\"$ARGO_DOMAIN\",\"id\":\"${UUID[17]}\",\"net\":\"ws\",\"path\":\"/$VMESS_WS_PATH\",\"port\":\"80\",\"ps\":\"${NODE_NAME[17]} ${NODE_TAG[6]}\",\"scy\":\"none\",\"sni\":\"\",\"tls\":\"\",\"type\":\"\",\"v\":\"2\"}" | base64 -w0)"
|
||||
@@ -2039,7 +2053,7 @@ vmess://$(echo -n "{\"add\":\"${CDN[17]}\",\"aid\":\"0\",\"host\":\"$VMESS_HOST_
|
||||
fi
|
||||
|
||||
if [ -n "$PORT_VLESS_WS" ]; then
|
||||
if [[ "${STATUS[1]}" =~ $(text 27)|$(text 28) ]]; then
|
||||
if [[ "${STATUS[1]}" =~ $(text 27)|$(text 28) ]] || [[ "$IS_ARGO" = 'is_argo' && "$NONINTERACTIVE_INSTALL" = 'noninteractive_install' ]]; then
|
||||
local NEKOBOX_SUBSCRIBE+="
|
||||
----------------------------
|
||||
vless://${UUID[18]}@${CDN[18]}:443?security=tls&sni=$ARGO_DOMAIN&type=ws&path=/$VLESS_WS_PATH?ed%3D2048&host=$ARGO_DOMAIN&encryption=none#${NODE_NAME[18]}%20${NODE_TAG[7]}"
|
||||
@@ -2094,7 +2108,7 @@ vless://${UUID[20]}@${SERVER_IP_1}:${PORT_GRPC_REALITY}?security=reality&sni=${T
|
||||
local NODE_REPLACE+="\"${NODE_NAME[16]} ${NODE_TAG[5]}\","
|
||||
|
||||
if [ -n "$PORT_VMESS_WS" ]; then
|
||||
if [[ "${STATUS[1]}" =~ $(text 27)|$(text 28) ]]; then
|
||||
if [[ "${STATUS[1]}" =~ $(text 27)|$(text 28) ]] || [[ "$IS_ARGO" = 'is_argo' && "$NONINTERACTIVE_INSTALL" = 'noninteractive_install' ]]; then
|
||||
local INBOUND_REPLACE+=" { \"type\": \"vmess\", \"tag\": \"${NODE_NAME[17]} ${NODE_TAG[6]}\", \"server\":\"${CDN[17]}\", \"server_port\":80, \"uuid\":\"${UUID[17]}\", \"transport\": { \"type\":\"ws\", \"path\":\"/$VMESS_WS_PATH\", \"headers\": { \"Host\": \"$ARGO_DOMAIN\" } }, \"multiplex\": { \"enabled\":true, \"protocol\":\"h2mux\", \"max_streams\":16, \"padding\": true, \"brutal\":{ \"enabled\":true, \"up_mbps\":1000, \"down_mbps\":1000 } } }," && local NODE_REPLACE+="\"${NODE_NAME[17]} ${NODE_TAG[6]}\","
|
||||
[ "$ARGO_TYPE" = 'is_token_argo' ] && [ -z "$PROMPT" ] && local PROMPT="
|
||||
# $(text 94)"
|
||||
@@ -2110,7 +2124,7 @@ vless://${UUID[20]}@${SERVER_IP_1}:${PORT_GRPC_REALITY}?security=reality&sni=${T
|
||||
fi
|
||||
|
||||
if [ -n "$PORT_VLESS_WS" ]; then
|
||||
if [[ "${STATUS[1]}" =~ $(text 27)|$(text 28) ]]; then
|
||||
if [[ "${STATUS[1]}" =~ $(text 27)|$(text 28) ]] || [[ "$IS_ARGO" = 'is_argo' && "$NONINTERACTIVE_INSTALL" = 'noninteractive_install' ]]; then
|
||||
local INBOUND_REPLACE+=" { \"type\": \"vless\", \"tag\": \"${NODE_NAME[18]} ${NODE_TAG[7]}\", \"server\":\"${CDN[18]}\", \"server_port\":443, \"uuid\":\"${UUID[18]}\", \"tls\": { \"enabled\":true, \"server_name\":\"$ARGO_DOMAIN\", \"utls\": { \"enabled\":true, \"fingerprint\":\"chrome\" } }, \"transport\": { \"type\":\"ws\", \"path\":\"/$VLESS_WS_PATH\", \"headers\": { \"Host\": \"$ARGO_DOMAIN\" }, \"max_early_data\":2048, \"early_data_header_name\":\"Sec-WebSocket-Protocol\" }, \"multiplex\": { \"enabled\":true, \"protocol\":\"h2mux\", \"max_streams\":16, \"padding\": true, \"brutal\":{ \"enabled\":true, \"up_mbps\":1000, \"down_mbps\":1000 } } },"
|
||||
[ "$ARGO_TYPE" = 'is_token_argo' ] && [ -z "$PROMPT" ] && local PROMPT="
|
||||
# $(text 94)"
|
||||
@@ -2737,11 +2751,16 @@ statistics_of_run-times
|
||||
select_language
|
||||
check_system_info
|
||||
|
||||
# 可以是 Key Value 或者 Key=Value 的形式
|
||||
ALL_PARAMETER=($(sed -E 's/(-c|-e|-C|-E) //; ; s/=/ /g' <<< $*))
|
||||
# 可以是 Key Value 或者 Key=Value 的形式。传参时,
|
||||
# 传参处理1: 把所有的 = 变为空格,但保留 =" ,因为 Json TunnelSecret 是 =" 结尾的,如 {"AccountTag":"9cc9e3e4d8f29d2a02e297f14f20513a","TunnelSecret":"6AYfKBOoNlPiTAuWg64ZwujsNuERpWLm6pPJ2qpN8PM=","TunnelID":"1ac55430-f4dc-47d5-a850-bdce824c4101"}
|
||||
# 传参处理2: 去掉 sudo cloudflared service install ,以方便用户输入 Token 并能正确读取真正的以 ey 开头的 Value
|
||||
ALL_PARAMETER=($(sed -E 's/(-c|-e|-C|-E) //; s/=([^"])/ \1/g; s/sudo cloudflared service install //' <<< $*))
|
||||
[[ "${#ALL_PARAMETER[@]}" > 13 && "${ALL_PARAMETER[@]^^}" == *"--LANGUAGE"* && "${ALL_PARAMETER[@]^^}" == *"--CHOOSE_PROTOCOLS"* && "${ALL_PARAMETER[@]^^}" == *"--START_PORT"* && "${ALL_PARAMETER[@]^^}" == *"--PORT_NGINX"* && "${ALL_PARAMETER[@]^^}" == *"--SERVER_IP"* && "${ALL_PARAMETER[@]^^}" == *"--UUID"* && "${ALL_PARAMETER[@]^^}" == *"--NODE_NAME"* ]] && NONINTERACTIVE_INSTALL=noninteractive_install
|
||||
|
||||
# 传参处理,无交互快速安装参数
|
||||
# 预设默认值
|
||||
IS_SUB=no_sub
|
||||
IS_ARGO=no_argo
|
||||
for z in ${!ALL_PARAMETER[@]}; do
|
||||
case "${ALL_PARAMETER[z]^^}" in
|
||||
-P )
|
||||
@@ -2808,6 +2827,18 @@ for z in ${!ALL_PARAMETER[@]}; do
|
||||
done
|
||||
NODE_NAME_CONFIRM=${NODE_NAME_ARRAY[@]}
|
||||
;;
|
||||
--SUBSCRIBE )
|
||||
((z++)); [ "${ALL_PARAMETER[z]}" = 'true' ] && IS_SUB=is_sub
|
||||
;;
|
||||
--ARGO )
|
||||
((z++)); [ "${ALL_PARAMETER[z]}" = 'true' ] && IS_ARGO=is_argo
|
||||
;;
|
||||
--ARGO_DOMAIN )
|
||||
((z++)); ARGO_DOMAIN=${ALL_PARAMETER[z]}
|
||||
;;
|
||||
--ARGO_AUTH )
|
||||
((z++)); ARGO_AUTH=${ALL_PARAMETER[z]}
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
@@ -2820,6 +2851,7 @@ check_install
|
||||
if [ "$NONINTERACTIVE_INSTALL" = 'noninteractive_install' ]; then
|
||||
install_sing-box
|
||||
export_list install
|
||||
create_shortcut
|
||||
else
|
||||
menu_setting
|
||||
menu
|
||||
|
||||
Reference in New Issue
Block a user