mirror of
https://github.com/juewuy/ShellCrash.git
synced 2024-11-16 03:32:34 +08:00
v1.0.0beta15.5
~Redir模式增加基于tproxy的udp代理 ~增加自动生成pac逻辑 ~增加Gnome以及KDE桌面的自动设置本机代理功能 ~修复各种更新检测失败的bug
This commit is contained in:
parent
0d65f13af9
commit
78a3f1d68b
|
@ -26,8 +26,8 @@ getconfig(){
|
||||||
[ -z "$host" ] && host=127.0.0.1
|
[ -z "$host" ] && host=127.0.0.1
|
||||||
fi
|
fi
|
||||||
#dashboard目录位置
|
#dashboard目录位置
|
||||||
[ -d /www/clash ] && dbdir=/www/clash && hostdir=/clash
|
|
||||||
[ -d $clashdir/ui ] && dbdir=$clashdir/ui && hostdir=":$db_port/ui"
|
[ -d $clashdir/ui ] && dbdir=$clashdir/ui && hostdir=":$db_port/ui"
|
||||||
|
[ -d /www/clash ] && dbdir=/www/clash && hostdir=/clash
|
||||||
#开机自启相关
|
#开机自启相关
|
||||||
if [ -f /etc/rc.common ];then
|
if [ -f /etc/rc.common ];then
|
||||||
[ -n "$(find /etc/rc.d -name '*clash')" ] && autostart=enable_rc || autostart=disable_rc
|
[ -n "$(find /etc/rc.d -name '*clash')" ] && autostart=enable_rc || autostart=disable_rc
|
||||||
|
@ -114,8 +114,8 @@ function FindProxyForURL(url, host) {
|
||||||
return "PROXY $host:$mix_port; DIRECT;"
|
return "PROXY $host:$mix_port; DIRECT;"
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
[ ! -d $clashdir/ui] && mkdir -p $clashdir/ui
|
[ ! -d $clashdir/ui ] && mkdir -p $clashdir/ui
|
||||||
[ "$(cat /tmp/pac)" != "$(cat $clashdir/ui/pac 2>&1)" ] && mv -f /tmp/pac $clashdir/ui/pac || rm -rf /tmp/pac
|
[ "$(cat /tmp/pac)" = "$(cat $clashdir/ui/pac 2>&1)" ] && rm -rf /tmp/pac || mv -f /tmp/pac $clashdir/ui/pac
|
||||||
}
|
}
|
||||||
start_over(){
|
start_over(){
|
||||||
[ $? -eq 1 ] && exit
|
[ $? -eq 1 ] && exit
|
||||||
|
@ -181,6 +181,7 @@ setport(){
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
echo -e "格式必须是\033[32m 用户名:密码 \033[0m的形式,注意用小写冒号分隔!"
|
echo -e "格式必须是\033[32m 用户名:密码 \033[0m的形式,注意用小写冒号分隔!"
|
||||||
echo -e "请尽量不要使用特殊符号!可能会产生未知错误!"
|
echo -e "请尽量不要使用特殊符号!可能会产生未知错误!"
|
||||||
|
echo -e "\033[31m需要使用本机代理功能时,请勿设置密码!\033[0m"
|
||||||
echo "输入 0 删除密码"
|
echo "输入 0 删除密码"
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
read -p "请输入Http/Sock5用户名及密码 > " input
|
read -p "请输入Http/Sock5用户名及密码 > " input
|
||||||
|
@ -189,6 +190,7 @@ setport(){
|
||||||
sed -i "/authentication*/"d $ccfg
|
sed -i "/authentication*/"d $ccfg
|
||||||
echo 密码已移除!
|
echo 密码已移除!
|
||||||
else
|
else
|
||||||
|
[ "$local_proxy" = "已开启" ] && echo -e "\033[32m请先禁用本机代理功能!\033[0m" && setport
|
||||||
authentication=$(echo $input | grep :)
|
authentication=$(echo $input | grep :)
|
||||||
if [ -n "$authentication" ]; then
|
if [ -n "$authentication" ]; then
|
||||||
sed -i "/authentication*/"d $ccfg
|
sed -i "/authentication*/"d $ccfg
|
||||||
|
@ -318,6 +320,7 @@ clashstart(){
|
||||||
$clashdir/start.sh stop
|
$clashdir/start.sh stop
|
||||||
echo -e "\033[31mClash服务已停止!\033[0m"
|
echo -e "\033[31mClash服务已停止!\033[0m"
|
||||||
fi
|
fi
|
||||||
|
catpac #生成pac自动代理文件
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
$clashdir/start.sh start
|
$clashdir/start.sh start
|
||||||
sleep 1
|
sleep 1
|
||||||
|
@ -327,7 +330,6 @@ clashstart(){
|
||||||
echo -e "\033[31mclash启动失败!\033[0m"
|
echo -e "\033[31mclash启动失败!\033[0m"
|
||||||
exit;
|
exit;
|
||||||
fi
|
fi
|
||||||
catpac #生成pac自动代理文件
|
|
||||||
start_over
|
start_over
|
||||||
}
|
}
|
||||||
macfilter(){
|
macfilter(){
|
||||||
|
@ -478,14 +480,11 @@ clashcfg(){
|
||||||
redir_mod=纯净模式
|
redir_mod=纯净模式
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
echo -e "\033[32m已经设置为纯净模式!\033[0m"
|
echo -e "\033[32m已经设置为纯净模式!\033[0m"
|
||||||
echo -e "\033[33m当前模式必须手动在设备WiFi或应用中配置HTTP或sock5代理\033[0m"
|
echo -e "\033[33m当前模式需要手动在设备WiFi或应用中配置HTTP或sock5代理\033[0m"
|
||||||
echo -e "HTTP/SOCK5代理服务器地址:\033[30;47m$host\033[0m;端口均为:\033[30;47m$mix_port\033[0m"
|
echo -e "HTTP/SOCK5代理服务器地址:\033[30;47m$host\033[0m;端口均为:\033[30;47m$mix_port\033[0m"
|
||||||
echo -e "\033[31m也可以使用PAC自动代理文件,具体使用方法请自行搜索\033[0m"
|
echo -e "也可以使用更便捷的PAC自动代理,PAC代理链接为:\033[30;47m http://$host:$mix_port/ui/pac \033[0m"
|
||||||
echo -----------------------------------------------
|
echo -e "PAC的使用教程请参考:\033[4;32mhttps://juewuy.github.io/ehRUeewcv\033[0m"
|
||||||
read -p "是否配置自动代理PAC文件(1/0) > " res
|
sleep 2
|
||||||
if [ "$res" = 1 ]; then
|
|
||||||
source $clashdir/getdate.sh && setpac
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echoerrornum
|
echoerrornum
|
||||||
clashcfg
|
clashcfg
|
||||||
|
@ -548,7 +547,7 @@ clashcfg(){
|
||||||
echo -e " 4 只代理常用端口: \033[36m$common_ports\033[0m ————用于屏蔽P2P流量"
|
echo -e " 4 只代理常用端口: \033[36m$common_ports\033[0m ————用于屏蔽P2P流量"
|
||||||
echo -e " 5 过滤局域网mac地址: \033[36m$mac_return\033[0m ————列表内设备不走代理"
|
echo -e " 5 过滤局域网mac地址: \033[36m$mac_return\033[0m ————列表内设备不走代理"
|
||||||
echo -e " 6 不使用本地DNS服务: \033[36m$dns_over\033[0m ————防止redir-host模式的dns污染"
|
echo -e " 6 不使用本地DNS服务: \033[36m$dns_over\033[0m ————防止redir-host模式的dns污染"
|
||||||
echo -e " 7 设置代理本机流量: \033[36m$local_proxy\033[0m ————使用环境变量或者PAC配置本机代理"
|
echo -e " 7 设置本机代理服务: \033[36m$local_proxy\033[0m ————使用环境变量或GUI/api配置本机代理"
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
echo -e " 9 \033[32m重启\033[0mclash服务"
|
echo -e " 9 \033[32m重启\033[0mclash服务"
|
||||||
echo -e " 0 返回上级菜单 \033[0m"
|
echo -e " 0 返回上级菜单 \033[0m"
|
||||||
|
@ -619,12 +618,17 @@ clashcfg(){
|
||||||
sed -i '/local_proxy*/'d $ccfg
|
sed -i '/local_proxy*/'d $ccfg
|
||||||
echo -----------------------------------------------
|
echo -----------------------------------------------
|
||||||
if [ "$local_proxy" = "未开启" ] > /dev/null 2>&1; then
|
if [ "$local_proxy" = "未开启" ] > /dev/null 2>&1; then
|
||||||
sed -i "1i\local_proxy=已开启" $ccfg
|
if [ -n "$authentication" ] && [ "$authentication" != "未设置" ] ;then
|
||||||
local_proxy=已开启
|
echo -e "\033[32m检测到您已经设置了Http/Sock5代理密码,请先取消密码!\033[0m"
|
||||||
catpac #生成pac自动代理文件
|
sleep 1
|
||||||
$clashdir/start.sh set_proxy $mix_port
|
setport
|
||||||
echo -e "\033[32m已经成功配置本机代理~\033[0m"
|
else
|
||||||
echo -e "\033[36m如未生效,请重新启动终端或重新连接SSH!\033[0m"
|
sed -i "1i\local_proxy=已开启" $ccfg
|
||||||
|
local_proxy=已开启
|
||||||
|
$clashdir/start.sh set_proxy $mix_port
|
||||||
|
echo -e "\033[32m已经成功配置本机代理~\033[0m"
|
||||||
|
echo -e "\033[36m如未生效,请重新启动终端或重新连接SSH!\033[0m"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
sed -i "1i\local_proxy=未开启" $ccfg
|
sed -i "1i\local_proxy=未开启" $ccfg
|
||||||
local_proxy=未开启
|
local_proxy=未开启
|
||||||
|
|
|
@ -394,10 +394,8 @@ afstart)
|
||||||
afstart
|
afstart
|
||||||
;;
|
;;
|
||||||
start)
|
start)
|
||||||
#读取配置文件
|
|
||||||
getconfig
|
getconfig
|
||||||
#使用内置规则强行覆盖config配置文件
|
[ "$modify_yaml" != "已开启" ] && modify_yaml #使用内置规则强行覆盖config配置文件
|
||||||
[ "$modify_yaml" != "已开启" ] && modify_yaml
|
|
||||||
#使用不同方式启动clash服务
|
#使用不同方式启动clash服务
|
||||||
if [ "$start_old" = "已开启" ];then
|
if [ "$start_old" = "已开启" ];then
|
||||||
$clashdir/clash -d $clashdir >/dev/null 2>&1 &
|
$clashdir/clash -d $clashdir >/dev/null 2>&1 &
|
||||||
|
@ -411,10 +409,8 @@ start)
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
stop)
|
stop)
|
||||||
#读取配置文件
|
|
||||||
getconfig
|
getconfig
|
||||||
#保存面板配置
|
web_save #保存面板配置
|
||||||
web_save
|
|
||||||
#删除守护进程&面板配置自动保存
|
#删除守护进程&面板配置自动保存
|
||||||
sed -i /clash保守模式守护进程/d $cronpath >/dev/null 2>&1
|
sed -i /clash保守模式守护进程/d $cronpath >/dev/null 2>&1
|
||||||
sed -i /保存节点配置/d $cronpath >/dev/null 2>&1
|
sed -i /保存节点配置/d $cronpath >/dev/null 2>&1
|
||||||
|
@ -424,11 +420,10 @@ stop)
|
||||||
else
|
else
|
||||||
systemctl stop clash.service >/dev/null 2>&1
|
systemctl stop clash.service >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
|
pidof clash | xargs kill -9
|
||||||
killall -9 clash >/dev/null 2>&1
|
killall -9 clash >/dev/null 2>&1
|
||||||
#清理iptables
|
stop_iptables #清理iptables
|
||||||
stop_iptables
|
[ "$local_proxy" = "已开启" ] && $0 unset_proxy #禁用本机代理
|
||||||
#禁用本机代理
|
|
||||||
[ "$local_proxy" = "已开启" ] && $0 unset_proxy
|
|
||||||
;;
|
;;
|
||||||
restart)
|
restart)
|
||||||
$0 stop
|
$0 stop
|
||||||
|
@ -450,12 +445,15 @@ set_proxy)
|
||||||
if gsettings --version >/dev/null 2>&1 ;then
|
if gsettings --version >/dev/null 2>&1 ;then
|
||||||
gsettings set org.gnome.system.proxy autoconfig-url "http://127.0.0.1:$1/ui/pac"
|
gsettings set org.gnome.system.proxy autoconfig-url "http://127.0.0.1:$1/ui/pac"
|
||||||
gsettings set org.gnome.system.proxy mode "auto"
|
gsettings set org.gnome.system.proxy mode "auto"
|
||||||
|
[ "$?" = 0 ] && check=$?
|
||||||
#KDE配置
|
#KDE配置
|
||||||
elif kwriteconfig5 -h >/dev/null 2>&1 ;then
|
elif kwriteconfig5 -h >/dev/null 2>&1 ;then
|
||||||
kwriteconfig5 --file kioslaverc --group "Proxy Settings" --key "ProxyType" 2
|
|
||||||
kwriteconfig5 --file kioslaverc --group "Proxy Settings" --key "Proxy Config Script" "http://127.0.0.1:$1/ui/pac"
|
kwriteconfig5 --file kioslaverc --group "Proxy Settings" --key "Proxy Config Script" "http://127.0.0.1:$1/ui/pac"
|
||||||
|
kwriteconfig5 --file kioslaverc --group "Proxy Settings" --key "ProxyType" 2
|
||||||
|
[ "$?" = 0 ] && check=$?
|
||||||
#环境变量方式
|
#环境变量方式
|
||||||
else
|
fi
|
||||||
|
if [ -z "$check" ];then
|
||||||
[ -w ~/.bashrc ] && profile=~/.bashrc
|
[ -w ~/.bashrc ] && profile=~/.bashrc
|
||||||
[ -w /etc/profile ] && profile=/etc/profile
|
[ -w /etc/profile ] && profile=/etc/profile
|
||||||
echo 'export all_proxy=http://127.0.0.1:'"$1" >> $profile
|
echo 'export all_proxy=http://127.0.0.1:'"$1" >> $profile
|
||||||
|
|
Loading…
Reference in New Issue
Block a user