已修改 scripts/lang/chs/7_gateway.lang

已修改        scripts/lang/en/7_gateway.lang
已修改        scripts/menus/7_gateway.sh
This commit is contained in:
juewuy
2026-03-14 04:37:49 -07:00
parent 8f781874e3
commit 1a00022ea2
3 changed files with 275 additions and 112 deletions

View File

@@ -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??)"

View File

@@ -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)"

View File

@@ -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 <<EOF
{
"commands": [
{"command": "$my_alias", "description": "呼出ShellCrash菜单"},
{"command": "help", "description": "查看帮助"}
{"command": "$my_alias", "description": "$GW_TG_CMD_MENU"},
{"command": "help", "description": "$GW_TG_CMD_HELP"}
]
}
EOF
@@ -224,10 +224,10 @@ set_bot_tg() {
while true; do
[ -n "$ts_auth_key" ] && ts_auth_key_info="$GW_SET"
[ -n "$TG_CHATID" ] && TG_CHATID_info="$GW_BOUND"
comp_box "\033[31m注意:\033[0m由于网络环境原因此机器人仅限服务启动时运行"
btm_box "1) 启用关闭TG-BOT服务 \033[32m$bot_tg_service\033[0m" \
"2) TG-BOT绑定设置 \033[32m$TG_CHATID_info\033[0m" \
"3) 启动时推送菜单 \033[32m$TG_menupush\033[0m" \
comp_box "\033[31m$GW_WARN\033[0m$GW_TG_WARN"
btm_box "1) $GW_TG_TOGGLE \033[32m$bot_tg_service\033[0m" \
"2) $GW_TG_BIND \033[32m$TG_CHATID_info\033[0m" \
"3) $GW_TG_MENUPUSH \033[32m$TG_menupush\033[0m" \
"" \
"0) $COMMON_BACK"
read -r -p "$COMMON_INPUT> " 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[0mAuth Key $ts_auth_key_info" \
"3) 通告路由\033[33m内网地址\033[0mSubnet \033[36m$ts_subnet\033[0m" \
"4) 通告路由\033[31m全部流量\033[0mEXIT-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
}