From ebba79747364e5341ddf62751a38d8cd8ae56b79 Mon Sep 17 00:00:00 2001 From: juewuy Date: Wed, 31 Dec 2025 15:07:21 +0800 Subject: [PATCH] =?UTF-8?q?~=E5=A2=9E=E5=8A=A0=E5=B0=8F=E7=B1=B3=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E5=AF=B9autossh=E8=84=9A=E6=9C=AC=E7=9A=84=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=20~=E5=A2=9E=E5=8A=A0=E5=B0=8F=E7=B1=B3=E8=AE=BE?= =?UTF-8?q?=E5=A4=87/data/auto=5Fstart.sh=E6=96=87=E4=BB=B6=EF=BC=8C?= =?UTF-8?q?=E7=94=A8=E4=BA=8E=E8=87=AA=E5=AE=9A=E4=B9=89=E5=BC=80=E6=9C=BA?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E9=A1=B9=20~=E5=A2=9E=E5=8A=A0Mihomo?= =?UTF-8?q?=E5=86=85=E6=A0=B8=E9=BB=98=E8=AE=A4=E5=90=AF=E7=94=A8=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=E5=BB=B6=E8=BF=9F=E5=8A=9F=E8=83=BD=20~=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E9=BB=98=E8=AE=A4DNS=EF=BC=8C=E7=8E=B0=E5=9C=A8?= =?UTF-8?q?=E4=BC=9A=E9=BB=98=E8=AE=A4=E4=BD=BF=E7=94=A8localhost(?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E5=8F=AF=E7=94=A8)=E8=80=8C=E4=B8=8D?= =?UTF-8?q?=E6=98=AF=E9=98=BF=E9=87=8Cdns=20~=E4=BC=98=E5=8C=96=E5=AD=90?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E5=8A=A0=E8=BD=BD=E6=95=88=E7=8E=87=20~?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86=E8=AE=BE=E5=A4=87=E7=9A=84?= =?UTF-8?q?tun=E5=8A=A0=E8=BD=BD=E6=B5=81=E7=A8=8B=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E5=9B=A0=E4=B8=BA=E6=9C=AA=E5=8A=A0=E8=BD=BDtun?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E8=80=8C=E5=AF=BC=E8=87=B4=E7=9A=84=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E6=8A=A5=E9=94=99=20~=E4=BC=98=E5=8C=96dns=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E6=98=BE=E7=A4=BA=20~=E4=BF=AE=E5=A4=8D=E5=9B=A0?= =?UTF-8?q?=E4=B8=BA=E6=96=87=E4=BB=B6=E6=8B=86=E5=88=86=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E6=94=B9=E5=8F=98=E5=AF=BC=E8=87=B4=E7=9A=84=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E7=9A=84=E4=B8=80=E7=B3=BB=E5=88=97bug=20~?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=B1=80=E5=9F=9F=E7=BD=91=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E7=99=BD=E5=90=8D=E5=8D=95=E5=A4=B1=E6=95=88=E7=9A=84bug(?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E9=87=8D=E6=96=B0=E5=90=AF=E7=94=A8)=20~?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=87=AA=E5=AE=9A=E4=B9=89=E5=85=A5=E7=AB=99?= =?UTF-8?q?=E5=90=AF=E7=94=A8=E5=A4=B1=E8=B4=A5=E7=9A=84bug=20~=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E5=89=8D=E5=8F=B0=E6=B5=8B=E8=AF=95=E5=86=85=E6=A0=B8?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E5=91=BD=E4=BB=A4=E6=8A=A5=E9=94=99=E7=9A=84?= =?UTF-8?q?bug=20~=E4=BF=AE=E5=A4=8D=E5=8D=B8=E8=BD=BD=E6=97=B6=E7=9A=84?= =?UTF-8?q?=E6=84=8F=E5=A4=96=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/init.sh | 1 + scripts/libs/get_config.sh | 10 +++++ scripts/menus/1_start.sh | 7 ++- scripts/menus/2_settings.sh | 74 +++++++++++++++++--------------- scripts/menus/4_setboot.sh | 4 ++ scripts/menus/5_task.sh | 3 ++ scripts/menus/6_core_config.sh | 3 ++ scripts/menus/7_gateway.sh | 8 +++- scripts/menus/8_tools.sh | 16 +++---- scripts/menus/bot_tg_service.sh | 1 + scripts/menus/dns.sh | 17 +++----- scripts/menus/uninstall.sh | 10 ++--- scripts/starts/bfstart.sh | 2 + scripts/starts/clash_modify.sh | 7 +-- scripts/starts/singbox_modify.sh | 4 -- scripts/starts/snapshot_init.sh | 4 ++ 16 files changed, 95 insertions(+), 76 deletions(-) diff --git a/scripts/init.sh b/scripts/init.sh index 78f6b1e3..95b8c56f 100644 --- a/scripts/init.sh +++ b/scripts/init.sh @@ -132,6 +132,7 @@ if [ "$systype" = "mi_snapshot" -o "$systype" = "ng_snapshot" ]; then path="/data/shellcrash_init.sh" setconfig CRASHDIR "$CRASHDIR" "$CRASHDIR"/starts/snapshot_init.sh mv -f "$CRASHDIR"/starts/snapshot_init.sh "$path" + [ ! -f /data/auto_start.sh ] && echo '#用于自定义需要开机启动的功能或者命令,会在开机后自动运行' > /data/auto_start.sh else path="$CRASHDIR"/starts/snapshot_init.sh fi diff --git a/scripts/libs/get_config.sh b/scripts/libs/get_config.sh index 84af3781..2da7d31d 100644 --- a/scripts/libs/get_config.sh +++ b/scripts/libs/get_config.sh @@ -9,3 +9,13 @@ [ -z "$fwmark" ] && fwmark=$redir_port routing_mark=$((fwmark + 2)) [ -z "$table" ] && table=100 + +[ -z "$dns_nameserver" ] && { + dns_nameserver='223.5.5.5, 1.2.4.8' + cat /proc/net/udp | grep -q '0035' && dns_nameserver='localhost' +} +[ -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" + cat /proc/net/udp | grep -q '0035' && dns_resolver='localhost' +} \ No newline at end of file diff --git a/scripts/menus/1_start.sh b/scripts/menus/1_start.sh index 699aa9ab..29b13ca3 100644 --- a/scripts/menus/1_start.sh +++ b/scripts/menus/1_start.sh @@ -1,6 +1,9 @@ #!/bin/sh # Copyright (C) Juewuy +[ -n "$__IS_MODULE_1_START_LOADED" ] && return +__IS_MODULE_1_START_LOADED=1 + #启动相关 startover() { echo -ne " \r" @@ -24,7 +27,7 @@ start_core() { echo -e "\033[33m没有找到${crashcore}配置文件,尝试生成providers配置文件!\033[0m" [ "$crashcore" = singboxr ] && coretype=singbox [ "$crashcore" = meta -o "$crashcore" = clashpre ] && coretype=clash - . "$CRASHDIR"/webget.sh && gen_${coretype}_providers + . "$CRASHDIR"/menus/6_core_config.sh && gen_${coretype}_providers elif [ -s $core_config -o -n "$Url" -o -n "$Https" ]; then "$CRASHDIR"/start.sh start #设置循环检测以判定服务启动是否成功 @@ -36,7 +39,7 @@ start_core() { } else echo -e "\033[31m没有找到${crashcore}配置文件,请先导入配置文件!\033[0m" - . "$CRASHDIR"/webget.sh && set_core_config + . "$CRASHDIR"/menus/6_core_config.sh && set_core_config fi } start_service() { diff --git a/scripts/menus/2_settings.sh b/scripts/menus/2_settings.sh index 421cfc82..41e47081 100644 --- a/scripts/menus/2_settings.sh +++ b/scripts/menus/2_settings.sh @@ -1,6 +1,9 @@ #!/bin/sh # Copyright (C) Juewuy +[ -n "$__IS_MODULE_2_SETTINGS_LOADED" ] && return +__IS_MODULE_2_SETTINGS_LOADED=1 + settings() { #功能设置 #获取设置默认显示 [ -z "$skip_cert" ] && skip_cert=已开启 @@ -65,8 +68,8 @@ settings() { #功能设置 if [ "$sniffer" = "未启用" ]; then if [ "$crashcore" = "clash" ]; then rm -rf ${TMPDIR}/CrashCore - rm -rf ${CRASHDIR}/CrashCore - rm -rf ${CRASHDIR}/CrashCore.tar.gz + rm -rf "$CRASHDIR"/CrashCore + rm -rf "$CRASHDIR"/CrashCore.tar.gz crashcore=meta setconfig crashcore $crashcore echo "已将ShellCrash内核切换为Meta内核!域名嗅探依赖Meta或者高版本clashpre内核!" @@ -86,7 +89,7 @@ settings() { #功能设置 echo -e "\033[33m检测到服务正在运行,需要先停止服务!\033[0m" read -p "是否停止服务?(1/0) > " res if [ "$res" = "1" ]; then - ${CRASHDIR}/start.sh stop + "$CRASHDIR"/start.sh stop set_adv_config fi else @@ -124,7 +127,7 @@ settings() { #功能设置 fi elif [ "$num" = 3 ]; then mv -f "$CFG_PATH" "$CFG_PATH".bak - . ${CRASHDIR}/init.sh >/dev/null + . "$CRASHDIR"/init.sh >/dev/null echo -e "\033[32m脚本设置已重置!(旧文件已备份!)\033[0m" fi echo -e "\033[33m请重新启动脚本!\033[0m" @@ -143,7 +146,7 @@ set_redir_mod() { #路由模式设置 echo "-----------------------------------------------" echo -e "\033[36m已设为 $redir_mod !!\033[0m" } - [ -n "$(ls /dev/net/tun 2>/dev/null)" ] || ip tuntap >/dev/null 2>&1 && sup_tun=1 + [ -n "$(ls /dev/net/tun 2>/dev/null)" ] || ip tuntap >/dev/null 2>&1 || modprobe tun 2>/dev/null && sup_tun=1 [ -z "$firewall_area" ] && firewall_area=1 [ -z "$redir_mod" ] && [ "$USER" = "root" -o "$USER" = "admin" ] && redir_mod='Redir模式' [ -z "$redir_mod" ] && redir_mod='纯净模式' @@ -192,7 +195,7 @@ set_redir_mod() { #路由模式设置 if [ -f /etc/init.d/qca-nss-ecm -a "$systype" = "mi_snapshot" ]; then read -p "xiaomi设备的QOS服务与本模式冲突,是否禁用相关功能?(1/0) > " res [ "$res" = '1' ] && { - ${CRASHDIR}/misnap_init.sh tproxyfix + /data/shellcrash_init.sh tproxyfix redir_mod=Tproxy模式 set_redir_config } @@ -283,7 +286,8 @@ set_fw_filter(){ #流量过滤 [ -z "$common_ports" ] && common_ports=已开启 [ -z "$quic_rj" ] && quic_rj=未开启 [ -z "$cn_ip_route" ] && cn_ip_route=未开启 - [ -z "$(cat ${CRASHDIR}/configs/mac ${CRASHDIR}/configs/ip_filter 2>/dev/null)" ] && mac_return=未开启 || mac_return=已启用 + touch "$CRASHDIR"/configs/mac "$CRASHDIR"/configs/ip_filter + [ -z "$(cat "$CRASHDIR"/configs/mac "$CRASHDIR"/configs/ip_filter 2>/dev/null)" ] && mac_return=未开启 || mac_return=已启用 echo "-----------------------------------------------" echo -e " 1 过滤非常用端口: \033[36m$common_ports\033[0m ————用于过滤P2P流量" echo -e " 2 过滤局域网设备: \033[36m$mac_return\033[0m ————使用黑/白名单进行过滤" @@ -319,17 +323,17 @@ set_fw_filter(){ #流量过滤 echo "-----------------------------------------------" if [ -n "$(pidof CrashCore)" ]; then read -p "切换时将停止服务,是否继续?(1/0) > " res - [ "$res" = 1 ] && ${CRASHDIR}/start.sh stop && set_common_ports + [ "$res" = 1 ] && "$CRASHDIR"/start.sh stop && set_common_ports else set_common_ports fi set_fw_filter ;; 2) - checkcfg_mac=$(cat ${CRASHDIR}/configs/mac) + checkcfg_mac=$(cat "$CRASHDIR"/configs/mac) fw_filter_lan if [ -n "$PID" ]; then - checkcfg_mac_new=$(cat ${CRASHDIR}/configs/mac) + checkcfg_mac_new=$(cat "$CRASHDIR"/configs/mac) [ "$checkcfg_mac" != "$checkcfg_mac_new" ] && checkrestart fi set_fw_filter @@ -444,7 +448,7 @@ fw_filter_lan() { #局域网设备过滤 add_mac() { echo "-----------------------------------------------" echo 已添加的mac地址: - cat ${CRASHDIR}/configs/mac 2>/dev/null + cat "$CRASHDIR"/configs/mac 2>/dev/null echo "-----------------------------------------------" echo -e "\033[33m序号 设备IP 设备mac地址 设备名称\033[32m" cat $dhcpdir | awk '{print " "NR" "$3,$2,$4}' @@ -456,8 +460,8 @@ fw_filter_lan() { #局域网设备过滤 if [ -z "$num" -o "$num" = 0 ]; then i= elif [ -n "$(echo $num | grep -aE '^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$')" ]; then - if [ -z "$(cat ${CRASHDIR}/configs/mac | grep -E "$num")" ]; then - echo $num | grep -oE '^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$' >>${CRASHDIR}/configs/mac + if [ -z "$(cat "$CRASHDIR"/configs/mac | grep -E "$num")" ]; then + echo $num | grep -oE '^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$' >>"$CRASHDIR"/configs/mac else echo "-----------------------------------------------" echo -e "\033[31m已添加的设备,请勿重复添加!\033[0m" @@ -465,8 +469,8 @@ fw_filter_lan() { #局域网设备过滤 add_mac elif [ $num -le $(cat $dhcpdir 2>/dev/null | awk 'END{print NR}') ]; then macadd=$(cat $dhcpdir | awk '{print $2}' | sed -n "$num"p) - if [ -z "$(cat ${CRASHDIR}/configs/mac | grep -E "$macadd")" ]; then - echo $macadd >>${CRASHDIR}/configs/mac + if [ -z "$(cat "$CRASHDIR"/configs/mac | grep -E "$macadd")" ]; then + echo $macadd >>"$CRASHDIR"/configs/mac else echo "-----------------------------------------------" echo -e "\033[31m已添加的设备,请勿重复添加!\033[0m" @@ -481,7 +485,7 @@ fw_filter_lan() { #局域网设备过滤 add_ip() { echo "-----------------------------------------------" echo "已添加的IP地址(段):" - cat ${CRASHDIR}/configs/ip_filter 2>/dev/null + cat "$CRASHDIR"/configs/ip_filter 2>/dev/null echo "-----------------------------------------------" echo -e "\033[33m序号 设备IP 设备名称\033[32m" cat $dhcpdir | awk '{print " "NR" "$3,$4}' @@ -494,8 +498,8 @@ fw_filter_lan() { #局域网设备过滤 if [ -z "$num" -o "$num" = 0 ]; then i= elif [ -n "$(echo $num | grep -aE '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(/(3[0-2]|[12]?[0-9]))?$')" ]; then - if [ -z "$(cat ${CRASHDIR}/configs/ip_filter | grep -E "$num")" ]; then - echo $num | grep -oE '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(/(3[0-2]|[12]?[0-9]))?$' >>${CRASHDIR}/configs/ip_filter + if [ -z "$(cat "$CRASHDIR"/configs/ip_filter | grep -E "$num")" ]; then + echo $num | grep -oE '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(/(3[0-2]|[12]?[0-9]))?$' >>"$CRASHDIR"/configs/ip_filter else echo "-----------------------------------------------" echo -e "\033[31m已添加的地址,请勿重复添加!\033[0m" @@ -503,8 +507,8 @@ fw_filter_lan() { #局域网设备过滤 add_ip elif [ $num -le $(cat $dhcpdir 2>/dev/null | awk 'END{print NR}') ]; then ipadd=$(cat $dhcpdir | awk '{print $3}' | sed -n "$num"p) - if [ -z "$(cat ${CRASHDIR}/configs/mac | grep -E "$ipadd")" ]; then - echo $ipadd >>${CRASHDIR}/configs/ip_filter + if [ -z "$(cat "$CRASHDIR"/configs/mac | grep -E "$ipadd")" ]; then + echo $ipadd >>"$CRASHDIR"/configs/ip_filter else echo "-----------------------------------------------" echo -e "\033[31m已添加的地址,请勿重复添加!\033[0m" @@ -518,14 +522,14 @@ fw_filter_lan() { #局域网设备过滤 } del_all() { echo "-----------------------------------------------" - if [ -z "$(cat ${CRASHDIR}/configs/mac ${CRASHDIR}/configs/ip_filter 2>/dev/null)" ]; then + if [ -z "$(cat "$CRASHDIR"/configs/mac "$CRASHDIR"/configs/ip_filter 2>/dev/null)" ]; then echo -e "\033[31m列表中没有需要移除的设备!\033[0m" sleep 1 else echo -e "请选择需要移除的设备:\033[36m" echo -e "\033[33m 设备IP 设备mac地址 设备名称\033[0m" i=1 - for dev in $(cat ${CRASHDIR}/configs/mac ${CRASHDIR}/configs/ip_filter 2>/dev/null); do + for dev in $(cat "$CRASHDIR"/configs/mac "$CRASHDIR"/configs/ip_filter 2>/dev/null); do get_devinfo echo -e " $i \033[32m$dev_ip \033[36m$dev_mac \033[32m$dev_name\033[0m" i=$((i + 1)) @@ -533,18 +537,18 @@ fw_filter_lan() { #局域网设备过滤 echo "-----------------------------------------------" echo -e "\033[0m 0 或回车 结束删除" read -p "请输入需要移除的设备的对应序号 > " num - mac_filter_rows=$(cat ${CRASHDIR}/configs/mac 2>/dev/null | wc -l) - ip_filter_rows=$(cat ${CRASHDIR}/configs/ip_filter 2>/dev/null | wc -l) + mac_filter_rows=$(cat "$CRASHDIR"/configs/mac 2>/dev/null | wc -l) + ip_filter_rows=$(cat "$CRASHDIR"/configs/ip_filter 2>/dev/null | wc -l) if [ -z "$num" ] || [ "$num" -le 0 ]; then n= elif [ $num -le $mac_filter_rows ]; then - sed -i "${num}d" ${CRASHDIR}/configs/mac + sed -i "${num}d" "$CRASHDIR"/configs/mac echo "-----------------------------------------------" echo -e "\033[32m对应设备已移除!\033[0m" del_all elif [ $num -le $((mac_filter_rows + ip_filter_rows)) ]; then num=$((num - mac_filter_rows)) - sed -i "${num}d" ${CRASHDIR}/configs/ip_filter + sed -i "${num}d" "$CRASHDIR"/configs/ip_filter echo "-----------------------------------------------" echo -e "\033[32m对应设备已移除!\033[0m" del_all @@ -561,8 +565,8 @@ fw_filter_lan() { #局域网设备过滤 [ -z "$dhcpdir" ] && [ -f /tmp/dhcp.leases ] && dhcpdir='/tmp/dhcp.leases' [ -z "$dhcpdir" ] && [ -f /tmp/dnsmasq.leases ] && dhcpdir='/tmp/dnsmasq.leases' [ -z "$dhcpdir" ] && dhcpdir='/dev/null' - [ -z "$fw_filter_lan_type" ] && fw_filter_lan_type='黑名单' - if [ "$fw_filter_lan_type" = "黑名单" ]; then + [ -z "$macfilter_type" ] && macfilter_type='黑名单' + if [ "$macfilter_type" = "黑名单" ]; then fw_filter_lan_over='白名单' fw_filter_lan_scrip='不' else @@ -573,15 +577,15 @@ fw_filter_lan() { #局域网设备过滤 echo -e "\033[30;47m请在此添加或移除设备\033[0m" echo -e "当前过滤方式为:\033[33m$fw_filter_lan_type模式\033[0m" echo -e "仅列表内设备流量\033[36m$fw_filter_lan_scrip经过\033[0m内核" - if [ -n "$(cat ${CRASHDIR}/configs/mac)" ]; then + if [ -n "$(cat "$CRASHDIR"/configs/mac)" ]; then echo "-----------------------------------------------" echo -e "当前已过滤设备为:\033[36m" echo -e "\033[33m 设备mac/ip地址 设备名称\033[0m" - for dev in $(cat ${CRASHDIR}/configs/mac 2>/dev/null); do + for dev in $(cat "$CRASHDIR"/configs/mac 2>/dev/null); do get_devinfo echo -e "\033[36m$dev_mac \033[0m$dev_name" done - for dev in $(cat ${CRASHDIR}/configs/ip_filter 2>/dev/null); do + for dev in $(cat "$CRASHDIR"/configs/ip_filter 2>/dev/null); do get_devinfo echo -e "\033[32m$dev_ip \033[0m$dev_name" done @@ -597,8 +601,8 @@ fw_filter_lan() { #局域网设备过滤 case "$num" in 0) ;; 1) - fw_filter_lan_type=$fw_filter_lan_over - setconfig fw_filter_lan_type $fw_filter_lan_type + macfilter_type=$fw_filter_lan_over + setconfig macfilter_type $macfilter_type echo "-----------------------------------------------" echo -e "\033[32m已切换为$fw_filter_lan_type模式!\033[0m" fw_filter_lan @@ -616,8 +620,8 @@ fw_filter_lan() { #局域网设备过滤 fw_filter_lan ;; 9) - : >${CRASHDIR}/configs/mac - : >${CRASHDIR}/configs/ip_filter + : >"$CRASHDIR"/configs/mac + : >"$CRASHDIR"/configs/ip_filter echo "-----------------------------------------------" echo -e "\033[31m设备列表已清空!\033[0m" fw_filter_lan diff --git a/scripts/menus/4_setboot.sh b/scripts/menus/4_setboot.sh index 96241d16..1af2c44f 100644 --- a/scripts/menus/4_setboot.sh +++ b/scripts/menus/4_setboot.sh @@ -1,5 +1,9 @@ #!/bin/sh # Copyright (C) Juewuy + +[ -n "$__IS_MODULE_4_SETBOOT_LOADED" ] && return +__IS_MODULE_4_SETBOOT_LOADED=1 + allow_autostart(){ [ -f /etc/rc.common -a "$(cat /proc/1/comm)" = "procd" ] && /etc/init.d/shellcrash enable ckcmd systemctl && systemctl enable shellcrash.service >/dev/null 2>&1 diff --git a/scripts/menus/5_task.sh b/scripts/menus/5_task.sh index 2986ae25..ebd96070 100644 --- a/scripts/menus/5_task.sh +++ b/scripts/menus/5_task.sh @@ -1,6 +1,9 @@ #!/bin/ash # Copyright (C) Juewuy +[ -n "$__IS_MODULE_5_TASK_LOADED" ] && return +__IS_MODULE_5_TASK_LOADED=1 + #通用工具 . "$CRASHDIR"/libs/set_config.sh . "$CRASHDIR"/libs/set_cron.sh diff --git a/scripts/menus/6_core_config.sh b/scripts/menus/6_core_config.sh index 83d98571..69a9beef 100644 --- a/scripts/menus/6_core_config.sh +++ b/scripts/menus/6_core_config.sh @@ -1,6 +1,9 @@ #!/bin/sh # Copyright (C) Juewuy +[ -n "$__IS_MODULE_6_CORECONFIG_LOADED" ] && return +__IS_MODULE_6_CORECONFIG_LOADED=1 + YAMLSDIR="$CRASHDIR"/yamls JSONSDIR="$CRASHDIR"/jsons diff --git a/scripts/menus/7_gateway.sh b/scripts/menus/7_gateway.sh index f2f5d202..83f55f68 100644 --- a/scripts/menus/7_gateway.sh +++ b/scripts/menus/7_gateway.sh @@ -1,5 +1,9 @@ #!/bin/sh # Copyright (C) Juewuy + +[ -n "$__IS_MODULE_7_GATEWAY_LOADED" ] && return +__IS_MODULE_7_GATEWAY_LOADED=1 + . "$GT_CFG_PATH" . "$CRASHDIR"/menus/check_port.sh . "$CRASHDIR"/libs/gen_base64.sh @@ -242,7 +246,7 @@ set_vmess(){ setconfig vms_service "$vms_service" else if [ -n "$vms_port" ] && [ -n "$vms_uuid" ];then - vms_service=OFF + vms_service=ON setconfig vms_service "$vms_service" else echo -e "\033[31m请先完成必选设置!\033[0m" @@ -352,7 +356,7 @@ set_shadowsocks(){ setconfig sss_service "$sss_service" else if [ -n "$sss_port" ] && [ -n "$sss_cipher" ] && [ -n "$sss_pwd" ];then - sss_service=OFF + sss_service=ON setconfig sss_service "$sss_service" else echo -e "\033[31m请先完成必选设置!\033[0m" diff --git a/scripts/menus/8_tools.sh b/scripts/menus/8_tools.sh index da156728..1456e400 100644 --- a/scripts/menus/8_tools.sh +++ b/scripts/menus/8_tools.sh @@ -1,6 +1,9 @@ #!/bin/sh # Copyright (C) Juewuy +[ -n "$__IS_MODULE_8_TOOLS_LOADED" ] && return +__IS_MODULE_8_TOOLS_LOADED=1 + . "$CRASHDIR"/libs/logger.sh . "$CRASHDIR"/libs/web_get_bin.sh @@ -168,7 +171,7 @@ tools() { get_bin "$TMPDIR"/tun.ko bin/fix/tun.ko if [ "$?" = "0" ]; then mv -f "$TMPDIR"/tun.ko "$CRASHDIR"/tools/tun.ko && - "$CRASHDIR"/misnap_init.sh tunfix && + /data/shellcrash_init.sh tunfix && echo -e "\033[32m设置成功!请重启服务!\033[0m" else echo -e "\033[31m文件下载失败,请重试!\033[0m" @@ -629,7 +632,7 @@ debug(){ 2) "$CRASHDIR"/start.sh stop "$CRASHDIR"/start.sh bfstart - "$COMMAND" + $COMMAND rm -rf "$TMPDIR"/CrashCore echo "-----------------------------------------------" exit @@ -758,15 +761,6 @@ userguide(){ setconfig BINDIR /tmp/ShellCrash "$CRASHDIR"/configs/command.env } fi - #设置加密DNS - if [ -s $openssldir/certs/ca-certificates.crt ];then - dns_nameserver='https://dns.alidns.com/dns-query, https://doh.pub/dns-query' - dns_fallback='https://cloudflare-dns.com/dns-query, https://dns.google/dns-query, https://doh.opendns.com/dns-query' - dns_resolver='https://223.5.5.5/dns-query, 2400:3200::1' - setconfig dns_nameserver "'$dns_nameserver'" - setconfig dns_fallback "'$dns_fallback'" - setconfig dns_resolver "'$dns_resolver'" - fi #启用推荐的自动任务配置 . "$CRASHDIR"/menus/5_task.sh && task_recom #小米设备软固化 diff --git a/scripts/menus/bot_tg_service.sh b/scripts/menus/bot_tg_service.sh index 249707d0..67a2ee10 100644 --- a/scripts/menus/bot_tg_service.sh +++ b/scripts/menus/bot_tg_service.sh @@ -10,6 +10,7 @@ bot_tg_start(){ bot_tg_stop(){ cronset 'TG_BOT守护进程' [ -f "$TMPDIR/bot_tg.pid" ] && kill -TERM "$(cat "$TMPDIR/bot_tg.pid")" + killall bot_tg.sh 2>/dev/null rm -f "$TMPDIR/bot_tg.pid" } bot_tg_cron(){ diff --git a/scripts/menus/dns.sh b/scripts/menus/dns.sh index 71db4737..9171ae41 100644 --- a/scripts/menus/dns.sh +++ b/scripts/menus/dns.sh @@ -8,18 +8,16 @@ set_dns_mod() { #DNS模式设置 echo -e "当前DNS运行模式为:\033[47;30m $dns_mod \033[0m" echo -e "\033[33m切换模式后需要手动重启服务以生效!\033[0m" echo "-----------------------------------------------" - 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 -e " 1 MIX模式: \033[32mCN域名realip其他fake-ip分流\033[0m" + echo -e " 2 Route模式:\033[32mCN域名realip其他dns2proxy分流\033[0m" + echo -e " 3 Redir模式:\033[33m不安全,需搭配第三方DNS服务使用\033[0m" echo "-----------------------------------------------" 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 "-----------------------------------------------" echo " 0 返回上级菜单" read -p "请输入对应数字 > " num case "$num" in @@ -113,9 +111,6 @@ fake_ip_filter() { esac } 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 "$dns_no" ] && dns_no=未禁用 echo "-----------------------------------------------" echo -e "当前基础DNS:\033[32m$dns_nameserver\033[0m" @@ -201,12 +196,10 @@ set_dns_adv() { #DNS详细设置 set_dns_adv ;; 9) - dns_nameserver= - dns_fallback= - dns_resolver= setconfig dns_nameserver setconfig dns_fallback setconfig dns_resolver + . "$CRASHDIR"/libs/get_config.sh echo -e "\033[33mDNS配置已重置!!!\033[0m" sleep 1 set_dns_adv diff --git a/scripts/menus/uninstall.sh b/scripts/menus/uninstall.sh index 06392a7d..4fe3bfda 100644 --- a/scripts/menus/uninstall.sh +++ b/scripts/menus/uninstall.sh @@ -35,11 +35,11 @@ uninstall() { sed -i '/export CRASHDIR=*/'d /etc/profile 2>/dev/null sed -i '/export crashdir=*/'d /etc/profile 2>/dev/null [ -w ~/.zshrc ] && { - sed -i "/alias $my_alias=*/"d ~/.zshrc - sed -i '/export CRASHDIR=*/'d ~/.zshrc + sed -i "/alias $my_alias=*/"d ~/.zshrc 2>/dev/null + sed -i '/export CRASHDIR=*/'d ~/.zshrc 2>/dev/null } - sed -i '/all_proxy/'d $profile - sed -i '/ALL_PROXY/'d $profile + sed -i '/all_proxy/'d /etc/profile 2>/dev/null + sed -i '/ALL_PROXY/'d /etc/profile 2>/dev/null sed -i "/启用外网访问SSH服务/d" /etc/firewall.user 2>/dev/null sed -i '/ShellCrash初始化/'d /etc/storage/started_script.sh 2>/dev/null sed -i '/ShellCrash初始化/'d /jffs/.asusrouter 2>/dev/null @@ -50,7 +50,7 @@ uninstall() { rm -rf /www/clash rm -rf /tmp/ShellCrash rm -rf /usr/bin/crash - sed -i '/0:7890/d' /etc/passwd + sed -i '/0:7890/d' /etc/passwd 2>/dev/null userdel -r shellcrash 2>/dev/null nvram set script_usbmount="" 2>/dev/null nvram commit 2>/dev/null diff --git a/scripts/starts/bfstart.sh b/scripts/starts/bfstart.sh index f8caed7a..56c6e3b3 100644 --- a/scripts/starts/bfstart.sh +++ b/scripts/starts/bfstart.sh @@ -129,6 +129,8 @@ fi echo "shellcrash:x:0:7890:::" >>/etc/passwd fi } +#加载系统内核组件 +[ "$redir_mod" = "Tun模式" -o "$redir_mod" = "混合模式" ] && ckcmd modprobe && modprobe tun 2>/dev/null #清理debug日志 rm -rf /tmp/ShellCrash/debug.log rm -rf "$CRASHDIR"/debug.log diff --git a/scripts/starts/clash_modify.sh b/scripts/starts/clash_modify.sh index c3879274..d6a0538b 100644 --- a/scripts/starts/clash_modify.sh +++ b/scripts/starts/clash_modify.sh @@ -1,10 +1,6 @@ #!/bin/sh # Copyright (C) Juewuy -#默认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" #修饰clash配置文件 modify_yaml() { ##########需要变更的配置########### @@ -80,6 +76,7 @@ $exper $sniffer_set $find_process routing-mark: $routing_mark +unified-delay: true EOF #读取本机hosts并生成配置文件 if [ "$hosts_opt" != "OFF" ] && [ -z "$(grep -aE '^hosts:' "$CRASHDIR"/yamls/user.yaml 2>/dev/null)" ]; then @@ -198,7 +195,7 @@ EOF yaml_user="$CRASHDIR"/yamls/user.yaml #set和user去重,且优先使用user.yaml cp -f "$TMPDIR"/set.yaml "$TMPDIR"/set_bak.yaml - for char in mode allow-lan log-level tun experimental external-ui-url interface-name dns store-selected; do + for char in mode allow-lan log-level tun experimental external-ui-url interface-name dns store-selected unified-delay; do [ -n "$(grep -E "^$char" $yaml_user)" ] && sed -i "/^$char/d" "$TMPDIR"/set.yaml done } diff --git a/scripts/starts/singbox_modify.sh b/scripts/starts/singbox_modify.sh index cb2bd06a..8f10e6c0 100644 --- a/scripts/starts/singbox_modify.sh +++ b/scripts/starts/singbox_modify.sh @@ -1,10 +1,6 @@ #!/bin/sh # Copyright (C) Juewuy -#默认dns -[ -z "$dns_nameserver" ] && dns_nameserver='223.5.5.5' -[ -z "$dns_fallback" ] && dns_fallback="1.1.1.1" -[ -z "$dns_resolver" ] && dns_resolver="223.5.5.5" #修饰singbox配置文件 parse_singbox_dns() { #dns转换 first_dns=$(echo "$1" | cut -d',' -f1 | cut -d' ' -f1) diff --git a/scripts/starts/snapshot_init.sh b/scripts/starts/snapshot_init.sh index 3f331ac0..ab80538f 100644 --- a/scripts/starts/snapshot_init.sh +++ b/scripts/starts/snapshot_init.sh @@ -68,6 +68,10 @@ auto_start(){ "$CRASHDIR"/start.sh start /etc/init.d/shellcrash enable fi + #启动自定义服务 + [ -s /data/auto_start.sh ] && /data/auto_start.sh & + #兼容auto_ssh脚本 + [ -s /data/auto_ssh/auto_ssh.sh ] && /bin/sh /data/auto_ssh/auto_ssh.sh & } init(){ #等待启动完成