Merge branch 'master' into dev

This commit is contained in:
juewuy
2026-10-24 18:23:26 +08:00
16 changed files with 57 additions and 30 deletions
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -1,4 +1,4 @@
meta_v=v1.19.17 meta_v=v1.19.17
singboxr_v=1.13.0-alpha.27 singboxr_v=1.13.0-alpha.27
versionsh=1.9.5beta3 versionsh=1.9.5beta4
GeoIP_v=20251205 GeoIP_v=20251205
+16 -5
View File
@@ -83,16 +83,27 @@ for file in start.sh starts/bfstart.sh starts/afstart.sh starts/fw_stop.sh start
done done
setconfig versionsh_l $version setconfig versionsh_l $version
#生成用于执行启动服务的变量文件 #生成用于执行启动服务的变量文件
[ ! -f "$CRASHDIR"/configs/command.env ] && { DIRECTORIES_FILE="$CRASHDIR"/configs/directories.env
echo 'TMPDIR=/tmp/ShellCrash' > "$CRASHDIR"/configs/command.env COMMAND_FILE="$CRASHDIR"/configs/command.env
echo "BINDIR=$CRASHDIR" >> "$CRASHDIR"/configs/command.env if [ ! -f "$DIRECTORIES_FILE" ]; then
} #迁移旧版中与启动命令混放的目录变量
if [ -f "$COMMAND_FILE" ]; then
. "$COMMAND_FILE"
fi
[ -z "$TMPDIR" ] && TMPDIR=/tmp/ShellCrash
[ -z "$BINDIR" ] && BINDIR=$CRASHDIR
printf 'TMPDIR=%s\nBINDIR=%s\n' "$TMPDIR" "$BINDIR" > "$DIRECTORIES_FILE"
[ -f "$COMMAND_FILE" ] && sed -i '/^TMPDIR=.*/d; /^BINDIR=.*/d' "$COMMAND_FILE"
else
. "$DIRECTORIES_FILE"
fi
[ -f "$COMMAND_FILE" ] || : > "$COMMAND_FILE"
if [ -n "$(grep 'crashcore=singbox' "$CFG_PATH")" ]; then if [ -n "$(grep 'crashcore=singbox' "$CFG_PATH")" ]; then
COMMAND='"$TMPDIR/CrashCore run -D $BINDIR -C $TMPDIR/jsons"' COMMAND='"$TMPDIR/CrashCore run -D $BINDIR -C $TMPDIR/jsons"'
else else
COMMAND='"$TMPDIR/CrashCore -d $BINDIR -f $TMPDIR/config.yaml"' COMMAND='"$TMPDIR/CrashCore -d $BINDIR -f $TMPDIR/config.yaml"'
fi fi
setconfig COMMAND "$COMMAND" "$CRASHDIR"/configs/command.env setconfig COMMAND "$COMMAND" "$COMMAND_FILE"
#设置防火墙执行模式 #设置防火墙执行模式
grep -q 'firewall_mod' "$CRASHDIR/configs/ShellClash.cfg" 2>/dev/null || { grep -q 'firewall_mod' "$CRASHDIR/configs/ShellClash.cfg" 2>/dev/null || {
firewall_mod=iptables firewall_mod=iptables
+1
View File
@@ -2,6 +2,7 @@
# 检查配置文件 # 检查配置文件
[ -z "$TASKCFGDIR" ] && TASKCFGDIR="$CRASHDIR"/configs/task [ -z "$TASKCFGDIR" ] && TASKCFGDIR="$CRASHDIR"/configs/task
[ -f "$CRASHDIR"/configs/ShellCrash.cfg ] || . "$CRASHDIR"/init.sh >/dev/null 2>&1 [ -f "$CRASHDIR"/configs/ShellCrash.cfg ] || . "$CRASHDIR"/init.sh >/dev/null 2>&1
[ -f "$CRASHDIR"/configs/directories.env ] && . "$CRASHDIR"/configs/directories.env >/dev/null 2>&1
. "$CRASHDIR"/configs/command.env >/dev/null 2>&1 . "$CRASHDIR"/configs/command.env >/dev/null 2>&1
. "$CRASHDIR"/configs/ShellCrash.cfg . "$CRASHDIR"/configs/ShellCrash.cfg
+15 -10
View File
@@ -1,10 +1,15 @@
i=1 if [ "$network_check" = "OFF" ]; then
while [ -z "$test" -a "$i" -lt 30 ]; do #复用网络检查开关:禁用自启网络检查时,也跳过启动后的面板端口校验
sleep 1 test=skip
if curl --version >/dev/null 2>&1; then else
test=$(curl -s -H "Authorization: Bearer $secret" http://127.0.0.1:${db_port}/proxies | grep -o proxies) i=1
else while [ -z "$test" ] && [ "$i" -lt 30 ]; do
test=$(wget -q --header="Authorization: Bearer $secret" -O - http://127.0.0.1:${db_port}/proxies | grep -o proxies) sleep 1
fi if curl --version >/dev/null 2>&1; then
i=$((i + 1)) test=$(curl -s -H "Authorization: Bearer $secret" http://127.0.0.1:${db_port}/proxies | grep -o proxies)
done else
test=$(wget -q --header="Authorization: Bearer $secret" -O - http://127.0.0.1:${db_port}/proxies | grep -o proxies)
fi
i=$((i + 1))
done
fi
+5 -5
View File
@@ -131,7 +131,7 @@ setboot() {
msg_alert "\033[33m$SETBOOT_MINI_DISABLED\033[0m" msg_alert "\033[33m$SETBOOT_MINI_DISABLED\033[0m"
fi fi
fi fi
sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/command.env sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/directories.env
sleep 1 sleep 1
;; ;;
5) 5)
@@ -155,8 +155,8 @@ setboot() {
set_usb_dir() { set_usb_dir() {
while true; do while true; do
comp_box "$SETBOOT_SELECT_INSTALL_DIR" comp_box "$SETBOOT_SELECT_INSTALL_DIR"
du -hL /mnt | du -hL -d 2 /mnt |
awk '{print NR") "$2" ($SETBOOT_SPACE_USED$1")"}' | awk '{print NR") "$2" ($SETBOOT_SPACE_USED"$1")"}' |
while IFS= read -r line; do while IFS= read -r line; do
content_line "$line" content_line "$line"
done done
@@ -164,7 +164,7 @@ setboot() {
content_line "0) $COMMON_BACK" content_line "0) $COMMON_BACK"
separator_line "=" separator_line "="
read -r -p "$COMMON_INPUT> " num read -r -p "$COMMON_INPUT> " num
BINDIR=$(du -hL /mnt | awk '{print $2}' | sed -n "$num"p) BINDIR=$(du -hL -d 2 /mnt | awk '{print $2}' | sed -n "$num"p)
if [ "$num" = 0 ]; then if [ "$num" = 0 ]; then
return 1 return 1
elif [ -z "$BINDIR" ]; then elif [ -z "$BINDIR" ]; then
@@ -203,7 +203,7 @@ setboot() {
continue continue
;; ;;
esac esac
sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/command.env sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/directories.env
break break
done done
;; ;;
+2 -2
View File
@@ -229,8 +229,8 @@ task_type() {
[ -n "$cron_time" ] && set_service running "$task_id" "$TASK5_RUNNING_PREFIX$time_des$task_name" "$cron_time" [ -n "$cron_time" ] && set_service running "$task_id" "$TASK5_RUNNING_PREFIX$time_des$task_name" "$cron_time"
;; ;;
8) 8)
comp_box "$TASK5_AFFW_HINT" comp_box "$TASK5_AFFW_HINT" \
"$TASK5_CONFIRM_CONTINUE" "$TASK5_CONFIRM_CONTINUE"
btm_box "1) $TASK5_YES" \ btm_box "1) $TASK5_YES" \
"0) $TASK5_NO" "0) $TASK5_NO"
read -r -p "$COMMON_INPUT> " res read -r -p "$COMMON_INPUT> " res
+1 -1
View File
@@ -7,7 +7,7 @@ running_status(){
if [ -n "$start_time" ]; then if [ -n "$start_time" ]; then
time=$(($(date +%s) - start_time)) time=$(($(date +%s) - start_time))
day=$((time / 86400)) day=$((time / 86400))
[ "$day" = "0" ] && day='' || day="$dayD" [ "$day" = "0" ] && day='' || day="${day}D"
time=$(date -u -d @${time} +%H:%M:%S) time=$(date -u -d @${time} +%H:%M:%S)
fi fi
} }
+1 -1
View File
@@ -135,7 +135,7 @@ hotupdate() { #热更新订阅
. "$CRASHDIR"/starts/core_config.sh && get_core_config && . "$CRASHDIR"/starts/core_config.sh && get_core_config &&
. "$CRASHDIR"/starts/check_core.sh && check_core && . "$CRASHDIR"/starts/check_core.sh && check_core &&
. "$CRASHDIR"/starts/"$target"_modify.sh && modify_"$format" && rm -rf "$TMPDIR"/CrashCore && . "$CRASHDIR"/starts/"$target"_modify.sh && modify_"$format" && rm -rf "$TMPDIR"/CrashCore &&
. "$CRASHDIR"/libs/web_restore.sh && put_save "http://127.0.0.1:$db_port/configs" "{\"path\":\"$TMPDIR/config.$format\"}" . "$CRASHDIR"/libs/web_restore.sh && put_save "http://127.0.0.1:$db_port/configs" "{\"path\":\"$CRASHDIR/config.$format\"}"
exit $? exit $?
} }
+1 -1
View File
@@ -124,7 +124,7 @@ userguide() {
read -r -p "$COMMON_INPUT_R" res read -r -p "$COMMON_INPUT_R" res
[ "$res" = 1 ] && { [ "$res" = 1 ] && {
BINDIR=/tmp/ShellCrash BINDIR=/tmp/ShellCrash
sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/command.env sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/directories.env
} }
fi fi
+1
View File
@@ -1,6 +1,7 @@
. "$CRASHDIR"/libs/check_target.sh . "$CRASHDIR"/libs/check_target.sh
. "$CRASHDIR"/libs/core_tools.sh . "$CRASHDIR"/libs/core_tools.sh
. "$CRASHDIR"/configs/directories.env
. "$CRASHDIR"/configs/command.env . "$CRASHDIR"/configs/command.env
check_core() { #检查及下载内核文件 check_core() { #检查及下载内核文件
+3
View File
@@ -4,6 +4,9 @@
check_config() { #检查clash配置文件 check_config() { #检查clash配置文件
#检测节点或providers #检测节点或providers
sed -n "/^proxies:/,/^[a-z]/ { /^[a-z]/d; p; }" "$core_config_new" >"$TMPDIR"/proxies.yaml sed -n "/^proxies:/,/^[a-z]/ { /^[a-z]/d; p; }" "$core_config_new" >"$TMPDIR"/proxies.yaml
if [ ! -s "$TMPDIR"/proxies.yaml ]; then
sed -n 's/^proxies:[[:space:]]*\[\(.*\)\][[:space:]]*$/ - \1/p' "$core_config_new" >"$TMPDIR"/proxies.yaml
fi
if ! grep -Eq 'server:|server":|server'\'':' "$TMPDIR"/proxies.yaml && ! grep -q 'proxy-providers:' "$core_config_new"; then if ! grep -Eq 'server:|server":|server'\'':' "$TMPDIR"/proxies.yaml && ! grep -q 'proxy-providers:' "$core_config_new"; then
echo "-----------------------------------------------" echo "-----------------------------------------------"
logger "获取到了配置文件【$core_config_new】,但似乎并不包含正确的节点信息!" 31 logger "获取到了配置文件【$core_config_new】,但似乎并不包含正确的节点信息!" 31
+4
View File
@@ -136,6 +136,10 @@ split_and_customize_yaml_parts() {
yaml_char='proxies proxy-groups proxy-providers rules rule-providers sub-rules listeners' yaml_char='proxies proxy-groups proxy-providers rules rule-providers sub-rules listeners'
for char in $yaml_char; do for char in $yaml_char; do
sed -n "/^$char:/,/^[a-z]/ { /^[a-z]/d; p; }" $core_config >"$TMPDIR"/${char}.yaml sed -n "/^$char:/,/^[a-z]/ { /^[a-z]/d; p; }" $core_config >"$TMPDIR"/${char}.yaml
#支持 Clash 常见的单行 flow-style 节点列表,例如 proxies: [{name: ..., type: ...}]
if [ "$char" = proxies ] && [ ! -s "$TMPDIR"/proxies.yaml ]; then
sed -n 's/^proxies:[[:space:]]*\[\(.*\)\][[:space:]]*$/ - \1/p' "$core_config" >"$TMPDIR"/proxies.yaml
fi
done done
#跳过本地tls证书验证 #跳过本地tls证书验证
[ "$skip_cert" != "OFF" ] && sed -i 's/skip-cert-verify: false/skip-cert-verify: true/' "$TMPDIR"/proxies.yaml || [ "$skip_cert" != "OFF" ] && sed -i 's/skip-cert-verify: false/skip-cert-verify: true/' "$TMPDIR"/proxies.yaml ||
+2 -1
View File
@@ -6,7 +6,8 @@ description="Custom proxy service for ShellCrash"
#获取目录 #获取目录
CRASHDIR=$(cat /etc/profile | grep CRASHDIR | awk -F "\"" '{print $2}') CRASHDIR=$(cat /etc/profile | grep CRASHDIR | awk -F "\"" '{print $2}')
[ -z "$CRASHDIR" ] && CRASHDIR=$(cat ~/.bashrc | grep CRASHDIR | awk -F "\"" '{print $2}') [ -z "$CRASHDIR" ] && CRASHDIR=$(cat ~/.bashrc | grep CRASHDIR | awk -F "\"" '{print $2}')
. ${CRASHDIR}/configs/command.env #加载启动命令和启动目录 . "${CRASHDIR}"/configs/directories.env #加载启动目录
. "${CRASHDIR}"/configs/command.env #加载启动命令
# PID 文件 # PID 文件
pidfile="/run/shellcrash.pid" pidfile="/run/shellcrash.pid"
+2 -1
View File
@@ -8,7 +8,8 @@ USE_PROCD=1
#获取目录 #获取目录
CRASHDIR=$(cat /etc/profile | grep CRASHDIR | awk -F "\"" '{print $2}') CRASHDIR=$(cat /etc/profile | grep CRASHDIR | awk -F "\"" '{print $2}')
[ -z "$CRASHDIR" ] && CRASHDIR=$(cat ~/.bashrc | grep CRASHDIR | awk -F "\"" '{print $2}') [ -z "$CRASHDIR" ] && CRASHDIR=$(cat ~/.bashrc | grep CRASHDIR | awk -F "\"" '{print $2}')
. "$CRASHDIR"/configs/command.env #加载启动命令和启动目录 . "$CRASHDIR"/configs/directories.env #加载启动目录
. "$CRASHDIR"/configs/command.env #加载启动命令
start_service() { start_service() {
if [ -n "$(cat $CRASHDIR/configs/ShellCrash.cfg | grep 'firewall_area=5')" ]; then if [ -n "$(cat $CRASHDIR/configs/ShellCrash.cfg | grep 'firewall_area=5')" ]; then
+1 -1
View File
@@ -1 +1 @@
1.9.5beta3 1.9.5beta4