~增加2个新的更新源
~工具中增加小米设备自动启用SSH功能
~优化新手引导,尤其是公网访问部分
~流媒体解锁优化,全面兼容Linux设备
~保守模式启动优化
~华硕armv7设备改为使用armv5内核以防止崩溃
This commit is contained in:
juewuy 2022-03-12 16:21:41 +08:00
parent 3c54dea48f
commit e7237a58ba
5 changed files with 99 additions and 58 deletions

Binary file not shown.

View File

@ -3,4 +3,4 @@ GeoIP_v=202201280303
clashpre_v=2021.09.15
clash_v=v1.7.1
meta_v=develop-76dcceb
versionsh=1.5.3
versionsh=1.5.4

View File

@ -525,8 +525,8 @@ localproxy(){
echo -e "\033[33m当前本机代理配置方式为\033[32m$local_type\033[0m"
echo -----------------------------------------------
echo -e " 1 \033[36m$proxy_set本机代理\033[0m"
echo -e " 2 使用\033[32m环境变量\033[0m方式配置"
echo -e " 3 使用\033[32miptables增强模式\033[0m配置仅支持Linux系统"
echo -e " 2 使用\033[32m环境变量\033[0m方式配置(部分应用可能无法使用)"
echo -e " 3 使用\033[32miptables增强模式\033[0m配置(仅支持Linux系统)"
echo -e " 0 返回上级菜单"
echo -----------------------------------------------
read -p "请输入对应数字 > " num
@ -813,7 +813,7 @@ clashadv(){
echo -e "\033[30;47m欢迎使用进阶模式菜单\033[0m"
echo -e "\033[33m如您并不了解clash的运行机制请勿更改本页面功能\033[0m"
echo -----------------------------------------------
echo -e " 1 使用保守式启动: \033[36m$start_old\033[0m ————切换时会停止clash服务"
echo -e " 1 使用保守式启动: \033[36m$start_old\033[0m ————切换时会停止clash服务"
echo -e " 2 启用ipv6支持: \033[36m$ipv6_support\033[0m ————实验性功能,可能不稳定"
echo -e " 3 Redir模式udp转发: \033[36m$tproxy_mod\033[0m ————依赖iptables-mod-tproxy"
echo -e " 4 启用小闪存模式: \033[36m$mini_clash\033[0m ————不保存核心及数据库文件"
@ -857,9 +857,11 @@ clashadv(){
else
if [ -f /etc/init.d/clash -o -w /etc/systemd/system -o -w /usr/lib/systemd/system ];then
echo -e "\033[32m改为使用默认方式启动clash服务\033[0m"
$clashdir/start.sh cronset "ShellClash初始化"
start_old=未开启
setconfig start_old $start_old
$clashdir/start.sh stop
else
echo -e "\033[31m当前设备不支持以其他模式启动\033[0m"
sleep 1
@ -1158,6 +1160,7 @@ tools(){
}
#获取设置默认显示
[ -n "$(cat /etc/crontabs/root 2>1| grep otapredownload)" ] && mi_update=禁用 || mi_update=启用
[ "$mi_autoSSH" = "禁用" ] && mi_autoSSH=启用 || mi_autoSSH=禁用
#
echo -----------------------------------------------
echo -e "\033[30;47m欢迎使用其他工具菜单\033[0m"
@ -1166,10 +1169,11 @@ tools(){
du -sh $clashdir
echo -----------------------------------------------
echo -e " 1 ShellClash测试菜单"
[ -f "/etc/firewall.user" ] && echo -e " 2 \033[32m配置\033[0m外网访问SSH"
[ -f "/etc/config/ddns" -a -d "/etc/ddns" ] && echo -e " 3 配置DDNS服务(需下载相关脚本)"
[ -f /etc/firewall.user ] && echo -e " 2 \033[32m配置\033[0m外网访问SSH"
[ -f /etc/config/ddns -a -d "/etc/ddns" ] && echo -e " 3 配置DDNS服务(需下载相关脚本)"
echo -e " 4 \033[32m流媒体预解析\033[0m————用于解决DNS解锁在TV应用上失效的问题"
[ -x /usr/sbin/otapredownload ] && echo -e " 5 \033[33m$mi_update\033[0m小米系统自动更新"
[ -x /usr/sbin/otapredownload ] && echo -e " 5 \033[33m$mi_update\033[0m小米系统自动更新\n \
6 \033[33m$mi_autoSSH\033[0m小米设备自动启用SSH(依赖clash服务)"
echo -----------------------------------------------
echo -e " 0 返回上级菜单 \033[0m"
echo -----------------------------------------------
@ -1204,13 +1208,6 @@ tools(){
sleep 1
tools
elif [ -x /usr/sbin/otapredownload ] && [ "$num" = 5 ]; 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
tools
elif [ "$num" = 4 ]; then
nslookup baidu.com > /dev/null 2>&1
if [ "$?" = 0 ];then
@ -1229,6 +1226,21 @@ tools(){
fi
tools
elif [ -x /usr/sbin/otapredownload ] && [ "$num" = 5 ]; 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
tools
elif [ -x /usr/sbin/otapredownload ] && [ "$num" = 6 ]; then
[ "$mi_autoSSH" = "禁用" ] && mi_autoSSH=启用 || mi_autoSSH=禁用
setconfig mi_autoSSH $mi_autoSSH
echo -----------------------------------------------
echo -e "\033[32m本功能仅对已固化设备生效未固化设备请先自行固化SSH\033[0m"
echo -e "已\033[33m$mi_autoSSH\033[0m小米路由相关设备升级后自动启用SSH功能"
sleep 1
tools
else
errornum
fi
@ -1511,6 +1523,7 @@ case "$1" in
rm -rf /etc/systemd/system/clash.service
rm -rf /usr/lib/systemd/system/clash.service
rm -rf /www/clash
rm -rf /tmp/clash_$USER
sed -Ei s/0:7890/7890:7890/g /etc/passwd
userdel -r shellclash 2>/dev/null
echo -----------------------------------------------

View File

@ -399,7 +399,7 @@ getsh(){
getcpucore(){
cputype=$(uname -ms | tr ' ' '_' | tr '[A-Z]' '[a-z]')
[ -n "$(echo $cputype | grep -E "linux.*armv.*")" ] && cpucore="armv5"
[ -n "$(echo $cputype | grep -E "linux.*armv7.*")" ] && [ -n "$(cat /proc/cpuinfo | grep vfp)" ] && cpucore="armv7"
[ -n "$(echo $cputype | grep -E "linux.*armv7.*")" ] && [ -n "$(cat /proc/cpuinfo | grep vfp)" ] && [ ! -d /jffs/clash ] && cpucore="armv7"
[ -n "$(echo $cputype | grep -E "linux.*aarch64.*|linux.*armv8.*")" ] && cpucore="armv8"
[ -n "$(echo $cputype | grep -E "linux.*86.*")" ] && cpucore="386"
[ -n "$(echo $cputype | grep -E "linux.*86_64.*")" ] && cpucore="amd64"
@ -715,6 +715,7 @@ setserver(){
saveserver(){
#写入mark文件
setconfig update_url \'$update_url\'
setconfig release_url \'$release_url\'
echo -----------------------------------------------
echo -e "\033[32m源地址更新成功\033[0m"
release_new=""
@ -723,29 +724,41 @@ setserver(){
echo -e "\033[30;47m切换ShellClash版本及更新源地址\033[0m"
echo -e "当前源地址:\033[4;32m$update_url\033[0m"
echo -----------------------------------------------
echo -e " 1 \033[32m正式版\033[0m&Jsdelivr-CDN源(推荐)"
echo -e " 2 \033[36m测试版\033[0m&Jsdelivr-CDN源"
echo -e " 3 \033[36m测试版\033[0m&Github源(需开启clash服务"
[ -z "$(curl -V 2>/dev/null)" ] && [ -n "$(wget -V 2>&1 | grep BusyBox)" ] && echo -e " 4 \033[33mHttp专用源\033[0m"
echo -e " 5 自定义源地址(用于本地源或自建源)"
echo -e " 6 \033[31m版本回退\033[0m"
echo -e " 1 \033[32m正式版\033[0m&Github源(ghproxy.com加速)"
echo -e " 2 \033[32m正式版\033[0m&Jsdelivr-CDN源"
echo -e " 3 \033[36m测试版\033[0m&Github源(本机clash服务加速)"
echo -e " 4 \033[36m测试版\033[0m&Github源(ghproxy.com加速)"
echo -e " 5 \033[36m测试版\033[0m&Github源(githubusercontents加速)"
[ -z "$(curl -V 2>/dev/null)" ] && [ -n "$(wget -V 2>&1 | grep BusyBox)" ] && echo -e " 6 \033[33mHttp专用源\033[0m"
echo -e " 7 自定义源地址(用于本地源或自建源)"
echo -e " 8 \033[31m版本回退\033[0m"
echo -e " 0 返回上级菜单"
read -p "请输入对应数字 > " num
if [ -z "$num" ]; then
errornum
elif [ "$num" = 1 ]; then
update_url='https://cdn.jsdelivr.net/gh/juewuy/ShellClash'
release_url='https://ghproxy.com/https://raw.githubusercontent.com/juewuy/ShellClash'
saveserver
elif [ "$num" = 2 ]; then
update_url='https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master'
release_url='https://cdn.jsdelivr.net/gh/juewuy/ShellClash'
saveserver
elif [ "$num" = 3 ]; then
update_url='https://raw.githubusercontent.com/juewuy/ShellClash/master'
release_url=''
saveserver
elif [ "$num" = 4 ]; then
update_url='http://shellclash.ga'
update_url='https://ghproxy.com/https://raw.githubusercontent.com/juewuy/ShellClash/master'
release_url=''
saveserver
elif [ "$num" = 5 ]; then
update_url='https://raw.githubusercontents.com/juewuy/ShellClash/master'
release_url=''
saveserver
elif [ "$num" = 6 ]; then
update_url='http://shellclash.ga'
release_url=''
saveserver
elif [ "$num" = 7 ]; then
echo -----------------------------------------------
read -p "请输入个人源路径 > " update_url
if [ -z "$update_url" ];then
@ -753,8 +766,9 @@ setserver(){
echo -e "\033[31m取消输入返回上级菜单\033[0m"
else
saveserver
release_url=''
fi
elif [ "$num" = 6 ]; then
elif [ "$num" = 8 ]; then
echo -----------------------------------------------
$clashdir/start.sh webget /tmp/clashrelease https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master/bin/release_version echooff rediroff 2>/tmp/clashrelease
echo -e "\033[31m请选择想要回退至的release版本\033[0m"
@ -767,27 +781,30 @@ setserver(){
release_version=$(cat /tmp/clashrelease | awk '{print $1}' | sed -n "$num"p)
update_url="https://cdn.jsdelivr.net/gh/juewuy/ShellClash@$release_version"
saveserver
release_url=''
else
echo -----------------------------------------------
echo -e "\033[31m输入有误请重新输入\033[0m"
fi
elif [ "$num" = 9 ]; then
update_url='http://192.168.123.90:8080/ShellClash'
else
errornum
fi
}
checkupdate(){
if [ -z "$release_new" ];then
if [ "$update_url" = "https://cdn.jsdelivr.net/gh/juewuy/ShellClash" ];then
$clashdir/start.sh webget /tmp/clashversion $update_url@master/bin/release_version echoon rediroff 2>/tmp/clashrelease
[ "$?" = "0" ] && release_new=$(cat /tmp/clashversion | head -1)
update_url=$update_url@$release_new
if [ -n "$release_url" ];then
[ "$release_url" = "https://cdn.jsdelivr.net/gh/juewuy/ShellClash" ] && check_url=$release_url@master || check_url=$release_url/master
$clashdir/start.sh webget /tmp/clashversion $check_url/bin/release_version echoon rediroff 2>/tmp/clashversion
release_new=$(cat /tmp/clashversion | head -1)
[ "$release_url" = "https://cdn.jsdelivr.net/gh/juewuy/ShellClash" ] && update_url=$release_url@$release_new || update_url=$release_url/$release_new
setconfig update_url \'$update_url\'
release_type=正式版
else
release_type=测试版
fi
$clashdir/start.sh webget /tmp/clashversion $update_url/bin/version echooff
[ "$?" = "0" ] && release_new=$(cat /tmp/clashversion | grep versionsh | awk -F'=' '{ print $2 }')
[ -n "$release_new" ] &&source /tmp/clashversion || echo -e "\033[31m检查更新失败请检查网络连接或切换安装源\033[0m"
[ -n "$release_new" ] && source /tmp/clashversion || echo -e "\033[31m检查更新失败请检查网络连接或切换安装源\033[0m"
rm -rf /tmp/clashversion
fi
}
@ -803,7 +820,7 @@ update(){
[ -z "$clash_v" ] && clash_v=$clashv
echo -e "\033[30;47m欢迎使用更新功能\033[0m"
echo -----------------------------------------------
echo -e " 1 更新\033[36m管理脚本 \033[33m$versionsh_l\033[0m > \033[32m$versionsh\033[0m"
echo -e " 1 更新\033[36m管理脚本 \033[33m$versionsh_l\033[0m > \033[32m$versionsh$release_type\033[0m"
echo -e " 2 切换\033[33mclash核心 \033[33m$clash_v\033[0m > \033[32m$clash_n\033[0m"
echo -e " 3 更新\033[32mGeoIP/CN-IP \033[33m$Geo_v\033[0m > \033[32m$GeoIP_v\033[0m"
echo -e " 4 安装本地\033[35mDashboard\033[0m面板"
@ -875,7 +892,7 @@ userguide(){
echo -----------------------------------------------
echo -e "\033[33m是否需要代理UDP流量(主要用于连接外服游戏) \033[0m"
echo -----------------------------------------------
echo -e " 1 \033[33m不代理UDP流量\033[0m(推荐)"
echo -e " 1 \033[33m不代理UDP流量(推荐)\033[0m"
ip tuntap >/dev/null 2>&1 && [ "$?" = 0 ] && \
echo -e " 2 \033[32m使用Tun虚拟网卡\033[0m代理UDP流量" || \
echo -e " - \033[0m使用Tun模式(你的设备不支持此模式,如为虚拟机运行请调整虚拟网卡设置)\033[0m"
@ -905,8 +922,8 @@ userguide(){
echo -e "\033[33m请先选择你的使用环境 \033[0m"
echo -e "\033[0m(你之后依然可以在设置中更改各种配置)\033[0m"
echo -----------------------------------------------
echo -e " 1 \033[32m主路由或旁路由\033[0m"
echo -e " 2 \033[36mLinux本机代理\033[0m"
echo -e " 1 \033[32m路由设备配置局域网透明代理\033[0m"
echo -e " 2 \033[36mLinux设备仅配置本机代理\033[0m"
[ -f "$ccfg.bak" ] && echo -e " 3 \033[33m还原之前备份的设置\033[0m"
echo -----------------------------------------------
read -p "请输入对应数字 > " num
@ -998,16 +1015,16 @@ userguide(){
echo -e "注意当前设备必须有公网IP才能从公网正常访问"
echo -e "\033[31m此功能会增加暴露风险请谨慎使用\033[0m"
echo -e "vps设备可能还需要额外在服务商后台开启相关端口(默认为7890与9999)"
echo -e "启用后会自动设置面板访问秘钥(shellclash)以及Socks密码(shell:clash)"
read -p "现在开启?(1/0) > " res
if [ "$res" = 1 ];then
read -p "请先设置面板访问秘钥 > " secret
read -p "请先设置Socks服务密码(账号默认为clash) > " sec
[ -z "$sec" ] && authentication=clash:$sec
host=$(curl ip.sb 2>/dev/null | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')
if [ -z "$host" ];then
sethost
fi
public_support=已开启
authentication=shell:clash
secret=shellclash
setconfig secret $secret
setconfig host $host
setconfig public_support $public_support
@ -1035,9 +1052,9 @@ testcommand(){
echo -e "\033[30;47m这里是测试命令菜单\033[0m"
echo -e "\033[33m如遇问题尽量运行相应命令后截图发群\033[0m"
echo -----------------------------------------------
echo " 1 查看clash运行时的报错信息"
echo " 1 查看Clash运行时的报错信息(会停止clash服务)"
echo " 2 查看系统DNS端口(:53)占用 "
echo " 3 测试ssl加密aes-128-gcm跑分"
echo " 3 测试ssl加密(aes-128-gcm)跑分"
echo " 4 查看iptables端口转发详情"
echo " 5 查看config.yaml前40行"
echo " 6 测试代理服务器连通性google.tw)"

View File

@ -22,6 +22,7 @@ getconfig(){
[ -z "$mix_port" ] && mix_port=7890
[ -z "$redir_port" ] && redir_port=7892
[ -z "$db_port" ] && db_port=9999
[ -z "$restore" ] && restore=false
[ -z "$dns_port" ] && dns_port=1053
[ -z "$stearming_int" ] && stearming_int=24
[ -z "$dns_nameserver" ] && dns_nameserver='114.114.114.114, 223.5.5.5'
@ -81,6 +82,15 @@ mark_time(){
sed -i '/start_time*/'d $clashdir/mark
echo start_time=$start_time >> $clashdir/mark
}
autoSSH(){
#自动开启SSH
nvram set telnet_en=1
nvram set uart_en=1
nvram set ssh_en=1
nvram commit
sed -i 's/channel=.*/channel="debug"/g' /etc/init.d/dropbear
/etc/init.d/dropbear start
}
#配置文件相关
getyaml(){
[ -z "$rule_link" ] && rule_link=1
@ -255,7 +265,7 @@ modify_yaml(){
b=$(grep -n "^prox" $yaml | head -1 | cut -d ":" -f 1)
b=$((b-1))
mkdir -p $tmpdir > /dev/null
[ "$b" != "0" ] && sed "${a},${b}d" $yaml > $tmpdir/proxy.yaml
[ "$b" -gt 0 ] && sed "${a},${b}d" $yaml > $tmpdir/proxy.yaml || cp -f $yaml $tmpdir/proxy.yaml
#跳过本地tls证书验证
[ "$skip_cert" = "已开启" ] && sed -i '1,99s/skip-cert-verify: false/skip-cert-verify: true/' $tmpdir/proxy.yaml
#添加配置
@ -639,7 +649,7 @@ bfstart(){
#读取配置文件
getconfig
[ ! -d $bindir/ui ] && mkdir -p $bindir/ui
[ -z "$update_url" ] || [ -n "$(echo $update_url | grep 'github')" ] && update_url=https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master
update_url=https://ghproxy.com/https://raw.githubusercontent.com/juewuy/ShellClash/master
#检查clash核心
if [ ! -f $bindir/clash ];then
if [ -f $clashdir/clash ];then
@ -747,15 +757,15 @@ afstart(){
#加载定时任务
[ -f $clashdir/cron ] && croncmd $clashdir/cron
#流媒体预解析
if [ "$netflix_pre" = "已开启" -o "$disneyp_pre" = "已开启" ];then
if [ "$netflix_pre" = "已开启" -o "$disneyP_pre" = "已开启" ];then
cronset '#ShellClash流媒体预解析' "* */$stearming_int * * * $clashdir/start.sh steaming #ShellClash流媒体预解析"
$0 steaming & #后台执行流媒体预解析进程
fi
#启用面板配置自动保存
if [ "$restore" = false ];then
cronset '#每10分钟保存节点配置' "*/10 * * * * test -n \"\$(pidof clash)\" && $clashdir/start.sh web_save #每10分钟保存节点配置"
[ -f $clashdir/web_save ] && web_restore & #后台还原面板配置
fi
cronset '#每10分钟保存节点配置' "*/10 * * * * test -n \"\$(pidof clash)\" && $clashdir/start.sh web_save #每10分钟保存节点配置"
[ -f $clashdir/web_save ] && web_restore & #后台还原面板配置
#自动开启SSH
[ "$autoSSH" = "禁用" ] && [ -z "$(pidof sshd)" -o -z "$(netstat -ntul | grep :22)" ] && autoSSH 2>/dev/null
else
logger "clash服务启动失败请查看报错信息" 31
$bindir/clash -t -d $bindir
@ -840,12 +850,7 @@ init)
clashdir=/data/clash
profile=/etc/profile
#开启SSH
nvram set telnet_en=1
nvram set uart_en=1
nvram set ssh_en=1
nvram commit
sed -i 's/channel=.*/channel="debug"/g' /etc/init.d/dropbear
/etc/init.d/dropbear start
autoSSH 2>/dev/null
fi
echo "alias clash=\"$clashdir/clash.sh\"" >> $profile
echo "export clashdir=\"$clashdir\"" >> $profile
@ -925,10 +930,16 @@ unset_proxy)
steaming)
getconfig
#设置循环检测clashDNS端口
ns_type=$(nslookup -version 2>&1 | grep -io busybox)
ns_lookup(){
[ -n "$ns_type" ] && \
nslookup $1 127.0.0.1:${dns_port} > /dev/null 2>&1 || \
nslookup -port=${dns_port} $1 127.0.0.1 > /dev/null 2>&1
}
while [ "$i" != 0 ];do
[ "$j" = 60 ] && exit 1
sleep 1
nslookup baidu.com 127.0.0.1:${dns_port} > /dev/null 2>&1
ns_lookup baidu.com
i=$?
j=$((j+1))
done
@ -942,7 +953,7 @@ steaming)
fi
if [ -f "$steaming_dir" ];then
for line in $(cat $steaming_dir);do
[ -n "$line" ] && nslookup "$line" 127.0.0.1:${dns_port}
[ -n "$line" ] && ns_lookup "$line"
done >/dev/null 2>&1
echo "$steaming_type域名预解析完成"
fi