diff --git a/old/t.sh b/old/t.sh index 5ea23fd..6449dd6 100644 --- a/old/t.sh +++ b/old/t.sh @@ -68,6 +68,44 @@ T[E29]="New features" T[C29]="功能新增" T[E30]="Upgrade failed. Feedback:[https://github.com/fscarmen/warp/issues]" T[C30]="升级失败,问题反馈:[https://github.com/fscarmen/warp/issues]" +T[E31]="WARP+ or Teams account is working now. No need to upgrade." +T[C31]="已经是 WARP+ 或者 Teams 账户,不需要升级" +T[E32]="Cannot find the account file: /etc/wireguard/wgcf-account.toml, you can reinstall with the WARP+ License" +T[C32]="找不到账户文件:/etc/wireguard/wgcf-account.toml,可以卸载后重装,输入 WARP+ License" +T[E33]="Cannot find the configuration file: /etc/wireguard/wgcf.conf, you can reinstall with the WARP+ License" +T[C33]="找不到配置文件: /etc/wireguard/wgcf.conf,可以卸载后重装,输入 WARP+ Licens" +T[E34]="\n 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)\n" +T[C34]="\n 1.使用 WARP+ license 升级\n 2.使用 Teams 升级 (你须事前把 Teams 文件上传到私密存储空间,比如:gist.github.com )\n" +T[E35]="Successfully upgraded to a WARP+ account" +T[C35]="已升级为 WARP+ 账户" +T[E36]="Device name" +T[C36]="设备名" +T[E37]="WARP+ quota" +T[C37]="剩余流量" +T[E38]="The upgrade failed, WARP+ account error or more than 5 devices have been activated. Free WARP account to continu." +T[C38]="升级失败,WARP+ 账户错误或者已激活超过5台设备,自动更换免费 WARP 账户继续" +T[E39]="Successfully upgraded to a WARP Teams account" +T[C39]="已升级为 WARP Teams 账户" +T[E40]="Please enter the correct number" +T[C40]="请输入正确数字" +T[E41]="Please Input WARP+ license:" +T[C41]="请输入WARP+ License:" +T[E42]="License should be 26 characters, please re-enter WARP+ License. Otherwise press Enter to continue. \(\${i} times remaining\): " +T[C42]="License 应为26位字符,请重新输入 WARP+ License \(剩余\${i}次\): " +T[E43]="Please customize the WARP+ device name (Default is [WARP] if left blank):" +T[C43]="请自定义 WARP+ 设备名 (如果不输入,默认为 [WARP]):" +T[E44]="Please input Teams file URL (To use the one provided by the script if left blank):" +T[C44]="请输入 Teams 文件 URL (如果留空,则使用脚本提供的):" +T[E45]="( match √ )" +T[C45]="( 符合 √ )" +T[E46]="( mismatch X )" +T[C46]="( 不符合 X )" +T[E47]="\\\n 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\\\n" +T[C47]="\\\n 请确认Teams 信息\\\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\\\n" +T[E48]="comfirm please enter [y] , and other keys to use free account:" +T[C48]="确认请按 y ,其他按键则使用免费账户:" + + # 自定义字体彩色,read 函数,友道翻译函数 @@ -159,7 +197,7 @@ net(){ # WARP 开关,先检查是否已安装,再根据当前状态转向相反状态 onoff(){ - ! type -P wg-quick >/dev/null 2>&1 && red " ${T[${L}21]} " && exit 1 + ! type -p wg-quick >/dev/null 2>&1 && red " ${T[${L}21]} " && exit 1 [[ -n $(sudo wg 2>/dev/null) ]] && (wg-quick down wgcf >/dev/null 2>&1; green " ${T[${L}22]} ") || net } @@ -168,7 +206,7 @@ ver(){ sudo wget -N -P /etc/wireguard https://raw.githubusercontents.com/fscarmen/warp/main/pc/mac.sh chmod +x /etc/wireguard/mac.sh sudo ln -sf /etc/wireguard/mac.sh /usr/local/bin/warp - green " ${T[${L}28]}:$(grep ^VERSION /etc/wireguard/mac.sh | sed "s/.*=//g") ${T[${L}29]}:$(grep "T\[${L}1]" /etc/wireguard/menu.sh | cut -d \" -f2) " || red " ${T[${L}30]} " + green " ${T[${L}28]}:$(grep ^VERSION /etc/wireguard/mac.sh | sed "s/.*=//g") ${T[${L}29]}:$(grep "T\[${L}1]" /etc/wireguard/mac.sh | cut -d \" -f2) " || red " ${T[${L}30]} " exit } @@ -186,7 +224,7 @@ uninstall(){ install(){ # 进入工作目录 - cd /usr/local/bin + cd /usr/local/bin || exit sudo mkdir -p /etc/wireguard/ >/dev/null 2>&1 # 输入 Warp+ 账户(如有),限制位数为空或者26位以防输入错误 @@ -204,12 +242,12 @@ install(){ start=$(date +%s) # 安装 brew 和 wireguard-tools - green " \n${T[${L}10]}\n " + green "\n ${T[${L}10]}\n " ! type -p brew >/dev/null 2>&1 && /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" ! type -p wg >/dev/null 2>&1 && brew install wireguard-tools # 判断 wgcf 的最新版本并安装 - green " \n${T[${L}11]}\n " + green "\n ${T[${L}11]}\n " latest=$(curl -fsSL "https://api.github.com/repos/ViRb3/wgcf/releases/latest" | grep "tag_name" | head -n 1 | cut -d : -f2 | sed 's/[ \"v,]//g') latest=${latest:-'2.2.13'} curl -m8 -o /usr/local/bin/wgcf https://raw.githubusercontents.com/fscarmen/warp/main/wgcf/wgcf_"$latest"_darwin_amd64 @@ -240,12 +278,13 @@ install(){ # 把 wgcf-profile.conf 复制到/etc/wireguard/ 并命名为 wgcf.conf sudo cp -f wgcf-profile.conf /etc/wireguard/wgcf.conf - sudo cp -f /usr/local/bin/t.sh /etc/wireguard/mac.sh + sudo cp -f wgcf-profile.conf /etc/wireguard/wgcf-profile.conf + sudo cp -f /usr/local/bin/mac.sh /etc/wireguard/mac.sh ln -sf /etc/wireguard/mac.sh /usr/local/bin/warp && green " ${T[${L}27]} " && chmod +x /usr/local/bin/warp echo "$L" 2>&1 | sudo tee /etc/wireguard/language # 自动刷直至成功( warp bug,有时候获取不了ip地址) - green " \n${T[${L}12]}\n " + green "\n ${T[${L}12]}\n " unset IP4 IP6 WAN4 WAN6 COUNTRY4 COUNTRY6 ASNORG4 ASNORG6 TRACE4 TRACE6 PLUS4 PLUS6 WARPSTATUS4 WARPSTATUS6 net @@ -265,6 +304,66 @@ install(){ rm -f mac.sh wgcf-account.toml wgcf-profile.conf } +# 升级 WARP+ 账户(如有),限制位数为空或者26位以防输入错误,WARP interface 可以自定义设备名(不允许字符串间有空格,如遇到将会以_代替) +update_license(){ + [[ -z $LICENSE ]] && reading " ${T[${L}41]} " LICENSE + i=5 + until [[ $LICENSE =~ ^[A-Z0-9a-z]{8}-[A-Z0-9a-z]{8}-[A-Z0-9a-z]{8}$ ]] + do (( i-- )) || true + [[ $i = 0 ]] && red " ${T[${L}7]} " && exit 1 || reading " $(eval echo "${T[${L}42]}") " LICENSE + done + [[ -z $NAME ]] && reading " ${T[${L}43]} " NAME + [[ -n $NAME ]] && NAME="${NAME//[[:space:]]/_}" || NAME=${NAME:-'WARP'} +} + +# 输入 Teams 账户 URL(如有) +input_url(){ + [[ -z $URL ]] && reading " ${T[${L}44]} " URL + URL=${URL:-'https://gist.githubusercontent.com/fscarmen/56aaf02d743551737c9973b8be7a3496/raw/61bf63e68e4e91152545679b8f11c72cac215128/2021.12.21'} + TEAMS=$(curl -sSL "$URL" | sed "s/\"/\"/g") + PRIVATEKEY=$(expr "$TEAMS" : '.*private_key">\([^<]*\).*') + PUBLICKEY=$(expr "$TEAMS" : '.*public_key":"\([^&]*\).*') + ADDRESS4=$(expr "$TEAMS" : '.*v4":"\(172[^&]*\).*') + ADDRESS6=$(expr "$TEAMS" : '.*v6":"\([^[&]*\).*') + [[ $PRIVATEKEY =~ ^[A-Z0-9a-z/+]{43}=$ ]] && MATCH1=${T[${L}45]} || MATCH1=${T[${L}46]} + [[ $PUBLICKEY =~ ^[A-Z0-9a-z/+]{43}=$ ]] && MATCH2=${T[${L}45]} || MATCH2=${T[${L}46]} + [[ $ADDRESS4 =~ ^172.16.[01].[0-9]{1,3}$ ]] && MATCH3=${T[${L}45]} || MATCH3=${T[${L}46]} + [[ $ADDRESS6 =~ ^fd01(:[0-9a-f]{0,4}){7}$ ]] && MATCH4=${T[${L}45]} || MATCH4=${T[${L}46]} + yellow " $(eval echo "${T[${L}47]}") " && reading " ${T[${L}48]} " CONFIRM +} + +update(){ + # 不符合条件的脚本退出 + ! type -p wg-quick >/dev/null 2>&1 && red " ${T[${L}21]} " && exit 1 + [[ ! -e /etc/wireguard/wgcf-account.toml ]] && red " ${T[${L}32]} " && exit 1 + [[ ! -e /etc/wireguard/wgcf.conf ]] && red " ${T[${L}33]} " && exit 1 + ip4_info; [[ $TRACE4 =~ plus ]] && red " ${T[${L}31]} " && exit 1 + ip6_info; [[ $TRACE6 =~ plus ]] && red " ${T[${L}31]} " && exit 1 + + # 选择账户升级的类型 + [[ -z $LICENSETYPE ]] && yellow " ${T[${L}34]}" && reading " ${T[${L}3]} " LICENSETYPE + case $LICENSETYPE in + 1 ) update_license + cd /etc/wireguard || exit + sed -i '' "s#license_key.*#license_key = \"$LICENSE\"#g" wgcf-account.toml && + wgcf update --name "$NAME" | sudo tee /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 ]] && + green " ${T[${L}35]}\n ${T[${L}36]}:$(grep 'Device name' /etc/wireguard/info.log | awk '{ print $NF }')\n ${T[${L}37]}:$(grep Quota /etc/wireguard/info.log | awk '{ print $(NF-1), $NF }')" ) || red " ${T[${L}38]} ";; + + 2 ) input_url + [[ $CONFIRM = [Yy] ]] && (echo "$TEAMS" | sudo tee /etc/wireguard/info.log 2>&1 + sed -i '' "s#PrivateKey.*#PrivateKey = $PRIVATEKEY#g;s#Address.*32#Address = ${ADDRESS4}/32#g;s#Address.*128#Address = ${ADDRESS6}/128#g;s#PublicKey.*#PublicKey = $PUBLICKEY#g" /etc/wireguard/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 ]] && green " ${T[${L}39]} ");; + + * ) red " ${T[${L}40]} [1-2] "; sleep 1; update + esac +} + # 传参选项 OPTION [[ $1 != '[option]' ]] && OPTION=$(tr '[:upper:]' '[:lower:]' <<< "$1") @@ -276,6 +375,7 @@ e ) L=E; check_operating_system; install;; c ) L=C; check_operating_system; install;; u ) uninstall;; v ) ver;; +a ) update;; n ) net;; o ) onoff;; * ) help;;