From f8a340fab1433b8f5de94455b00f3db32b666e6e Mon Sep 17 00:00:00 2001 From: fscarmen <62703343+fscarmen@users.noreply.github.com> Date: Sat, 11 Jun 2022 21:09:28 +0800 Subject: [PATCH] Update menu.sh --- menu.sh | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/menu.sh b/menu.sh index 8b16532..f2a4590 100644 --- a/menu.sh +++ b/menu.sh @@ -2,14 +2,14 @@ export LANG=en_US.UTF-8 # 当前脚本版本号和新增功能 -VERSION=2.39 +VERSION=2.40 declare -A T T[E0]="\n Language:\n 1.English (default) \n 2.简体中文\n" T[C0]="${T[E0]}" -T[E1]="1.Automatically sync the latest official versions of wgcf, CloudFlare client, wireguard-go and wireproxy every day, allowing users to have the best performance with every installation; 2.Change the installation method of CloudFlare client, from APT/YUM repository to Package repository repository." -T[C1]="1.每天自动同步官方版本最新版本的 wgcf、 CloudFlare client、wireguard-go 和 wireproxy,让用户每次安装都能获得最佳性能; 2.更换 CloudFlare client 的安装方式,从 APT/YUM库 改到 Package 库" +T[E1]="1.Support VPS-free LXC VPS." +T[C1]="1.支持 VPS-free LXC VPS" T[E2]="The script must be run as root, you can enter sudo -i and then download and run again. Feedback: [https://github.com/fscarmen/warp/issues]" T[C2]="必须以root方式运行脚本,可以输入 sudo -i 后重新下载运行,问题反馈:[https://github.com/fscarmen/warp/issues]" T[E3]="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/issues]" @@ -913,21 +913,26 @@ stack_switch(){ # 检测系统信息 check_system_info(){ green " ${T[${L}37]} " + + # 判断 LXC、 KVM 的 Linux 版本是否小于 5.6,如是则安装 wireguard 内核模块,变量 WG=1。由于 linux 不能直接用小数作比较,所以用 (主版本号 * 100 + 次版本号 )与 506 作比较 + [[ $(($(uname -r | cut -d . -f1) * 100 + $(uname -r | cut -d . -f2))) -lt 506 ]] && WG=1 # 必须加载 TUN 模块,先尝试在线打开 TUN。尝试成功放到启动项,失败作提示并退出脚本 - TUN=$(cat /dev/net/tun 2>&1 | tr '[:upper:]' '[:lower:]') - if [[ ! $TUN =~ 'in bad state' ]] && [[ ! $TUN =~ '处于错误状态' ]] && [[ ! $TUN =~ 'Die Dateizugriffsnummer ist in schlechter Verfassung' ]]; then - cat >/usr/bin/tun.sh << EOF + if [[ $WG = 1 ]]; then + TUN=$(cat /dev/net/tun 2>&1 | tr '[:upper:]' '[:lower:]') + if [[ ! $TUN =~ 'in bad state' ]] && [[ ! $TUN =~ '处于错误状态' ]] && [[ ! $TUN =~ 'Die Dateizugriffsnummer ist in schlechter Verfassung' ]]; then + cat >/usr/bin/tun.sh << EOF #!/usr/bin/env bash mkdir -p /dev/net -mknod /dev/net/tun c 10 200 >/dev/null 2>&1 -[ -e /dev/net/tun ] && chmod 0666 /dev/net/tun +mknod /dev/net/tun c 10 200 +chmod 0666 /dev/net/tun EOF - bash /usr/bin/tun.sh - TUN=$(cat /dev/net/tun 2>&1 | tr '[:upper:]' '[:lower:]') - if [[ ! $TUN =~ 'in bad state' ]] && [[ ! $TUN =~ '处于错误状态' ]] && [[ ! $TUN =~ 'Die Dateizugriffsnummer ist in schlechter Verfassung' ]]; then - rm -f /usr/bin/tun.sh && red " ${T[${L}3]} " && exit 1 - else echo "@reboot root bash /usr/bin/tun.sh" >> /etc/crontab + bash /usr/bin/tun.sh + TUN=$(cat /dev/net/tun 2>&1 | tr '[:upper:]' '[:lower:]') + if [[ ! $TUN =~ 'in bad state' ]] && [[ ! $TUN =~ '处于错误状态' ]] && [[ ! $TUN =~ 'Die Dateizugriffsnummer ist in schlechter Verfassung' ]]; then + rm -f /usr/bin//tun.sh && red " ${T[${L}3]} " && exit 1 + else echo "@reboot root bash /usr/bin/tun.sh" >> /etc/crontab + fi fi fi @@ -976,9 +981,6 @@ EOF WIREPROXY=1 [[ $WIREPROXY = 1 ]] && WIREPROXY_INSTALLED="${T[${L}92]}" && [[ $(ss -nltp) =~ 'wireproxy' ]] && WIREPROXY=3 && proxy_info || WIREPROXY=2 fi - - # 在KVM的前提下,判断 Linux 版本是否小于 5.6,如是则安装 wireguard 内核模块,变量 WG=1。由于 linux 不能直接用小数作比较,所以用 (主版本号 * 100 + 次版本号 )与 506 作比较 - [[ $LXC != 1 && $(($(uname -r | cut -d . -f1) * 100 + $(uname -r | cut -d . -f2))) -lt 506 ]] && WG=1 } # 替换为 Teams 账户信息 @@ -1465,7 +1467,7 @@ EOF type -P dnsmasq >/dev/null 2>&1 && systemctl restart dnsmasq >/dev/null 2>&1 # 如是 LXC,安装 Wireguard-GO。部分较低内核版本的KVM,即使安装了wireguard-dkms, 仍不能正常工作,兜底使用 wireguard-go - [[ $LXC = 1 ]] || ([[ $WG = 1 ]] && [[ $(systemctl is-active wg-quick@wgcf) != active || $(systemctl is-enabled wg-quick@wgcf) != enabled ]]) && + [[ $LXC = 1 && ! $(lsmod) =~ 'wireguard' ]] || ([[ $WG = 1 ]] && [[ $(systemctl is-active wg-quick@wgcf) != active || $(systemctl is-enabled wg-quick@wgcf) != enabled ]]) && wget --no-check-certificate $CDN -N https://raw.githubusercontents.com/fscarmen/warp/main/wireguard-go/wireguard-go_linux_"$ARCHITECTURE".tar.gz && tar xzf wireguard-go_linux_$ARCHITECTURE.tar.gz -C /usr/bin/ && rm -f wireguard-go_linux_* && chmod +x /usr/bin/wireguard-go