mirror of
https://github.com/TheyCallMeSecond/sing-box-manager.git
synced 2024-11-16 19:56:10 +08:00
Update 0.sh
This commit is contained in:
parent
64ee24ed29
commit
5ae0f61b71
467
0.sh
467
0.sh
|
@ -1,5 +1,5 @@
|
||||||
# 函数:根据系统版本自动安装依赖
|
# 根据系统版本自动安装依赖
|
||||||
install_dependencies() {
|
function install_dependencies() {
|
||||||
local os_version
|
local os_version
|
||||||
os_version=$(lsb_release -si 2>/dev/null)
|
os_version=$(lsb_release -si 2>/dev/null)
|
||||||
|
|
||||||
|
@ -505,10 +505,10 @@ function set_listen_port() {
|
||||||
listen_port=${listen_port:-443}
|
listen_port=${listen_port:-443}
|
||||||
|
|
||||||
if [[ $listen_port =~ ^[1-9][0-9]{0,4}$ && $listen_port -le 65535 ]]; then
|
if [[ $listen_port =~ ^[1-9][0-9]{0,4}$ && $listen_port -le 65535 ]]; then
|
||||||
echo "监听端口设置成功:$listen_port"
|
echo "监听端口设置成功:$listen_port"
|
||||||
break
|
break
|
||||||
else
|
else
|
||||||
echo "错误:监听端口范围必须在1-65535之间,请重新输入。"
|
echo "错误:监听端口范围必须在1-65535之间,请重新输入。"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
@ -1440,6 +1440,394 @@ done
|
||||||
echo "================================================================"
|
echo "================================================================"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 生成随机 UUID
|
||||||
|
function reality_generate_uuid() {
|
||||||
|
local uuid=$(uuidgen)
|
||||||
|
echo "$uuid"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 生成随机 ShortId
|
||||||
|
function generate_short_id() {
|
||||||
|
local length=$1
|
||||||
|
local short_id=$(openssl rand -hex "$length")
|
||||||
|
echo "$short_id"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 选择流控类型
|
||||||
|
function select_flow_type() {
|
||||||
|
local flow_type="xtls-rprx-vision"
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
read -p "请选择流控类型:
|
||||||
|
[1]. xtls-rprx-vision(vless+vision+reality)
|
||||||
|
[2]. 留空(vless+h2/grpc+reality)
|
||||||
|
请输入选项 (默认为 xtls-rprx-vision): " flow_option
|
||||||
|
|
||||||
|
case $flow_option in
|
||||||
|
"" | 1)
|
||||||
|
flow_type="xtls-rprx-vision"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
flow_type=""
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -e "${RED}错误的选项,请重新输入!${NC}" >&2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "$flow_type"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 监听端口配置
|
||||||
|
function generate_listen_port() {
|
||||||
|
local listen_port
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
read -p "请输入监听端口 (默认为 443): " listen_port
|
||||||
|
listen_port=${listen_port:-443}
|
||||||
|
|
||||||
|
if ! [[ "$listen_port" =~ ^[1-9][0-9]{0,4}$ || "$listen_port" == "443" ]]; then
|
||||||
|
echo -e "${RED}错误:端口范围1-65535,请重新输入!${NC}" >&2
|
||||||
|
else
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "$listen_port"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 验证服务器是否支持TLS 1.3
|
||||||
|
function validate_tls13_support() {
|
||||||
|
local server="$1"
|
||||||
|
local tls13_supported="false"
|
||||||
|
|
||||||
|
if command -v openssl >/dev/null 2>&1; then
|
||||||
|
local openssl_output=$(timeout 90s openssl s_client -connect "$server:443" -tls1_3 2>&1)
|
||||||
|
if [[ $openssl_output == *"Protocol : TLSv1.3"* ]]; then
|
||||||
|
tls13_supported="true"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$tls13_supported"
|
||||||
|
}
|
||||||
|
|
||||||
|
# ServerName 配置
|
||||||
|
function generate_server_name_config() {
|
||||||
|
local server_name="www.gov.hk"
|
||||||
|
|
||||||
|
read -p "请输入可用的 serverName 列表 (默认为 www.gov.hk): " user_input
|
||||||
|
|
||||||
|
# 验证服务器是否支持TLS 1.3
|
||||||
|
echo "正在验证服务器支持的TLS版本..." >&2
|
||||||
|
|
||||||
|
if [[ -n "$user_input" ]]; then
|
||||||
|
server_name="$user_input"
|
||||||
|
local tls13_support=$(validate_tls13_support "$server_name")
|
||||||
|
|
||||||
|
if [[ "$tls13_support" == "false" ]]; then
|
||||||
|
echo -e "${RED}该网址不支持 TLS 1.3,请重新输入!${NC}" >&2
|
||||||
|
generate_server_name_config
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$server_name"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 目标网站配置
|
||||||
|
function generate_target_server_config() {
|
||||||
|
local target_server="www.gov.hk"
|
||||||
|
|
||||||
|
read -p "请输入目标网站地址(默认为 www.gov.hk): " user_input
|
||||||
|
|
||||||
|
# 验证目标服务器是否支持TLS 1.3
|
||||||
|
echo "正在验证服务器支持的TLS版本..." >&2
|
||||||
|
|
||||||
|
if [[ -n "$user_input" ]]; then
|
||||||
|
target_server="$user_input"
|
||||||
|
local tls13_support=$(validate_tls13_support "$target_server")
|
||||||
|
|
||||||
|
if [[ "$tls13_support" == "false" ]]; then
|
||||||
|
echo -e "${RED}该目标网站地址不支持 TLS 1.3,请重新输入!${NC}" >&2
|
||||||
|
generate_target_server_config
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$target_server"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 私钥配置
|
||||||
|
function generate_private_key_config() {
|
||||||
|
local private_key
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
read -p "请输入私钥 (默认随机生成私钥): " private_key
|
||||||
|
|
||||||
|
if [[ -z "$private_key" ]]; then
|
||||||
|
local keypair_output=$(sing-box generate reality-keypair)
|
||||||
|
private_key=$(echo "$keypair_output" | awk -F: '/PrivateKey/{gsub(/ /, "", $2); print $2}')
|
||||||
|
echo "$keypair_output" | awk -F: '/PublicKey/{gsub(/ /, "", $2); print $2}' > /tmp/public_key_temp.txt
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 验证私钥格式是否正确
|
||||||
|
if openssl pkey -inform PEM -noout -text -in <(echo "$private_key") >/dev/null 2>&1; then
|
||||||
|
break
|
||||||
|
else
|
||||||
|
echo -e "${RED}无效的私钥,请重新输入!${NC}" >&2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "$private_key"
|
||||||
|
}
|
||||||
|
|
||||||
|
# ShortIds 配置
|
||||||
|
function generate_short_ids_config() {
|
||||||
|
local short_ids=()
|
||||||
|
local add_more_short_ids="y"
|
||||||
|
local length=8
|
||||||
|
|
||||||
|
while [[ "$add_more_short_ids" == "y" ]]; do
|
||||||
|
if [[ ${#short_ids[@]} -eq 8 ]]; then
|
||||||
|
echo -e "${YELLOW}已达到最大 shortId 数量限制!${NC}" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
local short_id=$(generate_short_id "$length")
|
||||||
|
short_ids+=("$short_id")
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
read -p "是否继续添加 shortId?(y/n,默认为 n): " add_more_short_ids
|
||||||
|
add_more_short_ids=${add_more_short_ids:-n}
|
||||||
|
case $add_more_short_ids in
|
||||||
|
[yY])
|
||||||
|
add_more_short_ids="y"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
[nN])
|
||||||
|
add_more_short_ids="n"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -e "${RED}错误的选项,请重新输入!${NC}" >&2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ "$add_more_short_ids" == "y" ]]; then
|
||||||
|
length=$((length - 1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
local short_ids_config=$(printf ' "%s",\n' "${short_ids[@]}")
|
||||||
|
short_ids_config=${short_ids_config%,}
|
||||||
|
|
||||||
|
echo "$short_ids_config"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 流控配置
|
||||||
|
function generate_flow_config() {
|
||||||
|
local flow_type="$1"
|
||||||
|
local transport_config=""
|
||||||
|
|
||||||
|
if [[ "$flow_type" != "" ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
local transport_type=""
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
read -p "请选择传输层协议:
|
||||||
|
[1]. http
|
||||||
|
[2]. grpc
|
||||||
|
请输入选项 (默认为 http): " transport_option
|
||||||
|
|
||||||
|
case $transport_option in
|
||||||
|
1)
|
||||||
|
transport_type="http"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
transport_type="grpc"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
"")
|
||||||
|
transport_type="http"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -e "${RED}错误的选项,请重新输入!${NC}" >&2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
transport_config='
|
||||||
|
"transport": {
|
||||||
|
"type": "'"$transport_type"'"
|
||||||
|
},'
|
||||||
|
|
||||||
|
echo "$transport_config"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 用户配置
|
||||||
|
function generate_user_config() {
|
||||||
|
local flow_type="$1"
|
||||||
|
local users=()
|
||||||
|
local add_more_users="y"
|
||||||
|
|
||||||
|
while [[ "$add_more_users" == "y" ]]; do
|
||||||
|
local user_uuid
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
read -p "请输入用户 UUID (默认随机生成 UUID): " user_uuid
|
||||||
|
|
||||||
|
if [[ -z "$user_uuid" ]]; then
|
||||||
|
user_uuid=$(reality_generate_uuid)
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $user_uuid =~ ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$ ]]; then
|
||||||
|
break
|
||||||
|
else
|
||||||
|
echo -e "${RED}无效的 UUID,请重新输入!${NC}" >&2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
users+=('
|
||||||
|
{
|
||||||
|
"uuid": "'"$user_uuid"'",
|
||||||
|
"flow": "'"$flow_type"'"
|
||||||
|
},')
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
read -p "是否继续添加用户?(y/n,默认为 n): " add_more_users
|
||||||
|
add_more_users=${add_more_users:-n}
|
||||||
|
case $add_more_users in
|
||||||
|
[yY])
|
||||||
|
add_more_users="y"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
[nN])
|
||||||
|
add_more_users="n"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -e "${RED}错误的选项,请重新输入!${NC}" >&2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
# 去除最后一个用户配置的末尾逗号
|
||||||
|
users[-1]=${users[-1]%,}
|
||||||
|
|
||||||
|
echo "${users[*]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 生成 Sing-Box 配置文件
|
||||||
|
function generate_reality_config() {
|
||||||
|
local config_file="/usr/local/etc/sing-box/config.json"
|
||||||
|
|
||||||
|
local listen_port=$(generate_listen_port)
|
||||||
|
local flow_type=$(select_flow_type)
|
||||||
|
|
||||||
|
transport_config=$(generate_flow_config "$flow_type")
|
||||||
|
|
||||||
|
users=$(generate_user_config "$flow_type")
|
||||||
|
|
||||||
|
local server_name=$(generate_server_name_config)
|
||||||
|
local target_server=$(generate_target_server_config)
|
||||||
|
local private_key=$(generate_private_key_config)
|
||||||
|
local short_ids=$(generate_short_ids_config)
|
||||||
|
|
||||||
|
# 生成 Sing-Box 配置文件
|
||||||
|
local config_content='{
|
||||||
|
"log": {
|
||||||
|
"disabled": false,
|
||||||
|
"level": "info",
|
||||||
|
"timestamp": true
|
||||||
|
},
|
||||||
|
"inbounds": [
|
||||||
|
{
|
||||||
|
"type": "vless",
|
||||||
|
"tag": "vless-in",
|
||||||
|
"listen": "::",
|
||||||
|
"listen_port": '$listen_port',
|
||||||
|
"users": ['"$users"'
|
||||||
|
],'"$transport_config"'
|
||||||
|
"tls": {
|
||||||
|
"enabled": true,
|
||||||
|
"server_name": "'"$server_name"'",
|
||||||
|
"reality": {
|
||||||
|
"enabled": true,
|
||||||
|
"handshake": {
|
||||||
|
"server": "'"$target_server"'",
|
||||||
|
"server_port": 443
|
||||||
|
},
|
||||||
|
"private_key": "'"$private_key"'",
|
||||||
|
"short_id": [
|
||||||
|
'"$short_ids"'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outbounds": [
|
||||||
|
{
|
||||||
|
"type": "direct",
|
||||||
|
"tag": "direct"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "block",
|
||||||
|
"tag": "block"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}'
|
||||||
|
|
||||||
|
echo "$config_content" > "$config_file"
|
||||||
|
|
||||||
|
echo "Sing-Box 配置文件已生成并保存至 $config_file"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 提取配置文件信息
|
||||||
|
function display_reality_config() {
|
||||||
|
local config_file="/usr/local/etc/sing-box/config.json"
|
||||||
|
|
||||||
|
local listen_port=$(jq -r '.inbounds[0].listen_port' "$config_file")
|
||||||
|
local users=$(jq -r '.inbounds[0].users[].uuid' "$config_file")
|
||||||
|
local flow_type=$(jq -r '.inbounds[0].users[].flow' "$config_file")
|
||||||
|
local transport_type=$(jq -r '.inbounds[0].transport.type' "$config_file")
|
||||||
|
local server_name=$(jq -r '.inbounds[0].tls.server_name' "$config_file")
|
||||||
|
local target_server=$(jq -r '.inbounds[0].tls.reality.handshake.server' "$config_file")
|
||||||
|
local short_ids=$(jq -r '.inbounds[0].tls.reality.short_id[]' "$config_file")
|
||||||
|
local public_key=$(cat /tmp/public_key_temp.txt)
|
||||||
|
|
||||||
|
echo -e "${GREEN}节点配置信息:${NC}"
|
||||||
|
echo -e "${CYAN}==================================================================${NC}"
|
||||||
|
echo -e "${GREEN}监听端口: $listen_port${NC}"
|
||||||
|
echo -e "${CYAN}------------------------------------------------------------------${NC}"
|
||||||
|
echo -e "${GREEN}用户 UUID:${NC}"
|
||||||
|
echo -e "${GREEN}$users${NC}"
|
||||||
|
echo -e "${CYAN}------------------------------------------------------------------${NC}"
|
||||||
|
echo -e "${GREEN}流控类型: $flow_type${NC}"
|
||||||
|
echo -e "${CYAN}------------------------------------------------------------------${NC}"
|
||||||
|
echo -e "${GREEN}传输层协议: $transport_type${NC}"
|
||||||
|
echo -e "${CYAN}------------------------------------------------------------------${NC}"
|
||||||
|
echo -e "${GREEN}ServerName: $server_name${NC}"
|
||||||
|
echo -e "${CYAN}------------------------------------------------------------------${NC}"
|
||||||
|
echo -e "${GREEN}目标网站地址: $target_server${NC}"
|
||||||
|
echo -e "${CYAN}------------------------------------------------------------------${NC}"
|
||||||
|
echo -e "${GREEN}Short ID:${NC}"
|
||||||
|
echo -e "${GREEN}$short_ids${NC}"
|
||||||
|
echo -e "${CYAN}------------------------------------------------------------------${NC}"
|
||||||
|
echo -e "${GREEN}PublicKey: $public_key${NC}"
|
||||||
|
echo -e "${CYAN}==================================================================${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
# 重启 sing-box 服务
|
# 重启 sing-box 服务
|
||||||
function restart_sing_box_service() {
|
function restart_sing_box_service() {
|
||||||
echo "重启 sing-box 服务..."
|
echo "重启 sing-box 服务..."
|
||||||
|
@ -1599,7 +1987,7 @@ function NaiveProxy_install() {
|
||||||
NaiveProxy_extract_config_info
|
NaiveProxy_extract_config_info
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_tuic_Serve() {
|
function tuic_install() {
|
||||||
install_dependencies
|
install_dependencies
|
||||||
enable_bbr
|
enable_bbr
|
||||||
create_tuic_directory
|
create_tuic_directory
|
||||||
|
@ -1644,6 +2032,21 @@ function shadowtls_install() {
|
||||||
display_shadowtls_config
|
display_shadowtls_config
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function reality_install() {
|
||||||
|
install_dependencies
|
||||||
|
enable_bbr
|
||||||
|
select_sing_box_install_option
|
||||||
|
check_sing_box_folder
|
||||||
|
generate_reality_config
|
||||||
|
check_firewall_configuration
|
||||||
|
configure_sing_box_service
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl enable sing-box
|
||||||
|
systemctl start sing-box
|
||||||
|
display_reality_config
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# 主菜单
|
# 主菜单
|
||||||
function main_menu() {
|
function main_menu() {
|
||||||
echo -e "${GREEN} ------------------------------------------------------------------------------------ ${NC}"
|
echo -e "${GREEN} ------------------------------------------------------------------------------------ ${NC}"
|
||||||
|
@ -1651,21 +2054,19 @@ function main_menu() {
|
||||||
echo -e "${GREEN} | 项目地址:https://github.com/TinrLin |${NC}"
|
echo -e "${GREEN} | 项目地址:https://github.com/TinrLin |${NC}"
|
||||||
echo -e "${GREEN} ------------------------------------------------------------------------------------${NC}"
|
echo -e "${GREEN} ------------------------------------------------------------------------------------${NC}"
|
||||||
echo -e "${CYAN}请选择要执行的操作:${NC}"
|
echo -e "${CYAN}请选择要执行的操作:${NC}"
|
||||||
echo -e " ${CYAN}[01]. vless+vision+reality${NC}"
|
echo -e " ${CYAN}[01]. TUIC${NC}"
|
||||||
echo -e " ${CYAN}[02]. vless+grpc+reality${NC}"
|
echo -e " ${CYAN}[02]. Vless${NC}"
|
||||||
echo -e " ${CYAN}[03]. vless+h2+reality${NC}"
|
echo -e " ${CYAN}[03]. Direct${NC}"
|
||||||
echo -e " ${CYAN}[04]. ShadowTLS V3${NC}"
|
echo -e " ${CYAN}[04]. Hysteria${NC}"
|
||||||
echo -e " ${CYAN}[05]. Shadowsocks${NC}"
|
echo -e " ${CYAN}[05]. ShadowTLS${NC}"
|
||||||
echo -e " ${CYAN}[06]. NaiveProxy${NC}"
|
echo -e " ${CYAN}[06]. NaiveProxy${NC}"
|
||||||
echo -e " ${CYAN}[07]. TUIC V5${NC}"
|
echo -e " ${CYAN}[07]. Shadowsocks${NC}"
|
||||||
echo -e " ${CYAN}[08]. Hysteria${NC}"
|
echo -e " ${CYAN}[08]. 重启 TUIC 服务${NC}"
|
||||||
echo -e " ${CYAN}[09]. Direct 流量中转${NC}"
|
echo -e " ${CYAN}[09]. 重启 Caddy 服务${NC}"
|
||||||
echo -e " ${CYAN}[10]. 重启 sing-box 服务${NC}"
|
echo -e " ${CYAN}[10]. 重启 sing-box 服务${NC}"
|
||||||
echo -e " ${CYAN}[11]. 重启 Caddy 服务${NC}"
|
echo -e " ${CYAN}[11]. 卸载 TUIC 服务${NC}"
|
||||||
echo -e " ${CYAN}[12]. 重启 TUIC 服务${NC}"
|
echo -e " ${CYAN}[12]. 卸载 Caddy 服务${NC}"
|
||||||
echo -e " ${CYAN}[13]. 卸载 sing-box 服务${NC}"
|
echo -e " ${CYAN}[13]. 卸载 sing-box 服务${NC}"
|
||||||
echo -e " ${CYAN}[14]. 卸载 Caddy 服务${NC}"
|
|
||||||
echo -e " ${CYAN}[15]. 卸载 TUIC 服务${NC}"
|
|
||||||
echo -e " ${CYAN}[00]. 退出脚本${NC}"
|
echo -e " ${CYAN}[00]. 退出脚本${NC}"
|
||||||
|
|
||||||
local choice
|
local choice
|
||||||
|
@ -1673,51 +2074,45 @@ function main_menu() {
|
||||||
|
|
||||||
case $choice in
|
case $choice in
|
||||||
1)
|
1)
|
||||||
inst
|
tuic_install
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
stop
|
reality_install
|
||||||
;;
|
;;
|
||||||
3)
|
3)
|
||||||
resta
|
Direct_install
|
||||||
;;
|
;;
|
||||||
4)
|
4)
|
||||||
shadowtls_install
|
Hysteria_install
|
||||||
;;
|
;;
|
||||||
5)
|
5)
|
||||||
Shadowsocks_install
|
shadowtls_install
|
||||||
;;
|
;;
|
||||||
6)
|
6)
|
||||||
NaiveProxy_install
|
NaiveProxy_install
|
||||||
;;
|
;;
|
||||||
7)
|
7)
|
||||||
install_tuic_Serve
|
Shadowsocks_install
|
||||||
;;
|
;;
|
||||||
8)
|
8)
|
||||||
Hysteria_install
|
restart_tuic
|
||||||
;;
|
;;
|
||||||
|
|
||||||
9)
|
9)
|
||||||
Direct_install
|
restart_naiveproxy_service
|
||||||
;;
|
;;
|
||||||
10)
|
10)
|
||||||
restart_naiveproxy_service
|
restart_sing_box_service
|
||||||
;;
|
;;
|
||||||
11)
|
11)
|
||||||
restart_naiveproxy_service
|
uninstall_tuic
|
||||||
;;
|
;;
|
||||||
12)
|
12)
|
||||||
restart_tuic
|
uninstall_naiveproxy
|
||||||
;;
|
;;
|
||||||
13)
|
13)
|
||||||
uninstall_sing_box
|
uninstall_sing_box
|
||||||
;;
|
;;
|
||||||
14)
|
|
||||||
uninstall_naiveproxy
|
|
||||||
;;
|
|
||||||
15)
|
|
||||||
uninstall_tuic
|
|
||||||
;;
|
|
||||||
0)
|
0)
|
||||||
echo -e "${GREEN}感谢使用 Reality 安装脚本!再见!${NC}"
|
echo -e "${GREEN}感谢使用 Reality 安装脚本!再见!${NC}"
|
||||||
exit 0
|
exit 0
|
||||||
|
|
Loading…
Reference in New Issue
Block a user