feat(脚本): 完善reality
parent
24a93d29c4
commit
0f31e59466
131
install.sh
131
install.sh
|
@ -153,6 +153,8 @@ initVar() {
|
||||||
# v2ray-core、xray-core配置文件的路径
|
# v2ray-core、xray-core配置文件的路径
|
||||||
configPath=
|
configPath=
|
||||||
|
|
||||||
|
xrayCoreRealityConfigPath=
|
||||||
|
|
||||||
# hysteria 配置文件的路径
|
# hysteria 配置文件的路径
|
||||||
hysteriaConfigPath=
|
hysteriaConfigPath=
|
||||||
|
|
||||||
|
@ -286,6 +288,12 @@ readInstallType() {
|
||||||
configPath=/etc/v2ray-agent/xray/conf/
|
configPath=/etc/v2ray-agent/xray/conf/
|
||||||
ctlPath=/etc/v2ray-agent/xray/xray
|
ctlPath=/etc/v2ray-agent/xray/xray
|
||||||
coreInstallType=1
|
coreInstallType=1
|
||||||
|
elif [[ -d "/etc/v2ray-agent/xray/conf" ]] && [[ -f "/etc/v2ray-agent/xray/conf/02_VLESS_reality_inbounds.json" ]]; then
|
||||||
|
# xray-core
|
||||||
|
# configPath=/etc/v2ray-agent/xray/conf/
|
||||||
|
xrayCoreRealityConfigPath=/etc/v2ray-agent/xray/conf/
|
||||||
|
ctlPath=/etc/v2ray-agent/xray/xray
|
||||||
|
coreInstallType=1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -301,6 +309,12 @@ readInstallType() {
|
||||||
|
|
||||||
# 读取协议类型
|
# 读取协议类型
|
||||||
readInstallProtocolType() {
|
readInstallProtocolType() {
|
||||||
|
local configPathLocal=
|
||||||
|
if [[ -n "${xrayCoreRealityConfigPath}" ]]; then
|
||||||
|
configPathLocal=${xrayCoreRealityConfigPath}
|
||||||
|
else
|
||||||
|
configPathLocal=${configPath}
|
||||||
|
fi
|
||||||
currentInstallProtocolType=
|
currentInstallProtocolType=
|
||||||
|
|
||||||
while read -r row; do
|
while read -r row; do
|
||||||
|
@ -331,7 +345,7 @@ readInstallProtocolType() {
|
||||||
currentInstallProtocolType=${currentInstallProtocolType}'7'
|
currentInstallProtocolType=${currentInstallProtocolType}'7'
|
||||||
frontingType=02_VLESS_reality_inbounds
|
frontingType=02_VLESS_reality_inbounds
|
||||||
fi
|
fi
|
||||||
done < <(find ${configPath} -name "*inbounds.json" | awk -F "[.]" '{print $1}')
|
done < <(find ${configPathLocal} -name "*inbounds.json" | awk -F "[.]" '{print $1}')
|
||||||
|
|
||||||
if [[ -n "${hysteriaConfigPath}" ]]; then
|
if [[ -n "${hysteriaConfigPath}" ]]; then
|
||||||
currentInstallProtocolType=${currentInstallProtocolType}'6'
|
currentInstallProtocolType=${currentInstallProtocolType}'6'
|
||||||
|
@ -360,7 +374,7 @@ checkBTPanel() {
|
||||||
}
|
}
|
||||||
# 读取当前alpn的顺序
|
# 读取当前alpn的顺序
|
||||||
readInstallAlpn() {
|
readInstallAlpn() {
|
||||||
if [[ -n ${currentInstallProtocolType} ]]; then
|
if [[ -n "${currentInstallProtocolType}" && -n "${configPath}" ]]; then
|
||||||
local alpn
|
local alpn
|
||||||
alpn=$(jq -r .inbounds[0].streamSettings.tlsSettings.alpn[0] ${configPath}${frontingType}.json)
|
alpn=$(jq -r .inbounds[0].streamSettings.tlsSettings.alpn[0] ${configPath}${frontingType}.json)
|
||||||
if [[ -n ${alpn} ]]; then
|
if [[ -n ${alpn} ]]; then
|
||||||
|
@ -453,6 +467,15 @@ readHysteriaConfig() {
|
||||||
hysteriaProtocol=$(jq -r .protocol <"${hysteriaConfigPath}config.json")
|
hysteriaProtocol=$(jq -r .protocol <"${hysteriaConfigPath}config.json")
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
# 读取xray reality配置
|
||||||
|
readXrayCoreRealityConfig() {
|
||||||
|
if [[ -n "${xrayCoreRealityConfigPath}" ]]; then
|
||||||
|
currentRealityServerNames=$(jq -r .inbounds[0].streamSettings.realitySettings.serverNames "${xrayCoreRealityConfigPath}02_VLESS_reality_inbounds.json")
|
||||||
|
currentRealityPublicKey=$(jq -r .inbounds[0].streamSettings.realitySettings.publicKey "${xrayCoreRealityConfigPath}02_VLESS_reality_inbounds.json")
|
||||||
|
currentRealityPort=$(jq -r .inbounds[0].port "${xrayCoreRealityConfigPath}02_VLESS_reality_inbounds.json")
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# 检查文件目录以及path路径
|
# 检查文件目录以及path路径
|
||||||
readConfigHostPathUUID() {
|
readConfigHostPathUUID() {
|
||||||
currentPath=
|
currentPath=
|
||||||
|
@ -500,7 +523,8 @@ readConfigHostPathUUID() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
if [[ "${coreInstallType}" == "1" ]]; then
|
|
||||||
|
if [[ "${coreInstallType}" == "1" && -n "${configPath}" ]]; then
|
||||||
currentHost=$(jq -r .inbounds[0].streamSettings.tlsSettings.certificates[0].certificateFile ${configPath}${frontingType}.json | awk -F '[t][l][s][/]' '{print $2}' | awk -F '[.][c][r][t]' '{print $1}')
|
currentHost=$(jq -r .inbounds[0].streamSettings.tlsSettings.certificates[0].certificateFile ${configPath}${frontingType}.json | awk -F '[t][l][s][/]' '{print $2}' | awk -F '[.][c][r][t]' '{print $1}')
|
||||||
currentUUID=$(jq -r .inbounds[0].settings.clients[0].id ${configPath}${frontingType}.json)
|
currentUUID=$(jq -r .inbounds[0].settings.clients[0].id ${configPath}${frontingType}.json)
|
||||||
currentAdd=$(jq -r .inbounds[0].settings.clients[0].add ${configPath}${frontingType}.json)
|
currentAdd=$(jq -r .inbounds[0].settings.clients[0].add ${configPath}${frontingType}.json)
|
||||||
|
@ -1814,7 +1838,6 @@ xrayVersionManageMenu() {
|
||||||
elif [[ "${selectXrayType}" == "7" ]]; then
|
elif [[ "${selectXrayType}" == "7" ]]; then
|
||||||
updateGeoSite
|
updateGeoSite
|
||||||
fi
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# 更新 geosite
|
# 更新 geosite
|
||||||
|
@ -3120,6 +3143,7 @@ EOF
|
||||||
${realityServerNames}
|
${realityServerNames}
|
||||||
],
|
],
|
||||||
"privateKey": "${realityPrivateKey}",
|
"privateKey": "${realityPrivateKey}",
|
||||||
|
"publicKey": "${realityPublicKey}",
|
||||||
"maxTimeDiff": 0,
|
"maxTimeDiff": 0,
|
||||||
"shortIds": [
|
"shortIds": [
|
||||||
""
|
""
|
||||||
|
@ -3240,7 +3264,6 @@ vless://${id}@${currentHost}:${currentDefaultPort}?encryption=none&security=tls&
|
||||||
EOF
|
EOF
|
||||||
echoContent yellow " ---> 二维码 VLESS(VLESS+TCP+TLS_Vision)"
|
echoContent yellow " ---> 二维码 VLESS(VLESS+TCP+TLS_Vision)"
|
||||||
echoContent green " https://api.qrserver.com/v1/create-qr-code/?size=400x400&data=vless%3A%2F%2F${id}%40${currentHost}%3A${currentDefaultPort}%3Fencryption%3Dnone%26security%3Dtls%26type%3Dtcp%26${currentHost}%3D${currentHost}%26headerType%3Dnone%26sni%3D${currentHost}%26flow%3Dxtls-rprx-vision%23${email}\n"
|
echoContent green " https://api.qrserver.com/v1/create-qr-code/?size=400x400&data=vless%3A%2F%2F${id}%40${currentHost}%3A${currentDefaultPort}%3Fencryption%3Dnone%26security%3Dtls%26type%3Dtcp%26${currentHost}%3D${currentHost}%26headerType%3Dnone%26sni%3D${currentHost}%26flow%3Dxtls-rprx-vision%23${email}\n"
|
||||||
|
|
||||||
elif [[ "${coreInstallType}" == 2 ]]; then
|
elif [[ "${coreInstallType}" == 2 ]]; then
|
||||||
echoContent yellow " ---> 通用格式(VLESS+TCP+TLS)"
|
echoContent yellow " ---> 通用格式(VLESS+TCP+TLS)"
|
||||||
echoContent green " vless://${id}@${currentHost}:${currentDefaultPort}?security=tls&encryption=none&host=${currentHost}&headerType=none&type=tcp#${email}\n"
|
echoContent green " vless://${id}@${currentHost}:${currentDefaultPort}?security=tls&encryption=none&host=${currentHost}&headerType=none&type=tcp#${email}\n"
|
||||||
|
@ -3343,6 +3366,18 @@ hysteria://${currentHost}:${hysteriaPort}?protocol=${hysteriaProtocol}&auth=${id
|
||||||
EOF
|
EOF
|
||||||
echoContent yellow " ---> 二维码 Hysteria(TLS)"
|
echoContent yellow " ---> 二维码 Hysteria(TLS)"
|
||||||
echoContent green " https://api.qrserver.com/v1/create-qr-code/?size=400x400&data=hysteria%3A%2F%2F${currentHost}%3A${hysteriaPort}%3Fprotocol%3D${hysteriaProtocol}%26auth%3D${id}%26peer%3D${currentHost}%26insecure%3D0%26alpn%3Dh3%26upmbps%3D${hysteriaClientUploadSpeed}%26downmbps%3D${hysteriaClientDownloadSpeed}%23${hysteriaEmail}\n"
|
echoContent green " https://api.qrserver.com/v1/create-qr-code/?size=400x400&data=hysteria%3A%2F%2F${currentHost}%3A${hysteriaPort}%3Fprotocol%3D${hysteriaProtocol}%26auth%3D${id}%26peer%3D${currentHost}%26insecure%3D0%26alpn%3Dh3%26upmbps%3D${hysteriaClientUploadSpeed}%26downmbps%3D${hysteriaClientDownloadSpeed}%23${hysteriaEmail}\n"
|
||||||
|
elif [[ "${coreInstallType}" == "1" ]] && echo "${currentInstallProtocolType}" | grep -q 7; then
|
||||||
|
# echoContent yellow " ---> 通用格式(VLESS+reality)"
|
||||||
|
# echoContent green " vless://${id}@${currentHost}:${currentDefaultPort}?encryption=none&security=tls&type=tcp&host=${currentHost}&headerType=none&sni=${currentHost}&flow=xtls-rprx-vision#${email}\n"
|
||||||
|
|
||||||
|
echoContent yellow " ---> 格式化明文(VLESS+reality)"
|
||||||
|
echoContent green "协议类型:VLESS reality,地址:${currentHost},publicKey:${currentRealityPublicKey},serverNames:${currentRealityServerNames},端口:${currentRealityPort},用户ID:${id},传输方式:tcp,账户名:${email}\n"
|
||||||
|
# cat <<EOF >>"/etc/v2ray-agent/subscribe_tmp/${subAccount}"
|
||||||
|
#vless://${id}@${currentHost}:${currentDefaultPort}?encryption=none&security=tls&type=tcp&host=${currentHost}&headerType=none&sni=${currentHost}&flow=xtls-rprx-vision#${email}
|
||||||
|
#EOF
|
||||||
|
# echoContent yellow " ---> 二维码 VLESS(VLESS+TCP+TLS_Vision)"
|
||||||
|
# echoContent green " https://api.qrserver.com/v1/create-qr-code/?size=400x400&data=vless%3A%2F%2F${id}%40${currentHost}%3A${currentDefaultPort}%3Fencryption%3Dnone%26security%3Dtls%26type%3Dtcp%26${currentHost}%3D${currentHost}%26headerType%3Dnone%26sni%3D${currentHost}%26flow%3Dxtls-rprx-vision%23${email}\n"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3353,6 +3388,7 @@ showAccounts() {
|
||||||
readInstallProtocolType
|
readInstallProtocolType
|
||||||
readConfigHostPathUUID
|
readConfigHostPathUUID
|
||||||
readHysteriaConfig
|
readHysteriaConfig
|
||||||
|
readXrayCoreRealityConfig
|
||||||
echoContent skyBlue "\n进度 $1/${totalProgress} : 账号"
|
echoContent skyBlue "\n进度 $1/${totalProgress} : 账号"
|
||||||
local show
|
local show
|
||||||
# VLESS TCP
|
# VLESS TCP
|
||||||
|
@ -3367,7 +3403,7 @@ showAccounts() {
|
||||||
defaultBase64Code trojanTCPXTLS "${email}" "$(echo "${user}" | jq -r .password)"
|
defaultBase64Code trojanTCPXTLS "${email}" "$(echo "${user}" | jq -r .password)"
|
||||||
done
|
done
|
||||||
|
|
||||||
else
|
elif echo ${currentInstallProtocolType} | grep -q 0; then
|
||||||
echoContent skyBlue "============================= VLESS TCP TLS_Vision ==============================\n"
|
echoContent skyBlue "============================= VLESS TCP TLS_Vision ==============================\n"
|
||||||
jq .inbounds[0].settings.clients ${configPath}02_VLESS_TCP_inbounds.json | jq -c '.[]' | while read -r user; do
|
jq .inbounds[0].settings.clients ${configPath}02_VLESS_TCP_inbounds.json | jq -c '.[]' | while read -r user; do
|
||||||
local email=
|
local email=
|
||||||
|
@ -3485,7 +3521,18 @@ showAccounts() {
|
||||||
done
|
done
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
if echo ${currentInstallProtocolType} | grep -q 7; then
|
||||||
|
show=1
|
||||||
|
echoContent skyBlue "================================ VLESS reality =================================\n"
|
||||||
|
jq .inbounds[0].settings.clients ${xrayCoreRealityConfigPath}02_VLESS_reality_inbounds.json | jq -c '.[]' | while read -r user; do
|
||||||
|
local email=
|
||||||
|
email=$(echo "${user}" | jq -r .email)
|
||||||
|
|
||||||
|
echoContent skyBlue "\n ---> 账号:${email}"
|
||||||
|
echo
|
||||||
|
defaultBase64Code vlessReality "${email}" "$(echo "${user}" | jq -r .id)"
|
||||||
|
done
|
||||||
|
fi
|
||||||
if [[ -z ${show} ]]; then
|
if [[ -z ${show} ]]; then
|
||||||
echoContent red " ---> 未安装"
|
echoContent red " ---> 未安装"
|
||||||
fi
|
fi
|
||||||
|
@ -4151,8 +4198,9 @@ bbrInstall() {
|
||||||
|
|
||||||
# 查看、检查日志
|
# 查看、检查日志
|
||||||
checkLog() {
|
checkLog() {
|
||||||
if [[ -z ${configPath} ]]; then
|
if [[ -z "${configPath}" || -z "${xrayCoreRealityConfigPath}" ]]; then
|
||||||
echoContent red " ---> 没有检测到安装目录,请执行脚本安装内容"
|
echoContent red " ---> 没有检测到安装目录,请执行脚本安装内容"
|
||||||
|
exit 0
|
||||||
fi
|
fi
|
||||||
local logStatus=false
|
local logStatus=false
|
||||||
if grep -q "access" ${configPath}00_log.json; then
|
if grep -q "access" ${configPath}00_log.json; then
|
||||||
|
@ -5439,12 +5487,26 @@ unInstallHysteriaCore() {
|
||||||
rm -rf /etc/systemd/system/hysteria.service
|
rm -rf /etc/systemd/system/hysteria.service
|
||||||
echoContent green " ---> 卸载完成"
|
echoContent green " ---> 卸载完成"
|
||||||
}
|
}
|
||||||
|
unInstallXrayCoreReality() {
|
||||||
|
|
||||||
|
if [[ -z "${configPath}" ]]; then
|
||||||
|
echoContent red "\n ---> 未安装"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echoContent skyBlue "\n功能 1/1 : reality卸载"
|
||||||
|
echoContent red "\n=============================================================="
|
||||||
|
echoContent yellow "# 仅删除VLESS Reality相关配置,不会删除其他内容。"
|
||||||
|
echoContent yellow "# 如果需要卸载其他内容,请卸载脚本功能"
|
||||||
|
handleXray stop
|
||||||
|
rm -rf /etc/v2ray-agent/xray/conf/02_VLESS_reality_inbounds.json
|
||||||
|
echoContent yellow " >卸载完成"
|
||||||
|
}
|
||||||
|
|
||||||
# 核心管理
|
# 核心管理
|
||||||
coreVersionManageMenu() {
|
coreVersionManageMenu() {
|
||||||
|
|
||||||
if [[ -z "${coreInstallType}" ]]; then
|
if [[ -z "${coreInstallType}" ]]; then
|
||||||
echoContent red "\n ---> 没有检测到安装目录,请执行脚本安装内容"
|
echoContent red "\n >没有检测到安装目录,请执行脚本安装内容"
|
||||||
menu
|
menu
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
@ -5464,9 +5526,9 @@ cronRenewTLS() {
|
||||||
}
|
}
|
||||||
# 账号管理
|
# 账号管理
|
||||||
manageAccount() {
|
manageAccount() {
|
||||||
echoContent skyBlue "\n功能 1/${totalProgress} : 账号管理"
|
echoContent skyBlue "\n功能
|
||||||
echoContent red "\n=============================================================="
|
|
||||||
echoContent yellow "# 每次删除、添加账号后,需要重新查看订阅生成订阅"
|
# 每次删除、添加账号后,需要重新查看订阅生成订阅"
|
||||||
echoContent yellow "# 添加单个用户时可自定义email和uuid"
|
echoContent yellow "# 添加单个用户时可自定义email和uuid"
|
||||||
echoContent yellow "# 如安装了Hysteria,账号会同时添加到Hysteria\n"
|
echoContent yellow "# 如安装了Hysteria,账号会同时添加到Hysteria\n"
|
||||||
echoContent yellow "1.查看账号"
|
echoContent yellow "1.查看账号"
|
||||||
|
@ -5570,13 +5632,16 @@ switchAlpn() {
|
||||||
# 初始化 reality 配置
|
# 初始化 reality 配置
|
||||||
initXrayRealityConfig() {
|
initXrayRealityConfig() {
|
||||||
echoContent skyBlue "\n进度 $1/${totalProgress} : 初始化 Xray-core reality配置"
|
echoContent skyBlue "\n进度 $1/${totalProgress} : 初始化 Xray-core reality配置"
|
||||||
echoContent skyBlue "\n ---> 生成 reality privateKey\n"
|
echoContent skyBlue "\n ---> 生成 reality key\n"
|
||||||
realityPrivateKey=$(${ctlPath} x25519)
|
realityX25519Key=$(/etc/v2ray-agent/xray/xray x25519)
|
||||||
|
|
||||||
|
realityPrivateKey=$(echo "${realityX25519Key}" | head -1 | awk '{print $3}')
|
||||||
|
realityPublicKey=$(echo "${realityX25519Key}" | tail -n 1 | awk '{print $3}')
|
||||||
|
|
||||||
echoContent skyBlue "\n ---> 配置回落的域名\n"
|
echoContent skyBlue "\n ---> 配置回落的域名\n"
|
||||||
read -r -p "请输入:" realityDestDomain
|
read -r -p "请输入:" realityDestDomain
|
||||||
|
|
||||||
echoContent skyBlue "\n ---> 配置客户端可用的serverName\n"
|
echoContent skyBlue "\n ---> 配置客户端可用的serverNames\n"
|
||||||
echoContent red "\n=============================================================="
|
echoContent red "\n=============================================================="
|
||||||
echoContent yellow "# 注意事项\n"
|
echoContent yellow "# 注意事项\n"
|
||||||
echoContent yellow "录入示例:bing.com,www.bing.com\n"
|
echoContent yellow "录入示例:bing.com,www.bing.com\n"
|
||||||
|
@ -5589,63 +5654,49 @@ xrayCoreRealityInstall() {
|
||||||
totalProgress=13
|
totalProgress=13
|
||||||
installTools 2
|
installTools 2
|
||||||
# 下载核心
|
# 下载核心
|
||||||
installXray 6
|
# prereleaseStatus=true
|
||||||
|
# updateXray
|
||||||
|
# installXray 3
|
||||||
# 生成 privateKey、配置回落地址、配置serverNames
|
# 生成 privateKey、配置回落地址、配置serverNames
|
||||||
initXrayRealityConfig 2
|
installXrayService 6
|
||||||
|
initXrayRealityConfig 5
|
||||||
# 初始化配置
|
# 初始化配置
|
||||||
initXrayConfig custom 7
|
initXrayConfig custom 7
|
||||||
# 启动
|
# 启动
|
||||||
handleXray start
|
handleXray start
|
||||||
# 展示账号
|
# 展示账号
|
||||||
cleanUp v2rayClean
|
cleanUp v2rayClean
|
||||||
selectCustomInstallType=
|
selectCustomInstallType=7
|
||||||
|
|
||||||
randomPathFunction 5
|
|
||||||
# 安装Xray
|
|
||||||
# handleV2Ray stop
|
|
||||||
|
|
||||||
installXrayService 7
|
|
||||||
customCDNIP 8
|
|
||||||
initXrayConfig all 9
|
|
||||||
cleanUp v2rayDel
|
cleanUp v2rayDel
|
||||||
installCronTLS 10
|
|
||||||
nginxBlog 11
|
|
||||||
updateRedirectNginxConf
|
|
||||||
handleXray stop
|
handleXray stop
|
||||||
sleep 2
|
sleep 2
|
||||||
handleXray start
|
handleXray start
|
||||||
|
|
||||||
handleNginx start
|
|
||||||
# 生成账号
|
# 生成账号
|
||||||
checkGFWStatue 12
|
showAccounts 8
|
||||||
showAccounts 13
|
|
||||||
}
|
}
|
||||||
# reality管理
|
# reality管理
|
||||||
manageReality() {
|
manageReality() {
|
||||||
|
|
||||||
echoContent skyBlue "\n进度 1/1 : reality管理"
|
echoContent skyBlue "\n进度 1/1 : reality管理"
|
||||||
echoContent red "\n=============================================================="
|
echoContent red "\n=============================================================="
|
||||||
local hysteriaStatus=
|
local xrayCoreRealityStatus=
|
||||||
if [[ -n "${hysteriaConfigPath}" ]]; then
|
if [[ -n "${xrayCoreRealityConfigPath}" ]]; then
|
||||||
echoContent yellow "1.重新安装"
|
echoContent yellow "1.重新安装"
|
||||||
echoContent yellow "2.卸载"
|
echoContent yellow "2.卸载"
|
||||||
hysteriaStatus=true
|
xrayCoreRealityStatus=true
|
||||||
else
|
else
|
||||||
echoContent yellow "1.安装"
|
echoContent yellow "1.安装"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echoContent red "=============================================================="
|
echoContent red "=============================================================="
|
||||||
read -r -p "请选择:" installRealityStatus
|
read -r -p "请选择:" installRealityStatus
|
||||||
|
|
||||||
if [[ "${installRealityStatus}" == "1" ]]; then
|
if [[ "${installRealityStatus}" == "1" ]]; then
|
||||||
selectCustomInstallType="7"
|
selectCustomInstallType="7"
|
||||||
hysteriaCoreInstall
|
xrayCoreRealityInstall
|
||||||
elif [[ "${installRealityStatus}" == "2" && "${hysteriaStatus}" == "true" ]]; then
|
elif [[ "${installRealityStatus}" == "2" && "${hysteriaStatus}" == "true" ]]; then
|
||||||
unInstallHysteriaCore
|
unInstallXrayCoreReality
|
||||||
elif [[ "${installRealityStatus}" == "3" && "${hysteriaStatus}" == "true" ]]; then
|
|
||||||
hysteriaVersionManageMenu 1
|
|
||||||
elif [[ "${installRealityStatus}" == "4" && "${hysteriaStatus}" == "true" ]]; then
|
|
||||||
journalctl -fu hysteria
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue