From 9f55974d1cc07f51e842447341f7604bc5639ed7 Mon Sep 17 00:00:00 2001 From: juewuy Date: Thu, 4 Jan 2024 12:36:54 +0800 Subject: [PATCH] =?UTF-8?q?v1.8.3=20~=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=9C=AA?= =?UTF-8?q?=E5=AE=89=E8=A3=85=E9=9D=A2=E6=9D=BF=E6=97=B6=E7=9A=84=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=E6=8F=90=E7=A4=BA=E9=A1=B5=E9=9D=A2=20~=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E4=BA=86=E6=97=A5=E5=BF=97=E4=B8=80=E9=94=AE=E6=B8=85?= =?UTF-8?q?=E7=A9=BA=E7=9A=84=E5=8A=9F=E8=83=BD=20~=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E6=8F=90=E7=A4=BA=E8=A6=86=E7=9B=96=E5=AE=89?= =?UTF-8?q?=E8=A3=85=E6=97=B6=EF=BC=8C=E6=97=A0=E6=B3=95=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E5=AE=89=E8=A3=85=E7=9A=84bug=20~=E4=BF=AE=E5=A4=8D=E5=AE=89?= =?UTF-8?q?=E8=A3=85=E6=88=96=E6=9B=B4=E6=96=B0=E8=84=9A=E6=9C=AC=E6=97=B6?= =?UTF-8?q?=E7=9A=84=E6=8A=A5=E9=94=99=E6=8F=90=E7=A4=BA=20~=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E4=BB=BB=E5=8A=A1=E6=97=A0=E6=B3=95=E4=B8=80=E9=94=AE?= =?UTF-8?q?=E6=B8=85=E7=A9=BA=E7=9A=84bug=20~=E4=BF=AE=E5=A4=8D=E4=BA=86?= =?UTF-8?q?=E9=83=A8=E5=88=86=E4=BB=BB=E5=8A=A1=E6=9C=AA=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E7=9A=84bug=20~=E4=BF=AE=E5=A4=8D=E4=BA=86?= =?UTF-8?q?=E9=83=A8=E5=88=86=E6=8E=A8=E8=8D=90=E4=BB=BB=E5=8A=A1=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E9=97=B4=E9=9A=94=E5=87=BA=E9=94=99=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/clash.sh | 32 +++++++++++++--------- scripts/getdate.sh | 68 ++++++++++++++++++++++++---------------------- scripts/init.sh | 10 +++---- scripts/start.sh | 28 +++++++++++++++++-- scripts/task.sh | 46 +++++++++++++++++-------------- 5 files changed, 109 insertions(+), 75 deletions(-) diff --git a/scripts/clash.sh b/scripts/clash.sh index b13af04..ff8b305 100644 --- a/scripts/clash.sh +++ b/scripts/clash.sh @@ -167,13 +167,7 @@ errornum(){ } startover(){ echo -e "\033[32m服务已启动!\033[0m" - if [ -n "$hostdir" ];then - echo -e "请使用 \033[4;32mhttp://$host$hostdir\033[0m 管理内置规则" - else - echo -e "可使用 \033[4;32mhttp://clash.razord.top\033[0m 管理内置规则" - echo -e "Host地址:\033[36m $host \033[0m 端口:\033[36m $db_port \033[0m" - echo -e "推荐前往更新菜单安装本地Dashboard面板,连接更稳定!\033[0m" - fi + echo -e "请使用 \033[4;32mhttp://$host$hostdir\033[0m 管理内置规则" if [ "$redir_mod" = "纯净模式" ];then echo ----------------------------------------------- echo -e "其他设备可以使用PAC配置连接:\033[4;32mhttp://$host:$db_port/ui/pac\033[0m" @@ -200,7 +194,7 @@ checkrestart(){ [ "$res" = 1 ] && clashstart } #功能相关 -log_pusher(){ +log_pusher(){ #日志菜单 [ -n "$push_TG" ] && stat_TG=32m已启用 || stat_TG=33m未启用 [ -n "$push_Deer" ] && stat_Deer=32m已启用 || stat_Deer=33m未启用 [ -n "$push_bark" ] && stat_bark=32m已启用 || stat_bark=33m未启用 @@ -214,14 +208,20 @@ log_pusher(){ echo -e " 4 Bark推送-IOS ——\033[$stat_bark\033[0m" echo -e " 5 Passover推送 ——\033[$stat_Po\033[0m" echo -e " 6 推送任务日志 ——\033[$task_push\033[0m" - echo -e " 9 设置设备名称 ——\033[$device_s\033[0m" + echo -e " 8 设置设备名称 ——\033[$device_s\033[0m" + echo -e " 9 清空日志文件" echo ----------------------------------------------- read -p "请输入对应数字 > " num case $num in 1) - echo ----------------------------------------------- - cat $TMPDIR/ShellCrash.log - exit + if [ -s $TMPDIR/ShellCrash.log ];then + echo ----------------------------------------------- + cat $TMPDIR/ShellCrash.log + exit 0 + else + echo -e "\033[31m未找到相关日志!\033[0m" + fi + sleep 1 ;; 2) echo ----------------------------------------------- @@ -374,12 +374,18 @@ log_pusher(){ sleep 1 log_pusher ;; - 9) + 8) read -p "请输入本设备自定义推送名称 > " device_name setconfig device_name $device_name sleep 1 log_pusher ;; + 9) + echo -e "\033[33m运行日志及任务日志均已清空!\033[0m" + rm -rf $TMPDIR/ShellCrash.log + sleep 1 + log_pusher + ;; *) errornum ;; esac } diff --git a/scripts/getdate.sh b/scripts/getdate.sh index fea8d9b..41bce08 100644 --- a/scripts/getdate.sh +++ b/scripts/getdate.sh @@ -1019,7 +1019,7 @@ setgeo(){ getdb(){ #下载及安装 - if [ -f /www/clash/index.html -o -f $CRASHDIR/ui/index.html ];then + if [ -f /www/clash/CNAME -o -f $CRASHDIR/ui/CNAME ];then echo ----------------------------------------------- echo -e "\033[31m检测到您已经安装过本地面板了!\033[0m" echo ----------------------------------------------- @@ -1028,41 +1028,43 @@ getdb(){ rm -rf /www/clash rm -rf $CRASHDIR/ui rm -rf $bindir/ui - fi - fi - dblink="${update_url}/bin/dashboard/${db_type}.tar.gz" - echo ----------------------------------------------- - echo 正在连接服务器获取安装文件………… - $CRASHDIR/start.sh webget $TMPDIR/clashdb.tar.gz $dblink - if [ "$?" = "1" ];then - echo ----------------------------------------------- - echo -e "\033[31m文件下载失败!\033[0m" - echo ----------------------------------------------- - error_down - setdb - else - echo -e "\033[33m下载成功,正在解压文件!\033[0m" - mkdir -p $dbdir > /dev/null - tar -zxvf "$TMPDIR/clashdb.tar.gz" -C $dbdir > /dev/null - if [ $? -ne 0 ];then - tar -zxvf "$TMPDIR/clashdb.tar.gz" --no-same-permissions -C $dbdir > /dev/null - [ $? -ne 0 ] && echo "文件解压失败!" && rm -rf $TMPDIR/clashfm.tar.gz && exit 1 - fi - #修改默认host和端口 - if [ "$db_type" = "clashdb" -o "$db_type" = "meta_db" -o "$db_type" = "meta_xd" ];then - sed -i "s/127.0.0.1/${host}/g" $dbdir/assets/*.js - sed -i "s/9090/${db_port}/g" $dbdir/assets/*.js + dblink="${update_url}/bin/dashboard/${db_type}.tar.gz" + echo ----------------------------------------------- + echo 正在连接服务器获取安装文件………… + $CRASHDIR/start.sh webget $TMPDIR/clashdb.tar.gz $dblink + if [ "$?" = "1" ];then + echo ----------------------------------------------- + echo -e "\033[31m文件下载失败!\033[0m" + echo ----------------------------------------------- + error_down + setdb + else + echo -e "\033[33m下载成功,正在解压文件!\033[0m" + mkdir -p $dbdir > /dev/null + tar -zxvf "$TMPDIR/clashdb.tar.gz" -C $dbdir > /dev/null + if [ $? -ne 0 ];then + tar -zxvf "$TMPDIR/clashdb.tar.gz" --no-same-permissions -C $dbdir > /dev/null + [ $? -ne 0 ] && echo "文件解压失败!" && rm -rf $TMPDIR/clashfm.tar.gz && exit 1 + fi + #修改默认host和端口 + if [ "$db_type" = "clashdb" -o "$db_type" = "meta_db" -o "$db_type" = "meta_xd" ];then + sed -i "s/127.0.0.1/${host}/g" $dbdir/assets/*.js + sed -i "s/9090/${db_port}/g" $dbdir/assets/*.js + else + sed -i "s/127.0.0.1:9090/${host}:${db_port}/g" $dbdir/*.html + #sed -i "s/7892/${db_port}/g" $dbdir/app*.js + fi + #写入配置文件 + setconfig hostdir \'$hostdir\' + echo ----------------------------------------------- + echo -e "\033[32m面板安装成功!\033[0m" + rm -rf $TMPDIR/clashdb.tar.gz + fi else - sed -i "s/127.0.0.1:9090/${host}:${db_port}/g" $dbdir/*.html - #sed -i "s/7892/${db_port}/g" $dbdir/app*.js + echo -e "\033[33m安装已取消!\033[0m" fi - #写入配置文件 - setconfig hostdir \'$hostdir\' - echo ----------------------------------------------- - echo -e "\033[32m面板安装成功!\033[0m" - rm -rf $TMPDIR/clashdb.tar.gz - sleep 1 fi + sleep 1 } setdb(){ dbdir(){ diff --git a/scripts/init.sh b/scripts/init.sh index f1ffdf0..6d763d5 100644 --- a/scripts/init.sh +++ b/scripts/init.sh @@ -213,8 +213,8 @@ fi #镜像化OpenWrt(snapshot)额外设置 if [ "$systype" = "mi_snapshot" -o "$systype" = "ng_snapshot" ];then chmod 755 $CRASHDIR/misnap_init.sh - uci delete firewall.ShellClash - uci delete firewall.ShellCrash + uci delete firewall.ShellClash 2>/dev/null + uci delete firewall.ShellCrash 2>/dev/null uci set firewall.ShellCrash=include uci set firewall.ShellCrash.type='script' uci set firewall.ShellCrash.path="$CRASHDIR/misnap_init.sh" @@ -258,8 +258,8 @@ for file in log clash.service mark? mark.bak;do rm -rf $CRASHDIR/$file done #旧版任务清理 -$CRASHDIR/start.sh cronset "clash服务" -$CRASHDIR/start.sh cronset "订阅链接" -$CRASHDIR/start.sh cronset "ShellCrash初始化" +$CRASHDIR/start.sh cronset "clash服务" 2>/dev/null +$CRASHDIR/start.sh cronset "订阅链接" 2>/dev/null +$CRASHDIR/start.sh cronset "ShellCrash初始化" 2>/dev/null sleep 1 echo -e "\033[32m脚本初始化完成,请输入\033[30;47m crash \033[0;33m命令开始使用!\033[0m" diff --git a/scripts/start.sh b/scripts/start.sh index 70e5b7d..c2a16e0 100644 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -58,7 +58,7 @@ logger(){ [ -n "$2" -a "$2" != 0 ] && echo -e "\033[$2m$1\033[0m" log_text="$(date "+%G-%m-%d_%H:%M:%S")~$1" echo $log_text >> $TMPDIR/ShellCrash.log - [ "$(wc -l $TMPDIR/ShellCrash.log | awk '{print $1}')" -gt 99 ] && sed -i '1,5d' $TMPDIR/ShellCrash.log + [ "$(wc -l $TMPDIR/ShellCrash.log | awk '{print $1}')" -gt 99 ] && sed -i '1,50d' $TMPDIR/ShellCrash.log [ -z "$3" ] && { getconfig [ -n "$device_name" ] && log_text="$log_text($device_name)" @@ -1093,14 +1093,35 @@ web_restore(){ done } #启动相关 +makehtml(){ + cat > $bindir/ui/index.html < + + + + + ShellCrash面板提示 + + +
+

您还未安装本地面板

+

请在脚本更新功能中(9-4)安装
或者使用在线面板:

+ Meta XD面板(推荐)
+ Meta YACD面板(推荐)
+ Clash YACD面板
+ Clash Razord面板
+
如已安装,请使用Ctrl+F5强制刷新!
+
+ +&1 | grep \"address\" | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}';) [ -z "$host_pac" ] && host_pac=$(ip a 2>&1 | grep -w 'inet' | grep 'global' | grep -E ' 1(92|0|72)\.' | sed 's/.*inet.//g' | sed 's/\/[0-9][0-9].*$//g' | head -n 1) cat > $TMPDIR/clash_pac < /dev/null 2>&1 [ "$?" = 1 ] && wget --version > /dev/null 2>&1 diff --git a/scripts/task.sh b/scripts/task.sh index 3020c65..aea937e 100644 --- a/scripts/task.sh +++ b/scripts/task.sh @@ -28,13 +28,13 @@ update_core(){ #自动更新内核 clash_v_new=$(eval echo \$${clashcore}_v) clash_v_now=$($bindir/clash -v 2>/dev/null | head -n 1 | sed 's/ linux.*//;s/.* //') if [ -z "$clash_v_new" -o "$clash_v_new" = "clash_v_now" ];then - logger "任务:【自动更新内核】中止-未检测到版本更新" + logger "任务【自动更新内核】中止-未检测到版本更新" exit 1 else #更新内核 $CRASHDIR/start.sh webget $TMPDIR/clash.new "$update_url/bin/$clashcore/clash-linux-$cpucore" if [ "$?" != "0" ];then - logger "任务:【自动更新内核】出错-下载失败!" + logger "任务【自动更新内核】出错-下载失败!" rm -rf $TMPDIR/clash.new return 1 else @@ -42,13 +42,13 @@ update_core(){ #自动更新内核 $CRASHDIR/start.sh stop clashv=$($TMPDIR/clash.new -v 2>/dev/null | sed 's/ linux.*//;s/.* //') if [ -z "$clashv" ];then - logger "任务:【自动更新内核】出错-下载失败!" + logger "任务【自动更新内核】出错-下载失败!" rm -rf $TMPDIR/clash.new [ $clashcore = meta ] && $CRASHDIR/start.sh start return 1 else mv -f $TMPDIR/clash.new $bindir/clash - logger "任务:【自动更新内核】下载完成,正在重启服务!" + logger "任务【自动更新内核】下载完成,正在重启服务!" $CRASHDIR/start.sh start return 0 fi @@ -59,20 +59,20 @@ update_shellclash(){ #自动更新脚本 #检查版本 check_update if [ -z "$versionsh" -o "$versionsh" = "versionsh_l" ];then - logger "任务:【自动更新脚本】中止-未检测到版本更新" + logger "任务【自动更新脚本】中止-未检测到版本更新" exit 1 else $CRASHDIR/start.sh webget $TMPDIR/clashfm.tar.gz "$update_url/bin/clashfm.tar.gz" if [ "$?" != "0" ];then rm -rf $TMPDIR/clashfm.tar.gz - logger "任务:【自动更新内核】出错-下载失败!" + logger "任务【自动更新内核】出错-下载失败!" return 1 else #解压 tar -zxvf "$TMPDIR/clashfm.tar.gz" -C $CRASHDIR/ || tar -zxvf "$TMPDIR/clashfm.tar.gz" --no-same-owner -C $CRASHDIR/ if [ $? -ne 0 ];then rm -rf $TMPDIR/clashfm.tar.gz - logger "任务:【自动更新内核】出错-解压失败!" + logger "任务【自动更新内核】出错-解压失败!" return 1 else source $CRASHDIR/init.sh >/dev/null @@ -89,18 +89,18 @@ update_mmdb(){ #自动更新数据库 geo_v_new=$GeoIP_v geo_v_now=$(eval echo \$$geo_v) if [ -z "$geo_v_new" -o "$geo_v_new" = "$geo_v_now" ];then - logger "任务:【自动更新数据库文件】跳过-未检测到$2版本更新" + logger "任务【自动更新数据库文件】跳过-未检测到$2版本更新" else #更新文件 $CRASHDIR/start.sh webget $TMPDIR/$1 "$update_url/bin/geodata/$2" if [ "$?" != "0" ];then - logger "任务:【自动更新数据库文件】更新【$2】下载失败!" + logger "任务【自动更新数据库文件】更新【$2】下载失败!" rm -rf $TMPDIR/$1 return 1 else mv -f $TMPDIR/$1 $bindir/$1 setconfig $geo_v $GeoIP_v - logger "任务:【自动更新数据库文件】更新【$2】成功!" + logger "任务【自动更新数据库文件】更新【$2】成功!" return 0 fi fi @@ -144,7 +144,6 @@ cronset(){ sed -i '/^$/d' $tmpcron echo "$2" >> $tmpcron croncmd $tmpcron - rm -f $tmpcron #华硕/Padavan固件存档在本地,其他则删除 [ "$CRASHDIR" = "/jffs/clash" -o "$CRASHDIR" = "/etc/storage/clash" ] && mv -f $tmpcron $CRASHDIR/task/cron || rm -f $tmpcron } @@ -160,7 +159,7 @@ set_cron(){ cronset "$cron_time$task_name" "$task_txt" fi unset week hour min - echo -e "任务:【$cron_time$task_name】\033[32m添加成功!\033[0m" + echo -e "任务【$cron_time$task_name】\033[32m添加成功!\033[0m" sleep 1 } set_service(){ @@ -174,7 +173,7 @@ set_service(){ else echo "$CRASHDIR/task/task.sh $2 $3" >> $task_file fi - echo -e "任务:【$3】\033[32m添加成功!\033[0m" + echo -e "任务【$3】\033[32m添加成功!\033[0m" sleep 1 } #任务界面 @@ -249,9 +248,9 @@ task_add(){ #任务添加 task_del(){ #任务删除 #删除定时任务 croncmd -l > $TMPDIR/cron && sed -i "/$1/d" $TMPDIR/cron && croncmd $TMPDIR/cron - sed -i "/$1/d" $CRASHDIR/task/cron 2>/dev/null rm -f $TMPDIR/cron #删除条件任务 + sed -i "/$1/d" $CRASHDIR/task/cron 2>/dev/null sed -i "/$1/d" $CRASHDIR/task/bfstart 2>/dev/null sed -i "/$1/d" $CRASHDIR/task/afstart 2>/dev/null sed -i "/$1/d" $CRASHDIR/task/running 2>/dev/null @@ -359,7 +358,7 @@ task_manager(){ #任务管理列表 0) ;; d) - task_del "$CRASHDIR\/task\/task.sh" + task_del "task.sh" echo -e "\033[31m全部任务已清空!\033[36m" sleep 1 ;; @@ -390,7 +389,7 @@ task_manager(){ #任务管理列表 3) task_command=$(cat $CRASHDIR/task/task.list $CRASHDIR/task/task.user 2>/dev/null | grep "$task_id" | awk -F '#' '{print $2}') eval $task_command && task_res='执行成功!' || task_res='执行失败!' - logger "任务:【$task_des】$task_res" 33 off + logger "任务【$task_des】$task_res" 33 off sleep 1 ;; 4) @@ -425,10 +424,10 @@ task_recom(){ #任务推荐 echo ----------------------------------------------- read -p "是否启用?(1/0) > " res [ "$res" = 1 ] && { - set_service running "106" "运行时每10分钟自动保存面板配置" "1/10" + set_service running "106" "运行时每10分钟自动保存面板配置" "*/10" set_service afstart "107" "服务启动后自动同步ntp时间" cronset "在每周3的3点整更新订阅并重启服务" "0 3 * * 3 $CRASHDIR/task/task.sh 104 在每周3的3点整更新订阅并重启服务" && \ - echo -e "任务:【在每周3的3点整更新订阅并重启服务】\033[32m添加成功!\033[0m" + echo -e "任务【在每周3的3点整更新订阅并重启服务】\033[32m添加成功!\033[0m" } } task_menu(){ #任务菜单 @@ -458,8 +457,13 @@ task_menu(){ #任务菜单 task_menu ;; 3) - echo ----------------------------------------------- - cat $TMPDIR/ShellCrash.log | grep '任务:' + if [ -n "$(cat $TMPDIR/ShellCrash.log | grep '任务【')" ];then + echo ----------------------------------------------- + cat $TMPDIR/ShellCrash.log | grep '任务【' + else + echo -e "\033[31m未找到任务相关执行日志!\033[0m" + fi + sleep 1 task_menu ;; 4) @@ -495,7 +499,7 @@ case "$1" in [1-9][0-9][0-9]) task_command=$(cat $CRASHDIR/task/task.list $CRASHDIR/task/task.user 2>/dev/null | grep "$1" | awk -F '#' '{print $2}') task_name=$(cat $CRASHDIR/task/task.list $CRASHDIR/task/task.user 2>/dev/null | grep "$1" | awk -F '#' '{print $3}') - #logger "任务:$task_name 开始执行" + #logger "任务$task_name 开始执行" eval $task_command && task_res=成功 || task_res=失败 logger "任务【$2】执行$task_res" ;;