~优化文件结构,准备将bin文件放到单独分支

This commit is contained in:
juewuy
2025-12-09 18:48:22 +08:00
parent 82e2da631f
commit 8c9752faa4
6 changed files with 42 additions and 37 deletions

View File

@@ -249,7 +249,7 @@ if [ -n "$profile" ]; then
echo "alias crash=\"$shtype $CRASHDIR/menu.sh\"" >>$profile #设置快捷命令环境变量
sed -i '/export CRASHDIR=*/'d $profile
echo "export CRASHDIR=\"$CRASHDIR\"" >>$profile #设置路径环境变量
source $profile >/dev/null 2>&1 || echo 运行错误请使用bash而不是dash运行安装命令
. $profile >/dev/null 2>&1 || echo 运行错误请使用bash而不是dash运行安装命令
#适配zsh环境变量
zsh --version >/dev/null 2>&1 && [ -z "$(cat ~/.zshrc 2>/dev/null | grep CRASHDIR)" ] && {
sed -i '/alias crash=*/'d ~/.zshrc 2>/dev/null

View File

@@ -9,8 +9,8 @@ CFG_PATH=${CRASHDIR}/configs/ShellCrash.cfg
YAMLSDIR=${CRASHDIR}/yamls
JSONSDIR=${CRASHDIR}/jsons
#加载执行目录,失败则初始化
source ${CRASHDIR}/configs/command.env 2>/dev/null
[ -z "$BINDIR" -o -z "$TMPDIR" -o -z "$COMMAND" ] && source ${CRASHDIR}/init.sh >/dev/null 2>&1
. ${CRASHDIR}/configs/command.env 2>/dev/null
[ -z "$BINDIR" -o -z "$TMPDIR" -o -z "$COMMAND" ] && . ${CRASHDIR}/init.sh >/dev/null 2>&1
[ ! -f ${TMPDIR} ] && mkdir -p ${TMPDIR}
[ -n "$(tar --help 2>&1 | grep -o 'no-same-owner')" ] && tar_para='--no-same-owner' #tar命令兼容
@@ -29,9 +29,9 @@ ckstatus() {
#检查/读取脚本配置文件
if [ -f $CFG_PATH ]; then
[ -n "$(awk 'a[$0]++' $CFG_PATH)" ] && awk '!a[$0]++' $CFG_PATH >$CFG_PATH #检查重复行并去除
source $CFG_PATH 2>/dev/null
. $CFG_PATH 2>/dev/null
else
source ${CRASHDIR}/init.sh >/dev/null 2>&1
. ${CRASHDIR}/init.sh >/dev/null 2>&1
fi
versionsh=$(cat ${CRASHDIR}/init.sh | grep -E ^version= | head -n 1 | sed 's/version=//')
[ -n "$versionsh" ] && versionsh_l=$versionsh
@@ -112,7 +112,7 @@ ckstatus() {
#检查新手引导
if [ -z "$userguide" ]; then
setconfig userguide 1
source ${CRASHDIR}/webget.sh && userguide
. ${CRASHDIR}/webget.sh && userguide
fi
#检查执行权限
[ ! -x ${CRASHDIR}/start.sh ] && chmod +x ${CRASHDIR}/start.sh
@@ -126,7 +126,7 @@ ckstatus() {
core_v=$(/tmp/$file -v 2>/dev/null | head -n 1 | sed 's/ linux.*//;s/.* //')
[ -z "$core_v" ] && core_v=$(/tmp/$file version 2>/dev/null | grep -Eo 'version .*' | sed 's/version //')
if [ -n "$core_v" ]; then
source ${CRASHDIR}/webget.sh && setcoretype &&
. ${CRASHDIR}/webget.sh && setcoretype &&
mv -f /tmp/$file ${TMPDIR}/CrashCore &&
tar -zcf ${BINDIR}/CrashCore.tar.gz ${tar_para} -C ${TMPDIR} CrashCore &&
echo -e "\033[32m内核加载完成\033[0m " &&
@@ -193,7 +193,7 @@ start_core() {
echo -e "\033[33m没有找到${crashcore}配置文件尝试生成providers配置文件\033[0m"
[ "$crashcore" = singboxr ] && coretype=singbox
[ "$crashcore" = meta -o "$crashcore" = clashpre ] && coretype=clash
source ${CRASHDIR}/webget.sh && gen_${coretype}_providers
. ${CRASHDIR}/webget.sh && gen_${coretype}_providers
elif [ -s $core_config -o -n "$Url" -o -n "$Https" ]; then
${CRASHDIR}/start.sh start
#设置循环检测以判定服务启动是否成功
@@ -210,7 +210,7 @@ start_core() {
[ -n "$test" -o -n "$(pidof CrashCore)" ] && startover
else
echo -e "\033[31m没有找到${crashcore}配置文件,请先导入配置文件!\033[0m"
source ${CRASHDIR}/webget.sh && set_core_config
. ${CRASHDIR}/webget.sh && set_core_config
fi
}
start_service() {
@@ -546,7 +546,7 @@ log_pusher() { #日志菜单
esac
}
setport() { #端口设置
source $CFG_PATH >/dev/null
. $CFG_PATH >/dev/null
[ -z "$secret" ] && secret=未设置
[ -z "$table" ] && table=100
[ -z "$authentication" ] && auth=未设置 || auth=******
@@ -968,7 +968,7 @@ checkport() { #自动检查端口冲突
echo -e "\033[0m-----------------------------------------------"
echo -e "\033[36m请修改默认端口配置\033[0m"
setport
source $CFG_PATH >/dev/null
. $CFG_PATH >/dev/null
checkport
fi
done
@@ -1883,7 +1883,7 @@ advanced_set() { #进阶设置
fi
elif [ "$num" = 3 ]; then
mv -f $CFG_PATH $CFG_PATH.bak
source ${CRASHDIR}/init.sh >/dev/null
. ${CRASHDIR}/init.sh >/dev/null
echo -e "\033[32m脚本设置已重置(旧文件已备份!)\033[0m"
fi
echo -e "\033[33m请重新启动脚本\033[0m"
@@ -2068,10 +2068,10 @@ tools() {
i=
elif [ "$num" = 1 ]; then
source ${CRASHDIR}/webget.sh && testcommand
. ${CRASHDIR}/webget.sh && testcommand
elif [ "$num" = 2 ]; then
source ${CRASHDIR}/webget.sh && userguide
. ${CRASHDIR}/webget.sh && userguide
elif [ "$num" = 3 ]; then
log_pusher
@@ -2203,11 +2203,11 @@ main_menu() {
main_menu
elif [ "$num" = 5 ]; then
source ${CRASHDIR}/task/task.sh && task_menu
. ${CRASHDIR}/task/task.sh && task_menu
main_menu
elif [ "$num" = 6 ]; then
source ${CRASHDIR}/webget.sh && set_core_config
. ${CRASHDIR}/webget.sh && set_core_config
main_menu
elif [ "$num" = 7 ]; then
@@ -2225,7 +2225,7 @@ main_menu() {
elif [ "$num" = 9 ]; then
checkcfg=$(cat $CFG_PATH)
source ${CRASHDIR}/webget.sh && update
. ${CRASHDIR}/webget.sh && update
if [ -n "$PID" ]; then
checkcfg_new=$(cat $CFG_PATH)
[ "$checkcfg" != "$checkcfg_new" ] && checkrestart
@@ -2244,7 +2244,7 @@ main_menu() {
cd $(dirname $0)
pwd
)
source ${CRASHDIR}/init.sh
. ${CRASHDIR}/init.sh
sleep 1
echo 请重启SSH窗口以完成初始化
exit
@@ -2280,7 +2280,7 @@ case "$1" in
${CRASHDIR}/start.sh $2 $3 $4 $5 $6
;;
-i)
source ${CRASHDIR}/init.sh
. ${CRASHDIR}/init.sh
;;
-st)
shtype=sh && [ -n "$(ls -l /bin/sh | grep -o dash)" ] && shtype=bash

View File

@@ -210,6 +210,7 @@ get_bin() { #专用于项目内部文件的下载
. "$CRASHDIR"/configs/ShellCrash.cfg >/dev/null
[ -z "$update_url" ] && update_url=https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@master
if [ -n "$url_id" ]; then
echo "$2" | grep -q '^/bin' && release_type=update #/bin文件改为在update分支下载
[ -z "$release_type" ] && release_type=master
if [ "$url_id" = 101 -o "$url_id" = 104 ]; then
url="$(grep "$url_id" "$CRASHDIR"/configs/servers.list | awk '{print $3}')@$release_type/$2" #jsdelivr特殊处理
@@ -1032,7 +1033,7 @@ start_ipt_route() { #iptables-route通用工具
[ "$3" = 'PREROUTING' ] && [ "$macfilter_type" != "白名单" ] && {
[ -s "$CRASHDIR"/configs/mac ] &&
for mac in $(cat "$CRASHDIR"/configs/mac); do
$1 $w -t $2 -A $4 -m mac --mac-source $mac -j RETURN
$1 $w -t $2 -A $4 -m mac --mac-. $mac -j RETURN
done
[ -s "$CRASHDIR"/configs/ip_filter ] && [ "$1" = 'iptables' ] &&
for ip in $(cat "$CRASHDIR"/configs/ip_filter); do
@@ -1044,7 +1045,7 @@ start_ipt_route() { #iptables-route通用工具
if [ "$3" = 'PREROUTING' ] && [ "$4" != 'shellcrash_vm' ] && [ "$macfilter_type" = "白名单" ] && [ -n "$(cat $CRASHDIR/configs/mac $CRASHDIR/configs/ip_filter 2>/dev/null)" ]; then
[ -s "$CRASHDIR"/configs/mac ] &&
for mac in $(cat "$CRASHDIR"/configs/mac); do
$1 $w -t $2 -A $4 -p $5 -m mac --mac-source $mac -j $JUMP
$1 $w -t $2 -A $4 -p $5 -m mac --mac-. $mac -j $JUMP
done
[ -s "$CRASHDIR"/configs/ip_filter ] && [ "$1" = 'iptables' ] &&
for ip in $(cat "$CRASHDIR"/configs/ip_filter); do
@@ -1090,7 +1091,7 @@ start_ipt_dns() { #iptables-dns通用工具
[ "$2" = 'PREROUTING' ] && [ "$macfilter_type" != "白名单" ] && {
[ -s "$CRASHDIR"/configs/mac ] &&
for mac in $(cat "$CRASHDIR"/configs/mac); do
$1 $w -t nat -A $3 -m mac --mac-source $mac -j RETURN
$1 $w -t nat -A $3 -m mac --mac-. $mac -j RETURN
done
[ -s "$CRASHDIR"/configs/ip_filter ] && [ "$1" = 'iptables' ] &&
for ip in $(cat "$CRASHDIR"/configs/ip_filter); do
@@ -1100,8 +1101,8 @@ start_ipt_dns() { #iptables-dns通用工具
if [ "$2" = 'PREROUTING' ] && [ "$3" != 'shellcrash_vm_dns' ] && [ "$macfilter_type" = "白名单" ] && [ -n "$(cat $CRASHDIR/configs/mac $CRASHDIR/configs/ip_filter 2>/dev/null)" ]; then
[ -s "$CRASHDIR"/configs/mac ] &&
for mac in $(cat "$CRASHDIR"/configs/mac); do
$1 $w -t nat -A $3 -p tcp -m mac --mac-source $mac -j REDIRECT --to-ports $dns_port
$1 $w -t nat -A $3 -p udp -m mac --mac-source $mac -j REDIRECT --to-ports $dns_port
$1 $w -t nat -A $3 -p tcp -m mac --mac-. $mac -j REDIRECT --to-ports $dns_port
$1 $w -t nat -A $3 -p udp -m mac --mac-. $mac -j REDIRECT --to-ports $dns_port
done
[ -s "$CRASHDIR"/configs/ip_filter ] && [ "$1" = 'iptables' ] &&
for ip in $(cat "$CRASHDIR"/configs/ip_filter); do

View File

@@ -6,7 +6,7 @@
[ -z "$BINDIR" ] && BINDIR=${CRASHDIR}
CFG_PATH=${CRASHDIR}/configs/ShellCrash.cfg
TMPDIR=/tmp/ShellCrash && [ ! -f ${TMPDIR} ] && mkdir -p ${TMPDIR}
source $CFG_PATH >/dev/null 2>&1
. $CFG_PATH >/dev/null 2>&1
[ -n "$(tar --help 2>&1|grep -o 'no-same-owner')" ] && tar_para='--no-same-owner' #tar命令兼容
setconfig(){
@@ -21,7 +21,7 @@ ckcmd(){ #检查命令是否存在
#任务命令
check_update(){ #检查更新工具
${CRASHDIR}/start.sh get_bin ${TMPDIR}/crashversion "bin/version" echooff
[ "$?" = "0" ] && source ${TMPDIR}/crashversion 2>/dev/null
[ "$?" = "0" ] && . ${TMPDIR}/crashversion 2>/dev/null
rm -rf ${TMPDIR}/crashversion
}
update_core(){ #自动更新内核
@@ -109,7 +109,7 @@ update_scripts(){ #自动更新脚本
${CRASHDIR}/start.sh start
return 1
else
source ${CRASHDIR}/init.sh >/dev/null
. ${CRASHDIR}/init.sh >/dev/null
${CRASHDIR}/start.sh start
return 0
fi

View File

@@ -1097,7 +1097,7 @@ set_core_config(){ #配置文件功能
exit
;;
5)
source ${CRASHDIR}/task/task.sh && task_menu
. ${CRASHDIR}/task/task.sh && task_menu
set_core_config
;;
6)
@@ -1200,7 +1200,7 @@ getscripts(){ #更新脚本文件
echo -e "\033[33m文件解压失败\033[0m"
error_down
else
source ${CRASHDIR}/init.sh >/dev/null
. ${CRASHDIR}/init.sh >/dev/null
echo -e "\033[32m脚本更新成功\033[0m"
fi
fi
@@ -1305,7 +1305,7 @@ switch_core(){ #clash与singbox内核切换
else
COMMAND='"$TMPDIR/CrashCore -d $BINDIR -f $TMPDIR/config.yaml"'
fi
setconfig COMMAND "$COMMAND" ${CRASHDIR}/configs/command.env && source ${CRASHDIR}/configs/command.env
setconfig COMMAND "$COMMAND" ${CRASHDIR}/configs/command.env && . ${CRASHDIR}/configs/command.env
}
getcore(){ #下载内核文件
[ -z "$crashcore" ] && crashcore=meta
@@ -1709,7 +1709,7 @@ setcustgeo(){ #下载自定义数据库文件
esac
}
setgeo(){ #数据库选择菜单
source $CFG_PATH > /dev/null
. $CFG_PATH > /dev/null
[ -n "$cn_mini_v" ] && geo_type_des=精简版 || geo_type_des=全球版
echo -----------------------------------------------
echo -e "\033[36m请选择需要更新的Geo/CN数据库文件\033[0m"
@@ -2136,10 +2136,13 @@ setserver(){
}
#检查更新
checkupdate(){
${CRASHDIR}/start.sh get_bin ${TMPDIR}/version_new bin/version echooff
[ "$?" = "0" ] && version_new=$(cat ${TMPDIR}/version_new | grep -oE 'versionsh=.*' | awk -F'=' '{ print $2 }')
if [ -n "$version_new" ];then
source ${TMPDIR}/version_new 2>/dev/null
${CRASHDIR}/start.sh get_bin ${TMPDIR}/version_new version echooff
[ "$?" = "0" ] && {
version_new=$(cat ${TMPDIR}/version_new)
${CRASHDIR}/start.sh get_bin ${TMPDIR}/version_new bin/version echooff
}
if [ "$?" = "0" ];then
. ${TMPDIR}/version_new 2>/dev/null
else
echo -e "\033[31m检查更新失败请尝试切换其他安装源\033[0m"
setserver
@@ -2211,7 +2214,7 @@ update(){
setserver
update
elif [ "$num" = 8 ]; then
source ${CRASHDIR}/task/task.sh && task_add
. ${CRASHDIR}/task/task.sh && task_add
update
elif [ "$num" = 9 ]; then
@@ -2375,7 +2378,7 @@ userguide(){
fi
fi
#启用推荐的自动任务配置
source ${CRASHDIR}/task/task.sh && task_recom
. ${CRASHDIR}/task/task.sh && task_recom
#小米设备软固化
if [ "$systype" = "mi_snapshot" ];then
echo -----------------------------------------------

1
version Normal file
View File

@@ -0,0 +1 @@
1.9.3beta3