mirror of
https://github.com/juewuy/ShellCrash.git
synced 2026-03-10 23:41:22 +00:00
Update 7_gateway.sh
This commit is contained in:
@@ -11,30 +11,43 @@ __IS_MODULE_7_GATEWAY_LOADED=1
|
||||
# 访问与控制主菜单
|
||||
gateway() {
|
||||
while true; do
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[30;47m欢迎使用访问与控制菜单:\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 配置\033[33m公网访问防火墙 \033[32m$fw_wan\033[0m"
|
||||
echo -e " 2 配置\033[36mTelegram专属控制机器人 \033[32m$bot_tg_service\033[0m"
|
||||
echo -e " 3 配置\033[36mDDNS自动域名\033[0m"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[30;47m访问与控制\033[0m"
|
||||
separator_line "-"
|
||||
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"
|
||||
[ "$disoverride" != "1" ] && {
|
||||
echo -e " 4 自定义\033[33m公网Vmess入站\033[0m节点 \033[32m$vms_service\033[0m"
|
||||
echo -e " 5 自定义\033[33m公网ShadowSocks入站\033[0m节点 \033[32m$sss_service\033[0m"
|
||||
echo -e " 6 配置\033[36mTailscale内网穿透\033[0m(限Singbox) \033[32m$ts_service\033[0m"
|
||||
echo -e " 7 配置\033[36mWireguard客户端\033[0m(限Singbox) \033[32m$wg_service\033[0m"
|
||||
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"
|
||||
}
|
||||
echo -e " 0 返回上级菜单"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入对应数字 > " num
|
||||
content_line "0) 返回上级菜单"
|
||||
separator_line "="
|
||||
read -r -p "请输入对应标号> " num
|
||||
case "$num" in
|
||||
"" | 0)
|
||||
break
|
||||
;;
|
||||
1)
|
||||
echo "-----------------------------------------------"
|
||||
line_break
|
||||
separator_line "="
|
||||
if [ -n "$(pidof CrashCore)" ] && [ "$firewall_mod" = 'iptables' ]; then
|
||||
read -p "需要先停止服务,是否继续?(1/0) > " res
|
||||
[ "$res" = 1 ] && "$CRASHDIR"/start.sh stop && set_fw_wan
|
||||
content_line "\033[33m公网访问防火墙需要先停止服务\033[0m"
|
||||
separator_line "-"
|
||||
content_line "是否继续:"
|
||||
separator_line "-"
|
||||
content_line "1) 是"
|
||||
content_line "0) 否,返回上级菜单"
|
||||
separator_line "="
|
||||
read -r -p "请输入对应标号> " res
|
||||
if [ "$res" = 1 ]; then
|
||||
"$CRASHDIR"/start.sh stop && set_fw_wan
|
||||
else
|
||||
continue
|
||||
fi
|
||||
else
|
||||
set_fw_wan
|
||||
fi
|
||||
@@ -55,7 +68,10 @@ gateway() {
|
||||
if echo "$crashcore" | grep -q 'sing'; then
|
||||
set_tailscale
|
||||
else
|
||||
echo -e "\033[33m$crashcore内核暂不支持此功能,请先更换内核!\033[0m"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[33m$crashcore内核暂不支持此功能,请先更换内核!\033[0m"
|
||||
separator_line "="
|
||||
sleep 1
|
||||
fi
|
||||
;;
|
||||
@@ -63,14 +79,16 @@ gateway() {
|
||||
if echo "$crashcore" | grep -q 'sing'; then
|
||||
set_wireguard
|
||||
else
|
||||
echo -e "\033[33m$crashcore内核暂不支持此功能,请先更换内核!\033[0m"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[33m$crashcore内核暂不支持此功能,请先更换内核!\033[0m"
|
||||
separator_line "="
|
||||
sleep 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
errornum
|
||||
sleep 1
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
@@ -80,44 +98,66 @@ gateway() {
|
||||
set_fw_wan() {
|
||||
while true; do
|
||||
[ -z "$fw_wan" ] && fw_wan=ON
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m注意:\033[0m如在vps运行,还需在vps安全策略对相关端口同时放行"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m注意:\033[0m如在vps运行,还需在vps安全策略对相关端口同时放行"
|
||||
[ -n "$fw_wan_ports" ] &&
|
||||
echo -e "当前手动放行端口:\033[36m$fw_wan_ports\033[0m"
|
||||
content_line "当前手动放行端口:\033[36m$fw_wan_ports\033[0m"
|
||||
[ -n "$vms_port$sss_port" ] &&
|
||||
echo -e "当前自动放行端口:\033[36m$vms_port $sss_port\033[0m"
|
||||
echo -e "默认拦截端口:\033[33m$mix_port,$db_port\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 启用/关闭公网防火墙: \033[36m$fw_wan\033[0m"
|
||||
echo -e " 2 添加放行端口(可包含默认拦截端口)"
|
||||
echo -e " 3 移除指定手动放行端口"
|
||||
echo -e " 4 清空全部手动放行端口"
|
||||
echo -e " 0 返回上级菜单"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入对应数字 > " num
|
||||
content_line "当前自动放行端口:\033[36m$vms_port $sss_port\033[0m"
|
||||
content_line "默认拦截端口:\033[33m$mix_port,$db_port\033[0m"
|
||||
separator_line "-"
|
||||
content_line "1) 启用/关闭公网防火墙:\033[36m$fw_wan\033[0m"
|
||||
content_line "2) 添加放行端口(可包含默认拦截端口)"
|
||||
content_line "3) 移除指定手动放行端口"
|
||||
content_line "4) 清空全部手动放行端口"
|
||||
content_line "0) 返回上级菜单"
|
||||
separator_line "="
|
||||
read -r -p "请输入对应标号> " num
|
||||
case $num in
|
||||
"" | 0)
|
||||
break
|
||||
;;
|
||||
1)
|
||||
if [ "$fw_wan" = ON ]; then
|
||||
read -p "确认关闭防火墙?这会带来极大的安全隐患!(1/0) > " res
|
||||
[ "$res" = 1 ] && fw_wan=OFF || fw_wan=ON
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "是否确认关闭防火墙?"
|
||||
content_line "这会带来极大的安全隐患!"
|
||||
separator_line "-"
|
||||
content_line "1) 是"
|
||||
content_line "0) 否,返回上级菜单"
|
||||
separator_line "="
|
||||
read -r -p "请输入对应标号> " res
|
||||
if [ "$res" = 1 ]; then
|
||||
fw_wan=OFF
|
||||
else
|
||||
fw_wan=ON
|
||||
fi
|
||||
else
|
||||
fw_wan=ON
|
||||
fi
|
||||
setconfig fw_wan "$fw_wan"
|
||||
;;
|
||||
2)
|
||||
line_break
|
||||
port_count=$(echo "$fw_wan_ports" | awk -F',' '{print NF}')
|
||||
if [ "$port_count" -ge 10 ]; then
|
||||
echo -e "\033[31m最多支持设置放行10个端口,请先减少一些!\033[0m"
|
||||
separator_line "="
|
||||
content_line "\033[31m最多支持设置放行10个端口,请先减少一些!\033[0m"
|
||||
separator_line "="
|
||||
else
|
||||
read -p "请输入要放行的端口号 > " port
|
||||
read -r -p "请输入要放行的端口号> " port
|
||||
if echo ",$fw_wan_ports," | grep -q ",$port,"; then
|
||||
echo -e "\033[31m输入错误!请勿重复添加!\033[0m"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m输入错误!请勿重复添加!\033[0m"
|
||||
separator_line "="
|
||||
elif [ "$port" -lt 1 ] || [ "$port" -gt 65535 ]; then
|
||||
echo -e "\033[31m输入错误!请输入正确的数值(1-65535)!\033[0m"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m输入错误!请输入正确的数值(1-65535)!\033[0m"
|
||||
separator_line "="
|
||||
else
|
||||
fw_wan_ports=$(echo "$fw_wan_ports,$port" | sed "s/^,//")
|
||||
setconfig fw_wan_ports "$fw_wan_ports"
|
||||
@@ -126,22 +166,46 @@ set_fw_wan() {
|
||||
sleep 1
|
||||
;;
|
||||
3)
|
||||
read -p "请输入要移除的端口号 > " port
|
||||
if echo ",$fw_wan_ports," | grep -q ",$port,"; then
|
||||
while true; do
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "请直接输入要移除的端口号"
|
||||
content_line "或输入 0 返回上级菜单"
|
||||
separator_line "="
|
||||
read -r -p "请输入> " port
|
||||
if [ "$port" = 0 ]; then
|
||||
break
|
||||
elif echo ",$fw_wan_ports," | grep -q ",$port,"; then
|
||||
if [ "$port" -lt 1 ] || [ "$port" -gt 65535 ]; then
|
||||
echo -e "\033[31m输入错误!请输入正确的数值(1-65535)!\033[0m"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m输入错误!\033[0m"
|
||||
content_line "\033[31m请输入正确的数值(1-65535)!\033[0m"
|
||||
separator_line "="
|
||||
sleep 1
|
||||
else
|
||||
fw_wan_ports=$(echo ",$fw_wan_ports," | sed "s/,$port//; s/^,//; s/,$//")
|
||||
setconfig fw_wan_ports "$fw_wan_ports"
|
||||
break
|
||||
fi
|
||||
else
|
||||
echo -e "\033[31m输入错误!请输入已添加过的端口!\033[0m"
|
||||
fi
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m输入错误!\033[0m"
|
||||
content_line "\033[31m请输入已添加过的端口!\033[0m"
|
||||
separator_line "="
|
||||
sleep 1
|
||||
fi
|
||||
done
|
||||
;;
|
||||
4)
|
||||
fw_wan_ports=''
|
||||
setconfig fw_wan_ports
|
||||
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[32m操作成功\033[0m"
|
||||
separator_line "="
|
||||
sleep 1
|
||||
;;
|
||||
*)
|
||||
@@ -152,12 +216,13 @@ set_fw_wan() {
|
||||
done
|
||||
}
|
||||
|
||||
#tg_BOT相关
|
||||
set_bot_tg_config(){
|
||||
# tg_BOT相关
|
||||
set_bot_tg_config() {
|
||||
setconfig TG_TOKEN "$TOKEN" "$GT_CFG_PATH"
|
||||
setconfig TG_CHATID "$chat_ID" "$GT_CFG_PATH"
|
||||
#设置机器人快捷命令
|
||||
JSON=$(cat <<EOF
|
||||
# 设置机器人快捷命令
|
||||
JSON=$(
|
||||
cat <<EOF
|
||||
{
|
||||
"commands": [
|
||||
{"command": "crash", "description": "呼出ShellCrash菜单"},
|
||||
@@ -165,7 +230,7 @@ set_bot_tg_config(){
|
||||
]
|
||||
}
|
||||
EOF
|
||||
)
|
||||
)
|
||||
TEXT='已完成Telegram机器人设置!'
|
||||
. "$CRASHDIR"/libs/web_json.sh
|
||||
bot_api="https://api.telegram.org/bot$TOKEN"
|
||||
@@ -173,7 +238,8 @@ EOF
|
||||
web_json_post "$bot_api/sendMessage" '{"chat_id":"'"$chat_ID"'","text":"'"$TEXT"'","parse_mode":"Markdown"}'
|
||||
echo -e "\033[32m$TEXT\033[0m"
|
||||
}
|
||||
set_bot_tg_init(){
|
||||
|
||||
set_bot_tg_init() {
|
||||
. "$CRASHDIR"/menus/bot_tg_bind.sh && private_bot && set_bot
|
||||
if [ "$?" = 0 ]; then
|
||||
set_bot_tg_config
|
||||
@@ -182,8 +248,9 @@ set_bot_tg_init(){
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
set_bot_tg_service(){
|
||||
if [ "$bot_tg_service" = ON ];then
|
||||
|
||||
set_bot_tg_service() {
|
||||
if [ "$bot_tg_service" = ON ]; then
|
||||
bot_tg_service=OFF
|
||||
. "$CRASHDIR"/menus/bot_tg_service.sh && bot_tg_stop
|
||||
else
|
||||
@@ -197,14 +264,15 @@ set_bot_tg() {
|
||||
while true; do
|
||||
[ -n "$ts_auth_key" ] && ts_auth_key_info='已设置'
|
||||
[ -n "$TG_CHATID" ] && TG_CHATID_info='已绑定'
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m注意:\033[0m由于网络环境原因,此机器人仅限服务启动时运行!"
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 启用/关闭TG-BOT服务 \033[32m$bot_tg_service\033[0m"
|
||||
echo -e " 2 TG-BOT绑定设置 \033[32m$TG_CHATID_info\033[0m"
|
||||
echo -e " 0 返回上级菜单 \033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
read -r -p "请输入对应数字 > " num
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m注意:\033[0m由于网络环境原因,此机器人仅限服务启动时运行!"
|
||||
separator_line "-"
|
||||
content_line "1) 启用/关闭TG-BOT服务 \033[32m$bot_tg_service\033[0m"
|
||||
content_line "2) TG-BOT绑定设置 \033[32m$TG_CHATID_info\033[0m"
|
||||
content_line "0) 返回上级菜单"
|
||||
separator_line "="
|
||||
read -r -p "请输入对应标号> " num
|
||||
case "$num" in
|
||||
"" | 0)
|
||||
break
|
||||
@@ -214,13 +282,25 @@ set_bot_tg() {
|
||||
if [ -n "$TG_CHATID" ]; then
|
||||
set_bot_tg_service
|
||||
else
|
||||
echo -e "\033[31m请先绑定TG-BOT!\033[0m"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m请先绑定TG-BOT!\033[0m"
|
||||
separator_line "="
|
||||
fi
|
||||
sleep 1
|
||||
;;
|
||||
2)
|
||||
if [ -n "$chat_ID" ] && [ -n "$push_TG" ] && [ "$push_TG" != 'publictoken' ]; then
|
||||
read -r -p "检测到已经绑定了TG推送BOT,是否直接使用?(1/0) > " res
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "检测到已经绑定了TG推送BOT"
|
||||
separator_line "-"
|
||||
content_line "是否直接使用:"
|
||||
separator_line "-"
|
||||
content_line "1) 是"
|
||||
content_line "0) 否"
|
||||
separator_line "="
|
||||
read -r -p "请输入对应标号> " res
|
||||
if [ "$res" = 1 ]; then
|
||||
TOKEN="$push_TG"
|
||||
set_bot_tg_config
|
||||
@@ -240,22 +320,24 @@ set_bot_tg() {
|
||||
# 自定义入站
|
||||
set_vmess() {
|
||||
while true; do
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m注意:\033[0m设置的端口会添加到公网访问防火墙并自动放行!\n 脚本只提供基础功能,更多需求请用自定义配置文件功能!"
|
||||
echo -e " \033[31m切勿用于搭建违法翻墙节点,违者后果自负!\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 \033[32m启用/关闭\033[0mVmess入站 \033[32m$vms_service\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 2 设置\033[36m监听端口\033[0m: \033[36m$vms_port\033[0m"
|
||||
echo -e " 3 设置\033[33mWS-path(可选)\033[0m: \033[33m$vms_ws_path\033[0m"
|
||||
echo -e " 4 设置\033[36m秘钥-uuid\033[0m: \033[36m$vms_uuid\033[0m"
|
||||
echo -e " 5 一键生成\033[32m随机秘钥\033[0m"
|
||||
echo -e " 6 设置\033[36m混淆host(可选)\033[0m: \033[33m$vms_host\033[0m"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m注意:\033[0m"
|
||||
content_line "设置的端口会添加到公网访问防火墙并自动放行!"
|
||||
content_line "脚本只提供基础功能,更多需求请用自定义配置文件功能!"
|
||||
content_line "\033[31m切勿用于搭建违法翻墙节点,违者后果自负!\033[0m"
|
||||
separator_line "-"
|
||||
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"
|
||||
gen_base64 1 >/dev/null 2>&1 &&
|
||||
echo -e " 7 一键生成\033[32m分享链接\033[0m"
|
||||
echo -e " 0 返回上级菜单 \033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入对应数字 > " num
|
||||
content_line "6) 设置\033[36m混淆host(可选)\033[0m: \033[33m$vms_host\033[0m"
|
||||
content_line "7) 一键生成\033[32m分享链接\033[0m"
|
||||
content_line "0) 返回上级菜单"
|
||||
separator_line "="
|
||||
read -r -p "请输入对应标号> " num
|
||||
case "$num" in
|
||||
"" | 0)
|
||||
break
|
||||
@@ -269,13 +351,17 @@ set_vmess() {
|
||||
vms_service=ON
|
||||
setconfig vms_service "$vms_service"
|
||||
else
|
||||
echo -e "\033[31m请先完成必选设置!\033[0m"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m请先完成必选设置!\033[0m"
|
||||
separator_line "="
|
||||
sleep 1
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
2)
|
||||
read -p "请输入端口号(输入0删除) > " text
|
||||
line_break
|
||||
read -r -p "请输入端口号(输入0删除)> " text
|
||||
if [ "$text" = 0 ]; then
|
||||
vms_port=''
|
||||
setconfig vms_port "" "$GT_CFG_PATH"
|
||||
@@ -287,7 +373,8 @@ set_vmess() {
|
||||
fi
|
||||
;;
|
||||
3)
|
||||
read -p "请输入ws-path路径(输入0删除) > " text
|
||||
line_break
|
||||
read -r -p "请输入ws-path路径(输入0删除)> " text
|
||||
if [ "$text" = 0 ]; then
|
||||
vms_ws_path=''
|
||||
setconfig vms_ws_path "" "$GT_CFG_PATH"
|
||||
@@ -295,12 +382,16 @@ set_vmess() {
|
||||
vms_ws_path="$text"
|
||||
setconfig vms_ws_path "$text" "$GT_CFG_PATH"
|
||||
else
|
||||
echo -e "\033[31m不是合法的path路径,必须以【/】开头!\033[0m"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m不是合法的path路径,必须以【/】开头!\033[0m"
|
||||
separator_line "="
|
||||
sleep 1
|
||||
fi
|
||||
;;
|
||||
4)
|
||||
read -p "请输入UUID(输入0删除) > " text
|
||||
line_break
|
||||
read -r -p "请输入UUID(输入0删除)> " text
|
||||
if [ "$text" = 0 ]; then
|
||||
vms_uuid=''
|
||||
setconfig vms_uuid "" "$GT_CFG_PATH"
|
||||
@@ -308,7 +399,10 @@ set_vmess() {
|
||||
vms_uuid="$text"
|
||||
setconfig vms_uuid "$text" "$GT_CFG_PATH"
|
||||
else
|
||||
echo -e "\033[31m不是合法的UUID格式,请重新输入或使用随机生成功能!\033[0m"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m不是合法的UUID格式,请重新输入或使用随机生成功能!\033[0m"
|
||||
separator_line "="
|
||||
sleep 1
|
||||
fi
|
||||
;;
|
||||
@@ -318,7 +412,8 @@ set_vmess() {
|
||||
sleep 1
|
||||
;;
|
||||
6)
|
||||
read -p "请输入免流混淆host(输入0删除) > " text
|
||||
line_break
|
||||
read -r -p "请输入免流混淆host(输入0删除)> " text
|
||||
if [ "$text" = 0 ]; then
|
||||
vms_host=''
|
||||
setconfig vms_host "" "$GT_CFG_PATH"
|
||||
@@ -328,7 +423,8 @@ set_vmess() {
|
||||
fi
|
||||
;;
|
||||
7)
|
||||
read -p "请输入本机公网IP(4/6)或域名 > " host_wan
|
||||
line_break
|
||||
read -r -p "请输入本机公网IP(4/6)或域名> " host_wan
|
||||
if [ -n "$host_wan" ] && [ -n "$vms_port" ] && [ -n "$vms_uuid" ]; then
|
||||
[ -n "$vms_ws_path" ] && vms_net=ws
|
||||
vms_json=$(
|
||||
@@ -348,17 +444,21 @@ set_vmess() {
|
||||
EOF
|
||||
)
|
||||
vms_link="vmess://$(gen_base64 "$vms_json")"
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "你的分享链接是(请勿随意分享给他人):\n\033[32m$vms_link\033[0m"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "你的分享链接是(请勿随意分享给他人):\n\033[32m$vms_link\033[0m"
|
||||
separator_line "="
|
||||
else
|
||||
echo -e "\033[31m请先完成必选设置!\033[0m"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m请先完成必选设置!\033[0m"
|
||||
separator_line "="
|
||||
fi
|
||||
sleep 1
|
||||
;;
|
||||
*)
|
||||
errornum
|
||||
sleep 1
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
@@ -366,20 +466,22 @@ EOF
|
||||
|
||||
set_shadowsocks() {
|
||||
while true; do
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m注意:\033[0m设置的端口会添加到公网访问防火墙并自动放行!\n 脚本只提供基础功能,更多需求请用自定义配置文件功能!"
|
||||
echo -e " \033[31m切勿用于搭建违法翻墙节点,违者后果自负!\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 \033[32m启用/关闭\033[0mShadowSocks入站 \033[32m$sss_service\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 2 设置\033[36m监听端口\033[0m: \033[36m$sss_port\033[0m"
|
||||
echo -e " 3 选择\033[33m加密协议\033[0m: \033[33m$sss_cipher\033[0m"
|
||||
echo -e " 4 设置\033[36mpassword\033[0m: \033[36m$sss_pwd\033[0m"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m注意:\033[0m"
|
||||
content_line "设置的端口会添加到公网访问防火墙并自动放行!"
|
||||
content_line "脚本只提供基础功能,更多需求请用自定义配置文件功能!"
|
||||
content_line "\033[31m切勿用于搭建违法翻墙节点,违者后果自负!\033[0m"
|
||||
separator_line "-"
|
||||
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"
|
||||
gen_base64 1 >/dev/null 2>&1 &&
|
||||
echo -e " 5 一键生成分享链接"
|
||||
echo -e " 0 返回上级菜单 \033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
read -r -p "请输入对应数字 > " num
|
||||
content_line "5) 一键生成分享链接"
|
||||
content_line "0) 返回上级菜单"
|
||||
separator_line "="
|
||||
read -r -p "请输入对应标号> " num
|
||||
case "$num" in
|
||||
"" | 0)
|
||||
break
|
||||
@@ -393,13 +495,17 @@ set_shadowsocks() {
|
||||
sss_service=ON
|
||||
setconfig sss_service "$sss_service"
|
||||
else
|
||||
echo -e "\033[31m请先完成必选设置!\033[0m"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m请先完成必选设置!\033[0m"
|
||||
separator_line "="
|
||||
sleep 1
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
2)
|
||||
read -r -p "请输入端口号(输入0删除) > " text
|
||||
line_break
|
||||
read -r -p "请输入端口号(输入0删除)> " text
|
||||
if [ "$text" = 0 ]; then
|
||||
sss_port=''
|
||||
setconfig sss_port "" "$GT_CFG_PATH"
|
||||
@@ -411,23 +517,29 @@ set_shadowsocks() {
|
||||
fi
|
||||
;;
|
||||
3)
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 \033[32mxchacha20-ietf-poly1305\033[0m"
|
||||
echo -e " 2 \033[32mchacha20-ietf-poly1305\033[0m"
|
||||
echo -e " 3 \033[32maes-128-gcm\033[0m"
|
||||
echo -e " 4 \033[32maes-256-gcm\033[0m"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "请选择要使用的加密协议:"
|
||||
separator_line "-"
|
||||
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 && {
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m注意:\033[0m2022系列加密必须使用随机生成的password!"
|
||||
echo -e " 5 \033[32m2022-blake3-chacha20-poly1305\033[0m"
|
||||
echo -e " 6 \033[32m2022-blake3-aes-128-gcm\033[0m"
|
||||
echo -e " 7 \033[32m2022-blake3-aes-256-gcm\033[0m"
|
||||
content_line ""
|
||||
content_line " - - - - - - -\033[31m注意\033[0m- - - - - - -"
|
||||
content_line " 2022系列加密必须使用随机生成的password!"
|
||||
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"
|
||||
}
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 0 返回上级菜单"
|
||||
read -r -p "请选择要使用的加密协议 > " num
|
||||
content_line ""
|
||||
content_line "0) 返回上级菜单"
|
||||
separator_line "="
|
||||
read -r -p "请输入对应标号> " num
|
||||
case "$num" in
|
||||
"" | 1)
|
||||
0) ;;
|
||||
1)
|
||||
sss_cipher=xchacha20-ietf-poly1305
|
||||
sss_pwd=$(gen_random 16)
|
||||
;;
|
||||
@@ -455,29 +567,41 @@ set_shadowsocks() {
|
||||
sss_cipher=2022-blake3-aes-256-gcm
|
||||
sss_pwd=$(gen_random 32)
|
||||
;;
|
||||
*) ;;
|
||||
*)
|
||||
errornum
|
||||
sleep 1
|
||||
;;
|
||||
esac
|
||||
setconfig sss_cipher "$sss_cipher" "$GT_CFG_PATH"
|
||||
setconfig sss_pwd "$sss_pwd" "$GT_CFG_PATH"
|
||||
;;
|
||||
4)
|
||||
line_break
|
||||
if echo "$sss_cipher" | grep -q '2022-blake3'; then
|
||||
echo -e "\033[31m注意:\033[0m2022系列加密必须使用脚本随机生成的password!"
|
||||
separator_line "="
|
||||
content_line "\033[31m注意:\033[0m2022系列加密必须使用脚本随机生成的password!"
|
||||
separator_line "="
|
||||
sleep 1
|
||||
else
|
||||
read -r -p "请输入秘钥(输入0删除) > " text
|
||||
read -r -p "请输入秘钥(输入0删除)> " text
|
||||
[ "$text" = 0 ] && sss_pwd='' || sss_pwd="$text"
|
||||
setconfig sss_pwd "$text" "$GT_CFG_PATH"
|
||||
fi
|
||||
;;
|
||||
5)
|
||||
read -r -p "请输入本机公网IP(4/6)或域名 > " text
|
||||
line_break
|
||||
read -r -p "请输入本机公网IP(4/6)或域名> " text
|
||||
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"
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "你的分享链接是(请勿随意分享给他人):\n\033[32m$ss_link\033[0m"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "你的分享链接是(请勿随意分享给他人):\n\033[32m$ss_link\033[0m"
|
||||
separator_line "="
|
||||
else
|
||||
echo -e "\033[31m请先完成必选设置!\033[0m"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m请先完成必选设置!\033[0m"
|
||||
separator_line "="
|
||||
fi
|
||||
sleep 1
|
||||
;;
|
||||
@@ -493,20 +617,21 @@ set_shadowsocks() {
|
||||
set_tailscale() {
|
||||
while true; do
|
||||
[ -n "$ts_auth_key" ] && ts_auth_key_info='*********'
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m注意:\033[0m脚本默认内核为了节约内存没有编译Tailscale模块\n如需使用请先前往自定义内核更新完整版内核文件!"
|
||||
echo -e "创建秘钥:\033[32;4mhttps://login.tailscale.com/admin/settings/keys\033[0m"
|
||||
echo -e "访问非本机目标需允许通告:\033[32;4mhttps://login.tailscale.com\033[0m"
|
||||
echo -e "访问非本机目标需在终端设置使用Subnet或EXIT-NODE模式"
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 \033[32m启用/关闭\033[0mTailscale服务 \033[32m$ts_service\033[0m"
|
||||
echo -e " 2 设置\033[36m秘钥\033[0m(Auth Key) $ts_auth_key_info"
|
||||
echo -e " 3 通告路由\033[33m内网地址\033[0m(Subnet) \033[36m$ts_subnet\033[0m"
|
||||
echo -e " 4 通告路由\033[31m全部流量\033[0m(EXIT-NODE) \033[36m$ts_exit_node\033[0m"
|
||||
echo -e " 5 设置\033[36m设备名称\033[0m(可选) $ts_hostname"
|
||||
echo -e " 0 返回上级菜单 \033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入对应数字 > " num
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m注意:\033[0m脚本默认内核为了节约内存没有编译Tailscale模块\n如需使用请先前往自定义内核更新完整版内核文件!"
|
||||
content_line "创建秘钥:\033[32;4mhttps://login.tailscale.com/admin/settings/keys\033[0m"
|
||||
content_line "访问非本机目标需允许通告:\033[32;4mhttps://login.tailscale.com\033[0m"
|
||||
content_line "访问非本机目标需在终端设置使用Subnet或EXIT-NODE模式"
|
||||
separator_line "-"
|
||||
content_line "1) \033[32m启用/关闭\033[0mTailscale服务 \033[32m$ts_service\033[0m"
|
||||
content_line "2) 设置\033[36m秘钥\033[0m(Auth Key) $ts_auth_key_info"
|
||||
content_line "3) 通告路由\033[33m内网地址\033[0m(Subnet) \033[36m$ts_subnet\033[0m"
|
||||
content_line "4) 通告路由\033[31m全部流量\033[0m(EXIT-NODE) \033[36m$ts_exit_node\033[0m"
|
||||
content_line "5) 设置\033[36m设备名称\033[0m(可选) $ts_hostname"
|
||||
content_line "0) 返回上级菜单"
|
||||
separator_line "="
|
||||
read -r -p "请输入对应标号> " num
|
||||
case "$num" in
|
||||
"" | 0)
|
||||
break
|
||||
@@ -516,12 +641,16 @@ set_tailscale() {
|
||||
[ "$ts_service" = ON ] && ts_service=OFF || ts_service=ON
|
||||
setconfig ts_service "$ts_service"
|
||||
else
|
||||
echo -e "\033[31m请先设置秘钥!\033[0m"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m请先设置秘钥!\033[0m"
|
||||
separator_line "="
|
||||
sleep 1
|
||||
fi
|
||||
;;
|
||||
2)
|
||||
read -p "请输入秘钥(输入0删除) > " text
|
||||
line_break
|
||||
read -r -p "请输入秘钥(输入0删除)> " 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"
|
||||
;;
|
||||
@@ -530,16 +659,28 @@ set_tailscale() {
|
||||
setconfig ts_subnet "$ts_subnet" "$GT_CFG_PATH"
|
||||
;;
|
||||
4)
|
||||
[ "$ts_exit_node" = true ] && ts_exit_node=false || {
|
||||
if [ "$ts_exit_node" = true ]; then
|
||||
ts_exit_node=false
|
||||
else
|
||||
ts_exit_node=true
|
||||
echo -e "\033[31m注意:\033[0m目前exitnode的官方DNS有bug,要么启用域名嗅探并禁用TailscaleDNS,\n要么必须在网页设置Globalname servers为分配的本设备子网IP且启用override"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m注意:\033[0m目前exitnode的官方DNS有bug,要么启用域名嗅探并禁用TailscaleDNS,\n要么必须在网页设置Globalname servers为分配的本设备子网IP且启用override"
|
||||
separator_line "="
|
||||
sleep 3
|
||||
}
|
||||
fi
|
||||
setconfig ts_exit_node "$ts_exit_node" "$GT_CFG_PATH"
|
||||
;;
|
||||
5)
|
||||
read -p "请输入希望在Tailscale显示的设备名称 > " ts_hostname
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "请直接输入希望在Tailscale显示的设备名称"
|
||||
content_line "或输入 0 返回上级菜单"
|
||||
separator_line "="
|
||||
read -r -p "请输入> " ts_hostname
|
||||
if [ "$ts_hostname" != 0 ]; then
|
||||
setconfig ts_hostname "$ts_hostname" "$GT_CFG_PATH"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
errornum
|
||||
@@ -570,22 +711,24 @@ set_wireguard() {
|
||||
unset wgpsk_key_info
|
||||
fi
|
||||
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m注意:\033[0m脚本默认内核为了节约内存没有编译WireGuard模块\n如需使用请先前往自定义内核更新完整版内核文件!"
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 \033[32m启用/关闭\033[0mWireguard服务 \033[32m$wg_service\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 2 设置\033[36mEndpoint地址\033[0m: \033[36m$wg_server\033[0m"
|
||||
echo -e " 3 设置\033[36mEndpoint端口\033[0m: \033[36m$wg_port\033[0m"
|
||||
echo -e " 4 设置\033[36m公钥-PublicKey\033[0m: \033[36m$wgp_key_info\033[0m"
|
||||
echo -e " 5 设置\033[36m密钥-PresharedKey\033[0m: \033[36m$wgpsk_key_info\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 6 设置\033[33m私钥-PrivateKey\033[0m: \033[33m$wgv_key_info\033[0m"
|
||||
echo -e " 7 设置\033[33m组网IPV4地址\033[0m: \033[33m$wg_ipv4\033[0m"
|
||||
echo -e " 8 可选\033[33m组网IPV6地址\033[0m: \033[33m$wg_ipv6\033[0m"
|
||||
echo -e " 0 返回上级菜单 \033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入对应数字 > " num
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m注意:\033[0m脚本默认内核为了节约内存没有编译WireGuard模块\n如需使用请先前往自定义内核更新完整版内核文件!"
|
||||
separator_line "-"
|
||||
content_line "1) \033[32m启用/关闭\033[0mWireguard服务 \033[32m$wg_service\033[0m"
|
||||
content_line ""
|
||||
content_line "2) 设置\033[36mEndpoint地址\033[0m: \033[36m$wg_server\033[0m"
|
||||
content_line "3) 设置\033[36mEndpoint端口\033[0m: \033[36m$wg_port\033[0m"
|
||||
content_line "4) 设置\033[36m公钥-PublicKey\033[0m: \033[36m$wgp_key_info\033[0m"
|
||||
content_line "5) 设置\033[36m密钥-PresharedKey\033[0m: \033[36m$wgpsk_key_info\033[0m"
|
||||
content_line ""
|
||||
content_line "6) 设置\033[33m私钥-PrivateKey\033[0m: \033[33m$wgv_key_info\033[0m"
|
||||
content_line "7) 设置\033[33m组网IPV4地址\033[0m: \033[33m$wg_ipv4\033[0m"
|
||||
content_line "8) 可选\033[33m组网IPV6地址\033[0m: \033[33m$wg_ipv6\033[0m"
|
||||
content_line ""
|
||||
content_line "0) 返回上级菜单"
|
||||
separator_line "="
|
||||
read -r -p "请输入对应标号> " num
|
||||
case "$num" in
|
||||
"" | 0)
|
||||
break
|
||||
@@ -595,12 +738,16 @@ set_wireguard() {
|
||||
[ "$wg_service" = ON ] && wg_service=OFF || wg_service=ON
|
||||
setconfig wg_service "$wg_service"
|
||||
else
|
||||
echo -e "\033[31m请先完成必选设置!\033[0m"
|
||||
line_break
|
||||
separator_line "="
|
||||
content_line "\033[31m请先完成必选设置!\033[0m"
|
||||
separator_line "="
|
||||
sleep 1
|
||||
fi
|
||||
;;
|
||||
[1-8])
|
||||
read -p "请输入相应内容(回车或0删除) > " text
|
||||
line_break
|
||||
read -r -p "请输入相应内容(回车或0删除)> " text
|
||||
[ "$text" = 0 ] && text=''
|
||||
case "$num" in
|
||||
2)
|
||||
|
||||
Reference in New Issue
Block a user