ShellCrash/scripts/misnap_init.sh
juewuy 2d00da175f v1.7.10
~优化文件结构,清理工作目录
 -/configs————脚本配置文件相关
 -/yamls————clash配置文件相关
 -/tools————脚本工具相关
 -卸载时增加是否保留配置文件确认
 -更新时将自动清理部分无用文件
~配置文件覆写代码优化
 -增加去重逻辑,防止user.yaml内容冲突
 -现在生成的配置直接在缓存中执行
 -修复自定义配置出错时无法正确还原配置文件的问题
 -修复others.yaml不会被正确读取的bug
~增加公共维护列表/public,欢迎提交pr
 -servers.list————用于维护内置订阅转换规则/服务器、更新服务器
 -fake_ip_filter.list————用于fake-ip地址过滤
 -fallback-filter.list————用于fallback-DNS域名解析筛选
 -在线配置生成后端部分地址替换
~重写DNS生成逻辑
 -尝试使用fake-ip模拟redir-host,以兼容更多内核
 -兼容fake_ip_filter.list及fallback-filter.list
 -修复bing、领英官网自动跳转cn的问题
~新手引导增加自动配置ipv6路由
~屏蔽QUIC功能增加ipv6支持
~修复局域网过滤功能不会提示重启的bug
~修复公网访问功能导致iptables不停累加的bug
2023-07-30 09:49:41 +08:00

77 lines
2.4 KiB
Bash

#!/bin/sh
# Copyright (C) Juewuy
clashdir="$(uci get firewall.ShellClash.path | sed 's/\/misnap_init.sh//')"
profile=/etc/profile
autoSSH(){
#自动开启SSH
[ "`uci -c /usr/share/xiaoqiang get xiaoqiang_version.version.CHANNEL`" != 'stable' ] && {
uci -c /usr/share/xiaoqiang set xiaoqiang_version.version.CHANNEL='stable'
uci -c /usr/share/xiaoqiang commit xiaoqiang_version.version
}
[ -z "$(pidof dropbear)" -o -z "$(netstat -ntul | grep :22)" ] && {
sed -i 's/channel=.*/channel="debug"/g' /etc/init.d/dropbear
/etc/init.d/dropbear restart
mi_autoSSH_pwd=$(grep 'mi_autoSSH_pwd=' $clashdir/mark | awk -F "=" '{print $2}')
[ -n "$mi_autoSSH_pwd" ] && echo -e "$mi_autoSSH_pwd\n$mi_autoSSH_pwd" | passwd root
}
#配置nvram
[ "$(nvram get ssh_en)" = 0 ] && nvram set ssh_en=1
[ "$(nvram get telnet_en)" = 0 ] && nvram set telnet_en=1
nvram commit &> /dev/null
#备份还原SSH秘钥
[ -f $clashdir/configs/dropbear_rsa_host_key ] && ln -sf $clashdir/configs/dropbear_rsa_host_key /etc/dropbear/dropbear_rsa_host_key
[ -f $clashdir/configs/authorized_keys ] && ln -sf $clashdir/configs/authorized_keys /etc/dropbear/authorized_keys
#自动清理升级备份文件夹
rm -rf /data/etc_bak
}
tunfix(){
ko_dir=$(modinfo ip_tables | grep -Eo '/lib/modules.*/ip_tables.ko' | sed 's|/ip_tables.ko||' )
#在/tmp创建并挂载overlay
mkdir -p /tmp/overlay
mkdir -p /tmp/overlay/upper
mkdir -p /tmp/overlay/work
mount -o noatime,lowerdir=${ko_dir},upperdir=/tmp/overlay/upper,workdir=/tmp/overlay/work -t overlay "overlay_mods_only" ${ko_dir}
#将tun.ko链接到lib
ln -s $clashdir/configs/tun.ko ${ko_dir}/tun.ko
}
init(){
#等待启动完成
log_file=$(uci get system.@system[0].log_file)
local i=0
while [ "$i" -lt 20 ]; do
sleep 3
[ -n "$(grep 'init complete' $log_file)" ] && i=20 || i=$((i + 1))
done
#初始化环境变量
sed -i "/alias clash/d" $profile
sed -i "/export clashdir/d" $profile
echo "alias clash=\"$clashdir/clash.sh\"" >>$profile
echo "export clashdir=\"$clashdir\"" >>$profile
#软固化功能
autoSSH
#设置init.d服务
cp -f $clashdir/clashservice /etc/init.d/clash
chmod 755 /etc/init.d/clash
#启动服务
if [ ! -f $clashdir/.dis_startup ]; then
#AX6S/AX6000修复tun功能
[ -f $clashdir/configs/tun.ko ] && tunfix
#启动服务
/etc/init.d/clash start
/etc/init.d/clash enable
fi
}
case "$1" in
tunfix) tunfix ;;
init) init ;;
*)
if [ -z $(pidof clash) ];then
init &
fi
;;
esac