v1.9.0pre3

~debug功能增加报错错误日志到闪存的选项
~屏蔽华硕设备启动时的若干无意义警告
~修复虚拟机设备使用singbox内核时无法正常使用本机代理功能的问题
This commit is contained in:
juewuy
2024-02-06 15:12:25 +08:00
parent 8745df6d0d
commit 94a90e78b6
8 changed files with 32 additions and 19 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -5,4 +5,4 @@ meta_v=v1.18.0
singboxp_v=1.8.5-4c3391c1 singboxp_v=1.8.5-4c3391c1
singbox_v=1.8.5 singbox_v=1.8.5
GeoIP_v=20240203 GeoIP_v=20240203
versionsh=1.9.0pre2 versionsh=1.9.0pre3

View File

@@ -1961,6 +1961,7 @@ debug(){
echo -e " 3 后台运行完整启动流程,并配置防火墙劫持,日志等级:\033[31merror\033[0m" echo -e " 3 后台运行完整启动流程,并配置防火墙劫持,日志等级:\033[31merror\033[0m"
echo -e " 4 后台运行完整启动流程,并配置防火墙劫持,日志等级:\033[32minfo\033[0m" echo -e " 4 后台运行完整启动流程,并配置防火墙劫持,日志等级:\033[32minfo\033[0m"
echo -e " 5 后台运行完整启动流程,并配置防火墙劫持,日志等级:\033[33mdebug\033[0m" echo -e " 5 后台运行完整启动流程,并配置防火墙劫持,日志等级:\033[33mdebug\033[0m"
echo -e " 6 后台运行完整启动流程,并配置防火墙劫持,且将错误日志打印到闪存:\033[32m$CRASHDIR/debug.log\033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
echo -e " 8 后台运行完整启动流程,输出执行错误并查找上下文,之后关闭进程" echo -e " 8 后台运行完整启动流程,输出执行错误并查找上下文,之后关闭进程"
[ -s $TMPDIR/jsons/inbounds.json ] && echo -e " 9 将\033[32m$config_tmp\033[0m下json文件合并为$TMPDIR/debug.json" [ -s $TMPDIR/jsons/inbounds.json ] && echo -e " 9 将\033[32m$config_tmp\033[0m下json文件合并为$TMPDIR/debug.json"
@@ -2001,6 +2002,12 @@ debug(){
$CRASHDIR/start.sh debug debug $CRASHDIR/start.sh debug debug
main_menu main_menu
;; ;;
6)
echo -e "频繁写入闪存会导致闪存寿命降低如非遇到会导致设备死机或重启的bug请勿使用此功能"
read -p "是否继续?(1/0) > " res
[ "$res" = 1 ] && $CRASHDIR/start.sh debug debug flash
main_menu
;;
8) 8)
$0 -d $0 -d
main_menu main_menu

View File

