diff --git a/scripts/lang/chs/7_gateway.lang b/scripts/lang/chs/7_gateway.lang index b8027ade..92bb6a84 100644 --- a/scripts/lang/chs/7_gateway.lang +++ b/scripts/lang/chs/7_gateway.lang @@ -14,3 +14,84 @@ GW_INPUT_WSPATH="请输入ws-path路径(输入0删除)" GW_INPUT_UUID="请输入UUID(输入0删除)" GW_INPUT_HOST="请输入本机公网IP(4/6)或域名" GW_SHARE_LINK_HINT="你的分享链接是(请勿随意分享给他人):" +GW_MENU_FW_WAN="?????????" +GW_MENU_TG_BOT="??Telegram???????" +GW_MENU_DDNS="??DDNS????" +GW_MENU_VMESS="?????Vmess????" +GW_MENU_SHADOWSOCKS="?????ShadowSocks????" +GW_MENU_TS="??Tailscale????(?Singbox)" +GW_MENU_WG="??Wireguard???(?Singbox)" +GW_FW_STOP_WARN="??????????????" +GW_CONFIRM_CONTINUE="???????" +GW_YES="?" +GW_NO="?" +GW_NO_BACK="?,??????" +GW_FW_MANUAL_PORTS="????????:" +GW_FW_AUTO_PORTS="????????:" +GW_FW_DEFAULT_BLOCK="??????:" +GW_FW_TOGGLE="??/???????:" +GW_FW_ADD_PORT="??????(?????????)" +GW_FW_REMOVE_PORT="??????????" +GW_FW_CLEAR_PORTS="??????????" +GW_FW_DISABLE_CONFIRM="??????????" +GW_FW_DISABLE_RISK="???????????!" +GW_ERR_DUP_PORT="????!??????!" +GW_ERR_PORT_RANGE="????!????????(1-65535)!" +GW_ERR_INPUT="????!" +GW_INPUT_REMOVE_PORT="????????????" +GW_INPUT_0_BACK="??? 0 ??????" +GW_ERR_PORT_NOT_FOUND="??????????!" +GW_TG_CMD_MENU="??ShellCrash??" +GW_TG_CMD_HELP="????" +GW_TG_WARN="????????,?????????????!" +GW_TG_TOGGLE="??/??TG-BOT??" +GW_TG_BIND="TG-BOT????" +GW_TG_MENUPUSH="???????" +GW_TG_BIND_FIRST="????TG-BOT!" +GW_TG_BOUND_DETECTED="????????TG??BOT" +GW_TG_USE_DIRECT="???????" +GW_INBOUND_WARN_PORT="?????????????????????!" +GW_INBOUND_WARN_BASIC="?????????,???????????????!" +GW_INBOUND_WARN_ILLEGAL="????????????,??????!" +GW_VMS_TOGGLE="??/??Vmess??" +GW_SET_LISTEN_PORT="??????:" +GW_SET_WSPATH="??WS-path(??):" +GW_SET_UUID="????-uuid:" +GW_GEN_RANDOM_KEY="????????" +GW_SET_OBFS_HOST="????host(??):" +GW_GEN_SHARE_LINK="????????" +GW_FILL_REQUIRED="????????!" +GW_ERR_WSPATH="?????path??,????/???!" +GW_ERR_UUID="?????UUID??,??????????????!" +GW_INPUT_OBFS_HOST="???????host(??0??)" +GW_SS_TOGGLE="??/??ShadowSocks??" +GW_SS_SELECT_CIPHER="???????????:" +GW_SS_SET_PWD="??password:" +GW_SS_2022_NOTE_HEADER=" - - - - - - -\033[31m??\033[0m- - - - - - -" +GW_SS_2022_REQUIRE=" 2022?????????????password!" +GW_SS_2022_PASSWORD_ONLY="2022???????????????password!" +GW_TS_WARN="????????????????Tailscale??\n??????????????????????!" +GW_TS_KEY_URL="????:\033[32;4mhttps://login.tailscale.com/admin/settings/keys\033[0m" +GW_TS_ALLOW_URL="????????????:\033[32;4mhttps://login.tailscale.com\033[0m" +GW_TS_SUBNET_EXIT_HINT="???????????????Subnet?EXIT-NODE??" +GW_TS_TOGGLE="??/??Tailscale??" +GW_TS_SET_AUTHKEY="????(Auth Key)" +GW_TS_SUBNET="????????(Subnet)" +GW_TS_EXIT_NODE="????????(EXIT-NODE)" +GW_TS_HOSTNAME="??????(??)" +GW_TS_SET_KEY_FIRST="??????!" +GW_TS_INPUT_KEY="?????(??0??)" +GW_TS_EXITNODE_WARN="??exitnode???DNS?bug,???????????TailscaleDNS,\n?????????Globalname servers?????????IP???override" +GW_TS_INPUT_NAME="????????Tailscale???????" +GW_WG_WARN="????????????????WireGuard??\n??????????????????????!" +GW_WG_TOGGLE="??/??Wireguard??" +GW_WG_SET_ENDPOINT="??Endpoint??:" +GW_WG_SET_ENDPOINT_PORT="??Endpoint??:" +GW_WG_SET_PUBLIC="????-PublicKey:" +GW_WG_SET_PRESHARED="????-PresharedKey:" +GW_WG_SET_PRIVATE="????-PrivateKey:" +GW_WG_SET_IPV4="????IPV4??:" +GW_WG_SET_IPV6="?? ??IPV6??:" +GW_INPUT_TEXT_DEL0="???????(???0??)" +GW_INPUT_PLAIN="???" +GW_INPUT_PWD_DEL0="?????(??0??)" diff --git a/scripts/lang/en/7_gateway.lang b/scripts/lang/en/7_gateway.lang index 1dbc59fe..f74107cf 100644 --- a/scripts/lang/en/7_gateway.lang +++ b/scripts/lang/en/7_gateway.lang @@ -14,3 +14,84 @@ GW_INPUT_WSPATH="Enter ws-path (0 to delete)" GW_INPUT_UUID="Enter UUID (0 to delete)" GW_INPUT_HOST="Enter your public IP (v4/v6) or domain" GW_SHARE_LINK_HINT="Your share link (do not share casually):" +GW_MENU_FW_WAN="Configure WAN Firewall" +GW_MENU_TG_BOT="Configure Telegram Control Bot" +GW_MENU_DDNS="Configure DDNS Domain" +GW_MENU_VMESS="Custom Public Vmess Inbound" +GW_MENU_SHADOWSOCKS="Custom Public ShadowSocks Inbound" +GW_MENU_TS="Configure Tailscale Intranet (Singbox only)" +GW_MENU_WG="Configure Wireguard Client (Singbox only)" +GW_FW_STOP_WARN="WAN firewall requires stopping the service first" +GW_CONFIRM_CONTINUE="Continue?" +GW_YES="Yes" +GW_NO="No" +GW_NO_BACK="No, back to previous menu" +GW_FW_MANUAL_PORTS="Manual allowed ports: " +GW_FW_AUTO_PORTS="Auto allowed ports: " +GW_FW_DEFAULT_BLOCK="Default blocked ports: " +GW_FW_TOGGLE="Enable/Disable WAN firewall: " +GW_FW_ADD_PORT="Add allowed ports (can include default blocked ports)" +GW_FW_REMOVE_PORT="Remove a specific manual port" +GW_FW_CLEAR_PORTS="Clear all manual allowed ports" +GW_FW_DISABLE_CONFIRM="Confirm disabling firewall?" +GW_FW_DISABLE_RISK="This can pose a serious security risk!" +GW_ERR_DUP_PORT="Invalid input! Do not add duplicates!" +GW_ERR_PORT_RANGE="Invalid input! Enter a valid number (1-65535)!" +GW_ERR_INPUT="Invalid input!" +GW_INPUT_REMOVE_PORT="Enter the port to remove" +GW_INPUT_0_BACK="Or enter 0 to go back" +GW_ERR_PORT_NOT_FOUND="Please enter a port that was added!" +GW_TG_CMD_MENU="Open ShellCrash menu" +GW_TG_CMD_HELP="View help" +GW_TG_WARN="Due to network conditions, this bot only runs when the service is started!" +GW_TG_TOGGLE="Enable/Disable TG-BOT service" +GW_TG_BIND="TG-BOT binding" +GW_TG_MENUPUSH="Push menu on start" +GW_TG_BIND_FIRST="Please bind TG-BOT first!" +GW_TG_BOUND_DETECTED="Detected an existing TG push bot binding" +GW_TG_USE_DIRECT="Use it directly?" +GW_INBOUND_WARN_PORT="The configured port will be added to the WAN firewall and allowed automatically!" +GW_INBOUND_WARN_BASIC="This script provides basic features only. Use custom config for more needs!" +GW_INBOUND_WARN_ILLEGAL="Do not use it for illegal proxying. You are responsible for consequences!" +GW_VMS_TOGGLE="Enable/Disable Vmess inbound" +GW_SET_LISTEN_PORT="Set listen port:" +GW_SET_WSPATH="Set WS-path (optional):" +GW_SET_UUID="Set key-uuid:" +GW_GEN_RANDOM_KEY="Generate random key" +GW_SET_OBFS_HOST="Set obfs host (optional):" +GW_GEN_SHARE_LINK="Generate share link" +GW_FILL_REQUIRED="Please complete required settings first!" +GW_ERR_WSPATH="Invalid path. It must start with '/'." +GW_ERR_UUID="Invalid UUID format. Re-enter or use random generation." +GW_INPUT_OBFS_HOST="Enter obfs host (0 to delete)" +GW_SS_TOGGLE="Enable/Disable ShadowSocks inbound" +GW_SS_SELECT_CIPHER="Select cipher to use:" +GW_SS_SET_PWD="Set password:" +GW_SS_2022_NOTE_HEADER=" - - - - - - -\033[31mNotice\033[0m- - - - - - -" +GW_SS_2022_REQUIRE=" 2022 ciphers require a randomly generated password!" +GW_SS_2022_PASSWORD_ONLY="2022 ciphers require a script-generated password!" +GW_TS_WARN="The default core is built without the Tailscale module to save memory.\nPlease switch to a full custom core if you need it!" +GW_TS_KEY_URL="Create key:\033[32;4mhttps://login.tailscale.com/admin/settings/keys\033[0m" +GW_TS_ALLOW_URL="Allow advertised routes for non-local targets:\033[32;4mhttps://login.tailscale.com\033[0m" +GW_TS_SUBNET_EXIT_HINT="For non-local targets, use Subnet or EXIT-NODE mode in the client" +GW_TS_TOGGLE="Enable/Disable Tailscale service" +GW_TS_SET_AUTHKEY="Set Auth Key" +GW_TS_SUBNET="Advertise subnet routes" +GW_TS_EXIT_NODE="Advertise all traffic (EXIT-NODE)" +GW_TS_HOSTNAME="Set device name (optional)" +GW_TS_SET_KEY_FIRST="Please set the Auth Key first!" +GW_TS_INPUT_KEY="Enter Auth Key (0 to delete)" +GW_TS_EXITNODE_WARN="The official exitnode DNS has a bug. Either enable domain sniffing and disable Tailscale DNS,\nor set Globalname servers to this device subnet IP in the web UI and enable override." +GW_TS_INPUT_NAME="Enter the device name to show in Tailscale" +GW_WG_WARN="The default core is built without the WireGuard module to save memory.\nPlease switch to a full custom core if you need it!" +GW_WG_TOGGLE="Enable/Disable Wireguard service" +GW_WG_SET_ENDPOINT="Set Endpoint address:" +GW_WG_SET_ENDPOINT_PORT="Set Endpoint port:" +GW_WG_SET_PUBLIC="Set PublicKey:" +GW_WG_SET_PRESHARED="Set PresharedKey:" +GW_WG_SET_PRIVATE="Set PrivateKey:" +GW_WG_SET_IPV4="Set IPv4 address:" +GW_WG_SET_IPV6="Optional IPv6 address:" +GW_INPUT_TEXT_DEL0="Enter value (Enter or 0 to delete)" +GW_INPUT_PLAIN="Enter" +GW_INPUT_PWD_DEL0="Enter password (0 to delete)" diff --git a/scripts/menus/7_gateway.sh b/scripts/menus/7_gateway.sh index ab127aa9..677dd6c4 100644 --- a/scripts/menus/7_gateway.sh +++ b/scripts/menus/7_gateway.sh @@ -12,15 +12,15 @@ load_lang 7_gateway # 访问与控制主菜单 gateway() { while true; do - comp_box "\033[30;47m访问与控制菜单\033[0m" - content_line "1) 配置\033[33m公网访问防火墙 \033[32m$fw_wan\033[0m" - content_line "2) 配置\033[36mTelegram专属控制机器人 \033[32m$bot_tg_service\033[0m" - content_line "3) 配置\033[36mDDNS自动域名\033[0m" + comp_box "\033[30;47m$GW_TITLE\033[0m" + content_line "1) $GW_MENU_FW_WAN \033[32m$fw_wan\033[0m" + content_line "2) $GW_MENU_TG_BOT \033[32m$bot_tg_service\033[0m" + content_line "3) $GW_MENU_DDNS" [ "$disoverride" != "1" ] && { - content_line "4) 自定义\033[33m公网Vmess入站\033[0m节点 \033[32m$vms_service\033[0m" - content_line "5) 自定义\033[33m公网ShadowSocks入站\033[0m节点 \033[32m$sss_service\033[0m" - content_line "6) 配置\033[36mTailscale内网穿透\033[0m(限Singbox) \033[32m$ts_service\033[0m" - content_line "7) 配置\033[36mWireguard客户端\033[0m(限Singbox) \033[32m$wg_service\033[0m" + content_line "4) $GW_MENU_VMESS \033[32m$vms_service\033[0m" + content_line "5) $GW_MENU_SHADOWSOCKS \033[32m$sss_service\033[0m" + content_line "6) $GW_MENU_TS \033[32m$ts_service\033[0m" + content_line "7) $GW_MENU_WG \033[32m$wg_service\033[0m" } btm_box "" \ "0) $COMMON_BACK" @@ -31,11 +31,11 @@ gateway() { ;; 1) if [ -n "$(pidof CrashCore)" ] && [ "$firewall_mod" = 'iptables' ]; then - comp_box "\033[33m公网访问防火墙需要先停止服务\033[0m" \ - "是否确认继续?" - btm_box "1) 是" \ - "0) 否,返回上级菜单" - read -r -p "请输入对应标号> " res + comp_box "\033[33m$GW_FW_STOP_WARN\033[0m" \ + "$GW_CONFIRM_CONTINUE" + btm_box "1) $GW_YES" \ + "0) $GW_NO_BACK" + read -r -p "$COMMON_INPUT> " res if [ "$res" = 1 ]; then "$CRASHDIR"/start.sh stop && set_fw_wan else @@ -61,14 +61,14 @@ gateway() { if echo "$crashcore" | grep -q 'sing'; then set_tailscale else - msg_alert "\033[33m$crashcore内核暂不支持此功能,请先更换内核!\033[0m" + msg_alert "\033[33m$crashcore$GW_CORE_UNSUPPORTED\033[0m" fi ;; 7) if echo "$crashcore" | grep -q 'sing'; then set_wireguard else - msg_alert "\033[33m$crashcore内核暂不支持此功能,请先更换内核!\033[0m" + msg_alert "\033[33m$crashcore$GW_CORE_UNSUPPORTED\033[0m" fi ;; *) @@ -84,17 +84,17 @@ set_fw_wan() { [ -z "$fw_wan" ] && fw_wan=ON line_break separator_line "=" - content_line "\033[31m注意:\033[0m如在vps运行,还需在vps安全策略对相关端口同时放行" + content_line "\033[31m$GW_WARN\033[0m$GW_FW_VPS_HINT" [ -n "$fw_wan_ports" ] && - content_line "当前手动放行端口:\033[36m$fw_wan_ports\033[0m" + content_line "$GW_FW_MANUAL_PORTS\033[36m$fw_wan_ports\033[0m" [ -n "$vms_port$sss_port" ] && - content_line "当前自动放行端口:\033[36m$vms_port $sss_port\033[0m" - content_line "默认拦截端口:\033[33m$mix_port,$db_port\033[0m" + content_line "$GW_FW_AUTO_PORTS\033[36m$vms_port $sss_port\033[0m" + content_line "$GW_FW_DEFAULT_BLOCK\033[33m$mix_port,$db_port\033[0m" separator_line "=" - btm_box "1) 启用/关闭公网防火墙:\033[36m$fw_wan\033[0m" \ - "2) 添加放行端口(可包含默认拦截端口)" \ - "3) 移除指定手动放行端口" \ - "4) 清空全部手动放行端口" \ + btm_box "1) $GW_FW_TOGGLE\033[36m$fw_wan\033[0m" \ + "2) $GW_FW_ADD_PORT" \ + "3) $GW_FW_REMOVE_PORT" \ + "4) $GW_FW_CLEAR_PORTS" \ "" \ "0) $COMMON_BACK" read -r -p "$COMMON_INPUT> " num @@ -104,11 +104,11 @@ set_fw_wan() { ;; 1) if [ "$fw_wan" = ON ]; then - comp_box "是否确认关闭防火墙?" \ - "这会带来极大的安全隐患!" - btm_box "1) 是" \ - "0) 否,返回上级菜单" - read -r -p "请输入对应标号> " res + comp_box "$GW_FW_DISABLE_CONFIRM" \ + "$GW_FW_DISABLE_RISK" + btm_box "1) $GW_YES" \ + "0) $GW_NO_BACK" + read -r -p "$COMMON_INPUT> " res if [ "$res" = 1 ]; then fw_wan=OFF else @@ -122,14 +122,14 @@ set_fw_wan() { 2) port_count=$(echo "$fw_wan_ports" | awk -F',' '{print NF}') if [ "$port_count" -ge 10 ]; then - msg_alert "\033[31m最多支持设置放行10个端口,请先减少一些!\033[0m" + msg_alert "\033[31m$GW_FW_PORT_LIMIT\033[0m" else line_break read -r -p "$GW_INPUT_ALLOW_PORT> " port if echo ",$fw_wan_ports," | grep -q ",$port,"; then - msg_alert "\033[31m输入错误!请勿重复添加!\033[0m" + msg_alert "\033[31m$GW_ERR_DUP_PORT\033[0m" elif [ "$port" -lt 1 ] || [ "$port" -gt 65535 ]; then - msg_alert "\033[31m输入错误!请输入正确的数值(1-65535)!\033[0m" + msg_alert "\033[31m$GW_ERR_PORT_RANGE\033[0m" else fw_wan_ports=$(echo "$fw_wan_ports,$port" | sed "s/^,//") if setconfig fw_wan_ports "$fw_wan_ports"; then @@ -142,30 +142,30 @@ set_fw_wan() { ;; 3) while true; do - comp_box "\033[36m请直接输入要移除的端口号\033[0m" \ - "或输入 0 返回上级菜单" - read -r -p "请输入> " port + comp_box "\033[36m$GW_INPUT_REMOVE_PORT\033[0m" \ + "$GW_INPUT_0_BACK" + read -r -p "$GW_INPUT_PLAIN> " port if [ "$port" = 0 ]; then break elif echo ",$fw_wan_ports," | grep -q ",$port,"; then if [ "$port" -lt 1 ] || [ "$port" -gt 65535 ]; then - msg_alert "\033[31m输入错误!\033[0m" \ - "\033[31m请输入正确的数值(1-65535)!\033[0m" + msg_alert "\033[31m$GW_ERR_INPUT\033[0m" \ + "\033[31m$GW_ERR_PORT_RANGE\033[0m" else fw_wan_ports=$(echo ",$fw_wan_ports," | sed "s/,$port//; s/^,//; s/,$//") setconfig fw_wan_ports "$fw_wan_ports" break fi else - msg_alert "\033[31m输入错误!\033[0m" \ - "\033[31m请输入已添加过的端口!\033[0m" + msg_alert "\033[31m$GW_ERR_INPUT\033[0m" \ + "\033[31m$GW_ERR_PORT_NOT_FOUND\033[0m" fi done ;; 4) fw_wan_ports='' setconfig fw_wan_ports - msg_alert "\033[32m操作成功\033[0m" + msg_alert "\033[32m$GW_OK\033[0m" ;; *) errornum @@ -183,8 +183,8 @@ set_bot_tg_config() { cat < " num @@ -240,16 +240,16 @@ set_bot_tg() { if [ -n "$TG_CHATID" ]; then set_bot_tg_service else - msg_alert "\033[31m请先绑定TG-BOT!\033[0m" + msg_alert "\033[31m$GW_TG_BIND_FIRST\033[0m" fi ;; 2) if [ -n "$chat_ID" ] && [ -n "$push_TG" ] && [ "$push_TG" != 'publictoken' ]; then - comp_box "检测到已经绑定了TG推送BOT" \ - "是否直接使用?" - btm_box "1) 是" \ - "0) 否" - read -r -p "请输入对应标号> " res + comp_box "$GW_TG_BOUND_DETECTED" \ + "$GW_TG_USE_DIRECT" + btm_box "1) $GW_YES" \ + "0) $GW_NO" + read -r -p "$COMMON_INPUT> " res if [ "$res" = 1 ]; then TOKEN="$push_TG" set_bot_tg_config @@ -277,18 +277,18 @@ set_bot_tg() { # 自定义入站 set_vmess() { while true; do - comp_box "\033[31m注意:\033[0m" \ - "设置的端口会添加到公网访问防火墙并自动放行!" \ - "脚本只提供基础功能,更多需求请用自定义配置文件功能!" \ - "\033[31m切勿用于搭建违法翻墙节点,违者后果自负!\033[0m" - content_line "1) \033[32m启用/关闭\033[0mVmess入站 \033[32m$vms_service\033[0m" - content_line "2) 设置\033[36m监听端口\033[0m: \033[36m$vms_port\033[0m" - content_line "3) 设置\033[33mWS-path(可选)\033[0m: \033[33m$vms_ws_path\033[0m" - content_line "4) 设置\033[36m秘钥-uuid\033[0m: \033[36m$vms_uuid\033[0m" - content_line "5) 一键生成\033[32m随机秘钥\033[0m" + comp_box "\033[31m$GW_WARN\033[0m" \ + "$GW_INBOUND_WARN_PORT" \ + "$GW_INBOUND_WARN_BASIC" \ + "\033[31m$GW_INBOUND_WARN_ILLEGAL\033[0m" + content_line "1) \033[32m$GW_VMS_TOGGLE\033[0m \033[32m$vms_service\033[0m" + content_line "2) $GW_SET_LISTEN_PORT \033[36m$vms_port\033[0m" + content_line "3) $GW_SET_WSPATH \033[33m$vms_ws_path\033[0m" + content_line "4) $GW_SET_UUID \033[36m$vms_uuid\033[0m" + content_line "5) $GW_GEN_RANDOM_KEY" gen_base64 1 >/dev/null 2>&1 && - content_line "6) 设置\033[36m混淆host(可选)\033[0m: \033[33m$vms_host\033[0m" - btm_box "7) 一键生成\033[32m分享链接\033[0m" \ + content_line "6) $GW_SET_OBFS_HOST \033[33m$vms_host\033[0m" + btm_box "7) $GW_GEN_SHARE_LINK" \ "" \ "0) $COMMON_BACK" read -r -p "$COMMON_INPUT> " num @@ -305,7 +305,7 @@ set_vmess() { vms_service=ON setconfig vms_service "$vms_service" else - msg_alert "\033[31m请先完成必选设置!\033[0m" + msg_alert "\033[31m$GW_FILL_REQUIRED\033[0m" fi fi ;; @@ -332,7 +332,7 @@ set_vmess() { vms_ws_path="$text" setconfig vms_ws_path "$text" "$GT_CFG_PATH" else - msg_alert "\033[31m不是合法的path路径,必须以【/】开头!\033[0m" + msg_alert "\033[31m$GW_ERR_WSPATH\033[0m" fi ;; 4) @@ -345,7 +345,7 @@ set_vmess() { vms_uuid="$text" setconfig vms_uuid "$text" "$GT_CFG_PATH" else - msg_alert "\033[31m不是合法的UUID格式,请重新输入或使用随机生成功能!\033[0m" + msg_alert "\033[31m$GW_ERR_UUID\033[0m" fi ;; 5) @@ -355,7 +355,7 @@ set_vmess() { ;; 6) line_break - read -r -p "请输入免流混淆host(输入0删除)> " text + read -r -p "$GW_INPUT_OBFS_HOST> " text if [ "$text" = 0 ]; then vms_host='' setconfig vms_host "" "$GT_CFG_PATH" @@ -366,7 +366,7 @@ set_vmess() { ;; 7) line_break - read -r -p "请输入本机公网IP(4/6)或域名> " host_wan + read -r -p "$GW_INPUT_HOST> " host_wan if [ -n "$host_wan" ] && [ -n "$vms_port" ] && [ -n "$vms_uuid" ]; then [ -n "$vms_ws_path" ] && vms_net=ws vms_json=$( @@ -387,10 +387,10 @@ EOF ) vms_link="vmess://$(gen_base64 "$vms_json")" line_break - echo -e "你的分享链接是(请勿随意分享给他人):\n\033[32m$vms_link\033[0m" + echo -e "$GW_SHARE_LINK_HINT\n\033[32m$vms_link\033[0m" sleep 1 else - msg_alert "\033[31m请先完成必选设置!\033[0m" + msg_alert "\033[31m$GW_FILL_REQUIRED\033[0m" fi ;; *) @@ -402,16 +402,16 @@ EOF set_shadowsocks() { while true; do - comp_box "\033[31m注意:\033[0m" \ - "设置的端口会添加到公网访问防火墙并自动放行!" \ - "脚本只提供基础功能,更多需求请用自定义配置文件功能!" \ - "\033[31m切勿用于搭建违法翻墙节点,违者后果自负!\033[0m" - content_line "1) \033[32m启用/关闭\033[0mShadowSocks入站 \033[32m$sss_service\033[0m" - content_line "2) 设置\033[36m监听端口\033[0m: \033[36m$sss_port\033[0m" - content_line "3) 选择\033[33m加密协议\033[0m: \033[33m$sss_cipher\033[0m" - content_line "4) 设置\033[36mpassword\033[0m: \033[36m$sss_pwd\033[0m" + comp_box "\033[31m$GW_WARN\033[0m" \ + "$GW_INBOUND_WARN_PORT" \ + "$GW_INBOUND_WARN_BASIC" \ + "\033[31m$GW_INBOUND_WARN_ILLEGAL\033[0m" + content_line "1) \033[32m$GW_SS_TOGGLE\033[0m \033[32m$sss_service\033[0m" + content_line "2) $GW_SET_LISTEN_PORT \033[36m$sss_port\033[0m" + content_line "3) $GW_SS_SELECT_CIPHER \033[33m$sss_cipher\033[0m" + content_line "4) $GW_SS_SET_PWD \033[36m$sss_pwd\033[0m" gen_base64 1 >/dev/null 2>&1 && - content_line "5) 一键生成分享链接" + content_line "5) $GW_GEN_SHARE_LINK" btm_box "" \ "0) $COMMON_BACK" read -r -p "$COMMON_INPUT> " num @@ -428,7 +428,7 @@ set_shadowsocks() { sss_service=ON setconfig sss_service "$sss_service" else - msg_alert "\033[31m请先完成必选设置!\033[0m" + msg_alert "\033[31m$GW_FILL_REQUIRED\033[0m" fi fi ;; @@ -446,15 +446,15 @@ set_shadowsocks() { fi ;; 3) - comp_box "请选择要使用的加密协议:" + comp_box "$GW_SS_SELECT_CIPHER" content_line "1) \033[32mxchacha20-ietf-poly1305\033[0m" content_line "2) \033[32mchacha20-ietf-poly1305\033[0m" content_line "3) \033[32maes-128-gcm\033[0m" content_line "4) \033[32maes-256-gcm\033[0m" gen_random 1 >/dev/null && { content_line "" - content_line " - - - - - - -\033[31m注意\033[0m- - - - - - -" - content_line " 2022系列加密必须使用随机生成的password!" + content_line "$GW_SS_2022_NOTE_HEADER" + content_line "$GW_SS_2022_REQUIRE" content_line "5) \033[32m2022-blake3-chacha20-poly1305\033[0m" content_line "6) \033[32m2022-blake3-aes-128-gcm\033[0m" content_line "7) \033[32m2022-blake3-aes-256-gcm\033[0m" @@ -501,10 +501,10 @@ set_shadowsocks() { ;; 4) if echo "$sss_cipher" | grep -q '2022-blake3'; then - msg_alert "\033[31m注意:\033[0m2022系列加密必须使用脚本随机生成的password!" + msg_alert "\033[31m$GW_WARN\033[0m$GW_SS_2022_PASSWORD_ONLY" else line_break - read -r -p "请输入秘钥(输入0删除)> " text + read -r -p "$GW_INPUT_PWD_DEL0> " text [ "$text" = 0 ] && sss_pwd='' || sss_pwd="$text" setconfig sss_pwd "$text" "$GT_CFG_PATH" fi @@ -515,10 +515,10 @@ set_shadowsocks() { if [ -n "$text" ] && [ -n "$sss_port" ] && [ -n "$sss_cipher" ] && [ -n "$sss_pwd" ]; then ss_link="ss://$(gen_base64 "$sss_cipher":"$sss_pwd")@${text}:${sss_port}#ShellCrash_ss_in" line_break - echo -e "你的分享链接是(请勿随意分享给他人):\n\033[32m$ss_link\033[0m" + echo -e "$GW_SHARE_LINK_HINT\n\033[32m$ss_link\033[0m" sleep 1 else - msg_alert "\033[31m请先完成必选设置!\033[0m" + msg_alert "\033[31m$GW_FILL_REQUIRED\033[0m" fi ;; *) @@ -532,15 +532,15 @@ set_shadowsocks() { set_tailscale() { while true; do [ -n "$ts_auth_key" ] && ts_auth_key_info='*********' - comp_box "\033[31m注意:\033[0m脚本默认内核为了节约内存没有编译Tailscale模块\n如需使用请先前往自定义内核更新完整版内核文件!" \ - "创建秘钥:\033[32;4mhttps://login.tailscale.com/admin/settings/keys\033[0m" \ - "访问非本机目标需允许通告:\033[32;4mhttps://login.tailscale.com\033[0m" \ - "访问非本机目标需在终端设置使用Subnet或EXIT-NODE模式" - btm_box "1) \033[32m启用/关闭\033[0mTailscale服务 \033[32m$ts_service\033[0m" \ - "2) 设置\033[36m秘钥\033[0m(Auth Key) $ts_auth_key_info" \ - "3) 通告路由\033[33m内网地址\033[0m(Subnet) \033[36m$ts_subnet\033[0m" \ - "4) 通告路由\033[31m全部流量\033[0m(EXIT-NODE) \033[36m$ts_exit_node\033[0m" \ - "5) 设置\033[36m设备名称\033[0m(可选) $ts_hostname" \ + comp_box "\033[31m$GW_WARN\033[0m$GW_TS_WARN" \ + "$GW_TS_KEY_URL" \ + "$GW_TS_ALLOW_URL" \ + "$GW_TS_SUBNET_EXIT_HINT" + btm_box "1) \033[32m$GW_TS_TOGGLE\033[0m \033[32m$ts_service\033[0m" \ + "2) $GW_TS_SET_AUTHKEY $ts_auth_key_info" \ + "3) $GW_TS_SUBNET \033[36m$ts_subnet\033[0m" \ + "4) $GW_TS_EXIT_NODE \033[36m$ts_exit_node\033[0m" \ + "5) $GW_TS_HOSTNAME $ts_hostname" \ "" \ "0) $COMMON_BACK" read -r -p "$COMMON_INPUT> " num @@ -553,12 +553,12 @@ set_tailscale() { [ "$ts_service" = ON ] && ts_service=OFF || ts_service=ON setconfig ts_service "$ts_service" else - msg_alert "\033[31m请先设置秘钥!\033[0m" + msg_alert "\033[31m$GW_TS_SET_KEY_FIRST\033[0m" fi ;; 2) line_break - read -r -p "请输入秘钥(输入0删除)> " text + read -r -p "$GW_TS_INPUT_KEY> " text [ "$text" = 0 ] && unset ts_auth_key ts_auth_key_info || ts_auth_key="$text" setconfig ts_auth_key "$ts_auth_key" "$GT_CFG_PATH" ;; @@ -571,14 +571,14 @@ set_tailscale() { ts_exit_node=false else ts_exit_node=true - msg_alert -t 3 "\033[31m注意:\033[0m目前exitnode的官方DNS有bug,要么启用域名嗅探并禁用TailscaleDNS,\n要么必须在网页设置Globalname servers为分配的本设备子网IP且启用override" + msg_alert -t 3 "\033[31m$GW_WARN\033[0m$GW_TS_EXITNODE_WARN" fi setconfig ts_exit_node "$ts_exit_node" "$GT_CFG_PATH" ;; 5) - comp_box "\033[36m请直接输入希望在Tailscale显示的设备名称\033[0m" \ - "或输入 0 返回上级菜单" - read -r -p "请输入> " ts_hostname + comp_box "\033[36m$GW_TS_INPUT_NAME\033[0m" \ + "$GW_INPUT_0_BACK" + read -r -p "$GW_INPUT_PLAIN> " ts_hostname if [ "$ts_hostname" != 0 ]; then setconfig ts_hostname "$ts_hostname" "$GT_CFG_PATH" fi @@ -610,17 +610,17 @@ set_wireguard() { else unset wgpsk_key_info fi - comp_box "\033[31m注意:\033[0m脚本默认内核为了节约内存没有编译WireGuard模块\n如需使用请先前往自定义内核更新完整版内核文件!" - btm_box "1) \033[32m启用/关闭\033[0mWireguard服务 \033[32m$wg_service\033[0m" \ + comp_box "\033[31m$GW_WARN\033[0m$GW_WG_WARN" + btm_box "1) \033[32m$GW_WG_TOGGLE\033[0m \033[32m$wg_service\033[0m" \ "" \ - "2) 设置\033[36mEndpoint地址\033[0m: \033[36m$wg_server\033[0m" \ - "3) 设置\033[36mEndpoint端口\033[0m: \033[36m$wg_port\033[0m" \ - "4) 设置\033[36m公钥-PublicKey\033[0m: \033[36m$wgp_key_info\033[0m" \ - "5) 设置\033[36m密钥-PresharedKey\033[0m: \033[36m$wgpsk_key_info\033[0m" \ + "2) $GW_WG_SET_ENDPOINT \033[36m$wg_server\033[0m" \ + "3) $GW_WG_SET_ENDPOINT_PORT \033[36m$wg_port\033[0m" \ + "4) $GW_WG_SET_PUBLIC \033[36m$wgp_key_info\033[0m" \ + "5) $GW_WG_SET_PRESHARED \033[36m$wgpsk_key_info\033[0m" \ "" \ - "6) 设置\033[33m私钥-PrivateKey\033[0m: \033[33m$wgv_key_info\033[0m" \ - "7) 设置\033[33m组网IPV4地址\033[0m: \033[33m$wg_ipv4\033[0m" \ - "8) 可选\033[33m组网IPV6地址\033[0m: \033[33m$wg_ipv6\033[0m" \ + "6) $GW_WG_SET_PRIVATE \033[33m$wgv_key_info\033[0m" \ + "7) $GW_WG_SET_IPV4 \033[33m$wg_ipv4\033[0m" \ + "8) $GW_WG_SET_IPV6 \033[33m$wg_ipv6\033[0m" \ "" \ "0) $COMMON_BACK" read -r -p "$COMMON_INPUT> " num @@ -633,12 +633,12 @@ set_wireguard() { [ "$wg_service" = ON ] && wg_service=OFF || wg_service=ON setconfig wg_service "$wg_service" else - msg_alert "\033[31m请先完成必选设置!\033[0m" + msg_alert "\033[31m$GW_FILL_REQUIRED\033[0m" fi ;; [1-8]) line_break - read -r -p "请输入相应内容(回车或0删除)> " text + read -r -p "$GW_INPUT_TEXT_DEL0> " text [ "$text" = 0 ] && text='' case "$num" in 2) @@ -677,3 +677,4 @@ set_wireguard() { esac done } +