From 5ef5717a12159891bbc5da548d8fc449f4a08526 Mon Sep 17 00:00:00 2001 From: juewuy Date: Sun, 4 Feb 2024 09:03:39 +0800 Subject: [PATCH] =?UTF-8?q?~=E9=87=8D=E5=86=99tar=E8=A7=A3=E5=8E=8B?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E9=80=BB=E8=BE=91=EF=BC=8C=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?tar=E7=9B=B8=E5=85=B3=E6=8A=A5=E9=94=99=20~=E4=BF=AE=E5=A4=8Dsi?= =?UTF-8?q?gnbox=E5=86=85=E6=A0=B8=E7=9A=84dns=E5=92=8Cntp=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/getdate.sh | 13 +++++-------- scripts/menu.sh | 3 ++- scripts/start.sh | 42 +++++++++++++++++++++++++++--------------- scripts/task.sh | 7 ++++--- 4 files changed, 38 insertions(+), 27 deletions(-) diff --git a/scripts/getdate.sh b/scripts/getdate.sh index 683d91e..c963a8a 100644 --- a/scripts/getdate.sh +++ b/scripts/getdate.sh @@ -767,7 +767,7 @@ gettar(){ echo ----------------------------------------------- echo 开始解压文件! mkdir -p ${CRASHDIR} > /dev/null - tar -zxf "${TMPDIR}/update.tar.gz" -C ${CRASHDIR}/ 2>/dev/null || tar -zxf "${TMPDIR}/update.tar.gz" --no-same-owner -C ${CRASHDIR}/ + tar -zxf "${TMPDIR}/update.tar.gz" ${tar_para} -C ${CRASHDIR}/ if [ $? -ne 0 ];then echo -e "\033[33m文件解压失败!\033[0m" error_down @@ -901,7 +901,7 @@ getcore(){ #下载内核文件 [ -n "$(pidof CrashCore)" ] && ${CRASHDIR}/start.sh stop #停止内核服务防止内存不足 [ -f ${TMPDIR}/core_new.tar.gz ] && { mkdir -p ${TMPDIR}/core_tmp - tar -zxf "${TMPDIR}/core_new.tar.gz" -C ${TMPDIR}/core_tmp/ &>/dev/null || tar -zxf "${TMPDIR}/core_new.tar.gz" --no-same-owner -C ${TMPDIR}/core_tmp/ + tar -zxf "${TMPDIR}/core_new.tar.gz" ${tar_para} -C ${TMPDIR}/core_tmp/ for file in $(find ${TMPDIR}/core_tmp 2>/dev/null);do [ -f $file ] && [ -n "$(echo $file | sed 's#.*/##' | grep -iE '(CrashCore|sing|meta|mihomo|clash|premium)')" ] && mv -f $file ${TMPDIR}/core_new done @@ -927,7 +927,7 @@ getcore(){ #下载内核文件 if [ -f ${TMPDIR}/core_new.tar.gz ];then mv -f ${TMPDIR}/core_new.tar.gz ${BINDIR}/CrashCore.tar.gz else - tar -zcf ${BINDIR}/CrashCore.tar.gz -C ${TMPDIR} CrashCore + tar -zcf ${BINDIR}/CrashCore.tar.gz ${tar_para} -C ${TMPDIR} CrashCore fi setconfig crashcore $crashcore setconfig core_v $core_v @@ -1397,11 +1397,8 @@ getdb(){ else echo -e "\033[33m下载成功,正在解压文件!\033[0m" mkdir -p $dbdir > /dev/null - tar -zxf "${TMPDIR}/clashdb.tar.gz" -C $dbdir > /dev/null - if [ $? -ne 0 ];then - tar -zxf "${TMPDIR}/clashdb.tar.gz" --no-same-permissions -C $dbdir > /dev/null - [ $? -ne 0 ] && echo "文件解压失败!" && rm -rf ${TMPDIR}/clashfm.tar.gz && exit 1 - fi + tar -zxf "${TMPDIR}/clashdb.tar.gz" ${tar_para} -C $dbdir > /dev/null + [ $? -ne 0 ] && echo "文件解压失败!" && rm -rf ${TMPDIR}/clashfm.tar.gz && exit 1 #修改默认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 diff --git a/scripts/menu.sh b/scripts/menu.sh index 5670262..da8f45c 100644 --- a/scripts/menu.sh +++ b/scripts/menu.sh @@ -8,6 +8,7 @@ JSONSDIR=${CRASHDIR}/jsons source ${CRASHDIR}/configs/command.env &>/dev/null [ -z "$BINDIR" -o -z "$TMPDIR" -o -z "$COMMAND" ] && source ${CRASHDIR}/init.sh &>/dev/null [ ! -f ${TMPDIR} ] && mkdir -p ${TMPDIR} +[ -n "$(tar --help 2>&1|grep -o 'no-same-owner')" ] && tar_para='--no-same-owner' #tar命令兼容 #读取配置相关 setconfig(){ @@ -114,7 +115,7 @@ ckstatus(){ if [ -n "$core_v" ];then source ${CRASHDIR}/getdate.sh && setcoretype && \ mv -f $file ${TMPDIR}/CrashCore && \ - tar -zcf ${BINDIR}/CrashCore.tar.gz -C ${TMPDIR} CrashCore && \ + tar -zcf ${BINDIR}/CrashCore.tar.gz ${tar_para} -C ${TMPDIR} CrashCore && \ echo -e "\033[32m内核加载完成!\033[0m " && \ setconfig crashcore $crashcore && \ setconfig core_v $core_v && \ diff --git a/scripts/start.sh b/scripts/start.sh index 0b179b7..88cdd39 100644 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -559,7 +559,7 @@ EOF { "dns": { "servers": [ - { "tag": "hosts_local", "address": "local", "detour": "direct" } + { "tag": "hosts_local", "address": "local", "detour": "DIRECT" } ], "rules": [ { @@ -617,12 +617,12 @@ EOF "address": "$dns_direct", "strategy": "$strategy", "address_resolver": "dns_resolver", - "detour": "direct" + "detour": "DIRECT" }, { "tag": "dns_fakeip", "address": "fakeip" }, - { "tag": "dns_resolver", "address": "223.5.5.5", "detour": "direct" }, + { "tag": "dns_resolver", "address": "223.5.5.5", "detour": "DIRECT" }, { "tag": "block", "address": "rcode://success" }, - { "tag": "local", "address": "local", "detour": "direct" } + { "tag": "local", "address": "local", "detour": "DIRECT" } ], "rules": [ { "outbound": ["any"], "server": "dns_resolver" }, @@ -649,13 +649,14 @@ EOF } EOF #生成ntp.json - [ -z "$(grep '自动同步ntp时间' $CRASHDIR/task/afstart )" ] && cat > ${TMPDIR}/jsons/ntp.json </dev/null)" ] && cat > ${TMPDIR}/jsons/ntp.json < ${TMPDIR}/jsons/add_outbounds.json < ${TMPDIR}/jsons/experimental.json <&1|grep -o 'no-same-owner')" ] && tar_para='--no-same-owner' #tar命令兼容 [ -n "$(find --help 2>&1|grep -o size)" ] && find_para=' -size +2000' #find命令兼容 + tar_core(){ + mkdir -p ${TMPDIR}/core_tmp + tar -zxf ${1} ${tar_para} -C ${TMPDIR}/core_tmp/ + for file in $(find ${TMPDIR}/core_tmp $find_para 2>/dev/null);do + [ -f $file ] && [ -n "$(echo $file | sed 's#.*/##' | grep -iE '(CrashCore|sing|meta|mihomo|clash|pre)')" ] && mv -f $file ${TMPDIR}/${2} + done + rm -rf ${TMPDIR}/core_tmp + } [ -z "$(find ${TMPDIR}/CrashCore $find_para 2>/dev/null)" ] && [ -n "$(find ${BINDIR}/CrashCore $find_para 2>/dev/null)" ] && mv ${BINDIR}/CrashCore ${TMPDIR}/CrashCore [ -z "$(find ${TMPDIR}/CrashCore $find_para 2>/dev/null)" ] && [ -n "$(find ${BINDIR}/CrashCore.tar.gz $find_para 2>/dev/null)" ] && \ - tar -zxf "${BINDIR}/CrashCore.tar.gz" -C ${TMPDIR}/ &>/dev/null || tar -zxf "${BINDIR}/CrashCore.tar.gz" --no-same-owner -C ${TMPDIR}/ + tar_core ${BINDIR}/CrashCore.tar.gz CrashCore [ -z "$(find ${TMPDIR}/CrashCore $find_para 2>/dev/null)" ] && { logger "未找到【$crashcore】核心,正在下载!" 33 [ -z "$cpucore" ] && source ${CRASHDIR}/getdate.sh && getcpucore [ -z "$cpucore" ] && logger 找不到设备的CPU信息,请手动指定处理器架构类型! 31 && exit 1 get_bin ${TMPDIR}/CrashCore.tar.gz "bin/$crashcore/${target}-linux-${cpucore}.tar.gz" #校验内核 - mkdir -p ${TMPDIR}/core_tmp - tar -zxvf "${TMPDIR}/CrashCore.tar.gz" -C ${TMPDIR}/core_tmp/ &>/dev/null || tar -zxvf "${TMPDIR}/CrashCore.tar.gz" --no-same-owner -C ${TMPDIR}/core_tmp/ - for file in $(find ${TMPDIR}/core_tmp $find_para 2>/dev/null);do - [ -f $file ] && [ -n "$(echo $file | sed 's#.*/##' | grep -iE '(CrashCore|sing|meta|mihomo|clash|pre)')" ] && mv -f $file ${TMPDIR}/core_new - done - rm -rf ${TMPDIR}/core_tmp + tar_core ${TMPDIR}/CrashCore.tar.gz core_new chmod +x ${TMPDIR}/core_new if [ "$crashcore" = singbox -o "$crashcore" = singboxp ];then core_v=$(${TMPDIR}/core_new version 2>/dev/null | grep version | awk '{print $3}') diff --git a/scripts/task.sh b/scripts/task.sh index 9ecf892..b36ff65 100644 --- a/scripts/task.sh +++ b/scripts/task.sh @@ -7,6 +7,7 @@ CFG_PATH=${CRASHDIR}/configs/ShellCrash.cfg TMPDIR=/tmp/ShellCrash && [ ! -f ${TMPDIR} ] && mkdir -p ${TMPDIR} source $CFG_PATH &> /dev/null +[ -n "$(tar --help 2>&1|grep -o 'no-same-owner')" ] && tar_para='--no-same-owner' #tar命令兼容 setconfig(){ #参数1代表变量名,参数2代表变量值,参数3即文件路径 @@ -49,7 +50,7 @@ update_core(){ #自动更新内核 [ -n "$(pidof CrashCore)" ] && ${CRASHDIR}/start.sh stop #停止内核服务防止内存不足 [ -f ${TMPDIR}/core_new.tar.gz ] && { mkdir -p ${TMPDIR}/core_new - tar -zxf "${TMPDIR}/core_new.tar.gz" -C ${TMPDIR}/core_new/ &>/dev/null || tar -zxf "${TMPDIR}/core_new.tar.gz" --no-same-owner -C ${TMPDIR}/core_new/ + tar -zxf "${TMPDIR}/core_new.tar.gz" ${tar_para} -C ${TMPDIR}/core_new/ for file in $(find ${TMPDIR}/core_tmp 2>/dev/null);do [ -f $file ] && [ -n "$(echo $file | sed 's#.*/##' | grep -iE '(CrashCore|sing|meta|mihomo|clash|premium)')" ] && mv -f $file ${TMPDIR}/core_new done @@ -74,7 +75,7 @@ update_core(){ #自动更新内核 if [ -f ${TMPDIR}/core_new.tar.gz ];then mv -f ${TMPDIR}/core_new.tar.gz ${BINDIR}/CrashCore.tar.gz else - tar -zcf ${BINDIR}/CrashCore.tar.gz -C ${TMPDIR} CrashCore + tar -zcf ${BINDIR}/CrashCore.tar.gz ${tar_para} -C ${TMPDIR} CrashCore fi logger "任务【自动更新内核】下载完成,正在重启服务!" setconfig core_v $core_v @@ -98,7 +99,7 @@ update_shellcrash(){ #自动更新脚本 return 1 else #解压 - tar -zxf "${TMPDIR}/update.tar.gz" -C ${CRASHDIR}/ || tar -zxf "${TMPDIR}/update.tar.gz" --no-same-owner -C ${CRASHDIR}/ + tar -zxf "${TMPDIR}/update.tar.gz" ${tar_para} -C ${CRASHDIR}/ if [ $? -ne 0 ];then rm -rf ${TMPDIR}/update.tar.gz logger "任务【自动更新内核】出错-解压失败!"