diff --git a/scripts/clash.sh b/scripts/clash.sh index 693141e..5f50697 100644 --- a/scripts/clash.sh +++ b/scripts/clash.sh @@ -541,8 +541,8 @@ clashcfg(){ echo -e "\033[36mTun及混合模式必须使用clashpre核心!\033[0m" echo ----------------------------------------------- echo -e " 1 Redir模式:CPU以及内存\033[33m占用较低\033[0m" - echo -e " 但\033[31m不支持UDP\033[0m流量转发" - echo -e " 适合\033[32m非游戏用户\033[0m使用" + echo -e " 但\033[31m不支持UDP\033[0m,不支持fake-ip模式" + echo -e " 适合\033[32m非外服游戏用户\033[0m使用" echo -e " 2 混合模式: 使用redir转发TCP,Tun转发UDP流量" echo -e " \033[33m速度较快\033[0m,\033[31m内存占用略高\033[0m" echo -e " 适合\033[32m游戏用户、综合用户\033[0m" @@ -560,6 +560,7 @@ clashcfg(){ i= elif [ "$num" = 1 ]; then redir_mod=Redir模式 + dns_mod=redir_host set_redir_config elif [ "$num" = 3 ]; then modinfo tun >/dev/null 2>&1 @@ -623,9 +624,9 @@ clashcfg(){ echo -e "\033[33m切换模式后需要手动重启clash服务以生效!\033[0m" echo ----------------------------------------------- echo -e " 1 fake-ip模式: \033[32m响应速度更快\033[0m" - echo -e " 可能与某些局域网设备有冲突" + echo -e " 不支持Redir模式,兼容性略差" echo -e " 2 redir_host模式:\033[32m兼容性更好\033[0m" - echo -e " 不支持Tun模式,可能存在DNS污染" + echo -e " 不支持Tun模式,抗污染能力略差" echo " 0 返回上级菜单" read -p "请输入对应数字 > " num if [ -z "$num" ]; then @@ -633,10 +634,15 @@ clashcfg(){ elif [ "$num" = 0 ]; then i= elif [ "$num" = 1 ]; then - dns_mod=fake-ip - setconfig dns_mod $dns_mod - echo ----------------------------------------------- - echo -e "\033[36m已设为 $dns_mod 模式!!\033[0m" + if [ "$redir_mod" = "Redir模式" ];then + echo ----------------------------------------------- + echo -e "\033[36mfake-ip与Redir模式兼容性较差,请使用其他模式!!\033[0m" + else + dns_mod=fake-ip + setconfig dns_mod $dns_mod + echo ----------------------------------------------- + echo -e "\033[36m已设为 $dns_mod 模式!!\033[0m" + fi elif [ "$num" = 2 ]; then dns_mod=redir_host setconfig dns_mod $dns_mod @@ -731,6 +737,7 @@ clashadv(){ [ -z "$start_old" ] && start_old=未开启 [ -z "$tproxy_mod" ] && tproxy_mod=未开启 [ "$bindir" = "/tmp/clash_$USER" ] && mini_clash=已开启 || mini_clash=未开启 + [ -n "$(cat /etc/crontabs/root | grep otapredownload)" ] && mi_update=禁用 || mi_update=启用 # echo ----------------------------------------------- echo -e "\033[30;47m欢迎使用进阶模式菜单:\033[0m" @@ -743,8 +750,9 @@ clashadv(){ echo -e " 5 配置内置DNS服务 \033[36m$dns_no\033[0m" echo -e " 6 手动指定相关端口、秘钥及本机host" echo -e " 7 使用自定义配置" + [ -x /usr/sbin/otapredownload ] && echo -e " 8 \033[33m$mi_update\033[0m小米系统自动更新" echo ----------------------------------------------- - echo -e " 8 \033[31m重置\033[0m配置文件" + echo -e " 9 \033[31m重置\033[0m配置文件" echo -e " 0 返回上级菜单 \033[0m" echo ----------------------------------------------- read -p "请输入对应数字 > " num @@ -891,7 +899,14 @@ EOF sleep 3 clashadv - elif [ "$num" = 8 ]; then + elif [ -x /usr/sbin/otapredownload ] && [ "$num" = 8 ]; then + [ "$mi_update" = "禁用" ] && sed -i "/otapredownload/d" /etc/crontabs/root || echo "15 3,4,5 * * * /usr/sbin/otapredownload >/dev/null 2>&1" >> /etc/crontabs/root + echo ----------------------------------------------- + echo -e "已\033[33m$mi_update\033[0m小米路由器的自动启动,如未生效,请在官方APP中同步设置!" + sleep 1 + clashadv + + elif [ "$num" = 9 ]; then read -p "确认重置配置文件?(1/0) > " res if [ "$res" = "1" ];then echo "versionsh_l=$versionsh_l" > $ccfg @@ -938,6 +953,7 @@ clashcron(){ cronwords="$min $hour * * $week $cronset >/dev/null 2>&1 #$week1的$hour点$min分$cronname" crontab -l > /tmp/conf sed -i "/$cronname/d" /tmp/conf + sed -i '/^$/d' /tmp/conf echo "$cronwords" >> /tmp/conf && crontab /tmp/conf rm -f /tmp/conf echo ----------------------------------------------- diff --git a/scripts/getdate.sh b/scripts/getdate.sh index 58b4de8..ea7c63a 100644 --- a/scripts/getdate.sh +++ b/scripts/getdate.sh @@ -913,6 +913,13 @@ userguide(){ fi } forwhat + #检测IP转发 + if [ "$(cat /proc/sys/net/ipv4/ip_forward)" = "0" ];then + echo ----------------------------------------------- + echo -e "\033[33m检测到你的设备尚未开启ip转发,局域网设备将无法正常连接网络,是否立即开启?\033[0m" + read -p "是否开启?(1/0) > " res + [ "$res" = 1 ] && echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf && /etc/init.d/procps restart && echo "已成功开启ipv4转发,如未正常开启,请手动重启设备!" + fi #检测小内存模式 dir_size=$(df $clashdir | awk '{print $4}' | sed 1d) if [ "$dir_size" -lt 10240 ];then diff --git a/scripts/start.sh b/scripts/start.sh index 1fb00da..d9cff3b 100644 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -26,7 +26,7 @@ getconfig(){ [ -z "$dns_port" ] && dns_port=1053 [ -z "$dns_nameserver" ] && dns_nameserver='114.114.114.114, 223.5.5.5' [ -z "$dns_fallback" ] && dns_fallback='1.0.0.1, 8.8.4.4' - [ -z "$multiport" ] && multiport='53,587,465,995,993,143,80,443' + [ -z "$multiport" ] && multiport='22,53,587,465,995,993,143,80,443,8080' #是否代理常用端口 [ "$common_ports" = "已开启" ] && ports="-m multiport --dports $multiport" } @@ -80,6 +80,7 @@ cronset(){ crondir=/tmp/cron_$USER crontab -l > $crondir sed -i "/$1/d" $crondir + sed -i '/^$/d' $crondir echo "$2" >> $crondir crontab $crondir rm -f $crondir