Update menu.sh

dependabot/github_actions/actions/checkout-3.1.0
fscarmen 4 years ago committed by GitHub
parent 0a48c17ba3
commit f5ae503d90
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 421
      menu.sh

@ -58,16 +58,16 @@ E[25]="Device name"
C[25]="设备名" C[25]="设备名"
E[26]="Curren operating system is \$SYS.\\\n The system lower than \$SYSTEM \${MAJOR[int]} is not supported. Feedback: [https://github.com/fscarmen/warp/issues]" E[26]="Curren operating system is \$SYS.\\\n The system lower than \$SYSTEM \${MAJOR[int]} is not supported. Feedback: [https://github.com/fscarmen/warp/issues]"
C[26]="当前操作是 \$SYS\\\n 不支持 \$SYSTEM \${MAJOR[int]} 以下系统,问题反馈:[https://github.com/fscarmen/warp/issues]" C[26]="当前操作是 \$SYS\\\n 不支持 \$SYSTEM \${MAJOR[int]} 以下系统,问题反馈:[https://github.com/fscarmen/warp/issues]"
E[27]="Local Socks5:\$PROXYSOCKS5 WARP\$AC IPv4:\$PROXYIP \$PROXYCOUNTRY \$PROXYASNORG" E[27]="Local Socks5:\$PROXYSOCKS5\\\n WARP\$AC IPv4:\$PROXYIP \$PROXYCOUNTRY \$PROXYASNORG"
C[27]="本地 Socks5:\$PROXYSOCKS5 WARP\$AC IPv4:\$PROXYIP \$PROXYCOUNTRY \$PROXYASNORG" C[27]="本地 Socks5:\$PROXYSOCKS5\\\n WARP\$AC IPv4:\$PROXYIP \$PROXYCOUNTRY \$PROXYASNORG"
E[28]="If there is a WARP+ License, please enter it, otherwise press Enter to continue:" E[28]="If there is a WARP+ License, please enter it, otherwise press Enter to continue:"
C[28]="如有 WARP+ License 请输入,没有可回车继续:" C[28]="如有 WARP+ License 请输入,没有可回车继续:"
E[29]="Input errors up to 5 times.The script is aborted." E[29]="Input errors up to 5 times.The script is aborted."
C[29]="输入错误达5次,脚本退出" C[29]="输入错误达5次,脚本退出"
E[30]="License should be 26 characters, please re-enter WARP+ License. Otherwise press Enter to continue. \(\${i} times remaining\):" E[30]="License should be 26 characters, please re-enter WARP+ License. Otherwise press Enter to continue. \(\${i} times remaining\):"
C[30]="License 应为26位字符,请重新输入 WARP+ License,没有可回车继续\(剩余\${i}次\):" C[30]="License 应为26位字符,请重新输入 WARP+ License,没有可回车继续\(剩余\${i}次\):"
E[31]="1.Update with WARP+ license\n 2.Update with Teams (You need upload the Teams file to a private storage space before. For example: gist.github.com)" E[31]="The new license is the same as the one currently in use. Does not need to be replaced."
C[31]="1.使用 WARP+ license 升级\n 2.使用 Teams 升级 (你须事前把 Teams 文件上传到私密存储空间,比如:gist.github.com )" C[31]="新输入的 License 与现使用中的一样,不需要更换。"
E[32]="Step 1/3: Install dependencies..." E[32]="Step 1/3: Install dependencies..."
C[32]="进度 1/3: 安装系统依赖……" C[32]="进度 1/3: 安装系统依赖……"
E[33]="Step 2/3: WGCF is ready" E[33]="Step 2/3: WGCF is ready"
@ -76,8 +76,8 @@ E[34]="Failed to change port. Feedback: [https://github.com/fscarmen/warp/issues
C[34]="更换端口不成功,问题反馈:[https://github.com/fscarmen/warp/issues]" C[34]="更换端口不成功,问题反馈:[https://github.com/fscarmen/warp/issues]"
E[35]="Update WARP+ account..." E[35]="Update WARP+ account..."
C[35]="升级 WARP+ 账户中……" C[35]="升级 WARP+ 账户中……"
E[36]="The upgrade failed, WARP+ account error or more than 5 devices have been activated. Free WARP account to continu." E[36]="The upgrade failed, License: \$LICENSE has been activated on more than 5 devices. The script will remain the same account or be switched to a free account."
C[36]="升级失败,WARP+ 账户错误或者已激活超过5台设备,自动更换免费 WARP 账户继续" C[36]="升级失败,License: \$LICENSE 已激活超过5台设备,将保持原账户或者转为免费账户。"
E[37]="Checking VPS infomation..." E[37]="Checking VPS infomation..."
C[37]="检查环境中……" C[37]="检查环境中……"
E[38]="Create shortcut [ warp ] successfully" E[38]="Create shortcut [ warp ] successfully"
@ -120,16 +120,16 @@ E[56]="The current Netflix region is \$REGION. Confirm press [y] . If you want a
C[56]="当前 Netflix 地区是:\$REGION,需要解锁当前地区请按 y , 如需其他地址请输入两位地区简写 \(如 hk ,sg,默认:\$REGION\):" C[56]="当前 Netflix 地区是:\$REGION,需要解锁当前地区请按 y , 如需其他地址请输入两位地区简写 \(如 hk ,sg,默认:\$REGION\):"
E[57]="The target quota you want to get. The unit is GB, the default value is 10:" E[57]="The target quota you want to get. The unit is GB, the default value is 10:"
C[57]="你希望获取的目标流量值,单位为 GB,输入数字即可,默认值为10:" C[57]="你希望获取的目标流量值,单位为 GB,输入数字即可,默认值为10:"
E[58]="WARP+ or Teams account is working now. Quota: \$QUOTA. No need to upgrade." E[58]=""
C[58]="已经是 WARP+ 或者 Teams 账户,剩余流量: \$QUOTA,不需要升级" C[58]=""
E[59]="Cannot find the account file: /etc/wireguard/wgcf-account.toml, you can reinstall with the WARP+ License" E[59]="Cannot find the account file: /etc/wireguard/wgcf-account.toml, you can reinstall with the WARP+ License"
C[59]="找不到账户文件:/etc/wireguard/wgcf-account.toml,可以卸载后重装,输入 WARP+ License" C[59]="找不到账户文件:/etc/wireguard/wgcf-account.toml,可以卸载后重装,输入 WARP+ License"
E[60]="Cannot find the configuration file: /etc/wireguard/wgcf.conf, you can reinstall with the WARP+ License" E[60]="Cannot find the configuration file: /etc/wireguard/wgcf.conf, you can reinstall with the WARP+ License"
C[60]="找不到配置文件: /etc/wireguard/wgcf.conf,可以卸载后重装,输入 WARP+ License" C[60]="找不到配置文件: /etc/wireguard/wgcf.conf,可以卸载后重装,输入 WARP+ License"
E[61]="Please Input WARP+ license:" E[61]="Please Input WARP+ license:"
C[61]="请输入WARP+ License:" C[61]="请输入WARP+ License:"
E[62]="Successfully upgraded to a WARP+ account" E[62]="Successfully change to a WARP\$AC3 account"
C[62]="已升级为 WARP+ 账户" C[62]="已变更为 WARP\$AC3 账户"
E[63]="WARP+ quota" E[63]="WARP+ quota"
C[63]="剩余流量" C[63]="剩余流量"
E[64]="Successfully synchronized the latest version" E[64]="Successfully synchronized the latest version"
@ -160,8 +160,8 @@ E[76]="Exit"
C[76]="退出脚本" C[76]="退出脚本"
E[77]="Turn off WARP (warp o)" E[77]="Turn off WARP (warp o)"
C[77]="暂时关闭 WARP (warp o)" C[77]="暂时关闭 WARP (warp o)"
E[78]="Upgrade to WARP+ or Teams account (warp a)" E[78]="Change the WARP account type (warp a)"
C[78]="升级为 WARP+ 或 Teams 账户 (warp a)" C[78]="变更 WARP 账户 (warp a)"
E[79]="Do you uninstall the following dependencies \(if any\)? Please note that this will potentially prevent other programs that are using the dependency from working properly.\\\n\\\n \$UNINSTALL_DEPENDENCIES_LIST" E[79]="Do you uninstall the following dependencies \(if any\)? Please note that this will potentially prevent other programs that are using the dependency from working properly.\\\n\\\n \$UNINSTALL_DEPENDENCIES_LIST"
C[79]="是否卸载以下依赖\(如有\)?请注意,这将有可能使其他正在使用该依赖的程序不能正常工作\\\n\\\n \$UNINSTALL_DEPENDENCIES_LIST" C[79]="是否卸载以下依赖\(如有\)?请注意,这将有可能使其他正在使用该依赖的程序不能正常工作\\\n\\\n \$UNINSTALL_DEPENDENCIES_LIST"
E[80]="Professional one-click script for WARP to unblock streaming media (Supports multi-platform, multi-mode and TG push)" E[80]="Professional one-click script for WARP to unblock streaming media (Supports multi-platform, multi-mode and TG push)"
@ -198,8 +198,8 @@ E[95]="Client works with non-WARP IPv4. The script is aborted. Feedback: [https:
C[95]="Client 在非 WARP IPv4 下才能工作正常,脚本中止,问题反馈:[https://github.com/fscarmen/warp/issues]" C[95]="Client 在非 WARP IPv4 下才能工作正常,脚本中止,问题反馈:[https://github.com/fscarmen/warp/issues]"
E[96]="Client connecting failure. It may be a CloudFlare IPv4." E[96]="Client connecting failure. It may be a CloudFlare IPv4."
C[96]="Client 连接失败,可能是 CloudFlare IPv4." C[96]="Client 连接失败,可能是 CloudFlare IPv4."
E[97]="It is a WARP+ account already. Quota: \$QUOTA. Update is aborted." E[97]=""
C[97]="已经是 WARP+ 账户,剩余流量: \$QUOTA,不需要升级" C[97]=""
E[98]="Uninstall WirePorxy was complete." E[98]="Uninstall WirePorxy was complete."
C[98]="WirePorxy 卸载成功" C[98]="WirePorxy 卸载成功"
E[99]="WireProxy is connected" E[99]="WireProxy is connected"
@ -260,8 +260,8 @@ E[126]="\$(date +'%F %T') Try \${i}. Failed. IPv\$NF: \$WAN \$COUNTRY \$ASNORG
C[126]="\$(date +'%F %T') 尝试第\${i}次,解锁失败,IPv\$NF: \$WAN \$COUNTRY \$ASNORG,\${j}秒后重新测试,刷 IP 运行时长: \$DAY 天 \$HOUR 时 \$MIN 分 \$SEC 秒" C[126]="\$(date +'%F %T') 尝试第\${i}次,解锁失败,IPv\$NF: \$WAN \$COUNTRY \$ASNORG,\${j}秒后重新测试,刷 IP 运行时长: \$DAY 天 \$HOUR 时 \$MIN 分 \$SEC 秒"
E[127]="Please input Teams file URL (To use the one provided by the script if left blank):" E[127]="Please input Teams file URL (To use the one provided by the script if left blank):"
C[127]="请输入 Teams 文件 URL (如果留空,则使用脚本提供的):" C[127]="请输入 Teams 文件 URL (如果留空,则使用脚本提供的):"
E[128]="Successfully upgraded to a WARP Teams account" E[128]=""
C[128]="已升级为 WARP Teams 账户" C[128]=""
E[129]="The current Teams account is unavailable, automatically switch back to the free account" E[129]="The current Teams account is unavailable, automatically switch back to the free account"
C[129]="当前 Teams 账户不可用,自动切换回免费账户" C[129]="当前 Teams 账户不可用,自动切换回免费账户"
E[130]="Please confirm\\\n Private key\\\t: \$PRIVATEKEY \$MATCH1\\\n Public key\\\t: \$PUBLICKEY \$MATCH2\\\n Address IPv4\\\t: \$ADDRESS4/32 \$MATCH3\\\n Address IPv6\\\t: \$ADDRESS6/128 \$MATCH4" E[130]="Please confirm\\\n Private key\\\t: \$PRIVATEKEY \$MATCH1\\\n Public key\\\t: \$PUBLICKEY \$MATCH2\\\n Address IPv4\\\t: \$ADDRESS4/32 \$MATCH3\\\n Address IPv6\\\t: \$ADDRESS6/128 \$MATCH4"
@ -327,8 +327,8 @@ E[160]="WireProxy is not installed."
C[160]="WireProxy 未安装" C[160]="WireProxy 未安装"
E[161]="WireProxy is installed and disconnected" E[161]="WireProxy is installed and disconnected"
C[161]="WireProxy 已安装,状态为断开连接" C[161]="WireProxy 已安装,状态为断开连接"
E[162]="Local Socks5:\$PROXYSOCKS52 WARP\$AC2 IPv4:\$PROXYIP2 \$PROXYCOUNTRY2 \$PROXYASNORG2" E[162]="Local Socks5:\$PROXYSOCKS52\\\n WARP\$AC2 IPv4:\$PROXYIP2\\\t \$PROXYCOUNTRY2 \$PROXYASNORG2"
C[162]="本地 Socks5:\$PROXYSOCKS52 WARP\$AC2 IPv4:\$PROXYIP2 \$PROXYCOUNTRY2 \$PROXYASNORG2" C[162]="本地 Socks5:\$PROXYSOCKS52\\\n WARP\$AC2 IPv4:\$PROXYIP2\\\t \$PROXYCOUNTRY2 \$PROXYASNORG2"
E[163]="Connect the WirePorxy (warp y)" E[163]="Connect the WirePorxy (warp y)"
C[163]="连接 WirePorxy (warp y)" C[163]="连接 WirePorxy (warp y)"
E[164]="Disconnect the WirePorxy (warp y)" E[164]="Disconnect the WirePorxy (warp y)"
@ -349,6 +349,18 @@ E[171]="Uninstall dependencies were complete."
C[171]="依赖卸载成功" C[171]="依赖卸载成功"
E[172]="No suitable solution was found for modifying the wgcf configuration file wgcf.conf and the script aborted. When you see this message, please send feedback on the bug to:[https://github.com/fscarmen/warp/issues]" E[172]="No suitable solution was found for modifying the wgcf configuration file wgcf.conf and the script aborted. When you see this message, please send feedback on the bug to:[https://github.com/fscarmen/warp/issues]"
C[172]="没有找到适合的方案用于修改 wgcf 配置文件 wgcf.conf,脚本中止。当你看到此信息,请把该 bug 反馈至:[https://github.com/fscarmen/warp/issues]" C[172]="没有找到适合的方案用于修改 wgcf 配置文件 wgcf.conf,脚本中止。当你看到此信息,请把该 bug 反馈至:[https://github.com/fscarmen/warp/issues]"
E[173]="Current account type is: WARP \$ACCOUNT_TYPE\\\t \$PLUS_QUOTA\\\n \$CHANGE_TYPE"
C[173]="当前账户类型是: WARP \$ACCOUNT_TYPE\\\t \$PLUS_QUOTA\\\n \$CHANGE_TYPE"
E[174]="1. Continue using the free account without changing.\n 2. Change to WARP+ account.\n 3. Change to Teams account. (You need upload the Teams file to a private storage space before. For example: gist.github.com)\n 0. Return to the main menu."
C[174]="1. 继续使用 free 账户,不变更\n 2. 变更为 WARP+ 账户\n 3. 变更为 Teams 账户 (你须事前把 Teams 文件上传到私密存储空间,比如:gist.github.com)\n 0. 返回主菜单"
E[175]="1. Change to free account.\n 2. Change to WARP+ account.\n 3. Change to another WARP Teams account. (You need upload the Teams file to a private storage space before. For example: gist.github.com)\n 0. Return to the main menu."
C[175]="1. 变更为 free 账户\n 2. 变更为 WARP+ 账户\n 3. 更换为另一个 Teams 账户 (你须事前把 Teams 文件上传到私密存储空间,比如:gist.github.com)\n 0. 返回主菜单"
E[176]="1. Change to free account.\n 2. Change to another WARP+ account.\n 3. Change to Teams account. (You need upload the Teams file to a private storage space before. For example: gist.github.com)\n 0. Return to the main menu."
C[176]="1. 变更为 free 账户\n 2. 变更为另一个 WARP+ 账户\n 3. 变更为 Teams 账户 (你须事前把 Teams 文件上传到私密存储空间,比如:gist.github.com)\n 0. 返回主菜单"
E[177]="1. Continue using the free account without changing.\n 2. Change to WARP+ account.\n 0. Return to the main menu."
C[177]="1. 继续使用 free 账户,不变更\n 2. 变更为 WARP+ 账户\n 0. 返回主菜单"
E[178]="1. Change to free account.\n 2. Change to another WARP+ account.\n 0. Return to the main menu."
C[178]="1. 变更为 free 账户\n 2. 变更为另一个 WARP+ 账户\n 0. 返回主菜单"
# 自定义字体彩色,read 函数,友道翻译函数 # 自定义字体彩色,read 函数,友道翻译函数
warning() { echo -e "\033[31m\033[01m$*\033[0m"; } warning() { echo -e "\033[31m\033[01m$*\033[0m"; }
@ -385,7 +397,7 @@ check_root_virt() {
# 判断虚拟化,选择 Wireguard内核模块 还是 Wireguard-Go # 判断虚拟化,选择 Wireguard内核模块 还是 Wireguard-Go
VIRT=$(systemd-detect-virt 2>/dev/null | tr '[:upper:]' '[:lower:]') VIRT=$(systemd-detect-virt 2>/dev/null | tr '[:upper:]' '[:lower:]')
[ -n "$VIRT" ] || VIRT=$(hostnamectl 2>/dev/null | tr '[:upper:]' '[:lower:]' | grep virtualization | sed "s/.*://g") [ -n "$VIRT" ] || VIRT=$(hostnamectl 2>/dev/null | tr '[:upper:]' '[:lower:]' | grep virtualization | sed "s/.*://g")
[[ $VIRT =~ openvz|lxc || -z $VIRT ]] && LXC=1 [[ "$VIRT" =~ openvz|lxc || -z "$VIRT" ]] && LXC=1
} }
# 多方式判断操作系统,试到有值为止。只支持 Debian 10/11、Ubuntu 18.04/20.04 或 CentOS 7/8 ,如非上述操作系统,退出脚本 # 多方式判断操作系统,试到有值为止。只支持 Debian 10/11、Ubuntu 18.04/20.04 或 CentOS 7/8 ,如非上述操作系统,退出脚本
@ -420,7 +432,7 @@ check_operating_system() {
SYSTEMCTL_ENABLE=("systemctl enable --now wg-quick@wgcf" "systemctl enable --now wg-quick@wgcf" "systemctl enable --now wg-quick@wgcf" "systemctl enable --now wg-quick@wgcf" "alpine_wgcf_enable" "systemctl enable --now wg-quick@wgcf") SYSTEMCTL_ENABLE=("systemctl enable --now wg-quick@wgcf" "systemctl enable --now wg-quick@wgcf" "systemctl enable --now wg-quick@wgcf" "systemctl enable --now wg-quick@wgcf" "alpine_wgcf_enable" "systemctl enable --now wg-quick@wgcf")
for ((int=0; int<${#REGEX[@]}; int++)); do for ((int=0; int<${#REGEX[@]}; int++)); do
[[ $(echo "$SYS" | tr '[:upper:]' '[:lower:]') =~ ${REGEX[int]} ]] && SYSTEM="${RELEASE[int]}" && COMPANY="${COMPANY[int]}" && [ -n "$SYSTEM" ] && break [[ $(echo "$SYS" | tr '[:upper:]' '[:lower:]') =~ "${REGEX[int]}" ]] && SYSTEM="${RELEASE[int]}" && COMPANY="${COMPANY[int]}" && [ -n "$SYSTEM" ] && break
done done
[ -z "$SYSTEM" ] && error " $(text 5) " [ -z "$SYSTEM" ] && error " $(text 5) "
@ -465,7 +477,7 @@ ip6_info() {
[[ "$TRACE6" =~ on|plus ]] && WARPSTATUS6="( WARP$PLUS6 IPv6 )" [[ "$TRACE6" =~ on|plus ]] && WARPSTATUS6="( WARP$PLUS6 IPv6 )"
} }
# 检测 Client 是否开启,普通还是 Plus账户 和 IP 信息 # 检测 Client 是否开启,free 还是 Plus 账户 和 IP 信息
proxy_info() { proxy_info() {
unset PROXYSOCKS5 PROXYPORT PROXYJASON PROXYIP PROXYCOUNTR PROXYASNORG ACCOUNT QUOTA AC PROXYSOCKS52 PROXYPORT2 PROXYJASON2 PROXYIP2 PROXYCOUNTR2 PROXYASNORG2 ACCOUNT2 AC2 TRACE42 unset PROXYSOCKS5 PROXYPORT PROXYJASON PROXYIP PROXYCOUNTR PROXYASNORG ACCOUNT QUOTA AC PROXYSOCKS52 PROXYPORT2 PROXYJASON2 PROXYIP2 PROXYCOUNTR2 PROXYASNORG2 ACCOUNT2 AC2 TRACE42
@ -541,15 +553,14 @@ stack_priority() {
case "$PRIORITY" in case "$PRIORITY" in
1 ) echo "precedence ::ffff:0:0/96 100" >> /etc/gai.conf;; 1 ) echo "precedence ::ffff:0:0/96 100" >> /etc/gai.conf;;
2 ) echo "label 2002::/16 2" >> /etc/gai.conf;; 2 ) echo "label 2002::/16 2" >> /etc/gai.conf;;
* ) echo "precedence ::ffff:0:0/96 100" >> /etc/gai.conf;;
esac esac
} }
# 更换 Netflix IP 时确认期望区域 # 更换 Netflix IP 时确认期望区域
input_region() { input_region() {
[ -n "$NF" ] && REGION=$(tr '[:lower:]' '[:upper:]' <<< $(curl --user-agent "${UA_Browser}" -$NF -fs --max-time 10 --write-out %{redirect_url} --output /dev/null "https://www.netflix.com/title/$REGION_TITLE" | sed 's/.*com\/\([^-/]\{1,\}\).*/\1/g')) [ -n "$NF" ] && REGION=$(tr '[:lower:]' '[:upper:]' <<< "$(curl --user-agent "${UA_Browser}" -$NF -fs --max-time 10 --write-out %{redirect_url} --output /dev/null "https://www.netflix.com/title/$REGION_TITLE" | sed 's/.*com\/\([^-/]\{1,\}\).*/\1/g')")
[ -n "$PROXYPORT" ] && REGION=$(tr '[:lower:]' '[:upper:]' <<< $(curl --user-agent "${UA_Browser}" -sx socks5h://localhost:$PROXYPORT -fs --max-time 10 --write-out %{redirect_url} --output /dev/null "https://www.netflix.com/title/$REGION_TITLE" | sed 's/.*com\/\([^-/]\{1,\}\).*/\1/g')) [ -n "$PROXYPORT" ] && REGION=$(tr '[:lower:]' '[:upper:]' <<< "$(curl --user-agent "${UA_Browser}" -sx socks5h://localhost:$PROXYPORT -fs --max-time 10 --write-out %{redirect_url} --output /dev/null "https://www.netflix.com/title/$REGION_TITLE" | sed 's/.*com\/\([^-/]\{1,\}\).*/\1/g')")
[ -n "$INTERFACE" ] && REGION=$(tr '[:lower:]' '[:upper:]' <<< $(curl --user-agent "${UA_Browser}" $INTERFACE -fs --max-time 10 --write-out %{redirect_url} --output /dev/null "https://www.netflix.com/title/$REGION_TITLE" | sed 's/.*com\/\([^-/]\{1,\}\).*/\1/g')) [ -n "$INTERFACE" ] && REGION=$(tr '[:lower:]' '[:upper:]' <<< "$(curl --user-agent "${UA_Browser}" $INTERFACE -fs --max-time 10 --write-out %{redirect_url} --output /dev/null "https://www.netflix.com/title/$REGION_TITLE" | sed 's/.*com\/\([^-/]\{1,\}\).*/\1/g')")
REGION=${REGION:-'US'} REGION=${REGION:-'US'}
reading " $(text_eval 56) " EXPECT reading " $(text_eval 56) " EXPECT
until [[ -z "$EXPECT" || "$EXPECT" = [Yy] || "$EXPECT" =~ ^[A-Za-z]{2}$ ]]; do until [[ -z "$EXPECT" || "$EXPECT" = [Yy] || "$EXPECT" =~ ^[A-Za-z]{2}$ ]]; do
@ -728,7 +739,7 @@ uninstall() {
type -p rpm >/dev/null 2>&1 && rpm -e wireguard-tools 2>/dev/null type -p rpm >/dev/null 2>&1 && rpm -e wireguard-tools 2>/dev/null
systemctl restart systemd-resolved >/dev/null 2>&1 && sleep 5 systemctl restart systemd-resolved >/dev/null 2>&1 && sleep 5
systemctl enable --now systemd-resolved >/dev/null 2>&1 systemctl enable --now systemd-resolved >/dev/null 2>&1
rm -rf /usr/bin/wgcf /etc/wireguard /usr/bin/wireguard-go wgcf-account.toml wgcf-profile.conf /usr/bin/warp /etc/dnsmasq.d/warp.conf /usr/bin/wireproxy /etc/local.d/wgcf.start rm -rf /usr/bin/wgcf /etc/wireguard /usr/bin/wireguard-go /usr/bin/warp /etc/dnsmasq.d/warp.conf /usr/bin/wireproxy /etc/local.d/wgcf.start
[ -e /etc/gai.conf ] && sed -i '/^precedence \:\:ffff\:0\:0/d;/^label 2002\:\:\/16/d' /etc/gai.conf [ -e /etc/gai.conf ] && sed -i '/^precedence \:\:ffff\:0\:0/d;/^label 2002\:\:\/16/d' /etc/gai.conf
[ -e /usr/bin/tun.sh ] && rm -f /usr/bin/tun.sh [ -e /usr/bin/tun.sh ] && rm -f /usr/bin/tun.sh
[ -e /etc/crontab ] && sed -i '/tun.sh/d' /etc/crontab [ -e /etc/crontab ] && sed -i '/tun.sh/d' /etc/crontab
@ -744,13 +755,13 @@ uninstall() {
ip -4 rule delete table main suppress_prefixlength 0 >/dev/nulll 2>&1 ip -4 rule delete table main suppress_prefixlength 0 >/dev/nulll 2>&1
${PACKAGE_UNINSTALL[int]} cloudflare-warp 2>/dev/null ${PACKAGE_UNINSTALL[int]} cloudflare-warp 2>/dev/null
systemctl disable --now warp-svc >/dev/null 2>&1 systemctl disable --now warp-svc >/dev/null 2>&1
rm -rf /usr/bin/wgcf /etc/wireguard /usr/bin/wireguard-go wgcf-account.toml wgcf-profile.conf /usr/bin/warp rm -rf /usr/bin/wgcf /etc/wireguard /usr/bin/wireguard-go /usr/bin/warp
} }
# 卸载 WirePorxy # 卸载 WirePorxy
uninstall_wireproxy() { uninstall_wireproxy() {
systemctl disable --now wireproxy systemctl disable --now wireproxy
rm -rf /usr/bin/wgcf /etc/wireguard /usr/bin/wireguard-go wgcf-account.toml wgcf-profile.conf /usr/bin/warp /etc/dnsmasq.d/warp.conf /usr/bin/wireproxy /lib/systemd/system/wireproxy.service rm -rf /usr/bin/wgcf /etc/wireguard /usr/bin/wireguard-go /usr/bin/warp /etc/dnsmasq.d/warp.conf /usr/bin/wireproxy /lib/systemd/system/wireproxy.service
[ -e /etc/gai.conf ] && sed -i '/^precedence \:\:ffff\:0\:0/d;/^label 2002\:\:\/16/d' /etc/gai.conf [ -e /etc/gai.conf ] && sed -i '/^precedence \:\:ffff\:0\:0/d;/^label 2002\:\:\/16/d' /etc/gai.conf
[ -e /usr/bin/tun.sh ] && rm -f /usr/bin/tun.sh && sed -i '/tun.sh/d' /etc/crontab [ -e /usr/bin/tun.sh ] && rm -f /usr/bin/tun.sh && sed -i '/tun.sh/d' /etc/crontab
} }
@ -816,9 +827,9 @@ net() {
ss -nltp | grep dnsmasq >/dev/null 2>&1 && systemctl restart dnsmasq >/dev/null 2>&1 ss -nltp | grep dnsmasq >/dev/null 2>&1 && systemctl restart dnsmasq >/dev/null 2>&1
ip4_info; ip6_info ip4_info; ip6_info
if [[ "$i" = "$j" ]]; then if [[ "$i" = "$j" ]]; then
if [ "$LICENSETYPE" = 2 ]; then if [ "$CHOOSE_TYPE" = 3 ]; then
unset LICENSETYPE && i=0 && info " $(text 129) " && unset CHOOSE_TYPE && i=0 && info " $(text 129) " &&
cp -f /etc/wireguard/wgcf-profile.conf /etc/wireguard/wgcf.conf mv -f /etc/wireguard/wgcf.conf.bak /etc/wireguard/wgcf.conf
else else
wg-quick down wgcf >/dev/null 2>&1 wg-quick down wgcf >/dev/null 2>&1
error " $(text_eval 13) " error " $(text_eval 13) "
@ -873,7 +884,6 @@ wireproxy_onoff() {
if ss -nltp | grep wireproxy >/dev/null 2>&1; then if ss -nltp | grep wireproxy >/dev/null 2>&1; then
systemctl stop wireproxy systemctl stop wireproxy
[[ ! $(ss -nltp) =~ 'wireproxy' ]] && info " $(text 158) " [[ ! $(ss -nltp) =~ 'wireproxy' ]] && info " $(text 158) "
else else
systemctl start wireproxy systemctl start wireproxy
sleep 1 && proxy_info sleep 1 && proxy_info
@ -925,7 +935,7 @@ stack_switch() {
[[ "$CLIENT" = [35] && "$SWITCHCHOOSE" = [4D] ]] && error " $(text 109) " [[ "$CLIENT" = [35] && "$SWITCHCHOOSE" = [4D] ]] && error " $(text 109) "
check_stack check_stack
if [[ "$CHOOSE1" = [12] ]]; then if [[ "$CHOOSE1" = [12] ]]; then
TO=$(eval echo \${TO$CHOOSE1[m]}) TO=$(eval echo "\${TO$CHOOSE1[m]}")
elif [[ "$SWITCHCHOOSE" = [46D] ]]; then elif [[ "$SWITCHCHOOSE" = [46D] ]]; then
[[ "$T4@$T6@$SWITCHCHOOSE" =~ '1@0@4'|'0@1@6'|'1@1@D' ]] && error " $(text 146) " || TO="$T4$T6$SWITCHCHOOSE" [[ "$T4@$T6@$SWITCHCHOOSE" =~ '1@0@4'|'0@1@6'|'1@1@D' ]] && error " $(text 146) " || TO="$T4$T6$SWITCHCHOOSE"
else else
@ -1060,7 +1070,7 @@ update_license() {
(( i-- )) || true (( i-- )) || true
[ "$i" = 0 ] && error " $(text 29) " || reading " $(text_eval 100) " LICENSE [ "$i" = 0 ] && error " $(text 29) " || reading " $(text_eval 100) " LICENSE
done done
[[ "$UPDATE_LICENSE" = 1 && -n "$LICENSE" && -z "$NAME" ]] && reading " $(text 102) " NAME [[ -z "$ACCOUNT" && "$CHOOSE_TYPE" = 2 && -n "$LICENSE" && -z "$NAME" ]] && reading " $(text 102) " NAME
[ -n "$NAME" ] && NAME="${NAME//[[:space:]]/_}" || NAME=${NAME:-'WARP'} [ -n "$NAME" ] && NAME="${NAME//[[:space:]]/_}" || NAME=${NAME:-'WARP'}
} }
@ -1214,9 +1224,8 @@ EOF
chmod +x /etc/wireguard/up /etc/wireguard/down chmod +x /etc/wireguard/up /etc/wireguard/down
# 修改 wgcf-profile.conf 和 warp.conf 文件 # 修改 wgcf.conf 和 warp.conf 文件
sed -i "s/^Post.*/#&/g;\$a PersistentKeepalive = 5" wgcf-profile.conf sed -i "s/^Post.*/#&/g;\$a PersistentKeepalive = 5; 7 i Table = off\nPostUp = /etc/wireguard/up\nPredown = /etc/wireguard/down" /etc/wireguard/wgcf.conf
sed -i "7 i Table = off\nPostUp = /etc/wireguard/up\nPredown = /etc/wireguard/down" wgcf-profile.conf
[ "$m" = 0 ] && sed -i "2i server=2606:4700:4700::1111\nserver=2001:4860:4860::8888\nserver=2001:4860:4860::8844" /etc/dnsmasq.d/warp.conf [ "$m" = 0 ] && sed -i "2i server=2606:4700:4700::1111\nserver=2001:4860:4860::8888\nserver=2001:4860:4860::8844" /etc/dnsmasq.d/warp.conf
! grep -q 'warp' /etc/iproute2/rt_tables && echo '250 warp' >>/etc/iproute2/rt_tables ! grep -q 'warp' /etc/iproute2/rt_tables && echo '250 warp' >>/etc/iproute2/rt_tables
systemctl disable systemd-resolved --now >/dev/null 2>&1 && sleep 2 systemctl disable systemd-resolved --now >/dev/null 2>&1 && sleep 2
@ -1239,11 +1248,11 @@ install() {
[[ "$OCTEEP" != 1 && "${#CONF}" != [34] ]] && error " $(text 172) " [[ "$OCTEEP" != 1 && "${#CONF}" != [34] ]] && error " $(text 172) "
# 先删除之前安装,可能导致失败的文件 # 先删除之前安装,可能导致失败的文件
rm -rf /usr/bin/wgcf /usr/bin/wireguard-go wgcf-account.toml wgcf-profile.conf rm -rf /usr/bin/wgcf /usr/bin/wireguard-go /etc/wireguard/wgcf-account.toml
# 询问是否有 WARP+ 或 Teams 账户 # 询问是否有 WARP+ 或 Teams 账户
[ -z "$LICENSETYPE" ] && hint "\n $(text 132) \n" && reading " $(text 50) " LICENSETYPE [ -z "$CHOOSE_TYPE" ] && hint "\n $(text 132) \n" && reading " $(text 50) " CHOOSE_TYPE
case $LICENSETYPE in case $CHOOSE_TYPE in
1 ) INPUT_LICENSE=1 && input_license;; 1 ) INPUT_LICENSE=1 && input_license;;
2 ) input_url;; 2 ) input_url;;
esac esac
@ -1276,14 +1285,22 @@ install() {
# 注册 WARP 账户 ( wgcf-account.toml 使用默认值加加快速度)。如有 WARP+ 账户,修改 license 并升级,并把设备名等信息保存到 /etc/wireguard/info.log # 注册 WARP 账户 ( wgcf-account.toml 使用默认值加加快速度)。如有 WARP+ 账户,修改 license 并升级,并把设备名等信息保存到 /etc/wireguard/info.log
mkdir -p /etc/wireguard/ >/dev/null 2>&1 mkdir -p /etc/wireguard/ >/dev/null 2>&1
until [ -e wgcf-account.toml ] >/dev/null 2>&1; do until [ -e /etc/wireguard/wgcf-account.toml ]; do
wgcf register --accept-tos >/dev/null 2>&1 && break wgcf register --accept-tos --config /etc/wireguard/wgcf-account.toml >/dev/null 2>&1 && break
done done
[ -n "$LICENSE" ] && hint "\n $(text 35) \n" && sed -i "s#license_key.*#license_key = \"$LICENSE\"#g" wgcf-account.toml && if [ -n "$LICENSE" ]; then
( wgcf update --name "$NAME" > /etc/wireguard/info.log 2>&1 || warning "\n $(text 36) \n" ) cp -f /etc/wireguard/wgcf-account.toml /etc/wireguard/account-temp.toml || exit 1
sed -i "s#license_key.*#license_key = \"$LICENSE\"#g" /etc/wireguard/account-temp.toml
wgcf update --name "$NAME" --config /etc/wireguard/account-temp.toml > /etc/wireguard/info.log 2>&1
while grep -qisE "429 Too Many Requests|timeout" /etc/wireguard/info.log; do
/usr/bin/wgcf update --name "$NAME" --config /etc/wireguard/account-temp.toml > /etc/wireguard/info.log 2>&1
done
grep -qs "400 Bad Request" /etc/wireguard/info.log && rm -f /etc/wireguard/account-temp.toml /etc/wireguard/info.log && warning " $(text_eval 36) " ||
mv -f /etc/wireguard/account-temp.toml /etc/wireguard/wgcf-account.toml
fi
# 生成 Wire-Guard 配置文件 (wgcf-profile.conf) # 生成 Wire-Guard 配置文件 (wgcf.conf)
[ -e wgcf-account.toml ] && wgcf generate >/dev/null 2>&1 [ -e /etc/wireguard/wgcf-account.toml ] && wgcf generate --config /etc/wireguard/wgcf-account.toml --profile /etc/wireguard/wgcf.conf >/dev/null 2>&1
info "\n $(text 33) \n" info "\n $(text 33) \n"
# 反复测试最佳 MTU。 Wireguard Header:IPv4=60 bytes,IPv6=80 bytes,1280 ≤ MTU ≤ 1420。 ping = 8(ICMP回显示请求和回显应答报文格式长度) + 20(IP首部) 。 # 反复测试最佳 MTU。 Wireguard Header:IPv4=60 bytes,IPv6=80 bytes,1280 ≤ MTU ≤ 1420。 ping = 8(ICMP回显示请求和回显应答报文格式长度) + 20(IP首部) 。
@ -1309,7 +1326,7 @@ install() {
MTU=$((MTU+28-80)) MTU=$((MTU+28-80))
[ -e wgcf-profile.conf ] && sed -i "s/MTU.*/MTU = $MTU/g" wgcf-profile.conf && info "\n $(text 81) \n" [ -e /etc/wireguard/wgcf.conf ] && sed -i "s/MTU.*/MTU = $MTU/g" /etc/wireguard/wgcf.conf && info "\n $(text 81) \n"
}& }&
# 对于 IPv4 only VPS 开启 IPv6 支持 # 对于 IPv4 only VPS 开启 IPv6 支持
@ -1396,18 +1413,18 @@ install() {
wait wait
# WGCF 配置修改,其中用到的 162.159.193.10 和 2606:4700:d0::a29f:c001 均是 engage.cloudflareclient.com 的 IP # WGCF 配置修改,其中用到的 162.159.193.10 和 2606:4700:d0::a29f:c001 均是 engage.cloudflareclient.com 的 IP
MODIFY014='sed -i "s/1.1.1.1/2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844,1.1.1.1,8.8.8.8,8.8.4.4/g;7 s/^/PostDown = ip -6 rule delete from '$LAN6' lookup main\n/;7 s/^/PostUp = ip -6 rule add from '$LAN6' lookup main\n/;s/engage.cloudflareclient.com/[2606:4700:d0::a29f:c001]/g;s/^.*\:\:\/0/#&/g" wgcf-profile.conf' MODIFY014='sed -i "s/1.1.1.1/2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844,1.1.1.1,8.8.8.8,8.8.4.4/g;7 s/^/PostDown = ip -6 rule delete from '$LAN6' lookup main\n/;7 s/^/PostUp = ip -6 rule add from '$LAN6' lookup main\n/;s/engage.cloudflareclient.com/[2606:4700:d0::a29f:c001]/g;s/^.*\:\:\/0/#&/g" /etc/wireguard/wgcf.conf'
MODIFY016='sed -i "s/1.1.1.1/2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844,1.1.1.1,8.8.8.8,8.8.4.4/g;7 s/^/PostDown = ip -6 rule delete from '$LAN6' lookup main\n/;7 s/^/PostUp = ip -6 rule add from '$LAN6' lookup main\n/;s/engage.cloudflareclient.com/[2606:4700:d0::a29f:c001]/g;s/^.*0\.\0\/0/#&/g" wgcf-profile.conf' MODIFY016='sed -i "s/1.1.1.1/2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844,1.1.1.1,8.8.8.8,8.8.4.4/g;7 s/^/PostDown = ip -6 rule delete from '$LAN6' lookup main\n/;7 s/^/PostUp = ip -6 rule add from '$LAN6' lookup main\n/;s/engage.cloudflareclient.com/[2606:4700:d0::a29f:c001]/g;s/^.*0\.\0\/0/#&/g" /etc/wireguard/wgcf.conf'
MODIFY01D='sed -i "s/1.1.1.1/2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844,1.1.1.1,8.8.8.8,8.8.4.4/g;7 s/^/PostDown = ip -6 rule delete from '$LAN6' lookup main\n/;7 s/^/PostUp = ip -6 rule add from '$LAN6' lookup main\n/;s/engage.cloudflareclient.com/[2606:4700:d0::a29f:c001]/g" wgcf-profile.conf' MODIFY01D='sed -i "s/1.1.1.1/2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844,1.1.1.1,8.8.8.8,8.8.4.4/g;7 s/^/PostDown = ip -6 rule delete from '$LAN6' lookup main\n/;7 s/^/PostUp = ip -6 rule add from '$LAN6' lookup main\n/;s/engage.cloudflareclient.com/[2606:4700:d0::a29f:c001]/g" /etc/wireguard/wgcf.conf'
MODIFY104='sed -i "s/1.1.1.1/1.1.1.1,8.8.8.8,8.8.4.4,2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844/g;7 s/^/PostDown = ip -4 rule delete from '$LAN4' lookup main\n/;7 s/^/PostUp = ip -4 rule add from '$LAN4' lookup main\n/;s/engage.cloudflareclient.com/162.159.193.10/g;s/^.*\:\:\/0/#&/g" wgcf-profile.conf' MODIFY104='sed -i "s/1.1.1.1/1.1.1.1,8.8.8.8,8.8.4.4,2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844/g;7 s/^/PostDown = ip -4 rule delete from '$LAN4' lookup main\n/;7 s/^/PostUp = ip -4 rule add from '$LAN4' lookup main\n/;s/engage.cloudflareclient.com/162.159.193.10/g;s/^.*\:\:\/0/#&/g" /etc/wireguard/wgcf.conf'
MODIFY106='sed -i "s/1.1.1.1/1.1.1.1,8.8.8.8,8.8.4.4,2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844/g;7 s/^/PostDown = ip -4 rule delete from '$LAN4' lookup main\n/;7 s/^/PostUp = ip -4 rule add from '$LAN4' lookup main\n/;s/engage.cloudflareclient.com/162.159.193.10/g;s/^.*0\.\0\/0/#&/g" wgcf-profile.conf' MODIFY106='sed -i "s/1.1.1.1/1.1.1.1,8.8.8.8,8.8.4.4,2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844/g;7 s/^/PostDown = ip -4 rule delete from '$LAN4' lookup main\n/;7 s/^/PostUp = ip -4 rule add from '$LAN4' lookup main\n/;s/engage.cloudflareclient.com/162.159.193.10/g;s/^.*0\.\0\/0/#&/g" /etc/wireguard/wgcf.conf'
MODIFY10D='sed -i "s/1.1.1.1/1.1.1.1,8.8.8.8,8.8.4.4,2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844/g;7 s/^/PostDown = ip -4 rule delete from '$LAN4' lookup main\n/;7 s/^/PostUp = ip -4 rule add from '$LAN4' lookup main\n/;s/engage.cloudflareclient.com/162.159.193.10/g" wgcf-profile.conf' MODIFY10D='sed -i "s/1.1.1.1/1.1.1.1,8.8.8.8,8.8.4.4,2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844/g;7 s/^/PostDown = ip -4 rule delete from '$LAN4' lookup main\n/;7 s/^/PostUp = ip -4 rule add from '$LAN4' lookup main\n/;s/engage.cloudflareclient.com/162.159.193.10/g" /etc/wireguard/wgcf.conf'
MODIFY114='sed -i "s/1.1.1.1/1.1.1.1,8.8.8.8,8.8.4.4,2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844/g;7 s/^/PostDown = ip -6 rule delete from '$LAN6' lookup main\n/;7 s/^/PostUp = ip -6 rule add from '$LAN6' lookup main\n/;7 s/^/PostDown = ip -4 rule delete from '$LAN4' lookup main\n/;7 s/^/PostUp = ip -4 rule add from '$LAN4' lookup main\n/;s/engage.cloudflareclient.com/162.159.193.10/g;s/^.*\:\:\/0/#&/g" wgcf-profile.conf' MODIFY114='sed -i "s/1.1.1.1/1.1.1.1,8.8.8.8,8.8.4.4,2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844/g;7 s/^/PostDown = ip -6 rule delete from '$LAN6' lookup main\n/;7 s/^/PostUp = ip -6 rule add from '$LAN6' lookup main\n/;7 s/^/PostDown = ip -4 rule delete from '$LAN4' lookup main\n/;7 s/^/PostUp = ip -4 rule add from '$LAN4' lookup main\n/;s/engage.cloudflareclient.com/162.159.193.10/g;s/^.*\:\:\/0/#&/g" /etc/wireguard/wgcf.conf'
MODIFY116='sed -i "s/1.1.1.1/1.1.1.1,8.8.8.8,8.8.4.4,2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844/g;7 s/^/PostDown = ip -6 rule delete from '$LAN6' lookup main\n/;7 s/^/PostUp = ip -6 rule add from '$LAN6' lookup main\n/;7 s/^/PostDown = ip -4 rule delete from '$LAN4' lookup main\n/;7 s/^/PostUp = ip -4 rule add from '$LAN4' lookup main\n/;s/engage.cloudflareclient.com/162.159.193.10/g;s/^.*0\.\0\/0/#&/g" wgcf-profile.conf' MODIFY116='sed -i "s/1.1.1.1/1.1.1.1,8.8.8.8,8.8.4.4,2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844/g;7 s/^/PostDown = ip -6 rule delete from '$LAN6' lookup main\n/;7 s/^/PostUp = ip -6 rule add from '$LAN6' lookup main\n/;7 s/^/PostDown = ip -4 rule delete from '$LAN4' lookup main\n/;7 s/^/PostUp = ip -4 rule add from '$LAN4' lookup main\n/;s/engage.cloudflareclient.com/162.159.193.10/g;s/^.*0\.\0\/0/#&/g" /etc/wireguard/wgcf.conf'
MODIFY11D='sed -i "s/1.1.1.1/1.1.1.1,8.8.8.8,8.8.4.4,2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844/g;7 s/^/PostDown = ip -6 rule delete from '$LAN6' lookup main\n/;7 s/^/PostUp = ip -6 rule add from '$LAN6' lookup main\n/;7 s/^/PostDown = ip -4 rule delete from '$LAN4' lookup main\n/;7 s/^/PostUp = ip -4 rule add from '$LAN4' lookup main\n/;s/engage.cloudflareclient.com/162.159.193.10/g" wgcf-profile.conf' MODIFY11D='sed -i "s/1.1.1.1/1.1.1.1,8.8.8.8,8.8.4.4,2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844/g;7 s/^/PostDown = ip -6 rule delete from '$LAN6' lookup main\n/;7 s/^/PostUp = ip -6 rule add from '$LAN6' lookup main\n/;7 s/^/PostDown = ip -4 rule delete from '$LAN4' lookup main\n/;7 s/^/PostUp = ip -4 rule add from '$LAN4' lookup main\n/;s/engage.cloudflareclient.com/162.159.193.10/g" /etc/wireguard/wgcf.conf'
MODIFY11N4='sed -i "s/1.1.1.1/1.1.1.1,8.8.8.8,8.8.4.4,2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844/g;7 s/^/PostDown = ip -6 rule delete from '$LAN6' lookup main\n/;7 s/^/PostUp = ip -6 rule add from '$LAN6' lookup main\n/;7 s/^/PostDown = ip -4 rule delete from '$LAN4' lookup main\n/;7 s/^/PostUp = ip -4 rule add from '$LAN4' lookup main\n/;s/engage.cloudflareclient.com/[2606:4700:d0::a29f:c001]/g;s/^.*\:\:\/0/#&/g" wgcf-profile.conf' MODIFY11N4='sed -i "s/1.1.1.1/1.1.1.1,8.8.8.8,8.8.4.4,2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844/g;7 s/^/PostDown = ip -6 rule delete from '$LAN6' lookup main\n/;7 s/^/PostUp = ip -6 rule add from '$LAN6' lookup main\n/;7 s/^/PostDown = ip -4 rule delete from '$LAN4' lookup main\n/;7 s/^/PostUp = ip -4 rule add from '$LAN4' lookup main\n/;s/engage.cloudflareclient.com/[2606:4700:d0::a29f:c001]/g;s/^.*\:\:\/0/#&/g" /etc/wireguard/wgcf.conf'
MODIFY11N6='sed -i "s/1.1.1.1/1.1.1.1,8.8.8.8,8.8.4.4,2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844/g;7 s/^/PostDown = ip -6 rule delete from '$LAN6' lookup main\n/;7 s/^/PostUp = ip -6 rule add from '$LAN6' lookup main\n/;7 s/^/PostDown = ip -4 rule delete from '$LAN4' lookup main\n/;7 s/^/PostUp = ip -4 rule add from '$LAN4' lookup main\n/;s/engage.cloudflareclient.com/[2606:4700:d0::a29f:c001]/g;s/^.*0\.\0\/0/#&/g" wgcf-profile.conf' MODIFY11N6='sed -i "s/1.1.1.1/1.1.1.1,8.8.8.8,8.8.4.4,2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844/g;7 s/^/PostDown = ip -6 rule delete from '$LAN6' lookup main\n/;7 s/^/PostUp = ip -6 rule add from '$LAN6' lookup main\n/;7 s/^/PostDown = ip -4 rule delete from '$LAN4' lookup main\n/;7 s/^/PostUp = ip -4 rule add from '$LAN4' lookup main\n/;s/engage.cloudflareclient.com/[2606:4700:d0::a29f:c001]/g;s/^.*0\.\0\/0/#&/g" /etc/wireguard/wgcf.conf'
MODIFY11ND='sed -i "s/1.1.1.1/1.1.1.1,8.8.8.8,8.8.4.4,2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844/g;7 s/^/PostDown = ip -6 rule delete from '$LAN6' lookup main\n/;7 s/^/PostUp = ip -6 rule add from '$LAN6' lookup main\n/;7 s/^/PostDown = ip -4 rule delete from '$LAN4' lookup main\n/;7 s/^/PostUp = ip -4 rule add from '$LAN4' lookup main\n/;s/engage.cloudflareclient.com/[2606:4700:d0::a29f:c001]/g" wgcf-profile.conf' MODIFY11ND='sed -i "s/1.1.1.1/1.1.1.1,8.8.8.8,8.8.4.4,2606:4700:4700::1111,2001:4860:4860::8888,2001:4860:4860::8844/g;7 s/^/PostDown = ip -6 rule delete from '$LAN6' lookup main\n/;7 s/^/PostUp = ip -6 rule add from '$LAN6' lookup main\n/;7 s/^/PostDown = ip -4 rule delete from '$LAN4' lookup main\n/;7 s/^/PostUp = ip -4 rule add from '$LAN4' lookup main\n/;s/engage.cloudflareclient.com/[2606:4700:d0::a29f:c001]/g" /etc/wireguard/wgcf.conf'
sh -c "$(eval echo "\$MODIFY$CONF")" sh -c "$(eval echo "\$MODIFY$CONF")"
@ -1424,8 +1441,8 @@ install() {
# https://www.wireguard.com/#simple-network-interface # https://www.wireguard.com/#simple-network-interface
[Interface] [Interface]
Address = 172.16.0.2/32 # The subnet should be /32 and /128 for IPv4 and v6 respectively Address = 172.16.0.2/32 # The subnet should be /32 and /128 for IPv4 and v6 respectively
MTU = $(grep MTU wgcf-profile.conf | sed "s/MTU = //g") MTU = $(grep MTU wgcf.conf | sed "s/MTU = //g")
PrivateKey = ${PRIVATEKEY:-"$(grep PrivateKey wgcf-profile.conf | sed "s/PrivateKey = //g")"} PrivateKey = ${PRIVATEKEY:-"$(grep PrivateKey wgcf.conf | sed "s/PrivateKey = //g")"}
DNS = $DNS DNS = $DNS
[Peer] [Peer]
@ -1483,9 +1500,8 @@ EOF
# 运行 wireproxy # 运行 wireproxy
systemctl enable --now wireproxy; sleep 1 systemctl enable --now wireproxy; sleep 1
# 保存好配置文件, 把 wgcf-profile.conf 复制到/etc/wireguard/ 并命名为 wgcf.conf, 如有 Teams,改为 Teams 账户信息 # 保存好配置文件, 如有 Teams,改为 Teams 账户信息
mv -f wgcf-profile.conf /etc/wireguard/wgcf.conf >/dev/null 2>&1 mv -f menu.sh /etc/wireguard >/dev/null 2>&1
mv -f wgcf-account.toml menu.sh /etc/wireguard >/dev/null 2>&1
[[ "$CONFIRM" = [Yy] ]] && teams_change && echo "$TEAMS" > /etc/wireguard/info.log 2>&1 [[ "$CONFIRM" = [Yy] ]] && teams_change && echo "$TEAMS" > /etc/wireguard/info.log 2>&1
# 创建再次执行的软链接快捷方式,再次运行可以用 warp 指令,设置默认语言 # 创建再次执行的软链接快捷方式,再次运行可以用 warp 指令,设置默认语言
@ -1505,12 +1521,10 @@ EOF
[ "$ANEMONE" = 1 ] && iptables_solution [ "$ANEMONE" = 1 ] && iptables_solution
# 特殊 VPS 的配置文件 DNS 次序 # 特殊 VPS 的配置文件 DNS 次序
[ $(hostname 2>&1) = DiG9 ] && sed -i "s/DNS.*/DNS = 8.8.8.8,8.8.4.4,2001:4860:4860::8888,2001:4860:4860::8844/g" wgcf-profile.conf [ $(hostname 2>&1) = DiG9 ] && sed -i "s/DNS.*/DNS = 8.8.8.8,8.8.4.4,2001:4860:4860::8888,2001:4860:4860::8844/g" /etc/wireguard/wgcf.conf
# 把 wgcf-profile.conf 复制到/etc/wireguard/ 并命名为 wgcf.conf, 如有 Teams,改为 Teams 账户信息 # 如有 Teams,改为 Teams 账户信息
cp -f wgcf-profile.conf /etc/wireguard/wgcf.conf >/dev/null 2>&1 grep -qiw "y" <<< "$CONFIRM" && teams_change && echo "$TEAMS" > /etc/wireguard/info.log 2>&1
[[ "$CONFIRM" = [Yy] ]] && teams_change && echo "$TEAMS" > /etc/wireguard/info.log 2>&1
# 设置开机启动 # 设置开机启动
${SYSTEMCTL_ENABLE[int]} >/dev/null 2>&1 ${SYSTEMCTL_ENABLE[int]} >/dev/null 2>&1
@ -1528,7 +1542,7 @@ EOF
fi fi
# 保存好配置文件 # 保存好配置文件
mv -f wgcf-account.toml wgcf-profile.conf menu.sh /etc/wireguard >/dev/null 2>&1 mv -f menu.sh /etc/wireguard >/dev/null 2>&1
# 创建再次执行的软链接快捷方式,再次运行可以用 warp 指令,设置默认语言 # 创建再次执行的软链接快捷方式,再次运行可以用 warp 指令,设置默认语言
chmod +x /etc/wireguard/menu.sh >/dev/null 2>&1 chmod +x /etc/wireguard/menu.sh >/dev/null 2>&1
@ -1567,7 +1581,7 @@ proxy() {
[ -n "$LICENSE" ] && ( hint " $(text 35) " && [ -n "$LICENSE" ] && ( hint " $(text 35) " &&
warp-cli --accept-tos set-license "$LICENSE" >/dev/null 2>&1 && sleep 1 && warp-cli --accept-tos set-license "$LICENSE" >/dev/null 2>&1 && sleep 1 &&
ACCOUNT=$(warp-cli --accept-tos account 2>/dev/null) && ACCOUNT=$(warp-cli --accept-tos account 2>/dev/null) &&
[[ "$ACCOUNT" =~ Limited ]] && echo "$LICENSE" >/etc/wireguard/license && info " $(text 62) " || [[ "$ACCOUNT" =~ Limited ]] && AC3='+' && echo "$LICENSE" > /etc/wireguard/license && info " $(text_eval 62) " ||
warning " $(text 36) " ) warning " $(text 36) " )
if [ "$LUBAN" = 1 ]; then if [ "$LUBAN" = 1 ]; then
i=1; j=5; INTERFACE='--interface CloudflareWARP' i=1; j=5; INTERFACE='--interface CloudflareWARP'
@ -1758,86 +1772,195 @@ check_quota() {
fi fi
if type -p bc >/dev/null 2>&1; then if type -p bc >/dev/null 2>&1; then
[ "$QUOTA" -gt 10000000000000 ] && QUOTA="$(echo "scale=2; $QUOTA/1000000000000" | bc) TB" || QUOTA="$(echo "scale=2; $QUOTA/1000000000" | bc) GB" if [[ "$QUOTA" -gt 10000000000000000 ]]; then
QUOTA="$(echo "scale=2; $QUOTA/10000000000000000" | bc) PB"
elif [[ "$QUOTA" -gt 10000000000000 ]]; then
QUOTA="$(echo "scale=2; $QUOTA/1000000000000" | bc) TB"
else
QUOTA="$(echo "scale=2; $QUOTA/1000000000" | bc) GB"
fi
else
if [[ "$QUOTA" -gt 10000000000000000 ]]; then
QUOTA="$((QUOTA/10000000000000000)) PB"
elif [[ "$QUOTA" -gt 10000000000000 ]]; then
QUOTA="$((QUOTA/1000000000000)) TB"
else
QUOTA="$((QUOTA/1000000000)) GB"
fi
fi
}
# 更换为免费账户
change_to_free() {
if [ "$UPDATE_ACCOUNT" = client ]; then
if [ "$ACCOUNT_TYPE" = + ];then
[[ $(warp-cli --accept-tos settings) =~ WarpProxy ]] && CLIENT_PROXY=1
warp-cli --accept-tos delete >/dev/null 2>&1
[ "$CLIENT_PROXY" != 1 ] && ( ip -4 rule delete from 172.16.0.2/32 lookup 51820; ip -4 rule delete table main suppress_prefixlength 0 )
warp-cli --accept-tos register >/dev/null 2>&1
rm -f /etc/wireguard/license
sleep 5
[ "$CLIENT_PROXY" != 1 ] && ( ip -4 rule add from 172.16.0.2 lookup 51820; ip -4 route add default dev CloudflareWARP table 51820; ip -4 rule add table main suppress_prefixlength 0 )
fi
AC3=' free' && proxy_info
info " $(text_eval 27)\n $(text_eval 62) "
exit 0
else
if [ "$ACCOUNT_TYPE" = free ]; then
OPTION=n && net
exit 0
fi
until [ -e /etc/wireguard/account-temp.toml ] >/dev/null 2>&1; do
/usr/bin/wgcf register --accept-tos --config /etc/wireguard/account-temp.toml >/dev/null 2>&1 && break
done
[ -e /etc/wireguard/account-temp.toml ] && /usr/bin/wgcf generate --config /etc/wireguard/account-temp.toml --profile /etc/wireguard/profile-temp.conf >/dev/null 2>&1
[ -e /etc/wireguard/profile-temp.conf ] && sed -i "2s#.*#$(sed -ne 2p /etc/wireguard/profile-temp.conf)#; 3s#.*#$(sed -ne 3p /etc/wireguard/profile-temp.conf)#; 4s#.*#$(sed -ne 4p /etc/wireguard/profile-temp.conf)#" /etc/wireguard/wgcf.conf
rm -f /etc/wireguard/account-temp.toml /etc/wireguard/profile-temp.conf /etc/wireguard/info.log
if [ "$UPDATE_ACCOUNT" = wgcf ]; then
wg-quick down wgcf >/dev/null 2>&1
OPTION=n && net
else
sed -i "s#PrivateKey.*#PrivateKey = $(grep "PrivateKey.*" /etc/wireguard/wgcf.conf | sed "s#PrivateKey = ##g")#g" /etc/wireguard/proxy.conf
systemctl stop wireproxy; sleep 2
wireproxy_onoff
AC3=' free' && info " $(text_eval 62) "
exit 0
fi
fi
}
# 更换为 WARP+ 账户
change_to_plus() {
update_license
if [ "$UPDATE_ACCOUNT" = client ]; then
[[ "$ACCOUNT" =~ "$LICENSE" ]] && error " $(text 31) "
[[ $(warp-cli --accept-tos settings) =~ WarpProxy ]] && CLIENT_PROXY=1
warp-cli --accept-tos delete >/dev/null 2>&1
[ "$CLIENT_PROXY" != 1 ] && ( ip -4 rule delete from 172.16.0.2/32 lookup 51820; ip -4 rule delete table main suppress_prefixlength 0 )
warp-cli --accept-tos register >/dev/null 2>&1 &&
[ -n "$LICENSE" ] && warp-cli --accept-tos set-license "$LICENSE" >/dev/null 2>&1 && sleep 1 &&
ACCOUNT=$(warp-cli --accept-tos account 2>/dev/null) &&
[[ "$ACCOUNT" =~ Limited ]] && AC='+' && AC3='+' && echo "$LICENSE" > /etc/wireguard/license
CHECK_TYPE=1 && check_quota
sleep 3
if [ "$CLIENT_PROXY" != 1 ]; then
ip -4 rule add from 172.16.0.2 lookup 51820
ip -4 route add default dev CloudflareWARP table 51820
ip -4 rule add table main suppress_prefixlength 0
INTERFACE='--interface CloudflareWARP' && ip4_info
info " $(text_eval 169)\n $(text_eval 62)\n $(text 63): $QUOTA \n"
else
proxy_info
info " $(text_eval 27)\n $(text_eval 62)\n $(text 63): $QUOTA \n"
fi
else else
[ "$QUOTA" -gt 10000000000000 ] && QUOTA="$((QUOTA/1000000000000)) TB" || QUOTA="$((QUOTA/1000000000)) GB" # 如现正使用着 WARP+ 账户,并且新输入的 License 也与现一样的话,脚本退出
[ "$ACCOUNT_TYPE" = + ] && grep -q "$LICENSE" /etc/wireguard/wgcf-account.toml && error " $(text 31) "
hint "\n $(text 35) \n"
cp -f /etc/wireguard/wgcf-account.toml /etc/wireguard/account-temp.toml || exit 1
sed -i "s#license_key.*#license_key = \'$LICENSE\'#g" /etc/wireguard/account-temp.toml
wgcf update --name "$NAME" --config /etc/wireguard/account-temp.toml > /etc/wireguard/info.log 2>&1
# 升级时回显 429 说明触发反滥用风控, 还有 404 Not Found / TimeOut 等情况,可以通过不停的申请来处理; 回显 400 说明使用的终端设置超过5台, 维持原账户处理
while grep -qisE "429 Too Many Requests|404 Not Found|timeout" /etc/wireguard/info.log; do
wgcf update --name "$NAME" --config /etc/wireguard/account-temp.toml > /etc/wireguard/info.log 2>&1
done
if grep -qs "400 Bad Request" /etc/wireguard/info.log; then
rm -f /etc/wireguard/account-temp.toml /etc/wireguard/info.log
warning " $(text_eval 36) " && OPTION=n && net
exit 1
fi
wgcf generate --config /etc/wireguard/account-temp.toml --profile /etc/wireguard/profile-temp.conf >/dev/null 2>&1
sed -i "2s#.*#$(sed -ne 2p /etc/wireguard/profile-temp.conf)#; 3s#.*#$(sed -ne 3p /etc/wireguard/profile-temp.conf)#; 4s#.*#$(sed -ne 4p /etc/wireguard/profile-temp.conf)#" /etc/wireguard/wgcf.conf
rm -f /etc/wireguard/account-temp.toml /etc/wireguard/profile-temp.conf
if [ "$UPDATE_ACCOUNT" = wgcf ]; then
wg-quick down wgcf >/dev/null 2>&1
OPTION=n && net
[[ $(curl -ks4 https://www.cloudflare.com/cdn-cgi/trace | grep warp | sed "s/warp=//g") = plus || $(curl -ks6 https://www.cloudflare.com/cdn-cgi/trace | grep warp | sed "s/warp=//g") = plus ]] && AC3='+' && check_quota &&
info " $(text_eval 62)\n $(text 25): $(grep 'Device name' /etc/wireguard/info.log | awk '{ print $NF }')\n $(text 63): $QUOTA "
else
sed -i "s#PrivateKey.*#PrivateKey = $(grep "PrivateKey.*" /etc/wireguard/wgcf.conf | sed "s#PrivateKey = ##g")#g" /etc/wireguard/proxy.conf
systemctl restart wireproxy
[[ $(eval echo "\$(curl -sx socks5h://localhost:$(ss -nltp | grep wireproxy | grep -oP '127.0*\S+' | cut -d: -f2) https://www.cloudflare.com/cdn-cgi/trace)") =~ plus ]] && AC3='+' && check_quota &&
info " $(text_eval 62)\n $(text 25): $(grep 'Device name' /etc/wireguard/info.log | awk '{ print $NF }')\n $(text 63): $QUOTA "
fi
fi
}
# 更换为 Teams 账户
change_to_teams() {
input_url
if grep -qiw "y" <<< "$CONFIRM"; then
cp -f /etc/wireguard/wgcf.conf{,.bak}
echo "$TEAMS" > /etc/wireguard/info.log 2>&1
if [ "$UPDATE_ACCOUNT" = wgcf ]; then
teams_change
wg-quick down wgcf >/dev/null 2>&1
OPTION=n && net
[[ $(curl -ks4 https://www.cloudflare.com/cdn-cgi/trace | grep warp | sed "s/warp=//g") = plus || $(curl -ks6 https://www.cloudflare.com/cdn-cgi/trace | grep warp | sed "s/warp=//g") = plus ]] && rm -f /etc/wireguard/wgcf.conf.bak && AC3=' teams' && info " $(text 62) "
else
sed -i "s#PrivateKey.*#PrivateKey = $PRIVATEKEY#g" /etc/wireguard/proxy.conf
systemctl stop wireproxy; sleep 2
wireproxy_onoff
[[ $(eval echo "\$(curl -sx socks5h://localhost:$(ss -nltp | grep wireproxy | grep -oP '127.0*\S+' | cut -d: -f2) https://www.cloudflare.com/cdn-cgi/trace)") =~ plus ]] && rm -f /etc/wireguard/wgcf.conf.bak && AC3=' teams' && info " $(text 62) "
fi
fi fi
} }
# 免费 WARP 账户升级 WARP+ 账户 # 免费 WARP 账户升级 WARP+ 账户
update() { update() {
wgcf_account() { wgcf_wireproxy() {
[[ "$TRACE4$TRACE6" =~ plus ]] && check_quota && error " $(eval echo $(text 58)) "
[ ! -e /etc/wireguard/wgcf-account.toml ] && error " $(text 59) " [ ! -e /etc/wireguard/wgcf-account.toml ] && error " $(text 59) "
[ ! -e /etc/wireguard/wgcf.conf ] && error " $(text 60) " [ ! -e /etc/wireguard/wgcf.conf ] && error " $(text 60) "
[ -z "$LICENSETYPE" ] && hint "\n $(text 31) \n" && reading " $(text 50) " LICENSETYPE CHANGE_DO0() { menu; }
case "$LICENSETYPE" in CHANGE_DO1() { change_to_free; }
1 ) UPDATE_LICENSE=1 && update_license CHANGE_DO2() { change_to_plus; }
cd /etc/wireguard || exit CHANGE_DO3() { change_to_teams; }
sed -i "s#license_key.*#license_key = \"$LICENSE\"#g" wgcf-account.toml &&
wgcf update --name "$NAME" > /etc/wireguard/info.log 2>&1 &&
(wgcf generate >/dev/null 2>&1
sed -i "2s#.*#$(sed -ne 2p wgcf-profile.conf)#;3s#.*#$(sed -ne 3p wgcf-profile.conf)#;4s#.*#$(sed -ne 4p wgcf-profile.conf)#" wgcf.conf
wg-quick down wgcf >/dev/null 2>&1
net
[[ $(curl -ks4 https://www.cloudflare.com/cdn-cgi/trace | grep warp | sed "s/warp=//g") = plus || $(curl -ks6 https://www.cloudflare.com/cdn-cgi/trace | grep warp | sed "s/warp=//g") = plus ]] &&
check_quota &&
info " $(text 62)\n $(text 25):$(grep 'Device name' /etc/wireguard/info.log | awk '{ print $NF }')\n $(text 63): $QUOTA " ) || warning " $(text 36) ";;
2 ) input_url
[[ "$CONFIRM" = [Yy] ]] && (echo "$TEAMS" > /etc/wireguard/info.log 2>&1
teams_change
wg-quick down wgcf >/dev/null 2>&1; net
[[ $(curl -ks4 https://www.cloudflare.com/cdn-cgi/trace | grep warp | sed "s/warp=//g") = plus || $(curl -ks6 https://www.cloudflare.com/cdn-cgi/trace | grep warp | sed "s/warp=//g") = plus ]] && info " $(text 128) ");;
* ) warning " $(text 51) [1-2] "; sleep 1; unset LICENSETYPE; update;;
esac
}
client_account() { # 判断现 WGCF 账户类型: free, plus, teams,如果是 plus,查 WARP+ 余额流量
[ "$ARCHITECTURE" = arm64 ] && error " $(text 101) " [ -z "$ACCOUNT_TYPE" ] && ACCOUNT_TYPE=free && CHANGE_TYPE=$(text 174) &&
ACCOUNT=$(warp-cli --accept-tos account 2>/dev/null) [ -e /etc/wireguard/info.log ] && ACCOUNT_TYPE=teams && CHANGE_TYPE=$(text 175) &&
[[ "$ACCOUNT" =~ Limited ]] && CHECK_TYPE=1 && check_quota && error " $(eval echo $(text 97)) " grep -q 'Device name' /etc/wireguard/info.log && ACCOUNT_TYPE='+' && CHANGE_TYPE=$(text 176) && check_quota && PLUS_QUOTA="$(text 63): $QUOTA"
update_license
warp-cli --accept-tos set-license "$LICENSE" >/dev/null 2>&1; sleep 1 [ -z "$CHOOSE_TYPE" ] && hint "\n $(text_eval 173) \n" && reading " $(text 50) " CHOOSE_TYPE
ACCOUNT=$(warp-cli --accept-tos account 2>/dev/null) # 输入必须是数字且少于等于3
if [[ "$ACCOUNT" =~ 'Limited' ]]; then if [[ "$CHOOSE_TYPE" = [0-3] ]]; then
echo "$LICENSE" >/etc/wireguard/license CHANGE_DO$CHOOSE_TYPE
CHECK_TYPE=1 && check_quota
info " $(text 62)\n $(text 63): $QUOTA "
else else
warning " $(text 36) " warning " $(text 51) [0-3] " && unset CHOOSE_TYPE && sleep 1 && update
fi fi
} }
wireproxy_account() { wireproxy_account() {
[[ $(eval echo "\$(curl -sx socks5h://localhost:$(ss -nltp | grep wireproxy | grep -oP '127.0*\S+' | cut -d: -f2) https://www.cloudflare.com/cdn-cgi/trace)") =~ plus ]] && check_quota && error " $(text 58) " UPDATE_ACCOUNT=wireproxy
[ ! -e /etc/wireguard/wgcf-account.toml ] && error " $(text 59) " wgcf_wireproxy
[ ! -e /etc/wireguard/wgcf.conf ] && error " $(text 60) " }
[ -z "$LICENSETYPE" ] && hint " $(text 31) " && reading " $(text 50) " LICENSETYPE wgcf_account() {
case "$LICENSETYPE" in UPDATE_ACCOUNT=wgcf
1 ) UPDATE_LICENSE=1 && update_license wgcf_wireproxy
cd /etc/wireguard || exit }
sed -i "s#license_key.*#license_key = \"$LICENSE\"#g" wgcf-account.toml &&
wgcf update --name "$NAME" > /etc/wireguard/info.log 2>&1 && client_account() {
(wgcf generate >/dev/null 2>&1 UPDATE_ACCOUNT=client
sed -i "2s#.*#$(sed -ne 2p wgcf-profile.conf)#;3s#.*#$(sed -ne 3p wgcf-profile.conf)#;4s#.*#$(sed -ne 4p wgcf-profile.conf)#" wgcf.conf [ "$ARCHITECTURE" = arm64 ] && error " $(text 101) "
sed -i "s#PrivateKey.*#PrivateKey = $(grep "PrivateKey.*" /etc/wireguard/wgcf.conf | sed "s#PrivateKey = ##g")#g" proxy.conf
systemctl restart wireproxy CHANGE_DO0() { menu; }
[[ $(eval echo "\$(curl -sx socks5h://localhost:$(ss -nltp | grep wireproxy | grep -oP '127.0*\S+' | cut -d: -f2) https://www.cloudflare.com/cdn-cgi/trace)") =~ plus ]] && CHANGE_DO1() { change_to_free; }
check_quota && CHANGE_DO2() { change_to_plus; }
info " $(text 62)\n $(text 25): $(grep 'Device name' /etc/wireguard/info.log | awk '{ print $NF }')\n $(text 63): $QUOTA " ) || warning " $(text 36) ";;
# 判断现 WGCF 账户类型: free, plus,如果是 plus,查 WARP+ 余额流量
2 ) input_url ACCOUNT_TYPE=free && CHANGE_TYPE=$(text 177)
[[ "$CONFIRM" = [Yy] ]] && (echo "$TEAMS" > /etc/wireguard/info.log 2>&1 ACCOUNT=$(warp-cli --accept-tos account 2>/dev/null)
sed -i "s#PrivateKey.*#PrivateKey = $PRIVATEKEY#g" /etc/wireguard/proxy.conf [[ "$ACCOUNT" =~ Limited ]] && ACCOUNT_TYPE='+' && CHANGE_TYPE=$(text 178) && CHECK_TYPE=1 && check_quota && PLUS_QUOTA="$(text 63): $QUOTA"
systemctl restart wireproxy
[[ $(eval echo "\$(curl -sx socks5h://localhost:$(ss -nltp | grep wireproxy | grep -oP '127.0*\S+' | cut -d: -f2) https://www.cloudflare.com/cdn-cgi/trace)") =~ plus ]] && info " $(text 128) ");; [ -z "$CHOOSE_TYPE" ] && hint "\n $(text_eval 173) \n" && reading " $(text 50) " CHOOSE_TYPE
# 输入必须是数字且少于等于2
* ) warning " $(text 51) [1-2] "; sleep 1; unset LICENSETYPE; update;; if [[ "$CHOOSE_TYPE" = [0-2] ]]; then
esac CHANGE_DO$CHOOSE_TYPE
else
warning " $(text 51) [0-2] " && unset CHOOSE_TYPE && sleep 1 && update
fi
} }
# 根据 WARP interface 、 Client 和 WirePorxy 的安装情况判断升级的对象 # 根据 WARP interface 、 Client 和 WirePorxy 的安装情况判断升级的对象
@ -1912,16 +2035,22 @@ menu() {
info " $(text 17):$VERSION\t $(text 18):$(text 1)\n $(text 19):\n\t $(text 20):$SYS\n\t $(text 21):$(uname -r)\n\t $(text 22):$ARCHITECTURE\n\t $(text 23):$VIRT " info " $(text 17):$VERSION\t $(text 18):$(text 1)\n $(text 19):\n\t $(text 20):$SYS\n\t $(text 21):$(uname -r)\n\t $(text 22):$ARCHITECTURE\n\t $(text 23):$VIRT "
info "\t IPv4: $WAN4 $WARPSTATUS4 $COUNTRY4 $ASNORG4 " info "\t IPv4: $WAN4 $WARPSTATUS4 $COUNTRY4 $ASNORG4 "
info "\t IPv6: $WAN6 $WARPSTATUS6 $COUNTRY6 $ASNORG6 " info "\t IPv6: $WAN6 $WARPSTATUS6 $COUNTRY6 $ASNORG6 "
[[ "$TRACE4$TRACE6" =~ plus ]] && info "\t $(text_eval 114)\t $PLUSINFO " case "$TRACE4$TRACE6" in
[[ "$TRACE4$TRACE6" =~ on ]] && info "\t $(text 115) " *plus* ) info "\t $(text_eval 114)\t $PLUSINFO ";;
*on* ) info "\t $(text 115) ";;
esac
[ "$PLAN" != 3 ] && info "\t $(text 116) " [ "$PLAN" != 3 ] && info "\t $(text 116) "
[ "$CLIENT" = 0 ] && info "\t $(text 112) " case "CLIENT" in
[ "$CLIENT" = 2 ] && info "\t $(text_eval 113) " 0 ) info "\t $(text 112) ";;
[ "$CLIENT" = 3 ] && info "\t WARP$AC $(text 24)\t $(text_eval 27) " 2 ) info "\t $(text_eval 113) ";;
[ "$CLIENT" = 5 ] && info "\t WARP$AC $(text 24)\t $(text_eval 169) " 3 ) info "\t WARP$AC $(text 24)\t $(text_eval 27) ";;
[ "$WIREPROXY" = 0 ] && info "\t $(text 160) " 5 ) info "\t WARP$AC $(text 24)\t $(text_eval 169) ";;
[ "$WIREPROXY" = 2 ] && info "\t $(text 161) " esac
[ "$WIREPROXY" = 3 ] && info "\t WARP$AC2 $(text 159)\t $(text_eval 162) " case "$WIREPROXY" in
0 ) info "\t $(text 160) ";;
2 ) info "\t $(text 161) ";;
3 ) info "\t WARP$AC2 $(text 159)\t $(text_eval 162) ";;
esac
grep -q '+' <<< $AC$AC2 && info "\t $(text 63): $QUOTA " grep -q '+' <<< $AC$AC2 && info "\t $(text 63): $QUOTA "
echo -e "\n======================================================================================================================\n" echo -e "\n======================================================================================================================\n"
info " 1. $OPTION1\n 2. $OPTION2\n 3. $OPTION3\n 4. $OPTION4\n 5. $OPTION5\n 6. $OPTION6\n 7. $OPTION7\n 8. $OPTION8\n 9. $OPTION9 \n 10. $OPTION10\n 11. $OPTION11\n 12. $OPTION12\n 13. $OPTION13\n 14. $OPTION14\n 0. $OPTION0\n " info " 1. $OPTION1\n 2. $OPTION2\n 3. $OPTION3\n 4. $OPTION4\n 5. $OPTION5\n 6. $OPTION6\n 7. $OPTION7\n 8. $OPTION8\n 9. $OPTION9 \n 10. $OPTION10\n 11. $OPTION11\n 12. $OPTION12\n 13. $OPTION13\n 14. $OPTION14\n 0. $OPTION0\n "
@ -1941,8 +2070,8 @@ menu() {
# 参数选项 URL 或 License 或转换 WARP 单双栈 # 参数选项 URL 或 License 或转换 WARP 单双栈
if [ "$2" != '[lisence]' ]; then if [ "$2" != '[lisence]' ]; then
if [[ $2 =~ 'http' ]]; then LICENSETYPE=2 && URL=$2 if [[ $2 =~ 'http' ]]; then CHOOSE_TYPE=3 && URL=$2
elif [[ $2 =~ ^[A-Z0-9a-z]{8}-[A-Z0-9a-z]{8}-[A-Z0-9a-z]{8}$ ]]; then LICENSETYPE=1 && LICENSE=$2 elif [[ $2 =~ ^[A-Z0-9a-z]{8}-[A-Z0-9a-z]{8}-[A-Z0-9a-z]{8}$ ]]; then CHOOSE_TYPE=2 && LICENSE=$2
elif [[ $2 = [46Dd] ]]; then SWITCHCHOOSE=$(tr '[:lower:]' '[:upper:]' <<< "$2") elif [[ $2 = [46Dd] ]]; then SWITCHCHOOSE=$(tr '[:lower:]' '[:upper:]' <<< "$2")
elif [[ $2 =~ ^[A-Za-z]{2}$ ]]; then EXPECT=$2 elif [[ $2 =~ ^[A-Za-z]{2}$ ]]; then EXPECT=$2
fi fi

Loading…
Cancel
Save