mirror of
https://gitlab.com/fscarmen/warp.git
synced 2026-06-15 03:25:42 +08:00
v3.2.2 Restore Reserved configuration for Warp usage.
This commit is contained in:
@@ -22,9 +22,11 @@
|
||||
* * *
|
||||
|
||||
## 更新信息
|
||||
2026.02.22 mehu.sh v3.2.1 / warp-go.sh v1.3.1 1. 移除系统版本号判断,以支持滚动发行版; 2. cloudflare.now.cc -> cloudflare.nyc.mn
|
||||
2026.02.25 menu.sh v3.2.2 Restore Reserved configuration for Warp usage; 由于部分地区使用 Warp,仍需保留 Reserved 配置,因此恢复之前的配置文件
|
||||
|
||||
2026.01.02 mehu.sh v3.2.0 / warp-go.sh v1.3.0 1. 账户管理优化: 顺应 Cloudflare 对 WARP 账户政策的调整,移除了已过时的 WARP+ 和 Teams 账户类型,精简了安装流程及账户升级功能(受影响命令:warp a); 2. 修复卸载 Bug: 修正了 Linux Client 在 Proxy 模式下,卸载程序后误操作路由规则而导致的网络故障问题; 3. 性能提升: 引入自建 IP API 替代第三方接口,显著提升了 IP 信息获取和脚本初始化的速度; 4. 脚本清理: 移除了部分不再使用的冗余脚本提示语及过时代码块,使输出界面更加简洁; 5. 刷 IP 逻辑: 将 Netflix 解锁检测的默认首选项从 IPv4 调整为 IPv6
|
||||
2026.02.22 menu.sh v3.2.1 / warp-go.sh v1.3.1 1. 移除系统版本号判断,以支持滚动发行版; 2. cloudflare.now.cc -> cloudflare.nyc.mn
|
||||
|
||||
2026.01.02 menu.sh v3.2.0 / warp-go.sh v1.3.0 1. 账户管理优化: 顺应 Cloudflare 对 WARP 账户政策的调整,移除了已过时的 WARP+ 和 Teams 账户类型,精简了安装流程及账户升级功能(受影响命令:warp a); 2. 修复卸载 Bug: 修正了 Linux Client 在 Proxy 模式下,卸载程序后误操作路由规则而导致的网络故障问题; 3. 性能提升: 引入自建 IP API 替代第三方接口,显著提升了 IP 信息获取和脚本初始化的速度; 4. 脚本清理: 移除了部分不再使用的冗余脚本提示语及过时代码块,使输出界面更加简洁; 5. 刷 IP 逻辑: 将 Netflix 解锁检测的默认首选项从 IPv4 调整为 IPv6
|
||||
|
||||
2025.09.10 menu.sh v3.1.8 增强脚本对 Arch Linux 及 EndeavourOS 系统的兼容性
|
||||
|
||||
|
||||
@@ -18,26 +18,26 @@ fetch_account_information() {
|
||||
TOKEN=$(grep 'warp_token' $REGISTER_PATH | sed "s#.*>\(.*\)<.*#\1#")
|
||||
CLIENT_ID=$(grep 'client_id' $REGISTER_PATH | sed "s#.*client_id":"\([^&]\{4\}\)&.*#\1#")
|
||||
|
||||
# 官方 api 文件
|
||||
# 官方 api 文件,默认存放路径为 /etc/wireguard/warp-account.conf
|
||||
elif grep -q 'client_id' $REGISTER_PATH; then
|
||||
ID=$(grep -m1 '"id' "$REGISTER_PATH" | cut -d\" -f4)
|
||||
TOKEN=$(grep '"token' "$REGISTER_PATH" | cut -d\" -f4)
|
||||
CLIENT_ID=$(grep 'client_id' "$REGISTER_PATH" | cut -d\" -f4)
|
||||
ID=$(awk -F '"' '/"id"/ {print $4; exit}' "$REGISTER_PATH")
|
||||
TOKEN=$(awk -F '"' '/"token"/ {print $4; exit}' "$REGISTER_PATH")
|
||||
CLIENT_ID=$(awk -F '"' '/client_id/ {print $4; exit}' "$REGISTER_PATH")
|
||||
|
||||
# client 文件,默认存放路径为 /var/lib/cloudflare-warp/reg.json
|
||||
elif grep -q 'registration_id' $REGISTER_PATH; then
|
||||
ID=$(cut -d\" -f4 "$REGISTER_PATH")
|
||||
TOKEN=$(cut -d\" -f8 "$REGISTER_PATH")
|
||||
ID=$(sed 's/.*registration_id":"\([^"]\+\)".*/\1/' "$REGISTER_PATH")
|
||||
TOKEN=$(sed 's/.*api_token":"\([^"]\+\)".*/\1/' "$REGISTER_PATH")
|
||||
|
||||
# wgcf 文件,默认存放路径为 /etc/wireguard/wgcf-account.toml
|
||||
elif grep -q 'access_token' $REGISTER_PATH; then
|
||||
ID=$(grep 'device_id' "$REGISTER_PATH" | cut -d\' -f2)
|
||||
TOKEN=$(grep 'access_token' "$REGISTER_PATH" | cut -d\' -f2)
|
||||
ID=$(awk -F"'" '/device_id/ {print $2; exit}' "$REGISTER_PATH")
|
||||
TOKEN=$(awk -F"'" '/access_token/ {print $2; exit}' "$REGISTER_PATH")
|
||||
|
||||
# warp-go 文件,默认存放路径为 /opt/warp-go/warp.conf
|
||||
elif grep -q 'PrivateKey' $REGISTER_PATH; then
|
||||
ID=$(awk -F' *= *' '/^Device/{print $2}' "$REGISTER_PATH")
|
||||
TOKEN=$(awk -F' *= *' '/^Token/{print $2}' "$REGISTER_PATH")
|
||||
ID=$(awk '/^Device/ {print $NF; exit}' "$REGISTER_PATH")
|
||||
TOKEN=$(awk '/^Token/ {print $NF; exit}' "$REGISTER_PATH")
|
||||
|
||||
else
|
||||
echo " There is no registered account information, please check the content. " && exit 1
|
||||
@@ -66,9 +66,9 @@ register_account() {
|
||||
PRIVATE_KEY=$(wg genkey)
|
||||
PUBLIC_KEY=$(wg pubkey <<<"$PRIVATE_KEY")
|
||||
elif [[ -x "$(type -p openssl)" && -x "$(type -p xxd)" && -x "$(type -p base64)" ]]; then
|
||||
KEY_PAIR=$(openssl genpkey -algorithm X25519 -text)
|
||||
PRIVATE_KEY=$(echo $KEY_PAIR | sed 's/.*priv:\(.*\)pub.*/\1/' | xxd -r -p | base64)
|
||||
PUBLIC_KEY=$(echo $KEY_PAIR | sed 's/.*pub://' | xxd -r -p | base64)
|
||||
KEY_PAIR=$(openssl genpkey -algorithm X25519 | openssl pkey -text -noout)
|
||||
PRIVATE_KEY=$(echo $KEY_PAIR | sed 's/.*priv:\(.*\)pub.*/\1/; s/ //g' | xxd -r -p | base64)
|
||||
PUBLIC_KEY=$(echo $KEY_PAIR | sed 's/.*pub://; s/ //g'| xxd -r -p | base64)
|
||||
else
|
||||
WG_API=$(curl -m5 -sSL "https://warp.cloudflare.now.cc/?run=key&format=yaml")
|
||||
PRIVATE_KEY=$(awk 'NR==2 {print $2}' <<<"$WG_API")
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# 当前脚本版本号
|
||||
VERSION='3.2.1'
|
||||
VERSION='3.2.2'
|
||||
|
||||
# 环境变量用于在Debian或Ubuntu操作系统中设置非交互式(noninteractive)安装模式
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
@@ -13,8 +13,8 @@ trap cleanup_resources EXIT INT TERM
|
||||
|
||||
E[0]="\n Language:\n 1. English (default) \n 2. 简体中文"
|
||||
C[0]="${E[0]}"
|
||||
E[1]="1. Remove OS version checks to support rolling releases; 2. cloudflare.now.cc -> cloudflare.nyc.mn"
|
||||
C[1]="1. 移除系统版本号判断,以支持滚动发行版; 2. cloudflare.now.cc -> cloudflare.nyc.mn"
|
||||
E[1]="Restore Reserved configuration for Warp usage"
|
||||
C[1]="由于部分地区使用 Warp,仍需保留 Reserved 配置,因此恢复之前的配置文件"
|
||||
E[2]="The script must be run as root, you can enter sudo -i and then download and run again. Feedback: [https://github.com/fscarmen/warp-sh/issues]"
|
||||
C[2]="必须以root方式运行脚本,可以输入 sudo -i 后重新下载运行,问题反馈:[https://github.com/fscarmen/warp-sh/issues]"
|
||||
E[3]="The TUN module is not loaded. You should turn it on in the control panel. Ask the supplier for more help. Feedback: [https://github.com/fscarmen/warp-sh/issues]"
|
||||
@@ -440,32 +440,16 @@ warp_api(){
|
||||
local FILE_PATH=$2
|
||||
|
||||
if [ -s "$FILE_PATH" ]; then
|
||||
# Teams 账户文件
|
||||
if grep -q 'xml version' $FILE_PATH; then
|
||||
local WARP_DEVICE_ID=$(grep 'correlation_id' $FILE_PATH | sed "s#.*>\(.*\)<.*#\1#")
|
||||
local WARP_TOKEN=$(grep 'warp_token' $FILE_PATH | sed "s#.*>\(.*\)<.*#\1#")
|
||||
local WARP_CLIENT_ID=$(grep 'client_id' $FILE_PATH | sed "s#.*client_id":"\([^&]\{4\}\)&.*#\1#")
|
||||
|
||||
# 官方 api 文件
|
||||
elif grep -q 'client_id' $FILE_PATH; then
|
||||
local WARP_DEVICE_ID=$(grep -m1 '"id' "$FILE_PATH" | cut -d\" -f4)
|
||||
local WARP_TOKEN=$(grep '"token' "$FILE_PATH" | cut -d\" -f4)
|
||||
local WARP_CLIENT_ID=$(grep 'client_id' "$FILE_PATH" | cut -d\" -f4)
|
||||
# 官方 api 文件,默认存放路径为 /etc/wireguard/warp-account.conf
|
||||
if grep -q 'client_id' $FILE_PATH; then
|
||||
local WARP_DEVICE_ID=$(awk -F '"' '/"id"/ {print $4; exit}' "$FILE_PATH")
|
||||
local WARP_TOKEN=$(awk -F '"' '/"token"/ {print $4; exit}' "$FILE_PATH")
|
||||
local WARP_CLIENT_ID=$(awk -F '"' '/client_id/ {print $4; exit}' "$FILE_PATH")
|
||||
|
||||
# client 文件,默认存放路径为 /var/lib/cloudflare-warp/reg.json
|
||||
elif grep -q 'registration_id' $FILE_PATH; then
|
||||
local WARP_DEVICE_ID=$(cut -d\" -f4 "$FILE_PATH")
|
||||
local WARP_TOKEN=$(cut -d\" -f8 "$FILE_PATH")
|
||||
|
||||
# wgcf 文件,默认存放路径为 /etc/wireguard/wgcf-account.toml
|
||||
elif grep -q 'access_token' $FILE_PATH; then
|
||||
local WARP_DEVICE_ID=$(grep 'device_id' "$FILE_PATH" | cut -d\' -f2)
|
||||
local WARP_TOKEN=$(grep 'access_token' "$FILE_PATH" | cut -d\' -f2)
|
||||
|
||||
# warp-go 文件,默认存放路径为 /opt/warp-go/warp.conf
|
||||
elif grep -q 'PrivateKey' $FILE_PATH; then
|
||||
local WARP_DEVICE_ID=$(awk -F' *= *' '/^Device/{print $2}' "$FILE_PATH")
|
||||
local WARP_TOKEN=$(awk -F' *= *' '/^Token/{print $2}' "$FILE_PATH")
|
||||
local WARP_DEVICE_ID=$(sed 's/.*registration_id":"\([^"]\+\)".*/\1/' "$FILE_PATH")
|
||||
local WARP_TOKEN=$(sed 's/.*api_token":"\([^"]\+\)".*/\1/' "$FILE_PATH")
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -866,6 +850,12 @@ change_ip() {
|
||||
warp_restart() {
|
||||
warning " $(text 55) "
|
||||
wg | grep -q '^interface:' && wg-quick down warp >/dev/null 2>&1
|
||||
warp_api "cancel" "/etc/wireguard/warp-account.conf" >/dev/null 2>&1
|
||||
warp_api "register" > /etc/wireguard/warp-account.conf 2>/dev/null
|
||||
local PRIVATEKEY="$(grep 'private_key' /etc/wireguard/warp-account.conf | cut -d\" -f4)"
|
||||
local ADDRESS6="$(grep '"v6.*"$' /etc/wireguard/warp-account.conf | cut -d\" -f4)"
|
||||
local CLIENT_ID="$(awk '/"reserved": \[/{flag=1; printf "["; next} flag && /\]/{printf "]"; flag=0; print ""; next} flag {gsub(/[ \t\n\r]/,""); printf "%s", $0}' /etc/wireguard/warp-account.conf)"
|
||||
[ -s /etc/wireguard/warp.conf ] && sed -i "s#\(PrivateKey[ ]\+=[ ]\+\).*#\1$PRIVATEKEY#g; s#\(Address[ ]\+=[ ]\+\).*\(/128$\)#\1$ADDRESS6\2#g; s#\(.*Reserved[ ]\+=[ ]\+\).*#\1$CLIENT_ID#g" /etc/wireguard/warp.conf
|
||||
ss -nltp | grep dnsmasq >/dev/null 2>&1 && systemctl restart dnsmasq >/dev/null 2>&1
|
||||
wg-quick up warp >/dev/null 2>&1
|
||||
sleep $j
|
||||
@@ -1855,11 +1845,12 @@ install() {
|
||||
if [ -s /etc/wireguard/warp-account.conf ]; then
|
||||
cat > /etc/wireguard/warp.conf <<EOF
|
||||
[Interface]
|
||||
PrivateKey = $(grep 'private_key' /etc/wireguard/warp-account.conf | cut -d\" -f4)
|
||||
PrivateKey = $(awk -F'"' '/"private_key"/ {print $4; exit}' /etc/wireguard/warp-account.conf)
|
||||
Address = 172.16.0.2/32
|
||||
Address = $(grep '"v6.*"$' /etc/wireguard/warp-account.conf | cut -d\" -f4)/128
|
||||
Address = $(awk -F'"' '/"v6"[[:space:]]*:/ && $4 !~ /^\[/ {print $4; exit}' /etc/wireguard/warp-account.conf)/128
|
||||
DNS = 8.8.8.8
|
||||
MTU = 1280
|
||||
#Reserved = $(awk '/"reserved": \[/{flag=1; printf "["; next} flag && /\]/{printf "]"; flag=0; print ""; next} flag {gsub(/[ \t\n\r]/,""); printf "%s", $0}' /etc/wireguard/warp-account.conf)
|
||||
#Table = off
|
||||
#PostUp = /etc/wireguard/NonGlobalUp.sh
|
||||
#PostDown = /etc/wireguard/NonGlobalDown.sh
|
||||
|
||||
Reference in New Issue
Block a user