格式化代码
Some checks failed
core_auto_update / check_version (push) Has been cancelled
core_auto_update / auto_update_singboxp_with_wg (push) Has been cancelled
core_auto_update / cleanup (push) Has been cancelled
bin_update / update (push) Has been cancelled

This commit is contained in:
juewuy 2024-10-20 11:02:19 +08:00
parent b2a457908d
commit 59d36e8c65
6 changed files with 908 additions and 903 deletions

View File

@ -126,7 +126,8 @@ if [ -n "$systype" ];then
set_cust_dir set_cust_dir
;; ;;
*) *)
exit 1 ;; exit 1
;;
esac esac
} }
[ "$systype" = "asusrouter" ] && { [ "$systype" = "asusrouter" ] && {
@ -154,7 +155,8 @@ if [ -n "$systype" ];then
set_asus_dir set_asus_dir
;; ;;
*) *)
exit 1 ;; exit 1
;;
esac esac
} }
[ "$systype" = "ng_snapshot" ] && dir=/tmp/mnt [ "$systype" = "ng_snapshot" ] && dir=/tmp/mnt
@ -170,7 +172,7 @@ else
#设置目录 #设置目录
if [ -z $num ]; then if [ -z $num ]; then
echo 安装已取消 echo 安装已取消
exit 1; exit 1
elif [ "$num" = "1" ]; then elif [ "$num" = "1" ]; then
dir=/etc dir=/etc
elif [ "$num" = "2" ]; then elif [ "$num" = "2" ]; then
@ -184,7 +186,7 @@ else
set_cust_dir set_cust_dir
else else
echo 安装已取消!!! echo 安装已取消!!!
exit 1; exit 1
fi fi
fi fi
@ -224,8 +226,7 @@ setversion(){
3) 3)
url=$(echo $url | sed 's/master/dev/') url=$(echo $url | sed 's/master/dev/')
;; ;;
*) *) ;;
;;
esac esac
} }
#特殊固件识别及标记 #特殊固件识别及标记
@ -284,7 +285,7 @@ if [ -n "$CRASHDIR" ];then
install install
else else
$echo "\033[31m输入错误已取消安装\033[0m" $echo "\033[31m输入错误已取消安装\033[0m"
exit 1; exit 1
fi fi
else else
setdir setdir

View File

