From 0cb57d1d7b384b2ea9579372be5cd62452ef211c Mon Sep 17 00:00:00 2001 From: juewuy Date: Fri, 16 Jan 2026 19:59:31 +0800 Subject: [PATCH] ~Add i18n support for 2_settings.sh --- scripts/lang/chs/2_settings.lang | 101 +++++++++++ scripts/lang/chs/common.lang | 5 + scripts/lang/en/2_settings.lang | 101 +++++++++++ scripts/lang/en/common.lang | 5 + scripts/menus/2_settings.sh | 276 +++++++++++++++---------------- 5 files changed, 349 insertions(+), 139 deletions(-) create mode 100644 scripts/lang/chs/2_settings.lang create mode 100644 scripts/lang/chs/common.lang create mode 100644 scripts/lang/en/2_settings.lang create mode 100644 scripts/lang/en/common.lang diff --git a/scripts/lang/chs/2_settings.lang b/scripts/lang/chs/2_settings.lang new file mode 100644 index 00000000..c373b5cc --- /dev/null +++ b/scripts/lang/chs/2_settings.lang @@ -0,0 +1,101 @@ +# ================================================= +# Settings main menu +# ================================================= +SET_MENU_TITLE="欢迎使用功能设置菜单:" +SET_MENU_REDIR="路由模式设置" +SET_MENU_DNS="DNS设置" +SET_MENU_FW_FILTER="透明路由流量过滤" +SET_MENU_SKIP_CERT="跳过证书验证" +SET_MENU_SNIFFER="启用域名嗅探" +SET_MENU_ADV_PORT="自定义端口及密钥" +SET_MENU_IPV6="IPv6设置" +SET_MENU_RESET="重置/备份/还原脚本设置" + +# ================================================= +# Main menu messages +# ================================================= +SET_WARN_NONROOT="非root用户可能无法正确配置其他模式,是否继续?" +SET_SKIP_CERT_ON="已开启跳过本地证书验证!" +SET_SKIP_CERT_OFF="已关闭跳过本地证书验证!" + +SET_SNIFFER_CORE_SWITCH="已自动切换至Meta内核(域名嗅探需要)" +SET_SNIFFER_LOCKED="当前内核与DNS模式组合下,域名嗅探无法关闭!" + +SET_CORE_RUNNING="检测到服务正在运行,需要先停止服务!" +SET_CORE_STOP_CONFIRM="是否停止服务?" + +# ================================================= +# Backup / Restore / Reset +# ================================================= +SET_BACKUP="备份脚本设置" +SET_RESTORE="还原脚本设置" +SET_RESET="重置脚本设置" + +SET_BACKUP_OK="脚本设置已备份!" +SET_RESTORE_OK="脚本设置已还原!(被覆盖配置已备份)" +SET_RESET_OK="脚本设置已重置!(旧配置已备份)" +SET_BACKUP_MISS="未找到备份文件,请先备份!" +SET_NEED_RESTART="请重新启动脚本以生效!" + +# ================================================= +# Redir mode +# ================================================= +SET_REDIR_DEFAULT="Redir模式" +SET_REDIR_CURRENT="当前路由模式为:" +SET_CORE_CURRENT="ShellCrash 核心为:" +SET_REDIR_RESTART_HINT="切换模式后需要手动重启服务以生效!" + +SET_REDIR_APPLIED="已设为" + +SET_REDIR_REDIR="Redir模式" +SET_REDIR_MIX="混合模式" +SET_REDIR_TPROXY="Tproxy模式" +SET_REDIR_TUN="Tun模式" + +SET_REDIR_REDIRDES="Redir转发TCP,不转发UDP" +SET_REDIR_MIXDES="Redir转发TCP,Tun转发UDP" +SET_REDIR_TPROXYDES="Tproxy转发TCP&UDP" +SET_REDIR_TUNDES="Tun转发TCP&UDP(占用高不推荐)" + +SET_NO_TUN="设备未检测到Tun内核模块,请安装相关依赖或选择其他模式!" + +# ================================================= +# Firewall / VM +# ================================================= +SET_FW_AREA="设置路由劫持范围" +SET_VM_REDIR="容器/虚拟机劫持" +SET_FW_SWITCH="切换防火墙应用" + +SET_FW_AREA_DESC="仅局域网 仅本机 局域网+本机 纯净模式 旁路转发" + +FW_AREA_NOTE="如你使用了第三方DNS如smartdns等,请勿启用本机劫持或使用shellcrash用户执行!" +FW_AREA_LAN="仅劫持局域网流量" +FW_AREA_LOCAL="仅劫持本机流量" +FW_AREA_BOTH="劫持局域网 + 本机流量" +FW_AREA_NONE="不配置流量劫持(纯净模式)" + +VM_DETECT_DESC="默认的容器/虚拟机网段为:" +VM_ENABLE_AUTO="启用劫持并使用自动检测的网段" +VM_ENABLE_MANUAL="启用劫持并手动指定网段" +VM_DISABLE="禁用劫持" +VM_INPUT_INFO="多个网段请用空格连接,可使用【ip route】命令查看,例如:" +VM_INPUT_NET="请输入自定义网段" + +# ================================================= +# Advanced config +# ================================================= +ADV_HTTP_PORT="修改HTTP/SOCKS5端口" +ADV_HTTP_AUTH="设置HTTP/SOCKS5认证" +ADV_REDIR_PORT="修改Redir/Tproxy端口" +ADV_DNS_PORT="修改DNS监听端口" +ADV_PANEL_PORT="修改面板访问端口" +ADV_PANEL_PASS="设置面板访问密码" +ADV_PANEL_PASS_INPUT="请输入面板访问密码(输入0删除)" +ADV_HOST="自定义本机 Host 地址" +ADV_TABLE="自定义路由表" + +# ================================================= +# IPv6 +# ================================================= +IPV6_REDIR="IPv6透明路由(劫持IPv6流量)" +IPV6_DNS="IPv6-DNS解析(是否返回IPv6地址)" diff --git a/scripts/lang/chs/common.lang b/scripts/lang/chs/common.lang new file mode 100644 index 00000000..6efb6d4f --- /dev/null +++ b/scripts/lang/chs/common.lang @@ -0,0 +1,5 @@ + +COMMON_INPUT="请输入对应数字" +COMMON_BACK="返回上级菜单" +COMMON_SUCCESS="设置成功!" +COMMON_UNSET="未设置" diff --git a/scripts/lang/en/2_settings.lang b/scripts/lang/en/2_settings.lang new file mode 100644 index 00000000..e4e715cf --- /dev/null +++ b/scripts/lang/en/2_settings.lang @@ -0,0 +1,101 @@ +# ================================================= +# Settings main menu +# ================================================= +SET_MENU_TITLE="Welcome to the Function Settings Menu:" +SET_MENU_REDIR="Routing Mode" +SET_MENU_DNS="DNS Settings" +SET_MENU_FW_FILTER="Transparent Routing Traffic Filter" +SET_MENU_SKIP_CERT="Skip Certificate Verification" +SET_MENU_SNIFFER="Enable Domain Sniffing" +SET_MENU_ADV_PORT="Custom Ports and Secrets" +SET_MENU_IPV6="IPv6 Settings" +SET_MENU_RESET="Reset / Backup / Restore Script Settings" + +# ================================================= +# Main menu messages +# ================================================= +SET_WARN_NONROOT="Non-root users may not be able to configure some modes correctly. Continue anyway?" +SET_SKIP_CERT_ON="Skipping local certificate verification is now ENABLED!" +SET_SKIP_CERT_OFF="Skipping local certificate verification is now DISABLED!" + +SET_SNIFFER_CORE_SWITCH="Automatically switched to Meta core (required for domain sniffing)" +SET_SNIFFER_LOCKED="Domain sniffing cannot be disabled with the current core and DNS mode combination!" + +SET_CORE_RUNNING="Service is currently running and must be stopped first!" +SET_CORE_STOP_CONFIRM="Do you want to stop the service?" + +# ================================================= +# Backup / Restore / Reset +# ================================================= +SET_BACKUP="Backup Script Settings" +SET_RESTORE="Restore Script Settings" +SET_RESET="Reset Script Settings" + +SET_BACKUP_OK="Script settings have been backed up!" +SET_RESTORE_OK="Script settings have been restored! (Overwritten config has been backed up)" +SET_RESET_OK="Script settings have been reset! (Old config has been backed up)" +SET_BACKUP_MISS="Backup file not found. Please back up first!" +SET_NEED_RESTART="Please restart the script for changes to take effect!" + +# ================================================= +# Redir mode +# ================================================= +SET_REDIR_DEFAULT="Redir Mode" +SET_REDIR_CURRENT="Current routing mode:" +SET_CORE_CURRENT="ShellCrash core:" +SET_REDIR_RESTART_HINT="You must manually restart the service for the change to take effect!" + +SET_REDIR_APPLIED="Routing mode set to" + +SET_REDIR_REDIR="Redir Mode" +SET_REDIR_MIX="Mixed Mode" +SET_REDIR_TPROXY="Tproxy Mode" +SET_REDIR_TUN="Tun Mode" + +SET_REDIR_REDIRDES="Redirect TCP traffic only (no UDP)" +SET_REDIR_MIXDES="Redirect TCP via Redir, UDP via Tun" +SET_REDIR_TPROXYDES="Tproxy forwards both TCP UDP" +SET_REDIR_TUNDES="Tun forwards both TCP UDP (high resource usage)" + +SET_NO_TUN="Tun kernel module not detected. Please install required dependencies or select another mode!" + +# ================================================= +# Firewall / VM +# ================================================= +SET_FW_AREA="Set Routing Hijack Scope" +SET_VM_REDIR="Container / VM Hijacking" +SET_FW_SWITCH="Switch Firewall Backend" + +SET_FW_AREA_DESC="LAN Only Local Only LAN+Local Pure Mode Bypass Forwarding" + +FW_AREA_NOTE="If you are using a third-party DNS like SmartDNS, \ndo not enable local hijacking or run the service as a ShellCrash user" +FW_AREA_LAN="Hijack LAN traffic only" +FW_AREA_LOCAL="Hijack local device traffic only" +FW_AREA_BOTH="Hijack both LAN and local device traffic" +FW_AREA_NONE="Do not hijack traffic (Pure mode)" + +VM_DETECT_DESC="Default Container/VM Subnet:" +VM_ENABLE_AUTO="Enable hijacking using automatically detected subnets" +VM_ENABLE_MANUAL="Enable hijacking and manually specify subnets" +VM_DISABLE="Disable hijacking" +VM_INPUT_INFO="Separate multiple segments with spaces. Check your configuration using ip route. Example:" +VM_INPUT_NET="Please enter cust subnets" + +# ================================================= +# Advanced config +# ================================================= +ADV_HTTP_PORT="Change HTTP / SOCKS5 Port" +ADV_HTTP_AUTH="Set HTTP / SOCKS5 Authentication" +ADV_REDIR_PORT="Change Redir / Tproxy Ports" +ADV_DNS_PORT="Change DNS Listening Port" +ADV_PANEL_PORT="Change Web Panel Port" +ADV_PANEL_PASS="Set Web Panel Password" +ADV_PANEL_PASS_INPUT="Enter web panel password (enter 0 to remove)" +ADV_HOST="Custom Local Host Address" +ADV_TABLE="Custom Routing Table" + +# ================================================= +# IPv6 +# ================================================= +IPV6_REDIR="IPv6 Transparent Routing (Hijack IPv6 Traffic)" +IPV6_DNS="IPv6 DNS Resolution (Return IPv6 addresses)" diff --git a/scripts/lang/en/common.lang b/scripts/lang/en/common.lang new file mode 100644 index 00000000..1f21342d --- /dev/null +++ b/scripts/lang/en/common.lang @@ -0,0 +1,5 @@ + +COMMON_INPUT="Please enter a number" +COMMON_BACK="Back" +COMMON_SUCCESS="Successfully set!" +COMMON_UNSET="Not set" diff --git a/scripts/menus/2_settings.sh b/scripts/menus/2_settings.sh index 39b2fdbd..f543e527 100644 --- a/scripts/menus/2_settings.sh +++ b/scripts/menus/2_settings.sh @@ -4,6 +4,8 @@ [ -n "$__IS_MODULE_2_SETTINGS_LOADED" ] && return __IS_MODULE_2_SETTINGS_LOADED=1 +load_lang 2_settings + # 功能设置 settings() { while true; do @@ -13,35 +15,35 @@ settings() { [ -z "$dns_mod" ] && dns_mod='redir_host' echo "-----------------------------------------------" - echo -e "\033[30;47m欢迎使用功能设置菜单:\033[0m" + echo -e "\033[30;47m$SET_MENU_TITLE\033[0m" echo "-----------------------------------------------" - echo -e " 1 路由模式设置: \033[36m$redir_mod\033[0m" - echo -e " 2 DNS设置: \033[36m$dns_mod\033[0m" - echo -e " 3 透明路由\033[32m流量过滤\033[0m" + echo -e " 1 $SET_MENU_REDIR:\t\033[36m$redir_mod\033[0m" + echo -e " 2 $SET_MENU_DNS:\t\t\033[36m$dns_mod\033[0m" + echo -e " 3 $SET_MENU_FW_FILTER" [ "$disoverride" != "1" ] && { - echo -e " 4 跳过证书验证: \033[36m$skip_cert\033[0m" - echo -e " 5 启用域名嗅探: \033[36m$sniffer\033[0m" - echo -e " 6 自定义\033[32m端口及秘钥\033[0m" + echo -e " 4 $SET_MENU_SKIP_CERT:\t\033[36m$skip_cert\033[0m" + echo -e " 5 $SET_MENU_SNIFFER:\t\033[36m$sniffer\033[0m" + echo -e " 6 $SET_MENU_ADV_PORT" } - echo -e " 8 ipv6设置: \033[36m$ipv6_redir\033[0m" + echo -e " 8 $SET_MENU_IPV6:\t\t\033[36m$ipv6_redir\033[0m" echo "-----------------------------------------------" - echo -e " 9 \033[31m重置/备份/还原\033[0m脚本设置" - echo -e " 0 返回上级菜单 \033[0m" + echo -e " 9 \033[31m$SET_MENU_RESET\033[0m" + echo -e " 0 $COMMON_BACK" echo "-----------------------------------------------" - read -p "请输入对应数字 > " num + read -p "$COMMON_INPUT > " num + case "$num" in "" | 0) break ;; 1) - if [ "$USER" != "root" -a "$USER" != "admin" ]; then + if [ "$USER" != root -a "$USER" != admin ]; then echo "-----------------------------------------------" - read -p "非root用户可能无法正确配置其他模式!依然尝试吗?(1/0) > " res + read -p "$SET_WARN_NONROOT (1/0) > " res [ "$res" = 1 ] && set_redir_mod else set_redir_mod fi - sleep 1 ;; 2) . "$CRASHDIR"/menus/dns.sh && set_dns_mod @@ -53,43 +55,38 @@ settings() { ;; 4) echo "-----------------------------------------------" - if [ "$skip_cert" = "OFF" ] >/dev/null 2>&1; then - echo -e "\033[33m已设为开启跳过本地证书验证!!\033[0m" + if [ "$skip_cert" = OFF ]; then skip_cert=ON + echo -e "\033[33m$SET_SKIP_CERT_ON\033[0m" else - echo -e "\033[33m已设为禁止跳过本地证书验证!!\033[0m" skip_cert=OFF + echo -e "\033[33m$SET_SKIP_CERT_OFF\033[0m" fi setconfig skip_cert $skip_cert ;; 5) echo "-----------------------------------------------" - if [ "$sniffer" = "OFF" ]; then - if [ "$crashcore" = "clash" ]; then - rm -rf ${TMPDIR}/CrashCore - rm -rf "$CRASHDIR"/CrashCore - rm -rf "$CRASHDIR"/CrashCore.tar.gz + if [ "$sniffer" = OFF ]; then + if [ "$crashcore" = clash ]; then + rm -rf "$TMPDIR/CrashCore" "$CRASHDIR/CrashCore" "$CRASHDIR/CrashCore.tar.gz" crashcore=meta setconfig crashcore $crashcore - echo "已将ShellCrash内核切换为Meta内核!域名嗅探依赖Meta或者高版本clashpre内核!" + echo "$SET_SNIFFER_CORE_SWITCH" fi sniffer=ON - elif [ "$crashcore" = "clashpre" -a "$dns_mod" = "redir_host" ]; then - echo -e "\033[31m使用clashpre内核且开启redir-host模式时无法关闭!\033[0m" + elif [ "$crashcore" = clashpre -a "$dns_mod" = redir_host ]; then + echo -e "\033[31m$SET_SNIFFER_LOCKED\033[0m" else sniffer=OFF fi setconfig sniffer $sniffer ;; 6) - if [ -n "$(pidof CrashCore)" ]; then + if pidof CrashCore >/dev/null; then echo "-----------------------------------------------" - echo -e "\033[33m检测到服务正在运行,需要先停止服务!\033[0m" - read -p "是否停止服务?(1/0) > " res - if [ "$res" = "1" ]; then - "$CRASHDIR"/start.sh stop - set_adv_config - fi + echo -e "\033[33m$SET_CORE_RUNNING\033[0m" + read -p "$SET_CORE_STOP_CONFIRM (1/0) > " res + [ "$res" = 1 ] && "$CRASHDIR/start.sh" stop && set_adv_config else set_adv_config fi @@ -99,50 +96,44 @@ settings() { ;; 9) echo "-----------------------------------------------" - echo -e " 1 备份脚本设置" - echo -e " 2 还原脚本设置" - echo -e " 3 重置脚本设置" - echo -e " 0 返回上级菜单" + echo -e " 1 $SET_BACKUP" + echo -e " 2 $SET_RESTORE" + echo -e " 3 $SET_RESET" + echo -e " 0 $COMMON_BACK" echo "-----------------------------------------------" - read -p "请输入对应数字 > " num - if [ -z "$num" ]; then - errornum - elif [ "$num" = 0 ]; then - i= - elif [ "$num" = 1 ]; then - cp -f "$CFG_PATH" "$CFG_PATH".bak - echo -e "\033[32m脚本设置已备份!\033[0m" - elif [ "$num" = 2 ]; then - if [ -f "$CFG_PATH.bak" ]; then - mv -f "$CFG_PATH" "$CFG_PATH".bak2 - mv -f "$CFG_PATH".bak "$CFG_PATH" - mv -f "$CFG_PATH".bak2 "$CFG_PATH".bak - echo -e "\033[32m脚本设置已还原!(被覆盖的配置已备份!)\033[0m" - else - echo -e "\033[31m找不到备份文件,请先备份脚本设置!\033[0m" - fi - elif [ "$num" = 3 ]; then - mv -f "$CFG_PATH" "$CFG_PATH".bak - . "$CRASHDIR"/init.sh >/dev/null - echo -e "\033[32m脚本设置已重置!(旧文件已备份!)\033[0m" - fi - echo -e "\033[33m请重新启动脚本!\033[0m" + read -p "$COMMON_INPUT > " num + case "$num" in + 1) cp -f "$CFG_PATH" "$CFG_PATH.bak" && echo -e "\033[32m$SET_BACKUP_OK\033[0m" ;; + 2) + if [ -f "$CFG_PATH.bak" ]; then + mv -f "$CFG_PATH" "$CFG_PATH.bak2" + mv -f "$CFG_PATH.bak" "$CFG_PATH" + mv -f "$CFG_PATH.bak2" "$CFG_PATH.bak" + echo -e "\033[32m$SET_RESTORE_OK\033[0m" + else + echo -e "\033[31m$SET_BACKUP_MISS\033[0m" + fi + ;; + 3) + mv -f "$CFG_PATH" "$CFG_PATH.bak" + . "$CRASHDIR/init.sh" >/dev/null + echo -e "\033[32m$SET_RESET_OK\033[0m" + ;; + esac + echo -e "\033[33m$SET_NEED_RESTART\033[0m" exit 0 ;; - *) - errornum - sleep 1 - break - ;; + *) errornum ;; esac + sleep 1 done } set_redir_config() { - setconfig redir_mod $redir_mod - setconfig dns_mod $dns_mod + setconfig redir_mod "$redir_mod" + setconfig dns_mod "$dns_mod" echo "-----------------------------------------------" - echo -e "\033[36m已设为 $redir_mod !!\033[0m" + echo -e "\033[36m$SET_REDIR_APPLIED $redir_mod\033[0m" } # 路由模式设置 @@ -154,27 +145,28 @@ set_redir_mod() { [ -z "$redir_mod" ] && redir_mod='纯净模式' firewall_area_dsc=$(echo "仅局域网 仅本机 局域网+本机 纯净模式 主-旁转发($bypass_host)" | cut -d' ' -f$firewall_area) echo "-----------------------------------------------" - echo -e "当前路由模式为:\033[47;30m$redir_mod\033[0m;ShellCrash核心为:\033[47;30m $crashcore \033[0m" - echo -e "\033[33m切换模式后需要手动重启服务以生效!\033[0m" + echo -e "$SET_REDIR_CURRENT \033[47;30m$redir_mod\033[0m ; $SET_CORE_CURRENT \033[47;30m$crashcore\033[0m" + echo -e "\033[33m$SET_REDIR_RESTART_HINT\033[0m" echo "-----------------------------------------------" [ $firewall_area -le 3 ] && { - echo -e " 1 \033[32mRedir模式\033[0m: Redir转发TCP,不转发UDP" - echo -e " 2 \033[36m混合模式\033[0m: Redir转发TCP,Tun转发UDP" - echo -e " 3 \033[32mTproxy模式\033[0m: Tproxy转发TCP&UDP" - echo -e " 4 \033[33mTun模式\033[0m: Tun转发TCP&UDP(占用高不推荐)" - echo "-----------------------------------------------" - } + echo -e " 1 \033[32m$SET_REDIR_REDIR\033[0m:\t$SET_REDIR_REDIRDES" + echo -e " 2 \033[36m$SET_REDIR_MIX\033[0m:\t$SET_REDIR_MIXDES" + echo -e " 3 \033[32m$SET_REDIR_TPROXY\033[0m:\t$SET_REDIR_TPROXYDES" + echo -e " 4 \033[33m$SET_REDIR_TUN\033[0m:\t$SET_REDIR_TUNDES" + echo -e "-----------------------------------------------" + } [ "$firewall_area" = 5 ] && { echo -e " 5 \033[32mTCP旁路转发\033[0m: 仅转发TCP流量至旁路由" echo -e " 6 \033[36mT&U旁路转发\033[0m: 转发TCP&UDP流量至旁路由" echo "-----------------------------------------------" } - echo -e " 7 设置路由劫持范围: \033[47;30m$firewall_area_dsc\033[0m" - echo -e " 8 容器/虚拟机劫持: \033[47;30m$vm_redir\033[0m" - echo -e " 9 切换防火墙应用: \033[47;30m$firewall_mod\033[0m" + echo -e " 7 $SET_FW_AREA:\t\033[47;30m$firewall_area_dsc\033[0m" + echo -e " 8 $SET_VM_REDIR:\t\033[47;30m$vm_redir\033[0m" + echo -e " 9 $SET_FW_SWITCH:\t\033[47;30m$firewall_mod\033[0m" echo "-----------------------------------------------" - echo " 0 返回上级菜单" - read -p "请输入对应数字 > " num + echo -e " 0 $COMMON_BACK" + read -p "$COMMON_INPUT > " num + case "$num" in "" | 0) break @@ -298,22 +290,24 @@ inputport() { # 端口设置 set_adv_config() { while true; do - . "$CFG_PATH" >/dev/null - [ -z "$secret" ] && secret=未设置 - [ -z "$table" ] && table=100 - [ -z "$authentication" ] && auth=未设置 || auth=****** - echo "-----------------------------------------------" - echo -e " 1 修改Http/Sock5端口: \033[36m$mix_port\033[0m" - echo -e " 2 设置Http/Sock5密码: \033[36m$auth\033[0m" - echo -e " 3 修改Redir/Tproxy端口:\033[36m$redir_port,$((redir_port + 1))\033[0m" - echo -e " 4 修改DNS监听端口: \033[36m$dns_port\033[0m" - echo -e " 5 修改面板访问端口: \033[36m$db_port\033[0m" - echo -e " 6 设置面板访问密码: \033[36m$secret\033[0m" - echo -e " 8 自定义本机host地址: \033[36m$host\033[0m" - echo -e " 9 自定义路由表: \033[36m$table,$((table + 1))\033[0m" - echo -e " 0 返回上级菜单" - read -p "请输入对应数字 > " num - case "$num" in + . "$CFG_PATH" >/dev/null + [ -z "$secret" ] && secret="$COMMON_UNSET" + [ -z "$table" ] && table=100 + [ -z "$authentication" ] && auth="$COMMON_UNSET" || auth="******" + + echo "-----------------------------------------------" + echo -e " 1 $ADV_HTTP_PORT:\t\033[36m$mix_port\033[0m" + echo -e " 2 $ADV_HTTP_AUTH:\t\033[36m$auth\033[0m" + echo -e " 3 $ADV_REDIR_PORT:\t\033[36m$redir_port,$((redir_port+1))\033[0m" + echo -e " 4 $ADV_DNS_PORT:\t\033[36m$dns_port\033[0m" + echo -e " 5 $ADV_PANEL_PORT:\t\033[36m$db_port\033[0m" + echo -e " 6 $ADV_PANEL_PASS:\t\033[36m$secret\033[0m" + echo -e " 8 $ADV_HOST:\t\033[36m$host\033[0m" + echo -e " 9 $ADV_TABLE:\t\033[36m$table,$((table+1))\033[0m" + echo -e " 0 $COMMON_BACK" + read -p "$COMMON_INPUT > " num + + case "$num" in "" | 0) break ;; @@ -394,14 +388,14 @@ set_adv_config() { continue fi ;; - 6) - read -p "请输入面板访问密码(输入0删除密码) > " secret + 6) + read -p "$ADV_PANEL_PASS_INPUT > " secret if [ -n "$secret" ]; then [ "$secret" = "0" ] && secret="" - setconfig secret "$secret" - echo -e "\033[32m设置成功!!!\033[0m" + setconfig secret "$secret" + echo -e "\033[32m$COMMON_SUCCESS\033[0m" fi - ;; + ;; 8) echo "-----------------------------------------------" echo -e "\033[33m如果你的局域网网段不是192.168.x或172.16.x或10.x开头,请务必修改!\033[0m" @@ -440,22 +434,20 @@ set_adv_config() { done } -set_firewall_area() { #路由范围设置 +set_firewall_area() { [ -z "$vm_redir" ] && vm_redir='OFF' echo "-----------------------------------------------" - echo -e "\033[31m注意:\033[0m基于桥接网卡的Docker/虚拟机流量,请单独启用!" - echo -e "\033[33m如你使用了第三方DNS如smartdns等,请勿启用本机劫持或使用shellcrash用户执行!\033[0m" + echo -e "\033[33m$FW_AREA_NOTE\033[0m" echo "-----------------------------------------------" - echo -e " 1 \033[32m仅劫持局域网流量\033[0m" - echo -e " 2 \033[36m仅劫持本机流量\033[0m" - echo -e " 3 \033[32m劫持局域网+本机流量\033[0m" - echo -e " 4 不配置流量劫持(纯净模式)\033[0m" - #echo -e " 5 \033[33m转发局域网流量到旁路由设备\033[0m" - echo -e " 0 返回上级菜单" + echo -e " 1 \033[32m$FW_AREA_LAN\033[0m" + echo -e " 2 \033[36m$FW_AREA_LOCAL\033[0m" + echo -e " 3 \033[32m$FW_AREA_BOTH\033[0m" + echo -e " 4 $FW_AREA_NONE" + echo -e " 0 $COMMON_BACK" echo "-----------------------------------------------" - read -p "请输入对应数字 > " num + read -p "$COMMON_INPUT > " num + case "$num" in - 0) ;; [1-4]) [ $firewall_area -ge 4 ] && { redir_mod=Redir模式 @@ -496,17 +488,17 @@ set_firewall_vm(){ vm_ipv4=$(ip a 2>&1 | grep -w 'inet' | grep 'global' | grep 'brd' | grep -E 'docker|podman|virbr|vnet|ovs|vmbr|veth|vmnic|vboxnet|lxcbr|xenbr|vEthernet' | sed 's/.*inet.//g' | sed 's/ br.*$//g' | sed 's/metric.*$//g' | tr '\n' ' ') vm_des='当前获取到' fi - echo "-----------------------------------------------" - echo -e "$vm_des的容器/虚拟机网段为:\033[32m$vm_ipv4\033[0m" - echo -e "如未包含容器网段,请先运行容器再运行脚本或者手动设置网段" - echo "-----------------------------------------------" - echo -e " 1 \033[32m启用劫持并使用默认网段\033[0m" - echo -e " 2 \033[36m启用劫持并自定义网段\033[0m" - echo -e " 3 \033[31m禁用劫持\033[0m" - echo -e " 0 返回上级菜单" - echo "-----------------------------------------------" - read -p "请输入对应数字 > " num - case "$num" in + echo "-----------------------------------------------" + echo -e "$VM_DETECT_DESC\033[32m$vm_ipv4\033[0m" + echo "-----------------------------------------------" + echo -e " 1 \033[32m$VM_ENABLE_AUTO\033[0m" + echo -e " 2 \033[36m$VM_ENABLE_MANUAL\033[0m" + echo -e " 3 \033[31m$VM_DISABLE\033[0m" + echo -e " 0 $COMMON_BACK" + echo "-----------------------------------------------" + read -p "$COMMON_INPUT > " num + + case "$num" in 1) if [ -n "$vm_ipv4" ]; then vm_redir=ON @@ -514,20 +506,24 @@ set_firewall_vm(){ echo -e "\033[33m请先运行容器再运行脚本或者手动设置网段\033[0m" fi ;; - 2) - echo -e "多个网段请用空格连接,可运行容器后使用【ip route】命令查看网段地址" - echo -e "示例:\033[32m10.88.0.0/16 172.17.0.0/16\033[0m" - read -p "请输入自定义网段 > " text - [ -n "$text" ] && vm_ipv4=$text && vm_redir=ON + 2) + echo -e "多个网段请用空格连接,可使用【ip route】命令查看,例如:" + echo -e "\033[32m10.88.0.0/16 172.17.0.0/16\033[0m" + read -p "$VM_INPUT_NET > " text + [ -n "$text" ] && vm_ipv4="$text" && vm_redir=ON ;; - 3) + 3) vm_redir=OFF - unset vm_ipv4 + vm_ipv4='' + ;; + *) ;; + esac + case "$num" in + 1-3) + setconfig vm_redir "$vm_redir" + setconfig vm_ipv4 "'$vm_ipv4'" ;; - *) ;; esac - setconfig vm_redir $vm_redir - setconfig vm_ipv4 "'$vm_ipv4'" } # ipv6设置 @@ -535,12 +531,14 @@ set_ipv6() { while true; do [ -z "$ipv6_redir" ] && ipv6_redir=OFF [ -z "$ipv6_dns" ] && ipv6_dns=ON + echo "-----------------------------------------------" - echo -e " 1 ipv6透明路由: \033[36m$ipv6_redir\033[0m ——劫持ipv6流量" - [ "$disoverride" != "1" ] && echo -e " 2 ipv6-DNS解析: \033[36m$ipv6_dns\033[0m ——决定内置DNS是否返回ipv6地址" - echo -e " 0 返回上级菜单" + echo -e " 1 $IPV6_REDIR:\t\033[36m$ipv6_redir\033[0m" + [ "$disoverride" != "1" ] && echo -e " 2 $IPV6_DNS:\t\033[36m$ipv6_dns\033[0m" + echo -e " 0 $COMMON_BACK" echo "-----------------------------------------------" - read -p "请输入对应数字 > " num + read -p "$COMMON_INPUT > " num + case "$num" in "" | 0) break @@ -557,8 +555,8 @@ set_ipv6() { setconfig ipv6_support $ipv6_support ;; 2) - [ "$ipv6_dns" = "OFF" ] && ipv6_dns=ON || ipv6_dns=OFF - setconfig ipv6_dns $ipv6_dns + [ "$ipv6_dns" = OFF ] && ipv6_dns=ON || ipv6_dns=OFF + setconfig ipv6_dns "$ipv6_dns" ;; *) errornum