From c9cb6d41ac5b3a0250904b6ba846e0d80636680b Mon Sep 17 00:00:00 2001 From: juewuy Date: Sun, 28 Dec 2025 21:15:34 +0800 Subject: [PATCH] =?UTF-8?q?~=E4=BC=98=E5=8C=96dns=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=EF=BC=8C=E7=A7=BB=E9=99=A4fake-ip=E6=A8=A1=E5=BC=8F=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E5=B0=86=E9=83=A8=E5=88=86=E5=8E=9F=E8=BF=9B=E9=98=B6?= =?UTF-8?q?=E9=80=89=E9=A1=B9=E7=A7=BB=E5=8A=A8=E8=87=B3dns=E4=B8=BB?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=20~=E4=BC=98=E5=8C=96tg-bot=E7=BB=91?= =?UTF-8?q?=E5=AE=9A=E6=B5=81=E7=A8=8B=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=BE=AA?= =?UTF-8?q?=E7=8E=AF=E6=A3=80=E6=B5=8B=E5=AF=B9=E8=AF=9DID=E6=9C=BA?= =?UTF-8?q?=E5=88=B6=20~=E4=BC=98=E5=8C=96tg-bot=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E7=8E=B0=E5=9C=A8=E4=B8=8D=E4=BC=9A?= =?UTF-8?q?=E9=9A=8F=E7=9D=80=E5=86=85=E6=A0=B8=E6=9C=8D=E5=8A=A1=E9=87=8D?= =?UTF-8?q?=E5=90=AF=E8=80=8C=E9=87=8D=E5=90=AF=E8=BF=9B=E8=80=8C=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E6=AD=BB=E5=BE=AA=E7=8E=AF=20~=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=85=AC=E7=BD=91=E9=98=B2=E7=81=AB=E5=A2=99=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=B8=80=E9=94=AE=E6=B8=85=E7=A9=BA?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=A2=9E=E5=8A=A0vmess=E5=92=8Css?= =?UTF-8?q?=E7=AB=AF=E5=8F=A3=E7=9A=84=E9=A2=9D=E5=A4=96=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=20~=E4=BC=98=E5=8C=96vmess=E5=92=8Css=E7=9A=84=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E9=80=BB=E8=BE=91=EF=BC=8C=E5=A2=9E=E5=8A=A0vmess?= =?UTF-8?q?=E4=B8=80=E9=94=AE=E7=94=9F=E6=88=90=E6=97=B6=E7=9A=84=E6=B7=B7?= =?UTF-8?q?=E6=B7=86host=E8=BE=93=E5=85=A5=20~=E4=BF=AE=E5=A4=8D=E5=9B=A0?= =?UTF-8?q?=E4=B8=BA=E6=9C=AA=E9=80=89=E6=8B=A9ss=E5=8A=A0=E5=AF=86?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E8=80=8C=E5=AF=BC=E8=87=B4=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E7=9A=84bug=20~=E4=BF=AE=E5=A4=8D=E5=B0=8F?= =?UTF-8?q?=E7=B1=B3/=E7=BD=91=E4=BB=B6=E9=95=9C=E5=83=8F=E5=8C=96?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E9=87=8D=E5=90=AF=E5=90=8E=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E4=B8=A2=E5=A4=B1=E7=9A=84bug=20~=E4=BF=AE=E5=A4=8D=E5=9B=A0?= =?UTF-8?q?=E4=B8=BA=E5=88=87=E6=8D=A2vmess=E5=92=8Css=E7=AB=AF=E5=8F=A3?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E5=85=AC=E7=BD=91=E9=98=B2=E7=81=AB=E5=A2=99?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E6=8A=A5=E9=94=99=E7=9A=84bug=20~=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D6-5=E8=AE=BE=E7=BD=AE=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=8A=A5=E9=94=99=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/init.sh | 1 + scripts/libs/web_get_bin.sh | 8 +-- scripts/menu.sh | 3 +- scripts/menus/1_start.sh | 6 +- scripts/menus/2_settings.sh | 3 +- scripts/menus/6_core_config.sh | 2 +- scripts/menus/7_gateway.sh | 59 ++++++++++------- scripts/menus/9_upgrade.sh | 5 +- scripts/menus/bot_tg_bind.sh | 16 ++++- scripts/menus/bot_tg_service.sh | 8 ++- scripts/menus/dns.sh | 103 ++++++++++-------------------- scripts/start.sh | 2 - scripts/starts/afstart.sh | 4 +- scripts/starts/clash_modify.sh | 2 +- scripts/starts/fw_iptables.sh | 8 ++- scripts/starts/fw_nftables.sh | 6 +- scripts/starts/shellcrash.procd | 1 - scripts/starts/singbox_modify.sh | 2 +- scripts/starts/snapshot_init.sh | 2 +- scripts/starts/start_legacy_wd.sh | 15 +++-- 20 files changed, 127 insertions(+), 129 deletions(-) diff --git a/scripts/init.sh b/scripts/init.sh index 6393d512..78f6b1e3 100644 --- a/scripts/init.sh +++ b/scripts/init.sh @@ -225,5 +225,6 @@ sed -i "s/redir_mod=Nft基础/redir_mod=Redir模式/g" "$CFG_PATH" sed -i "s/redir_mod=Nft混合/redir_mod=Tproxy模式/g" "$CFG_PATH" sed -i "s/redir_mod=Tproxy混合/redir_mod=Tproxy模式/g" "$CFG_PATH" sed -i "s/redir_mod=纯净模式/firewall_area=4/g" "$CFG_PATH" +sed -i "s/hosts_opt=未启用/hosts_opt=OFF/g" "$CFG_PATH" echo -e "\033[32m脚本初始化完成,请输入\033[30;47m $my_alias \033[0;33m命令开始使用!\033[0m" diff --git a/scripts/libs/web_get_bin.sh b/scripts/libs/web_get_bin.sh index 834858f9..c319519a 100644 --- a/scripts/libs/web_get_bin.sh +++ b/scripts/libs/web_get_bin.sh @@ -7,12 +7,12 @@ get_bin() { #专用于项目内部文件的下载 echo "$2" | grep -q '^bin/' && rt=update #/bin文件改为在update分支下载 echo "$2" | grep -qE '^public/|^rules/' && rt=dev #/public和/rules文件改为在dev分支下载 if [ "$url_id" = 101 -o "$url_id" = 104 ]; then - url="$(grep "$url_id" "$CRASHDIR"/configs/servers.list | awk '{print $3}')@$rt/$2" #jsdelivr特殊处理 + bin_url="$(grep "$url_id" "$CRASHDIR"/configs/servers.list | awk '{print $3}')@$rt/$2" #jsdelivr特殊处理 else - url="$(grep "$url_id" "$CRASHDIR"/configs/servers.list | awk '{print $3}')/$rt/$2" + bin_url="$(grep "$url_id" "$CRASHDIR"/configs/servers.list | awk '{print $3}')/$rt/$2" fi else - url="$update_url/$2" + bin_url="$update_url/$2" fi - webget "$1" "$url" "$3" "$4" "$5" "$6" + webget "$1" "$bin_url" "$3" "$4" "$5" "$6" } \ No newline at end of file diff --git a/scripts/menu.sh b/scripts/menu.sh index 8bc23ea2..5bd28591 100644 --- a/scripts/menu.sh +++ b/scripts/menu.sh @@ -186,7 +186,8 @@ main_menu() { main_menu ;; 3) - "$CRASHDIR"/start.sh stop + [ "$bot_tg_service" = ON ] && . "$CRASHDIR"/menus/bot_tg_service.sh && bot_tg_stop + "$CRASHDIR"/start.sh stop sleep 1 echo "-----------------------------------------------" echo -e "\033[31m$corename服务已停止!\033[0m" diff --git a/scripts/menus/1_start.sh b/scripts/menus/1_start.sh index e3ec181c..699aa9ab 100644 --- a/scripts/menus/1_start.sh +++ b/scripts/menus/1_start.sh @@ -29,7 +29,11 @@ start_core() { "$CRASHDIR"/start.sh start #设置循环检测以判定服务启动是否成功 . "$CRASHDIR"/libs/start_wait.sh - [ -n "$test" -o -n "$(pidof CrashCore)" ] && startover + [ -n "$test" -o -n "$(pidof CrashCore)" ] && { + #启动TG机器人 + [ "$bot_tg_service" = ON ] && . "$CRASHDIR"/menus/bot_tg_service.sh && bot_tg_start + startover + } else echo -e "\033[31m没有找到${crashcore}配置文件,请先导入配置文件!\033[0m" . "$CRASHDIR"/webget.sh && set_core_config diff --git a/scripts/menus/2_settings.sh b/scripts/menus/2_settings.sh index 6b0ca017..421cfc82 100644 --- a/scripts/menus/2_settings.sh +++ b/scripts/menus/2_settings.sh @@ -288,7 +288,6 @@ set_fw_filter(){ #流量过滤 echo -e " 1 过滤非常用端口: \033[36m$common_ports\033[0m ————用于过滤P2P流量" echo -e " 2 过滤局域网设备: \033[36m$mac_return\033[0m ————使用黑/白名单进行过滤" echo -e " 3 过滤QUIC协议: \033[36m$quic_rj\033[0m ————优化视频性能" - [ "$dns_mod" != "fake-ip" ] && echo -e " 4 过滤CN_IP(6)列表: \033[36m$cn_ip_route\033[0m ————优化性能,不兼容Fake-ip" echo -e " 5 自定义透明路由ipv4网段: 适合vlan等复杂网络环境" echo -e " 6 自定义保留地址ipv4网段: 需要以保留地址为访问目标的环境" @@ -303,7 +302,7 @@ set_fw_filter(){ #流量过滤 set_common_ports() { if [ "$common_ports" = "未开启" ]; then echo -e "\033[33m当前代理端口为:【$multiport】\033[0m" - echo -e "\033[31m注意,fake-ip模式下,非常用端口的域名连接将不受影响!!\033[0m" + echo -e "\033[31m注意,MIX模式下,非常用端口的域名连接将不受影响!!\033[0m" read -p "是否修改默认端口?(1/0) > " res [ "$res" = "1" ] && { read -p "请输入自定义端口,注意用小写逗号分隔 > " text diff --git a/scripts/menus/6_core_config.sh b/scripts/menus/6_core_config.sh index 41032f99..ad27a512 100644 --- a/scripts/menus/6_core_config.sh +++ b/scripts/menus/6_core_config.sh @@ -1095,7 +1095,7 @@ set_core_config(){ #配置文件功能 exit ;; 5) - . ${CRASHDIR}/task/task.sh && task_menu + . ${CRASHDIR}/menus/task.sh && task_menu set_core_config ;; 6) diff --git a/scripts/menus/7_gateway.sh b/scripts/menus/7_gateway.sh index 7ca00e7e..f2f5d202 100644 --- a/scripts/menus/7_gateway.sh +++ b/scripts/menus/7_gateway.sh @@ -70,12 +70,15 @@ set_fw_wan() { echo "-----------------------------------------------" echo -e "\033[31m注意:\033[0m如在vps运行,还需在vps安全策略对相关端口同时放行" [ -n "$fw_wan_ports" ] && - echo -e "当前放行端口:\033[36m$fw_wan_ports\033[0m" + echo -e "当前手动放行端口:\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$dns_port,$mix_port,$db_port\033[0m" echo "-----------------------------------------------" echo -e " 1 启用/关闭公网防火墙: \033[36m$fw_wan\033[0m" echo -e " 2 添加放行端口(可包含默认拦截端口)" - echo -e " 3 移除指定放行端口" + echo -e " 3 移除指定手动放行端口" + echo -e " 4 清空全部手动放行端口" echo -e " 0 返回上级菜单" echo "-----------------------------------------------" read -p "请输入对应数字 > " num @@ -122,10 +125,16 @@ set_fw_wan() { fi sleep 1 set_fw_wan - ;; + ;; + 4) + fw_wan_ports='' + setconfig fw_wan_ports + sleep 1 + set_fw_wan + ;; *) errornum - ;; + ;; esac } #tg_BOT相关 @@ -221,19 +230,24 @@ set_vmess(){ echo -e " 4 设置\033[36m秘钥-uuid\033[0m: \033[36m$vms_uuid\033[0m" echo -e " 5 一键生成\033[32m随机秘钥\033[0m" gen_base64 1 >/dev/null 2>&1 && - echo -e " 6 一键生成分享链接" + echo -e " 6 一键生成\033[36m分享链接\033[0m" echo -e " 0 返回上级菜单 \033[0m" echo "-----------------------------------------------" read -p "请输入对应数字 > " num case "$num" in 0) ;; 1) - if [ -n "$vms_port" ] && [ -n "$vms_uuid" ];then - [ "$vms_service" = ON ] && vms_service=OFF || vms_service=ON + if [ "$vms_service" = ON ];then + vms_service=OFF setconfig vms_service "$vms_service" else - echo -e "\033[31m请先完成必选设置!\033[0m" - sleep 1 + if [ -n "$vms_port" ] && [ -n "$vms_uuid" ];then + vms_service=OFF + setconfig vms_service "$vms_service" + else + echo -e "\033[31m请先完成必选设置!\033[0m" + sleep 1 + fi fi set_vmess ;; @@ -245,8 +259,6 @@ set_vmess(){ elif check_port "$text"; then vms_port="$text" setconfig vms_port "$text" "$GT_CFG_PATH" - fw_wan_ports=$(echo "$fw_wan_ports,$vms_port" | sed "s/^,//") - setconfig fw_wan_ports "$fw_wan_ports" else sleep 1 fi @@ -288,6 +300,7 @@ set_vmess(){ ;; 6) read -p "请输入本机公网IP(4/6)或域名 > " host_wan + read -p "请输入免流混淆host(可选) > " vms_host if [ -n "$host_wan" ] && [ -n "$vms_port" ] && [ -n "$vms_uuid" ];then [ -n "$vms_ws_path" ] && vms_net=ws vms_json=$(cat < " text - [ "$text" = 0 ] && unset sss_pwd - sss_pwd="$text" + [ "$text" = 0 ] && sss_pwd='' || sss_pwd="$text" setconfig sss_pwd "$text" "$GT_CFG_PATH" fi set_shadowsocks ;; 5) read -p "请输入本机公网IP(4/6)或域名 > " text - if [ -n "$text" ] && [ -n "$sss_port" ] && [ -n "$sss_pwd" ];then + 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" diff --git a/scripts/menus/9_upgrade.sh b/scripts/menus/9_upgrade.sh index 9c4c188b..0205cbfb 100644 --- a/scripts/menus/9_upgrade.sh +++ b/scripts/menus/9_upgrade.sh @@ -202,7 +202,7 @@ switch_core(){ #clash与singbox内核切换 #singbox和clash内核切换时提示是否保留文件 [ "$core_new" != "$core_old" ] && { [ "$dns_mod" = "redir_host" ] && [ "$core_old" = "clash" ] && setconfig dns_mod mix #singbox自动切换dns - [ "$dns_mod" = "mix" ] && [ "$crashcore" = 'clash' -o "$crashcore" = 'clashpre' ] && setconfig dns_mod fake-ip #singbox自动切换dns + [ "$dns_mod" = "mix" ] && [ "$crashcore" = 'clash' -o "$crashcore" = 'clashpre' ] && setconfig dns_mod redir_host #singbox自动切换dns echo -e "\033[33m已从$core_old内核切换至$core_new内核\033[0m" echo -e "\033[33m二者Geo数据库及yaml/json配置文件不通用\033[0m" read -p "是否保留相关数据库文件?(1/0) > " res @@ -795,8 +795,7 @@ setdb(){ 0) ;; 1) db_type=zashboard - echo $update_url - setconfig external_ui_url "https://raw.githubusercontent.com/juewuy/ShellCrash/update/bin/dashboard/zashboard.tar.gz" + setconfig external_ui_url "https://github.com/Zephyruso/zashboard/releases/latest/download/dist-cdn-fonts.zip" dbdir ;; 2) diff --git a/scripts/menus/bot_tg_bind.sh b/scripts/menus/bot_tg_bind.sh index e0d1a2d1..de04cb03 100644 --- a/scripts/menus/bot_tg_bind.sh +++ b/scripts/menus/bot_tg_bind.sh @@ -22,14 +22,26 @@ tg_push_token(){ setconfig chat_ID "$chat_ID" "$CRASHDIR"/start.sh logger "已完成Telegram日志推送设置!" 32 } +get_chatid(){ + i=1 + chat_ID='' + while [ $i -le 3 ] && [ -z "$chat_ID" ]; do + sleep 1 + echo -e "\033[33m第 $i 次尝试获取对话ID失败,正在重试...\033[0m" + chat=$(web_get_lite "$url_tg" 2>/dev/null) + if [ -n "$chat" ];then + chat_ID=$(echo $chat | sed 's/"update_id":/{\n"update_id":/g' | grep "$public_key" | head -n1 | grep -oE '"id":.*,"is_bot' | sed s'/"id"://' | sed s'/,"is_bot//') + fi + i=$((i + 1)) + done +} set_bot() { public_key=$(cat /proc/sys/kernel/random/boot_id | sed 's/.*-//') echo -e "发送此秘钥: \033[30;46m$public_key\033[0m" echo "-----------------------------------------------" read -p "我已经发送完成(1/0) > " res if [ "$res" = 1 ]; then - chat=$(web_get_lite $url_tg 2>/dev/null) - [ -n "$chat" ] && chat_ID=$(echo $chat | sed 's/"update_id":/{\n"update_id":/g' | grep "$public_key" | head -n1 | grep -oE '"id":.*,"is_bot' | sed s'/"id"://' | sed s'/,"is_bot//') + get_chatid [ -z "$chat_ID" ] && [ "$TOKEN" != 'publictoken' ] && { echo -e "\033[31m无法获取对话ID,请返回重新设置或手动输入ChatID!\033[0m" echo -e "通常访问 \033[32;4m$url_tg\033[0m \n\033[36m即可看到ChatID\033[0m" diff --git a/scripts/menus/bot_tg_service.sh b/scripts/menus/bot_tg_service.sh index 65038970..2fb813d1 100644 --- a/scripts/menus/bot_tg_service.sh +++ b/scripts/menus/bot_tg_service.sh @@ -4,10 +4,14 @@ bot_tg_start(){ . "$CRASHDIR"/starts/start_legacy.sh start_legacy "$CRASHDIR/menus/bot_tg.sh" 'bot_tg' - cronset 'TG_BOT守护进程' "* * * * * /bin/sh $CRASHDIR/starts/start_legacy_wd.sh bot_tg #ShellCrash-TG_BOT守护进程" + bot_tg_cron } bot_tg_stop(){ cronset 'TG_BOT守护进程' [ -f "$TMPDIR/bot_tg.pid" ] && kill -TERM "$(cat "$TMPDIR/bot_tg.pid")" rm -f "$TMPDIR/bot_tg.pid" -} \ No newline at end of file +} +bot_tg_cron(){ + cronset 'TG_BOT守护进程' + cronset 'TG_BOT守护进程' "* * * * * /bin/sh $CRASHDIR/starts/start_legacy_wd.sh bot_tg #ShellCrash-TG_BOT守护进程" +} diff --git a/scripts/menus/dns.sh b/scripts/menus/dns.sh index c4394bc9..71db4737 100644 --- a/scripts/menus/dns.sh +++ b/scripts/menus/dns.sh @@ -2,43 +2,29 @@ # Copyright (C) Juewuy set_dns_mod() { #DNS模式设置 + [ -z "$hosts_opt" ] && hosts_opt=ON + [ -z "$dns_protect" ] && dns_protect=ON echo "-----------------------------------------------" echo -e "当前DNS运行模式为:\033[47;30m $dns_mod \033[0m" echo -e "\033[33m切换模式后需要手动重启服务以生效!\033[0m" echo "-----------------------------------------------" - echo -e " 1 fake-ip模式: 响应快,\033[33m兼容性较差\033[0m" - echo -e " 不支持CN-IP绕过功能" - echo -e " 2 redir_host模式:\033[33m不安全,易被污染\033[0m" - echo -e " 建议搭配第三方DNS服务使用" - if echo "$crashcore" | grep -q 'singbox' || [ "$crashcore" = meta ]; then - echo -e " 3 mix混合模式: \033[32m防污染防泄露,响应快,推荐!\033[0m" - echo -e " cn域名realip其他fakeip分流" - echo -e " 4 route模式: \033[32m防污染防泄露,全真实IP\033[0m" - echo -e " cn域名realip其他dns2proxy分流" - fi + echo -e " 1 MIX模式: \033[32m防污染防泄露,响应快,推荐!\033[0m" + echo -e " cn域名realip其他fakeip分流" + echo -e " 2 Route模式:\033[32m防污染防泄露,全真实IP\033[0m" + echo -e " cn域名realip其他dns2proxy分流" + echo -e " 3 Redir模式:\033[33m不安全,易被污染\033[0m" + echo -e " 建议搭配第三方DNS服务使用" echo "-----------------------------------------------" - [ "$dns_mod" = "fake-ip" ] || [ "$dns_mod" = "mix" ] && - echo -e " 8 管理Fake-ip过滤列表" + echo -e " 4 DNS防泄漏: \033[36m$dns_protect\033[0m ———启用时少量网站可能连接卡顿" + echo -e " 5 Hosts优化: \033[36m$hosts_opt\033[0m ———调用本机hosts并劫持NTP服务" + [ "$dns_mod" = "mix" ] && + echo -e " 8 管理MIX模式Fake-ip过滤列表" echo -e " 9 \033[36mDNS进阶设置\033[0m" echo " 0 返回上级菜单" read -p "请输入对应数字 > " num case "$num" in 0) ;; 1) - dns_mod=fake-ip - setconfig dns_mod $dns_mod - echo "-----------------------------------------------" - echo -e "\033[36m已设为 $dns_mod 模式!!\033[0m" - set_dns_mod - ;; - 2) - dns_mod=redir_host - setconfig dns_mod $dns_mod - echo "-----------------------------------------------" - echo -e "\033[36m已设为 $dns_mod 模式!!\033[0m" - set_dns_mod - ;; - 3) if echo "$crashcore" | grep -q 'singbox' || [ "$crashcore" = meta ]; then dns_mod=mix setconfig dns_mod $dns_mod @@ -50,7 +36,7 @@ set_dns_mod() { #DNS模式设置 fi set_dns_mod ;; - 4) + 2) if echo "$crashcore" | grep -q 'singbox' || [ "$crashcore" = meta ]; then dns_mod=route setconfig dns_mod $dns_mod @@ -62,6 +48,23 @@ set_dns_mod() { #DNS模式设置 fi set_dns_mod ;; + 3) + dns_mod=redir_host + setconfig dns_mod $dns_mod + echo "-----------------------------------------------" + echo -e "\033[36m已设为 $dns_mod 模式!!\033[0m" + set_dns_mod + ;; + 4) + [ "$dns_protect" = "ON" ] && dns_protect=OFF || dns_protect=ON + setconfig dns_protect $dns_protect + set_dns_mod + ;; + 5) + [ "$hosts_opt" = "ON" ] && hosts_opt=OFF || hosts_opt=ON + setconfig hosts_opt $hosts_opt + set_dns_mod + ;; 8) echo "-----------------------------------------------" fake_ip_filter @@ -113,9 +116,6 @@ set_dns_adv() { #DNS详细设置 [ -z "$dns_nameserver" ] && dns_nameserver='223.5.5.5, 1.2.4.8' [ -z "$dns_fallback" ] && dns_fallback="1.1.1.1, 8.8.8.8" [ -z "$dns_resolver" ] && dns_resolver="223.5.5.5, 2400:3200::1" - [ -z "$hosts_opt" ] && hosts_opt=已启用 - [ -z "$dns_protect" ] && dns_protect=ON - [ -z "$dns_redir" ] && dns_redir=未开启 [ -z "$dns_no" ] && dns_no=未禁用 echo "-----------------------------------------------" echo -e "当前基础DNS:\033[32m$dns_nameserver\033[0m" @@ -128,10 +128,8 @@ set_dns_adv() { #DNS详细设置 echo -e " 1 修改\033[32m基础DNS\033[0m" echo -e " 2 修改\033[36mPROXY-DNS\033[0m(该DNS查询会经过节点)" echo -e " 3 修改\033[33m解析DNS\033[0m(必须是IP,用于解析其他DNS)" - echo -e " 4 DNS防泄漏: \033[36m$dns_protect\033[0m ———启用时少量网站可能连接卡顿" - echo -e " 5 hosts优化: \033[36m$hosts_opt\033[0m ———调用本机hosts并劫持NTP服务" + echo -e " 4 一键配置\033[32m加密DNS\033[0m" echo -e " 7 禁用DNS劫持:\033[36m$dns_no\033[0m ———搭配第三方DNS使用" - echo -e " 8 一键配置\033[32m加密DNS\033[0m" echo -e " 9 \033[33m重置\033[0m默认DNS配置" echo -e " 0 返回上级菜单" echo "-----------------------------------------------" @@ -170,43 +168,6 @@ set_dns_adv() { #DNS详细设置 sleep 1 set_dns_adv ;; - 4) - [ "$dns_protect" = "ON" ] && dns_protect=OFF || dns_protect=ON - setconfig dns_protect $dns_protect - set_dns_adv - ;; - 5) - echo "-----------------------------------------------" - if [ "$hosts_opt" = "已启用" ]; then - hosts_opt=未启用 - echo -e "\033[32m已禁用hosts优化功能!!!\033[0m" - else - hosts_opt=已启用 - echo -e "\033[33m已启用hosts优化功能!!!\033[0m" - fi - setconfig hosts_opt $hosts_opt - sleep 1 - set_dns_adv - ;; - 6) - echo "-----------------------------------------------" - if [ "$dns_redir" = "未开启" ]; then - echo -e "\033[31m将使用OpenWrt中Dnsmasq插件自带的DNS转发功能转发DNS请求至内核!\033[0m" - echo -e "\033[33m启用后将禁用本插件自带的iptables转发功能\033[0m" - dns_redir=已开启 - echo -e "\033[32m已启用Dnsmasq转发DNS功能!!!\033[0m" - else - uci del dhcp.@dnsmasq[-1].server - uci set dhcp.@dnsmasq[0].noresolv=0 - uci commit dhcp - /etc/init.d/dnsmasq restart - echo -e "\033[33m禁用成功!!如有报错请重启设备!\033[0m" - dns_redir=未开启 - fi - setconfig dns_redir $dns_redir - sleep 1 - set_dns_adv - ;; 7) echo "-----------------------------------------------" if [ "$dns_no" = "未禁用" ]; then @@ -221,7 +182,7 @@ set_dns_adv() { #DNS详细设置 sleep 1 set_dns_adv ;; - 8) + 4) echo "-----------------------------------------------" openssldir="$(openssl version -d 2>&1 | awk -F '"' '{print $2}')" if [ -s "$openssldir/certs/ca-certificates.crt" ] || [ -s "/etc/ssl/certs/ca-certificates.crt" ] || diff --git a/scripts/start.sh b/scripts/start.sh index a3bd559c..47f04d9a 100644 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -70,8 +70,6 @@ stop) cronset '保守模式守护进程' cronset '运行时每' cronset '流媒体预解析' - #停止tg机器人 - . "$CRASHDIR"/menus/bot_tg_service.sh && bot_tg_stop #多种方式结束进程 if [ -f "$TMPDIR/shellcrash.pid" ];then kill -TERM "$(cat "$TMPDIR/shellcrash.pid")" diff --git a/scripts/starts/afstart.sh b/scripts/starts/afstart.sh index d2d566ce..140a62bb 100644 --- a/scripts/starts/afstart.sh +++ b/scripts/starts/afstart.sh @@ -21,6 +21,8 @@ if [ -n "$test" -o -n "$(pidof CrashCore)" ]; then [ "$start_old" = "已开启" ] && rm -rf "$TMPDIR"/CrashCore #删除缓存目录内核文件 . "$CRASHDIR"/starts/fw_start.sh #配置防火墙流量劫持 date +%s >"$TMPDIR"/crash_start_time #标记启动时间 + #TG机器人守护进程 + [ "$bot_tg_service" = ON ] && . "$CRASHDIR"/menus/bot_tg_service.sh && bot_tg_cron #后台还原面板配置 [ -s "$CRASHDIR"/configs/web_save ] && { . "$CRASHDIR"/libs/web_restore.sh @@ -50,8 +52,6 @@ if [ -n "$test" -o -n "$(pidof CrashCore)" ]; then line=$(grep -En "fw.* start" /etc/init.d/firewall | cut -d ":" -f 1) sed -i "${line}a\\. $CRASHDIR/task/affirewall" /etc/init.d/firewall } & - #启动TG机器人 - [ "$bot_tg_service" = ON ] && . "$CRASHDIR"/menus/bot_tg_service.sh && bot_tg_start exit 0 else . "$CRASHDIR"/starts/start_error.sh diff --git a/scripts/starts/clash_modify.sh b/scripts/starts/clash_modify.sh index 2075196c..c3879274 100644 --- a/scripts/starts/clash_modify.sh +++ b/scripts/starts/clash_modify.sh @@ -82,7 +82,7 @@ $find_process routing-mark: $routing_mark EOF #读取本机hosts并生成配置文件 - if [ "$hosts_opt" != "未启用" ] && [ -z "$(grep -aE '^hosts:' "$CRASHDIR"/yamls/user.yaml 2>/dev/null)" ]; then + if [ "$hosts_opt" != "OFF" ] && [ -z "$(grep -aE '^hosts:' "$CRASHDIR"/yamls/user.yaml 2>/dev/null)" ]; then #NTP劫持 cat >"$TMPDIR"/hosts.yaml </dev/null procd_close_instance "$CRASHDIR"/starts/fw_stop.sh } diff --git a/scripts/starts/singbox_modify.sh b/scripts/starts/singbox_modify.sh index 6ac37638..0b7f19a4 100644 --- a/scripts/starts/singbox_modify.sh +++ b/scripts/starts/singbox_modify.sh @@ -66,7 +66,7 @@ modify_json() { { "log": { "level": "info", "timestamp": true } } EOF #生成add_hosts.json - if [ "$hosts_opt" != "未启用" ]; then #本机hosts + if [ "$hosts_opt" != "OFF" ]; then #本机hosts sys_hosts=/etc/hosts [ -s /data/etc/custom_hosts ] && sys_hosts=/data/etc/custom_hosts #NTP劫持 diff --git a/scripts/starts/snapshot_init.sh b/scripts/starts/snapshot_init.sh index f6a6688e..3f331ac0 100644 --- a/scripts/starts/snapshot_init.sh +++ b/scripts/starts/snapshot_init.sh @@ -52,7 +52,7 @@ auto_clean(){ } auto_start(){ #设置init.d服务 - cp -f "$CRASHDIR"/shellcrash.procd /etc/init.d/shellcrash + cp -f "$CRASHDIR"/starts/shellcrash.procd /etc/init.d/shellcrash chmod 755 /etc/init.d/shellcrash #初始化环境变量 . "$CRASHDIR"/libs/set_profile.sh && set_profile '/etc/profile' diff --git a/scripts/starts/start_legacy_wd.sh b/scripts/starts/start_legacy_wd.sh index eb084eef..277fa838 100644 --- a/scripts/starts/start_legacy_wd.sh +++ b/scripts/starts/start_legacy_wd.sh @@ -6,12 +6,13 @@ if [ -f "$PIDFILE" ]; then PID="$(cat "$PIDFILE")" if [ -n "$PID" ] && kill -0 "$PID" 2>/dev/null; then return 0 - else - if [ "$1" = shellcrash ];then - "$CRASHDIR"/start.sh start - else - . "$CRASHDIR"/starts/start_legacy.sh - start_legacy "$CRASHDIR/menus/bot_tg.sh" "$1" - fi fi fi +#如果没有进程则拉起 +if [ "$1" = shellcrash ];then + "$CRASHDIR"/start.sh start +else + . "$CRASHDIR"/starts/start_legacy.sh + start_legacy "$CRASHDIR/menus/bot_tg.sh" "$1" +fi + \ No newline at end of file