mirror of
https://github.com/juewuy/ShellCrash.git
synced 2026-03-11 07:51:45 +00:00
~重写保守模式启动函数,现在启动停止不会有额外kill命令报错,并且增加了对tg_bot脚本的启动支持
~新增tg_bot脚本的定时任务守护进程功能 ~新增公网防火墙禁用时的警告确认功能 ~优化小米路由自启脚本,现在自启脚本单独存放为/data/shellcrash_init.sh,且在卸载脚本时会保留改脚本并保留软固化功能 ~优化小米自动清理功能,适配更多设备 ~修复本地自解压安装时脚本报错bug ~修复小米等设备无法使用tg_bot控制机器人的问题
This commit is contained in:
@@ -40,7 +40,7 @@ if [ -n "$test" -o -n "$(pidof CrashCore)" ]; then
|
||||
cronset '2fjdi124dd12s' "$line"
|
||||
done <"$CRASHDIR"/task/running
|
||||
}
|
||||
[ "$start_old" = "已开启" ] && cronset '保守模式守护进程' "* * * * * test -z \"\$(pidof CrashCore)\" && $CRASHDIR/start.sh daemon #ShellCrash保守模式守护进程"
|
||||
[ "$start_old" = "已开启" ] && cronset '保守模式守护进程' "* * * * * /bin/sh $CRASHDIR/starts/start_legacy_wd.sh shellcrash #ShellCrash保守模式守护进程"
|
||||
#加载条件任务
|
||||
[ -s "$CRASHDIR"/task/afstart ] && { . "$CRASHDIR"/task/afstart; } &
|
||||
[ -s "$CRASHDIR"/task/affirewall -a -s /etc/init.d/firewall -a ! -f /etc/init.d/firewall.bak ] && {
|
||||
@@ -51,10 +51,7 @@ if [ -n "$test" -o -n "$(pidof CrashCore)" ]; then
|
||||
sed -i "${line}a\\. $CRASHDIR/task/affirewall" /etc/init.d/firewall
|
||||
} &
|
||||
#启动TG机器人
|
||||
[ "$bot_tg_service" = ON ] && {
|
||||
setsid sh "$CRASHDIR/menus/bot_tg.sh" &
|
||||
echo $! > "$TMPDIR/bot_tg.pid"
|
||||
}
|
||||
[ "$bot_tg_service" = ON ] && . "$CRASHDIR"/menus/bot_tg_service.sh && bot_tg_start
|
||||
exit 0
|
||||
else
|
||||
. "$CRASHDIR"/starts/start_error.sh
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) Juewuy
|
||||
|
||||
CRASHDIR="$(uci get firewall.ShellCrash.path | sed 's/\/misnap_init.sh//')"
|
||||
profile=/etc/profile
|
||||
. "$CRASHDIR"/configs/ShellCrash.cfg
|
||||
CRASHDIR="$(uci get firewall.ShellCrash.path | sed 's/\/starts\/snapshot_init.sh//')"
|
||||
|
||||
[ -f "$CRASHDIR"/configs/ShellCrash.cfg ] && . "$CRASHDIR"/configs/ShellCrash.cfg
|
||||
|
||||
autoSSH(){
|
||||
#自动开启SSH
|
||||
@@ -14,7 +14,6 @@ autoSSH(){
|
||||
[ -z "$(pidof dropbear)" -o -z "$(netstat -ntul | grep :22)" ] && {
|
||||
sed -i 's/channel=.*/channel="debug"/g' /etc/init.d/dropbear
|
||||
/etc/init.d/dropbear restart
|
||||
mi_autoSSH_pwd=$(grep 'mi_autoSSH_pwd=' $CRASHDIR/configs/ShellCrash.cfg | awk -F "=" '{print $2}')
|
||||
[ -n "$mi_autoSSH_pwd" ] && echo -e "$mi_autoSSH_pwd\n$mi_autoSSH_pwd" | passwd root
|
||||
}
|
||||
#配置nvram
|
||||
@@ -22,8 +21,8 @@ autoSSH(){
|
||||
[ "$(nvram get telnet_en)" = 0 ] && nvram set telnet_en=1
|
||||
nvram commit &> /dev/null
|
||||
#备份还原SSH秘钥
|
||||
[ -f $CRASHDIR/configs/dropbear_rsa_host_key ] && ln -sf $CRASHDIR/configs/dropbear_rsa_host_key /etc/dropbear/dropbear_rsa_host_key
|
||||
[ -f $CRASHDIR/configs/authorized_keys ] && ln -sf $CRASHDIR/configs/authorized_keys /etc/dropbear/authorized_keys
|
||||
[ -f "$CRASHDIR"/configs/dropbear_rsa_host_key ] && ln -sf "$CRASHDIR"/configs/dropbear_rsa_host_key /etc/dropbear/dropbear_rsa_host_key
|
||||
[ -f "$CRASHDIR"/configs/authorized_keys ] && ln -sf "$CRASHDIR"/configs/authorized_keys /etc/dropbear/authorized_keys
|
||||
}
|
||||
tunfix(){
|
||||
ko_dir=$(modinfo ip_tables | grep -Eo '/lib/modules.*/ip_tables.ko' | sed 's|/ip_tables.ko||' )
|
||||
@@ -33,7 +32,7 @@ tunfix(){
|
||||
mkdir -p /tmp/overlay/work
|
||||
mount -o noatime,lowerdir=${ko_dir},upperdir=/tmp/overlay/upper,workdir=/tmp/overlay/work -t overlay "overlay_mods_only" ${ko_dir}
|
||||
#将tun.ko链接到lib
|
||||
ln -sf $CRASHDIR/tools/tun.ko ${ko_dir}/tun.ko || $CRASHDIR/start.sh loggger "小米Tun模块修复失败!"
|
||||
ln -sf "$CRASHDIR"/tools/tun.ko ${ko_dir}/tun.ko
|
||||
}
|
||||
tproxyfix(){
|
||||
sed -i 's/sysctl -w net.bridge.bridge-nf-call-ip/#sysctl -w net.bridge.bridge-nf-call-ip/g' /etc/init.d/qca-nss-ecm
|
||||
@@ -47,7 +46,28 @@ auto_clean(){
|
||||
/etc/init.d/stat_points stop 2>/dev/null
|
||||
/etc/init.d/stat_points disable 2>/dev/null
|
||||
sed -i '\#/logrotate#{ /^[[:space:]]*#/!s/^/#ShellCrash自动注释 / }' /etc/crontabs/root
|
||||
rm -rf /data/usr/log
|
||||
sed -i '\#/sec_cfg_bak#{ /^[[:space:]]*#/!s/^/#ShellCrash自动注释 / }' /etc/crontabs/root
|
||||
rm -rf /data/usr/log /data/usr/sec_cfg
|
||||
|
||||
}
|
||||
auto_start(){
|
||||
#设置init.d服务
|
||||
cp -f "$CRASHDIR"/shellcrash.procd /etc/init.d/shellcrash
|
||||
chmod 755 /etc/init.d/shellcrash
|
||||
#初始化环境变量
|
||||
. "$CRASHDIR"/libs/set_profile.sh && set_profile '/etc/profile'
|
||||
#启动服务
|
||||
if [ ! -f "$CRASHDIR"/.dis_startup ]; then
|
||||
#AX6S/AX6000修复tun功能
|
||||
[ -s "$CRASHDIR"/tools/tun.ko ] && tunfix
|
||||
#小米7000/小米万兆修复tproxy
|
||||
[ -f /etc/init.d/qca-nss-ecm ] && [ "$redir_mod" = 'Tproxy' ] && tproxyfix
|
||||
#自动覆盖根证书文件
|
||||
[ -s "$CRASHDIR"/tools/ca-certificates.crt ] && cp -f "$CRASHDIR"/tools/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
|
||||
#启动服务
|
||||
"$CRASHDIR"/start.sh start
|
||||
/etc/init.d/shellcrash enable
|
||||
fi
|
||||
}
|
||||
init(){
|
||||
#等待启动完成
|
||||
@@ -55,29 +75,9 @@ init(){
|
||||
sleep 10
|
||||
done
|
||||
sleep 20
|
||||
#初始化环境变量
|
||||
[ -z "$my_alias" ] && my_alias=crash
|
||||
sed -i "/ShellCrash\/menu.sh/"d "$profile"
|
||||
echo "alias ${my_alias}=\"sh $CRASHDIR/menu.sh\"" >>"$profile"
|
||||
sed -i "/export CRASHDIR/d" "$profile"
|
||||
echo "export CRASHDIR=\"$CRASHDIR\"" >>"$profile"
|
||||
autoSSH #软固化功能
|
||||
auto_clean #自动清理
|
||||
#设置init.d服务
|
||||
cp -f $CRASHDIR/shellcrash.procd /etc/init.d/shellcrash
|
||||
chmod 755 /etc/init.d/shellcrash
|
||||
#启动服务
|
||||
if [ ! -f $CRASHDIR/.dis_startup ]; then
|
||||
#AX6S/AX6000修复tun功能
|
||||
[ -s $CRASHDIR/tools/tun.ko ] && tunfix
|
||||
#小米7000/小米万兆修复tproxy
|
||||
[ -f /etc/init.d/qca-nss-ecm ] && [ -n "$(grep 'redir_mod=Tproxy' $CRASHDIR/configs/ShellCrash.cfg )" ] && tproxyfix
|
||||
#自动覆盖根证书文件
|
||||
[ -s $CRASHDIR/tools/ca-certificates.crt ] && cp -f $CRASHDIR/tools/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
|
||||
#启动服务
|
||||
$CRASHDIR/start.sh start
|
||||
/etc/init.d/shellcrash enable
|
||||
fi
|
||||
[ -s "$CRASHDIR"/start.sh ] && auto_start
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
|
||||
14
scripts/starts/start_legacy.sh
Normal file
14
scripts/starts/start_legacy.sh
Normal file
@@ -0,0 +1,14 @@
|
||||
|
||||
. "$CRASHDIR"/libs/check_cmd.sh
|
||||
|
||||
start_legacy(){
|
||||
if ckcmd su && grep -q 'shellcrash:x:0:7890' /etc/passwd; then
|
||||
su shellcrash -c "$1 >/dev/null 2>&1 & echo \$! > /tmp/ShellCrash/$2.pid"
|
||||
elif ckcmd nohup; then
|
||||
nohup $1 >/dev/null 2>&1 &
|
||||
echo $! > "/tmp/ShellCrash/$2.pid"
|
||||
else
|
||||
$1 >/dev/null 2>&1 &
|
||||
echo $! > "/tmp/ShellCrash/$2.pid"
|
||||
fi
|
||||
}
|
||||
16
scripts/starts/start_legacy_wd.sh
Normal file
16
scripts/starts/start_legacy_wd.sh
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
PIDFILE="/tmp/ShellCrash/$1.pid"
|
||||
|
||||
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
|
||||
Reference in New Issue
Block a user