@ -60,7 +60,8 @@ if [ -n "$systype" ];then
set_cust_dir set_cust_dir
;; ;;
*) *)
exit 1 ;; exit 1
;;
esac esac
} }
[ "$systype" = "asusrouter" ] && { [ "$systype" = "asusrouter" ] && {
@ -106,7 +107,7 @@ else
#设置目录 #设置目录
if [ -z $num ]; then if [ -z $num ]; then
echo 安装已取消 echo 安装已取消
exit 1; exit 1
elif [ "$num" = "1" ]; then elif [ "$num" = "1" ]; then
dir=/etc dir=/etc
elif [ "$num" = "2" ]; then elif [ "$num" = "2" ]; then
@ -128,7 +129,7 @@ else
fi fi
else else
echo 安装已取消!!! echo 安装已取消!!!
exit 1; exit 1
fi fi
fi fi
@ -298,7 +299,7 @@ fi
nvram commit nvram commit
} }
#华硕下载大师启动额外设置 #华硕下载大师启动额外设置
[ -f "$dir/asusware.arm/etc/init.d/S50downloadmaster" ] && [ -z "$(grep 'ShellCrash' $dir/asusware.arm/etc/init.d/S50downloadmaster)" ] && \ [ -f "$dir/asusware.arm/etc/init.d/S50downloadmaster" ] && [ -z "$(grep 'ShellCrash' $dir/asusware.arm/etc/init.d/S50downloadmaster)" ] &&
sed -i "/^PATH=/a\\$CRASHDIR/start.sh init & #ShellCrash初始化脚本" "$dir/asusware.arm/etc/init.d/S50downloadmaster" sed -i "/^PATH=/a\\$CRASHDIR/start.sh init & #ShellCrash初始化脚本" "$dir/asusware.arm/etc/init.d/S50downloadmaster"
#删除临时文件 #删除临时文件
rm -rf /tmp/*rash*gz rm -rf /tmp/*rash*gz

View File

@ -1,7 +1,10 @@
#!/bin/sh #!/bin/sh
# Copyright (C) Juewuy # Copyright (C) Juewuy
CRASHDIR=$(cd $(dirname $0);pwd) CRASHDIR=$(
cd $(dirname $0)
pwd
)
CFG_PATH=${CRASHDIR}/configs/ShellCrash.cfg CFG_PATH=${CRASHDIR}/configs/ShellCrash.cfg
YAMLSDIR=${CRASHDIR}/yamls YAMLSDIR=${CRASHDIR}/yamls
JSONSDIR=${CRASHDIR}/jsons JSONSDIR=${CRASHDIR}/jsons
@ -43,7 +46,7 @@ ckstatus(){
#检查mac地址记录 #检查mac地址记录
[ ! -f ${CRASHDIR}/configs/mac ] && touch ${CRASHDIR}/configs/mac [ ! -f ${CRASHDIR}/configs/mac ] && touch ${CRASHDIR}/configs/mac
#获取本机host地址 #获取本机host地址
[ -z "$host" ] && host=$(ubus call network.interface.lan status 2>&1 | grep \"address\" | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}';) [ -z "$host" ] && host=$(ubus call network.interface.lan status 2>&1 | grep \"address\" | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')
[ -z "$host" ] && host=$(ip a 2>&1 | grep -w 'inet' | grep 'global' | grep 'lan' | grep -E ' 1(92|0|72)\.' | sed 's/.*inet.//g' | sed 's/\/[0-9][0-9].*$//g' | head -n 1) [ -z "$host" ] && host=$(ip a 2>&1 | grep -w 'inet' | grep 'global' | grep 'lan' | grep -E ' 1(92|0|72)\.' | sed 's/.*inet.//g' | sed 's/\/[0-9][0-9].*$//g' | head -n 1)
[ -z "$host" ] && host=$(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) [ -z "$host" ] && host=$(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)
[ -z "$host" ] && host='设备IP地址' [ -z "$host" ] && host='设备IP地址'
@ -75,15 +78,15 @@ ckstatus(){
PID=$(pidof CrashCore | awk '{print $NF}') PID=$(pidof CrashCore | awk '{print $NF}')
if [ -n "$PID" ]; then if [ -n "$PID" ]; then
run="\033[32m正在运行$redir_mod\033[0m" run="\033[32m正在运行$redir_mod\033[0m"
VmRSS=`cat /proc/$PID/status|grep -w VmRSS|awk 'unit="MB" {printf "%.2f %s\n", $2/1000, unit}'` VmRSS=$(cat /proc/$PID/status | grep -w VmRSS | awk 'unit="MB" {printf "%.2f %s\n", $2/1000, unit}')
#获取运行时长 #获取运行时长
touch ${TMPDIR}/crash_start_time #用于延迟启动的校验 touch ${TMPDIR}/crash_start_time #用于延迟启动的校验
start_time=$(cat ${TMPDIR}/crash_start_time) start_time=$(cat ${TMPDIR}/crash_start_time)
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="$day天" [ "$day" = "0" ] && day='' || day="$day天"
time=`date -u -d @${time} +%H小时%M分%S秒` time=$(date -u -d @${time} +%H小时%M分%S秒)
fi fi
elif [ "$firewall_area" = 5 ] && [ -n "$(ip route list table 100)" ]; then elif [ "$firewall_area" = 5 ] && [ -n "$(ip route list table 100)" ]; then
run="\033[32m已设置$redir_mod\033[0m" run="\033[32m已设置$redir_mod\033[0m"
@ -112,7 +115,7 @@ ckstatus(){
#检查执行权限 #检查执行权限
[ ! -x ${CRASHDIR}/start.sh ] && chmod +x ${CRASHDIR}/start.sh [ ! -x ${CRASHDIR}/start.sh ] && chmod +x ${CRASHDIR}/start.sh
#检查/tmp内核文件 #检查/tmp内核文件
for file in `ls -F /tmp | grep -v [/\$] | grep -v ' ' | grep -Ev ".*(gz|zip|7z|tar)$" | grep -iE 'CrashCore|^clash$|^clash-linux.*|^mihomo.*|^sing.*box|^clash.meta.*'` ; do for file in $(ls -F /tmp | grep -v [/$] | grep -v ' ' | grep -Ev ".*(gz|zip|7z|tar)$" | grep -iE 'CrashCore|^clash$|^clash-linux.*|^mihomo.*|^sing.*box|^clash.meta.*'); do
file=/tmp/$file file=/tmp/$file
chmod +x $file chmod +x $file
echo -e "发现可用的内核文件: \033[36m$file\033[0m " echo -e "发现可用的内核文件: \033[36m$file\033[0m "
@ -122,12 +125,12 @@ ckstatus(){
core_v=$($file -v 2>/dev/null | head -n 1 | sed 's/ linux.*//;s/.* //') core_v=$($file -v 2>/dev/null | head -n 1 | sed 's/ linux.*//;s/.* //')
[ -z "$core_v" ] && core_v=$($file version 2>/dev/null | grep -Eo 'version .*' | sed 's/version //') [ -z "$core_v" ] && core_v=$($file version 2>/dev/null | grep -Eo 'version .*' | sed 's/version //')
if [ -n "$core_v" ]; then if [ -n "$core_v" ]; then
source ${CRASHDIR}/webget.sh && setcoretype && \ source ${CRASHDIR}/webget.sh && setcoretype &&
mv -f $file ${TMPDIR}/CrashCore && \ mv -f $file ${TMPDIR}/CrashCore &&
tar -zcf ${BINDIR}/CrashCore.tar.gz ${tar_para} -C ${TMPDIR} CrashCore && \ tar -zcf ${BINDIR}/CrashCore.tar.gz ${tar_para} -C ${TMPDIR} CrashCore &&
echo -e "\033[32m内核加载完成\033[0m " && \ echo -e "\033[32m内核加载完成\033[0m " &&
setconfig crashcore $crashcore && \ setconfig crashcore $crashcore &&
setconfig core_v $core_v && \ setconfig core_v $core_v &&
switch_core switch_core
sleep 1 sleep 1
else else
@ -140,7 +143,7 @@ ckstatus(){
echo ----------------------------------------------- echo -----------------------------------------------
done done
#检查/tmp配置文件 #检查/tmp配置文件
for file in `ls -F /tmp | grep -v [/\$] | grep -v ' ' | grep -iE '.yaml$|.yml$|config.json$'` ; do for file in $(ls -F /tmp | grep -v [/$] | grep -v ' ' | grep -iE '.yaml$|.yml$|config.json$'); do
file=/tmp/$file file=/tmp/$file
echo -e "发现内核配置文件: \033[36m$file\033[0m " echo -e "发现内核配置文件: \033[36m$file\033[0m "
read -p "是否加载为$crashcore的配置文件(1/0) > " res read -p "是否加载为$crashcore的配置文件(1/0) > " res
@ -681,8 +684,7 @@ setipv6(){ #ipv6设置
echo ----------------------------------------------- echo -----------------------------------------------
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
case $num in case $num in
0) 0) ;;
;;
1) 1)
if [ "$ipv6_redir" = "未开启" ]; then if [ "$ipv6_redir" = "未开启" ]; then
ipv6_support=已开启 ipv6_support=已开启
@ -748,8 +750,7 @@ setfirewall(){ #防火墙设置
setconfig cust_host_ipv4 setconfig cust_host_ipv4
set_cust_host_ipv4 set_cust_host_ipv4
;; ;;
0) 0) ;;
;;
*) *)
if [ -n "$(echo $text | grep -Eo '^([0-9]{1,3}\.){3}[0-9]{1,3}/[0-9]{1,2}'$)" -a -z "$(echo $cust_host_ipv4 | grep "$text")" ]; then if [ -n "$(echo $text | grep -Eo '^([0-9]{1,3}\.){3}[0-9]{1,3}/[0-9]{1,2}'$)" -a -z "$(echo $cust_host_ipv4 | grep "$text")" ]; then
cust_host_ipv4="$cust_host_ipv4 $text" cust_host_ipv4="$cust_host_ipv4 $text"
@ -809,7 +810,8 @@ setfirewall(){ #防火墙设置
echo -e "当前网段:\033[36m$reserve_ipv4\033[0m" echo -e "当前网段:\033[36m$reserve_ipv4\033[0m"
echo -e "\033[33m地址必须是空格分隔错误的设置可能导致网络回环或启动报错请务必谨慎\033[0m" echo -e "\033[33m地址必须是空格分隔错误的设置可能导致网络回环或启动报错请务必谨慎\033[0m"
read -p "请输入 > " text read -p "请输入 > " text
if [ -n "$(echo $text |grep -E "(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])/(3[0-2]|[1-2]?[0-9]))( +|$)+" if [ -n "$(
echo $text | grep -E "(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])/(3[0-2]|[1-2]?[0-9]))( +|$)+"
)" ]; then )" ]; then
reserve_ipv4="$text" reserve_ipv4="$text"
echo -e "已将保留地址网段设为:\033[32m$reserve_ipv4\033[0m" echo -e "已将保留地址网段设为:\033[32m$reserve_ipv4\033[0m"
@ -999,8 +1001,7 @@ macfilter(){ #局域网设备过滤
echo -e " 0 返回上级菜单" echo -e " 0 返回上级菜单"
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
case "$num" in case "$num" in
0) 0) ;;
;;
1) 1)
macfilter_type=$macfilter_over macfilter_type=$macfilter_over
setconfig macfilter_type $macfilter_type setconfig macfilter_type $macfilter_type
@ -1050,8 +1051,7 @@ setboot(){ #启动相关设置
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
echo ----------------------------------------------- echo -----------------------------------------------
case "$num" in case "$num" in
0) 0) ;;
;;
1) 1)
if [ "$autostart" = "enable" ]; then if [ "$autostart" = "enable" ]; then
[ -d /etc/rc.d ] && cd /etc/rc.d && rm -rf *shellcrash >/dev/null 2>&1 && cd - >/dev/null [ -d /etc/rc.d ] && cd /etc/rc.d && rm -rf *shellcrash >/dev/null 2>&1 && cd - >/dev/null
@ -1144,7 +1144,8 @@ setboot(){ #启动相关设置
read -p "请输入相应数字 > " num read -p "请输入相应数字 > " num
case "$num" in case "$num" in
1) 1)
BINDIR="$TMPDIR" ;; BINDIR="$TMPDIR"
;;
2) 2)
set_usb_dir() { set_usb_dir() {
echo "请选择安装目录" echo "请选择安装目录"
@ -1197,8 +1198,7 @@ set_firewall_area(){ #防火墙模式设置
echo ----------------------------------------------- echo -----------------------------------------------
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
case $num in case $num in
0) 0) ;;
;;
[1-4]) [1-4])
[ $firewall_area -ge 4 ] && { [ $firewall_area -ge 4 ] && {
redir_mod=Redir模式 redir_mod=Redir模式
@ -1260,8 +1260,7 @@ set_firewall_area(){ #防火墙模式设置
vm_redir=未开启 vm_redir=未开启
unset vm_ipv4 unset vm_ipv4
;; ;;
*) *) ;;
;;
esac esac
setconfig vm_redir $vm_redir setconfig vm_redir $vm_redir
setconfig vm_ipv4 "\'$vm_ipv4\'" setconfig vm_ipv4 "\'$vm_ipv4\'"
@ -1363,7 +1362,8 @@ set_redir_mod(){ #代理模式设置
set_redir_mod set_redir_mod
;; ;;
6) 6)
redir_mod=T&U旁路转发 redir_mod=T &
U旁路转发
set_redir_config set_redir_config
set_redir_mod set_redir_mod
;; ;;
@ -1518,9 +1518,9 @@ normal_set(){ #基础设置
echo -e " 5 过滤局域网设备: \033[36m$mac_return\033[0m ————使用黑/白名单进行过滤" echo -e " 5 过滤局域网设备: \033[36m$mac_return\033[0m ————使用黑/白名单进行过滤"
echo -e " 7 屏蔽QUIC流量: \033[36m$quic_rj\033[0m ————优化视频性能" echo -e " 7 屏蔽QUIC流量: \033[36m$quic_rj\033[0m ————优化视频性能"
[ "$disoverride" != "1" ] && { [ "$disoverride" != "1" ] && {
[ "$dns_mod" != "fake-ip" ] && \ [ "$dns_mod" != "fake-ip" ] &&
echo -e " 8 CN_IP绕过内核: \033[36m$cn_ip_route\033[0m ————优化性能不兼容Fake-ip" echo -e " 8 CN_IP绕过内核: \033[36m$cn_ip_route\033[0m ————优化性能不兼容Fake-ip"
[ "$dns_mod" != "redir_host" ] && \ [ "$dns_mod" != "redir_host" ] &&
echo -e " 9 管理Fake-ip过滤列表" echo -e " 9 管理Fake-ip过滤列表"
} }
echo ----------------------------------------------- echo -----------------------------------------------
@ -1658,8 +1658,7 @@ advanced_set(){ #进阶设置
echo ----------------------------------------------- echo -----------------------------------------------
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
case "$num" in case "$num" in
0) 0) ;;
;;
3) 3)
setfirewall setfirewall
advanced_set advanced_set
@ -1934,12 +1933,12 @@ tools(){
elif [ -x /usr/sbin/otapredownload ] && [ "$num" = 5 ]; then elif [ -x /usr/sbin/otapredownload ] && [ "$num" = 5 ]; then
if [ "$mi_update" = "禁用" ]; then if [ "$mi_update" = "禁用" ]; then
grep -q "otapredownload" /etc/crontabs/root && \ grep -q "otapredownload" /etc/crontabs/root &&
sed -i "/^[^\#]*otapredownload/ s/^/#/" /etc/crontabs/root || \ sed -i "/^[^\#]*otapredownload/ s/^/#/" /etc/crontabs/root ||
echo "#15 3,4,5 * * * /usr/sbin/otapredownload >/dev/null 2>&1" >>/etc/crontabs/root echo "#15 3,4,5 * * * /usr/sbin/otapredownload >/dev/null 2>&1" >>/etc/crontabs/root
else else
grep -q "otapredownload" /etc/crontabs/root && \ grep -q "otapredownload" /etc/crontabs/root &&
sed -i "/^\s*#.*otapredownload/ s/^\s*#//" /etc/crontabs/root || \ sed -i "/^\s*#.*otapredownload/ s/^\s*#//" /etc/crontabs/root ||
echo "15 3,4,5 * * * /usr/sbin/otapredownload >/dev/null 2>&1" >>/etc/crontabs/root echo "15 3,4,5 * * * /usr/sbin/otapredownload >/dev/null 2>&1" >>/etc/crontabs/root
fi fi
echo ----------------------------------------------- echo -----------------------------------------------
@ -1971,8 +1970,8 @@ tools(){
echo 正在连接服务器获取Tun模块补丁文件………… echo 正在连接服务器获取Tun模块补丁文件…………
${CRASHDIR}/start.sh get_bin ${TMPDIR}/tun.ko bin/fix/tun.ko ${CRASHDIR}/start.sh get_bin ${TMPDIR}/tun.ko bin/fix/tun.ko
if [ "$?" = "0" ]; then if [ "$?" = "0" ]; then
mv -f ${TMPDIR}/tun.ko ${CRASHDIR}/tools/tun.ko && \ mv -f ${TMPDIR}/tun.ko ${CRASHDIR}/tools/tun.ko &&
${CRASHDIR}/misnap_init.sh tunfix && \ ${CRASHDIR}/misnap_init.sh tunfix &&
echo -e "\033[32m设置成功请重启服务\033[0m" echo -e "\033[32m设置成功请重启服务\033[0m"
else else
echo -e "\033[31m文件下载失败请重试\033[0m" echo -e "\033[31m文件下载失败请重试\033[0m"
@ -2006,14 +2005,14 @@ main_menu(){
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
if [ -z "$num" ]; then if [ -z "$num" ]; then
errornum errornum
exit; exit
elif [ "$num" = 0 ]; then elif [ "$num" = 0 ]; then
exit; exit
elif [ "$num" = 1 ]; then elif [ "$num" = 1 ]; then
start_service start_service
exit; exit
elif [ "$num" = 2 ]; then elif [ "$num" = 2 ]; then
checkcfg=$(cat $CFG_PATH) checkcfg=$(cat $CFG_PATH)
@ -2067,13 +2066,16 @@ main_menu(){
else else
errornum errornum
exit; exit
fi fi
} }
[ -z "$CRASHDIR" ] && { [ -z "$CRASHDIR" ] && {
echo 环境变量配置有误!正在初始化~~~ echo 环境变量配置有误!正在初始化~~~
CRASHDIR=$(cd `dirname $0`; pwd) CRASHDIR=$(
cd $(dirname $0)
pwd
)
source ${CRASHDIR}/init.sh source ${CRASHDIR}/init.sh
sleep 1 sleep 1
echo 请重启SSH窗口以完成初始化 echo 请重启SSH窗口以完成初始化

View File

@ -2,7 +2,10 @@
# Copyright (C) Juewuy # Copyright (C) Juewuy
#初始化目录 #初始化目录
CRASHDIR=$(cd $(dirname $0);pwd) CRASHDIR=$(
cd $(dirname $0)
pwd
)
#加载执行目录,失败则初始化 #加载执行目录,失败则初始化
. "$CRASHDIR"/configs/command.env >/dev/null 2>&1 . "$CRASHDIR"/configs/command.env >/dev/null 2>&1
[ -z "$BINDIR" -o -z "$TMPDIR" -o -z "$COMMAND" ] && . "$CRASHDIR"/init.sh >/dev/null 2>&1 [ -z "$BINDIR" -o -z "$TMPDIR" -o -z "$COMMAND" ] && . "$CRASHDIR"/init.sh >/dev/null 2>&1
@ -928,11 +931,11 @@ start_ipt_route() { #iptables-route通用工具
[ "$1" = ip6tables ] && [ "$dns_mod" != "fake-ip" ] && [ "$cn_ipv6_route" = "已开启" ] && [ -f "$BINDIR"/cn_ipv6.txt ] && $1 $w -t $2 -A $4 -m set --match-set cn_ip6 dst -j RETURN 2>/dev/null [ "$1" = ip6tables ] && [ "$dns_mod" != "fake-ip" ] && [ "$cn_ipv6_route" = "已开启" ] && [ -f "$BINDIR"/cn_ipv6.txt ] && $1 $w -t $2 -A $4 -m set --match-set cn_ip6 dst -j RETURN 2>/dev/null
#局域网mac地址黑名单过滤 #局域网mac地址黑名单过滤
[ "$3" = 'PREROUTING' ] && [ "$macfilter_type" != "白名单" ] && { [ "$3" = 'PREROUTING' ] && [ "$macfilter_type" != "白名单" ] && {
[ -s "$CRASHDIR"/configs/mac ] && \ [ -s "$CRASHDIR"/configs/mac ] &&
for mac in $(cat "$CRASHDIR"/configs/mac); do 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-source $mac -j RETURN
done done
[ -s "$CRASHDIR"/configs/ip_filter ] && [ "$1" = 'iptables' ] && \ [ -s "$CRASHDIR"/configs/ip_filter ] && [ "$1" = 'iptables' ] &&
for ip in $(cat "$CRASHDIR"/configs/ip_filter); do for ip in $(cat "$CRASHDIR"/configs/ip_filter); do
$1 $w -t $2 -A $4 -s $ip -j RETURN $1 $w -t $2 -A $4 -s $ip -j RETURN
done done
@ -940,11 +943,11 @@ start_ipt_route() { #iptables-route通用工具
#tcp&udp分别进代理链 #tcp&udp分别进代理链
proxy_set() { proxy_set() {
if [ "$3" = 'PREROUTING' ] && [ "$4" != 'shellcrash_vm' ] && [ "$macfilter_type" = "白名单" ] && [ -n "$(cat $CRASHDIR/configs/mac $CRASHDIR/configs/ip_filter 2>/dev/null)" ]; then 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 ] && \ [ -s "$CRASHDIR"/configs/mac ] &&
for mac in $(cat "$CRASHDIR"/configs/mac); do 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-source $mac -j $JUMP
done done
[ -s "$CRASHDIR"/configs/ip_filter ] && [ "$1" = 'iptables' ] && \ [ -s "$CRASHDIR"/configs/ip_filter ] && [ "$1" = 'iptables' ] &&
for ip in $(cat "$CRASHDIR"/configs/ip_filter); do for ip in $(cat "$CRASHDIR"/configs/ip_filter); do
$1 $w -t $2 -A $4 -p $5 -s $ip -j $JUMP $1 $w -t $2 -A $4 -p $5 -s $ip -j $JUMP
done done
@ -985,22 +988,22 @@ start_ipt_dns() { #iptables-dns通用工具
} }
#局域网mac地址黑名单过滤 #局域网mac地址黑名单过滤
[ "$2" = 'PREROUTING' ] && [ "$macfilter_type" != "白名单" ] && { [ "$2" = 'PREROUTING' ] && [ "$macfilter_type" != "白名单" ] && {
[ -s "$CRASHDIR"/configs/mac ] && \ [ -s "$CRASHDIR"/configs/mac ] &&
for mac in $(cat "$CRASHDIR"/configs/mac); do 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-source $mac -j RETURN
done done
[ -s "$CRASHDIR"/configs/ip_filter ] && [ "$1" = 'iptables' ] && \ [ -s "$CRASHDIR"/configs/ip_filter ] && [ "$1" = 'iptables' ] &&
for ip in $(cat "$CRASHDIR"/configs/ip_filter); do for ip in $(cat "$CRASHDIR"/configs/ip_filter); do
$1 $w -t nat -A $3 -s $ip -j RETURN $1 $w -t nat -A $3 -s $ip -j RETURN
done done
} }
if [ "$2" = 'PREROUTING' ] && [ "$3" != 'shellcrash_vm_dns' ] && [ "$macfilter_type" = "白名单" ] && [ -n "$(cat $CRASHDIR/configs/mac $CRASHDIR/configs/ip_filter 2>/dev/null)" ]; then 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 ] && \ [ -s "$CRASHDIR"/configs/mac ] &&
for mac in $(cat "$CRASHDIR"/configs/mac); do 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 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 udp -m mac --mac-source $mac -j REDIRECT --to-ports $dns_port
done done
[ -s "$CRASHDIR"/configs/ip_filter ] && [ "$1" = 'iptables' ] && \ [ -s "$CRASHDIR"/configs/ip_filter ] && [ "$1" = 'iptables' ] &&
for ip in $(cat "$CRASHDIR"/configs/ip_filter); do for ip in $(cat "$CRASHDIR"/configs/ip_filter); do
$1 $w -t nat -A $3 -p tcp -s $ip -j REDIRECT --to-ports $dns_port $1 $w -t nat -A $3 -p tcp -s $ip -j REDIRECT --to-ports $dns_port
$1 $w -t nat -A $3 -p udp -s $ip -j REDIRECT --to-ports $dns_port $1 $w -t nat -A $3 -p udp -s $ip -j REDIRECT --to-ports $dns_port
@ -1717,7 +1720,7 @@ clash_check() { #clash启动前检查
[ "$redir_mod" = "混合模式" ] || [ "$redir_mod" = "混合模式" ] ||
[ "$redir_mod" = "Tun模式" ] && core_exchange meta '当前内核不支持的配置' [ "$redir_mod" = "Tun模式" ] && core_exchange meta '当前内核不支持的配置'
fi fi
[ "$crashcore" = "clash" ] && [ "$firewall_area" = 2 -o "$firewall_area" = 3 ] && [ -z "$(grep '0:7890' /etc/passwd)" ] && \ [ "$crashcore" = "clash" ] && [ "$firewall_area" = 2 -o "$firewall_area" = 3 ] && [ -z "$(grep '0:7890' /etc/passwd)" ] &&
core_exchange meta '当前内核不支持非root用户启用本机代理' core_exchange meta '当前内核不支持非root用户启用本机代理'
core_check core_check
#预下载GeoIP数据库 #预下载GeoIP数据库

View File

@ -7,7 +7,7 @@ tmp_dir=/tmp/ddns_$USER
[ ! -f "$ddns_dir" -o ! -d "/etc/ddns" ] && echo -e "本脚本依赖OpenWrt内置的DDNS服务,当前设备无法运行,已退出!" && exit 1 [ ! -f "$ddns_dir" -o ! -d "/etc/ddns" ] && echo -e "本脚本依赖OpenWrt内置的DDNS服务,当前设备无法运行,已退出!" && exit 1
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[30;46m欢迎使用ShellDDNS\033[0m" echo -e "\033[30;46m欢迎使用ShellDDNS\033[0m"
echo -e "TG群\033[36;4mhttps://t.me/clashfm\033[0m" echo -e "TG群\033[36;4mhttps://t.me/ShellCrash\033[0m"
add_ddns() { add_ddns() {
cat >>$ddns_dir <<EOF cat >>$ddns_dir <<EOF
@ -165,7 +165,5 @@ load_ddns(){
fi fi
} }
load_ddns load_ddns
rm -rf $tmp_dir rm -rf $tmp_dir