@@ -1,7 +1,7 @@
#!/bin/sh #!/bin/sh
# Copyright (C) Juewuy # Copyright (C) Juewuy
version=1.9.0pre2 version=1.9.0pre3
setdir(){ setdir(){
dir_avail(){ dir_avail(){

View File

@@ -85,7 +85,7 @@ ckstatus(){
checkport checkport
fi fi
[ "$crashcore" = singbox -o "$crashcore" = singboxp ] && corename=SingBox || corename=Clash [ "$crashcore" = singbox -o "$crashcore" = singboxp ] && corename=SingBox || corename=Clash
[ -f ${TMPDIR}/debug.log -a -n "$PID" ] && auto="\033[33m并处于debug状态\033[0m" [ -f ${TMPDIR}/debug.log -o -f ${CRASHDIR}/debug.log -a -n "$PID" ] && auto="\033[33m并处于debug状态\033[0m"
#输出状态 #输出状态
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[30;46m欢迎使用ShellCrash\033[0m 版本:$versionsh_l" echo -e "\033[30;46m欢迎使用ShellCrash\033[0m 版本:$versionsh_l"
@@ -769,7 +769,7 @@ setfirewall(){ #防火墙设置
} }
checkport(){ #自动检查端口冲突 checkport(){ #自动检查端口冲突
for portx in $dns_port $mix_port $redir_port $db_port ;do for portx in $dns_port $mix_port $redir_port $db_port ;do
if [ -n "$(netstat -ntul 2>&1 |grep '\:$portx ')" ];then if [ -n "$(netstat -ntul 2>&1 |grep ':$portx ')" ];then
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "检测到端口【$portx】被以下进程占用!内核可能无法正常启动!\033[33m" echo -e "检测到端口【$portx】被以下进程占用!内核可能无法正常启动!\033[33m"
echo $(netstat -ntul | grep :$portx | head -n 1) echo $(netstat -ntul | grep :$portx | head -n 1)

View File

@@ -181,7 +181,7 @@ mark_time(){ #时间戳
getlanip(){ #获取局域网host地址 getlanip(){ #获取局域网host地址
i=1 i=1
while [ "$i" -le "20" ];do while [ "$i" -le "20" ];do
host_ipv4=$(ip a 2>&1 | grep -w 'inet' | grep 'global' | grep 'br' | grep -Ev 'iot' | grep -E ' 1(92|0|72)\.' | sed 's/.*inet.//g' | sed 's/br.*$//g' | sed 's/metric.*$//g' ) #ipv4局域网网段 host_ipv4=$(ip a 2>&1 | grep -w 'inet' | grep 'global' | grep 'br' | grep -Ev 'iot|peer' | grep -E ' 1(92|0|72)\.' | sed 's/.*inet.//g' | sed 's/br.*$//g' | sed 's/metric.*$//g' ) #ipv4局域网网段
[ "$ipv6_redir" = "已开启" ] && host_ipv6=$(ip a 2>&1 | grep -w 'inet6' | grep -E 'global' | sed 's/.*inet6.//g' | sed 's/scope.*$//g' ) #ipv6公网地址段 [ "$ipv6_redir" = "已开启" ] && host_ipv6=$(ip a 2>&1 | grep -w 'inet6' | grep -E 'global' | sed 's/.*inet6.//g' | sed 's/scope.*$//g' ) #ipv6公网地址段
[ -f ${TMPDIR}/ShellCrash.log ] && break [ -f ${TMPDIR}/ShellCrash.log ] && break
[ -n "$host_ipv4" -a "$ipv6_redir" != "已开启" ] && break [ -n "$host_ipv4" -a "$ipv6_redir" != "已开启" ] && break
@@ -727,7 +727,7 @@ EOF
EOF EOF
fi fi
#生成add_outbounds.json #生成add_outbounds.json
[ -z "$(cat ${CRASHDIR}/jsons/*.json | grep -oEi '\"tag\": *\"DIRECT\"')" ] && cat > ${TMPDIR}/jsons/add_outbounds.json <<EOF [ -z "$(cat ${CRASHDIR}/jsons/*.json | grep -oEi '"tag": *"DIRECT"')" ] && cat > ${TMPDIR}/jsons/add_outbounds.json <<EOF
{ {
"outbounds": [ "outbounds": [
{ "type": "direct", "tag": "DIRECT" } { "type": "direct", "tag": "DIRECT" }
@@ -1049,6 +1049,7 @@ start_output(){ #iptables本机代理
iptables -t nat -A OUTPUT -p tcp $ports -j shellcrash_out iptables -t nat -A OUTPUT -p tcp $ports -j shellcrash_out
#设置dns转发 #设置dns转发
[ "$dns_no" != "已禁用" ] && { [ "$dns_no" != "已禁用" ] && {
[ -z "$(grep 'nameserver 127.0.0.1' /etc/resolv.conf 2>/dev/null)" ] && echo 'nameserver 127.0.0.1' >> /etc/resolv.conf #修复部分虚拟机dns查询失败的问题
iptables -t nat -N shellcrash_dns_out iptables -t nat -N shellcrash_dns_out
iptables -t nat -A shellcrash_dns_out -m owner --gid-owner 453 -j RETURN #绕过本机dnsmasq iptables -t nat -A shellcrash_dns_out -m owner --gid-owner 453 -j RETURN #绕过本机dnsmasq
iptables -t nat -A shellcrash_dns_out -m owner --gid-owner 7890 -j RETURN iptables -t nat -A shellcrash_dns_out -m owner --gid-owner 7890 -j RETURN
@@ -1220,9 +1221,12 @@ start_nft(){ #nftables-allinone
#代理本机(仅TCP) #代理本机(仅TCP)
[ "$local_proxy" = "已开启" ] && [ "$local_type" = "nftables增强模式" ] && { [ "$local_proxy" = "已开启" ] && [ "$local_type" = "nftables增强模式" ] && {
#dns #dns
[ "$dns_no" != "已禁用" ] && {
[ -z "$(grep 'nameserver 127.0.0.1' /etc/resolv.conf 2>/dev/null)" ] && echo 'nameserver 127.0.0.1' >> /etc/resolv.conf #修复部分虚拟机dns查询失败的问题
nft add chain inet shellcrash dns_out { type nat hook output priority -100 \; } nft add chain inet shellcrash dns_out { type nat hook output priority -100 \; }
nft add rule inet shellcrash dns_out meta skgid { 453, 7890 } return && \ nft add rule inet shellcrash dns_out meta skgid { 453, 7890 } return && \
nft add rule inet shellcrash dns_out udp dport 53 redirect to $dns_port nft add rule inet shellcrash dns_out udp dport 53 redirect to $dns_port
}
#output #output
nft add chain inet shellcrash output { type nat hook output priority -100 \; } nft add chain inet shellcrash output { type nat hook output priority -100 \; }
nft add rule inet shellcrash output meta skgid 7890 return && { nft add rule inet shellcrash output meta skgid 7890 return && {
@@ -1583,13 +1587,13 @@ singbox_check(){ #singbox启动前检查
fi fi
core_check core_check
#预下载geoip-cn.srs数据库 #预下载geoip-cn.srs数据库
[ -n "$(cat ${CRASHDIR}/jsons/*.json | grep -oEi '\"rule_set\": \"geoip-cn\"')" ] && ckgeo geoip-cn.srs srs_geoip_cn.srs [ -n "$(cat ${CRASHDIR}/jsons/*.json | grep -oEi '"rule_set": *"geoip-cn"')" ] && ckgeo geoip-cn.srs srs_geoip_cn.srs
#预下载geosite-cn.srs数据库 #预下载geosite-cn.srs数据库
[ -n "$(cat ${CRASHDIR}/jsons/*.json | grep -oEi '\"rule_set\": \"geosite-cn\"')" -o "$dns_mod" = "mix" ] && ckgeo geosite-cn.srs srs_geosite_cn.srs [ -n "$(cat ${CRASHDIR}/jsons/*.json | grep -oEi '"rule_set": *"geosite-cn"')" -o "$dns_mod" = "mix" ] && ckgeo geosite-cn.srs srs_geosite_cn.srs
#预下载GeoIP数据库 #预下载GeoIP数据库
[ -n "$(cat ${CRASHDIR}/jsons/*.json | grep -oEi '\"geoip\":')" ] && ckgeo geoip.db geoip_cn.db [ -n "$(cat ${CRASHDIR}/jsons/*.json | grep -oEi '"geoip":')" ] && ckgeo geoip.db geoip_cn.db
#预下载GeoSite数据库 #预下载GeoSite数据库
[ -n "$(cat ${CRASHDIR}/jsons/*.json | grep -oEi '\"geosite\":')" ] && ckgeo geosite.db geosite_cn.db [ -n "$(cat ${CRASHDIR}/jsons/*.json | grep -oEi '"geosite":')" ] && ckgeo geosite.db geosite_cn.db
return 0 return 0
} }
bfstart(){ #启动前 bfstart(){ #启动前
@@ -1639,6 +1643,7 @@ bfstart(){ #启动前
} }
#清理debug日志 #清理debug日志
rm -rf ${TMPDIR}/debug.log rm -rf ${TMPDIR}/debug.log
rm -rf ${CRASHDIR}/debug.log
return 0 return 0
} }
afstart(){ #启动后 afstart(){ #启动后
@@ -1840,7 +1845,8 @@ debug)
else else
sed -i "s/log-level: info/log-level: $2/" ${TMPDIR}/config.yaml sed -i "s/log-level: info/log-level: $2/" ${TMPDIR}/config.yaml
fi fi
$COMMAND >${TMPDIR}/debug.log 2>&1 & [ "$3" = flash ] && dir=$CRASHDIR || dir=$TMPDIR
$COMMAND >${dir}/debug.log 2>&1 &
sleep 2 sleep 2
logger "已运行debug模式!如需停止,请使用重启/停止服务功能!" 33 logger "已运行debug模式!如需停止,请使用重启/停止服务功能!" 33
else else