mirror of
https://github.com/kenzok8/openwrt-packages.git
synced 2025-05-01 05:30:21 +08:00
603 lines
26 KiB
Bash
Executable File
603 lines
26 KiB
Bash
Executable File
#!/bin/sh
|
||
# set -x
|
||
|
||
. /lib/functions.sh
|
||
|
||
CONFIG=koolproxy
|
||
KP_DIR=/usr/share/koolproxy
|
||
TMP_DIR=/tmp/koolproxy
|
||
LOGFILE="/var/log/koolproxy.log"
|
||
KSROOT=/usr/share
|
||
#source $KSROOT/scripts/base.sh
|
||
#eval `dbus export koolproxyR_`
|
||
alias echo_date='echo $(date +%Y年%m月%d日\ %X):'
|
||
|
||
url_cjx="https://shaoxia1991.coding.net/p/cjxlist/d/cjxlist/git/raw/master/cjx-annoyance.txt"
|
||
url_kp="https://raw.githubusercontent.com/houzi-/CDN/master/kp.dat"
|
||
url_kp_md5="https://raw.githubusercontent.com/houzi-/CDN/master/kp.dat.md5"
|
||
url_easylist="https://easylist-downloads.adblockplus.org/easylistchina.txt"
|
||
url_yhosts="https://shaoxia1991.coding.net/p/yhosts/d/yhosts/git/raw/master/hosts"
|
||
url_yhosts1="https://shaoxia1991.coding.net/p/yhosts/d/yhosts/git/raw/master/data/tvbox.txt"
|
||
kpr_our_rule="https://shaoxia1991.coding.net/p/koolproxyR_rule_list/d/koolproxyR_rule_list/git/raw/master/kpr_our_rule.txt"
|
||
url_fanboy="https://secure.fanboy.co.nz/fanboy-annoyance.txt"
|
||
|
||
#在订阅中的用户地址改为,这个地址速度更快:https://dev.tencent.com/u/shaoxia1991/p/koolproxyR_rule_list/git/raw/master/kpr_our_rule.txt
|
||
|
||
config_t_get() {
|
||
local index=0
|
||
[ -n "$4" ] && index=$4
|
||
local ret=$(uci get $CONFIG.@$1[$index].$2 2>/dev/null)
|
||
echo ${ret:=$3}
|
||
}
|
||
|
||
limit_log() {
|
||
local log=$1
|
||
[ ! -f "$log" ] && return
|
||
local sc=100
|
||
[ -n "$2" ] && sc=$2
|
||
local count=$(grep -c "" $log)
|
||
if [ $count -gt $sc ];then
|
||
let count=count-$sc
|
||
sed -i "1,$count d" $log
|
||
fi
|
||
}
|
||
|
||
init_env() {
|
||
rm -rf "$TMP_DIR"
|
||
mkdir -p "$TMP_DIR"
|
||
}
|
||
|
||
restart_koolproxy() {
|
||
/etc/init.d/koolproxy restart
|
||
}
|
||
|
||
__compare_file() {
|
||
local descript=$1
|
||
local localPath=$2
|
||
local remoteUrl=$3
|
||
|
||
echo $(date "+%F %T"): ------------------- $descript更新 ------------------- >>$LOGFILE
|
||
local filename=`basename $localPath`
|
||
local remotePath="$TMP_DIR/$filename"
|
||
wget-ssl -qT5 --no-check-certificate "$remoteUrl" -O "$remotePath"
|
||
if [ "$?" == "0" ]; then
|
||
if [ -f "$localPath" ]; then
|
||
localMD5=`md5sum "$localPath" | awk '{print $1}'`
|
||
localNum=`cat "$localPath" | grep -v '^!' | wc -l`
|
||
else
|
||
localMD5="文件不存在"
|
||
localNum="0"
|
||
fi
|
||
remoteMD5=`md5sum "$remotePath" | awk '{print $1}'`
|
||
remoteNum=`cat "$remotePath" | grep -v '^!' | wc -l`
|
||
|
||
echo $(date "+%F %T"): 本地版本MD5:$localMD5 >>$LOGFILE
|
||
echo $(date "+%F %T"): 本地版本条数:$localNum >>$LOGFILE
|
||
|
||
echo $(date "+%F %T"): 在线版本MD5:$remoteMD5 >>$LOGFILE
|
||
echo $(date "+%F %T"): 在线版本条数:$remoteNum >>$LOGFILE
|
||
|
||
|
||
if [ "$localMD5" != "$remoteMD5" ];then
|
||
echo $(date "+%F %T"): 检测到更新,开始更新规则! >>$LOGFILE
|
||
mv -f "$remotePath" "$localPath"
|
||
echo $(date "+%F %T"): 更新成功! >>$LOGFILE
|
||
|
||
return 0
|
||
fi
|
||
else
|
||
echo "$(date "+%F %T"): 获取在线版本时出现错误! " >>$LOGFILE
|
||
|
||
fi
|
||
return 1
|
||
}
|
||
|
||
__update_rule() {
|
||
local name
|
||
local file
|
||
local exrule
|
||
local enable
|
||
config_get name $1 name
|
||
config_get file $1 file
|
||
config_get exrule $1 url
|
||
config_get enable $1 load
|
||
if [ -n "$file" ] && [ -n "$exrule" ]; then
|
||
if [ $enable -ne 1 ]; then
|
||
return
|
||
fi
|
||
__compare_file "$name" "$KP_DIR/data/rules/$file" "$exrule"
|
||
if [ "$?" == "0" ]; then
|
||
uci set koolproxy.$1.time="`date +%Y-%m-%d" "%H:%M`"
|
||
uci commit koolproxy
|
||
RESTART_KOOLPROXY=true
|
||
fi
|
||
cat $KP_DIR/data/rules/$file >>$KP_DIR/data/rules/user.txt
|
||
|
||
fi
|
||
}
|
||
|
||
kpr_update_rules() {
|
||
echo $(date "+%F %T"): ------------------- 内置规则更新 ------------------- >>$LOGFILE
|
||
echo_date =======================================================================================================
|
||
echo_date 开始更新koolproxyR的规则,请等待...
|
||
# 赋予文件夹权限
|
||
chmod -R 777 $KSROOT/koolproxy/data/rules
|
||
# update 中国简易列表 2.0
|
||
if [[ "1" == "1" ]]; then
|
||
echo_date " ---------------------------------------------------------------------------------------"
|
||
# wget --no-check-certificate --timeout=8 -qO - $url_easylist > /tmp/easylistchina.txt
|
||
for i in {1..5}; do
|
||
wget -4 -a /tmp/upload/kpr_log.txt -O /tmp/easylistchina.txt $url_easylist
|
||
easylistchina_rule_nu_local=`grep -E -v "^!" /tmp/easylistchina.txt | wc -l`
|
||
if [[ "$easylistchina_rule_nu_local" -gt 5000 ]]; then
|
||
break
|
||
else
|
||
echo_date easylistchina规则文件下载失败
|
||
koolproxyR_basic_easylist_failed=1
|
||
fi
|
||
done
|
||
for i in {1..5}; do
|
||
wget -4 -a /tmp/upload/kpr_log.txt -O /tmp/cjx-annoyance.txt $url_cjx
|
||
cjx_rule_nu_local=`grep -E -v "^!" /tmp/cjx-annoyance.txt | wc -l`
|
||
if [[ "$cjx_rule_nu_local" -gt 500 ]]; then
|
||
break
|
||
else
|
||
echo_date cjx-annoyance规则文件下载失败
|
||
koolproxyR_basic_easylist_failed=1
|
||
fi
|
||
done
|
||
#for i in {1..5}; do
|
||
# wget -4 -a /tmp/upload/kpr_log.txt -O $KSROOT/koolproxy/data/rules/kpr_our_rule.txt $kpr_our_rule
|
||
# kpr_our_rule_nu_local=`grep -E -v "^!" $KSROOT/koolproxy/data/rules/kpr_our_rule.txt | wc -l`
|
||
# if [[ "$kpr_our_rule_nu_local" -gt 500 ]]; then
|
||
# break
|
||
# else
|
||
# echo_date kpr_our_rule规则文件下载失败
|
||
# koolproxyR_basic_easylist_failed=1
|
||
# fi
|
||
#done
|
||
|
||
# expr 进行运算,将统计到的规则条数相加 如果条数大于 10000 条就说明下载完毕
|
||
#easylistchina_rule_local=`expr $kpr_our_rule_nu_local + $cjx_rule_nu_local + $easylistchina_rule_nu_local`
|
||
easylistchina_rule_local=`expr $cjx_rule_nu_local + $easylistchina_rule_nu_local`
|
||
cat /tmp/cjx-annoyance.txt >> /tmp/easylistchina.txt
|
||
rm /tmp/cjx-annoyance.txt
|
||
easylist_rules_local=`cat $KSROOT/koolproxy/data/rules/easylistchina.txt | sed -n '3p'|awk '{print $3,$4}'`
|
||
easylist_rules_local1=`cat /tmp/easylistchina.txt | sed -n '3p'|awk '{print $3,$4}'`
|
||
|
||
echo_date KPR主规则的本地版本号: $easylist_rules_local
|
||
echo_date KPR主规则的在线版本号: $easylist_rules_local1
|
||
if [[ "$koolproxyR_basic_easylist_failed" != "1" ]]; then
|
||
if [[ "$easylistchina_rule_local" -gt 10000 ]]; then
|
||
if [[ "$easylist_rules_local" != "$easylist_rules_local1" ]]; then
|
||
echo_date 检测到 KPR主规则 已更新,现在开始更新...
|
||
echo_date 将临时的KPR主规则文件移动到指定位置
|
||
mv /tmp/easylistchina.txt $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
koolproxyR_https_ChinaList=1
|
||
else
|
||
echo_date 检测到 KPR主规则本地版本号和在线版本号相同,那还更新个毛啊!
|
||
fi
|
||
fi
|
||
else
|
||
echo_date KPR主规则文件下载失败!
|
||
fi
|
||
else
|
||
echo_date 未打开 KPR主规则 的更新开关!
|
||
fi
|
||
|
||
# update 补充规则
|
||
if [[ "1" == "1" ]]; then
|
||
echo_date " ---------------------------------------------------------------------------------------"
|
||
for i in {1..5}; do
|
||
wget -4 -a /tmp/upload/kpr_log.txt -O /tmp/yhosts.txt $url_yhosts
|
||
wget -4 -a /tmp/upload/kpr_log.txt -O /tmp/tvbox.txt $url_yhosts1
|
||
cat /tmp/tvbox.txt >> /tmp/yhosts.txt
|
||
replenish_rules_local=`cat $KSROOT/koolproxy/data/rules/yhosts.txt | sed -n '2p' | cut -d "=" -f2`
|
||
replenish_rules_local1=`cat /tmp/yhosts.txt | sed -n '2p' | cut -d "=" -f2`
|
||
mobile_nu_local=`grep -E -v "^!" /tmp/yhosts.txt | wc -l`
|
||
echo_date 补充规则本地版本号: $replenish_rules_local
|
||
echo_date 补充规则在线版本号: $replenish_rules_local1
|
||
if [[ "$mobile_nu_local" -gt 5000 ]]; then
|
||
if [[ "$replenish_rules_local" != "$replenish_rules_local1" ]]; then
|
||
echo_date 将临时文件覆盖到原始 补充规则 文件
|
||
mv /tmp/yhosts.txt $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
koolproxyR_https_mobile=1
|
||
break
|
||
else
|
||
echo_date 检测到 补充规则 本地版本号和在线版本号相同,那还更新个毛啊!
|
||
fi
|
||
else
|
||
echo_date 补充规则文件下载失败!
|
||
fi
|
||
done
|
||
else
|
||
echo_date 未打开 补充规则 的更新开关!
|
||
fi
|
||
|
||
# update 视频规则
|
||
if [[ "1" == "1" ]] || [[ -n "$1" ]]; then
|
||
echo_date " ---------------------------------------------------------------------------------------"
|
||
for i in {1..5}; do
|
||
kpr_video_md5=`md5sum $KSROOT/koolproxy/data/rules/kp.dat | awk '{print $1}'`
|
||
wget -4 -a /tmp/upload/kpr_log.txt -O /tmp/kp.dat.md5 $url_kp_md5
|
||
kpr_video_new_md5=`cat /tmp/kp.dat.md5 | sed -n '1p'`
|
||
echo_date 远程视频规则md5:$kpr_video_new_md5
|
||
echo_date 您本地视频规则md5:$kpr_video_md5
|
||
|
||
if [[ "$kpr_video_md5" != "$kpr_video_new_md5" ]]; then
|
||
echo_date 检测到新版视频规则.开始更新..........
|
||
wget -4 -a /tmp/upload/kpr_log.txt -O /tmp/kp.dat $url_kp
|
||
kpr_video_download_md5=`md5sum /tmp/kp.dat | awk '{print $1}'`
|
||
echo_date 您下载的视频规则md5:$kpr_video_download_md5
|
||
if [[ "$kpr_video_download_md5" == "$kpr_video_new_md5" ]]; then
|
||
echo_date 将临时文件覆盖到原始 视频规则 文件
|
||
mv /tmp/kp.dat $KSROOT/koolproxy/data/rules/kp.dat
|
||
mv /tmp/kp.dat.md5 $KSROOT/koolproxy/data/rules/kp.dat.md5
|
||
break
|
||
else
|
||
echo_date 视频规则md5校验不通过...
|
||
fi
|
||
else
|
||
echo_date 检测到 视频规则 本地版本号和在线版本号相同,那还更新个毛啊!
|
||
fi
|
||
done
|
||
else
|
||
echo_date 未打开 视频规则 的更新开关!
|
||
fi
|
||
|
||
# update fanboy规则
|
||
if [[ "1" == "1" ]]; then
|
||
echo_date " ---------------------------------------------------------------------------------------"
|
||
for i in {1..5}; do
|
||
wget -4 -a /tmp/upload/kpr_log.txt -O /tmp/fanboy-annoyance.txt $url_fanboy
|
||
# wget --no-check-certificate --timeout=8 -qO - $url_fanboy > /tmp/fanboy-annoyance.txt
|
||
# 检测是否开启fanboy 全规则版本
|
||
if [[ "$koolproxyR_fanboy_all_rules" == "1" ]]; then
|
||
fanboy_rules_local=`cat $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt | sed -n '4p'|awk '{print $3,$4}'`
|
||
fanboy_rules_local1=`cat /tmp/fanboy-annoyance.txt | sed -n '4p'|awk '{print $3,$4}'`
|
||
else
|
||
fanboy_rules_local=`cat $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt | sed -n '3p'|awk '{print $3,$4}'`
|
||
fanboy_rules_local1=`cat /tmp/fanboy-annoyance.txt | sed -n '3p'|awk '{print $3,$4}'`
|
||
fi
|
||
fanboy_nu_local=`grep -E -v "^!" /tmp/fanboy-annoyance.txt | wc -l`
|
||
|
||
echo_date fanboy规则本地版本号: $fanboy_rules_local
|
||
echo_date fanboy规则在线版本号: $fanboy_rules_local1
|
||
if [[ "$fanboy_nu_local" -gt 15000 ]]; then
|
||
if [[ "$fanboy_rules_local" != "$fanboy_rules_local1" ]]; then
|
||
echo_date 检测到新版本 fanboy规则 列表,开始更新...
|
||
echo_date 将临时文件覆盖到原始 fanboy规则 文件
|
||
mv /tmp/fanboy-annoyance.txt $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt
|
||
koolproxyR_https_fanboy=1
|
||
break
|
||
else
|
||
echo_date 检测到 fanboy规则 本地版本号和在线版本号相同,那还更新个毛啊!
|
||
fi
|
||
else
|
||
echo_date fanboy规则 文件下载失败!
|
||
fi
|
||
done
|
||
else
|
||
echo_date 未打开 fanboy规则 的更新开关!
|
||
fi
|
||
|
||
rm -rf /tmp/fanboy-annoyance.txt
|
||
rm -rf /tmp/yhosts.txt
|
||
rm -rf /tmp/easylistchina.txt
|
||
|
||
if [[ "$koolproxyR_https_fanboy" == "1" ]]; then
|
||
echo_date 正在优化 fanboy规则。。。。。
|
||
# 删除导致KP崩溃的规则
|
||
# 听说高手?都打的很多、这样才能体现技术
|
||
sed -i '/^\$/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt
|
||
sed -i '/\*\$/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt
|
||
# 给三大视频网站放行 由kp.dat负责
|
||
sed -i '/youku.com/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt
|
||
sed -i '/iqiyi.com/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt
|
||
sed -i '/qq.com/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt
|
||
sed -i '/g.alicdn.com/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt
|
||
sed -i '/tudou.com/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt
|
||
sed -i '/gtimg.cn/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt
|
||
# 给知乎放行
|
||
sed -i '/zhihu.com/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt
|
||
|
||
|
||
# 将规则转化成kp能识别的https
|
||
cat $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt | grep "^||" | sed 's#^||#||https://#g' >> $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
# 移出https不支持规则domain=
|
||
sed -i 's/\(,domain=\).*//g' $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
sed -i 's/\(\$domain=\).*//g' $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
sed -i 's/\(domain=\).*//g' $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
sed -i '/\^$/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
sed -i '/\^\*\.gif/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
sed -i '/\^\*\.jpg/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
|
||
cat $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt | grep "^||" | sed 's#^||#||http://#g' >> $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
|
||
cat $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt | grep -i '^[0-9a-z]'| grep -v '^http'| sed 's#^#https://#g' >> $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
cat $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt | grep -i '^[0-9a-z]'| grep -v '^http'| sed 's#^#http://#g' >> $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
cat $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt | grep -i '^[0-9a-z]'| grep -i '^http' >> $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
|
||
|
||
# 给github放行
|
||
sed -i '/github/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
# 给api.twitter.com的https放行
|
||
sed -i '/twitter.com/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
# 给facebook.com的https放行
|
||
sed -i '/facebook.com/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
sed -i '/fbcdn.net/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
# 给 instagram.com 放行
|
||
sed -i '/instagram.com/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
# 给 twitch.tv 放行
|
||
sed -i '/twitch.tv/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
# 删除可能导致卡顿的HTTPS规则
|
||
sed -i '/\.\*\//d' $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
# 给国内三大电商平台放行
|
||
sed -i '/jd.com/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
sed -i '/taobao.com/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
sed -i '/tmall.com/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt
|
||
|
||
# 删除不必要信息重新打包 15 表示从第15行开始 $表示结束
|
||
sed -i '15,$d' $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt
|
||
# 合二归一
|
||
cat $KSROOT/koolproxy/data/rules/fanboy-annoyance_https.txt >> $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt
|
||
# 删除可能导致kpr卡死的神奇规则
|
||
sed -i '/https:\/\/\*/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt
|
||
# 给 netflix.com 放行
|
||
sed -i '/netflix.com/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt
|
||
# 给 tvbs.com 放行
|
||
sed -i '/tvbs.com/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt
|
||
sed -i '/googletagmanager.com/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt
|
||
# 给 microsoft.com 放行
|
||
sed -i '/microsoft.com/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt
|
||
# 给apple的https放行
|
||
sed -i '/apple.com/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt
|
||
sed -i '/mzstatic.com/d' $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt
|
||
# 终极 https 卡顿优化 grep -n 显示行号 awk -F 分割数据 sed -i "${del_rule}d" 需要""" 和{}引用变量
|
||
# 当 koolproxyR_del_rule 是1的时候就一直循环,除非 del_rule 变量为空了。
|
||
koolproxyR_del_rule=1
|
||
while [ $koolproxyR_del_rule = 1 ];do
|
||
del_rule=`cat $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt | grep -n 'https://' | grep '\*' | grep -v '/\*'| grep -v '\^\*' | grep -v '\*\=' | grep -v '\$s\@' | grep -v '\$r\@'| awk -F":" '{print $1}' | sed -n '1p'`
|
||
if [[ "$del_rule" != "" ]]; then
|
||
sed -i "${del_rule}d" $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt
|
||
else
|
||
koolproxyR_del_rule=0
|
||
fi
|
||
done
|
||
|
||
cp $KSROOT/koolproxy/data/rules/fanboy-annoyance.txt $KSROOT/koolproxy/data/rules/fanboy.txt
|
||
else
|
||
echo_date 跳过优化 fanboy规则。。。。。
|
||
fi
|
||
|
||
|
||
|
||
if [[ "$koolproxyR_https_ChinaList" == "1" ]]; then
|
||
echo_date 正在优化 KPR主规则。。。。。
|
||
sed -i '/^\$/d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
sed -i '/\*\$/d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
# 给btbtt.替换过滤规则。
|
||
sed -i 's#btbtt.\*#\*btbtt.\*#g' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
# 给手机百度图片放行
|
||
sed -i '/baidu.com\/it\/u/d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
# # 给手机百度放行
|
||
# sed -i '/mbd.baidu.comd' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
# 给知乎放行
|
||
sed -i '/zhihu.com/d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
# 给apple的https放行
|
||
sed -i '/apple.com/d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
sed -i '/mzstatic.com/d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
|
||
|
||
|
||
# 将规则转化成kp能识别的https
|
||
cat $KSROOT/koolproxy/data/rules/easylistchina.txt | grep "^||" | sed 's#^||#||https://#g' >> $KSROOT/koolproxy/data/rules/easylistchina_https.txt
|
||
# 移出https不支持规则domain=
|
||
sed -i 's/\(,domain=\).*//g' $KSROOT/koolproxy/data/rules/easylistchina_https.txt
|
||
sed -i 's/\(\$domain=\).*//g' $KSROOT/koolproxy/data/rules/easylistchina_https.txt
|
||
sed -i 's/\(domain=\).*//g' $KSROOT/koolproxy/data/rules/easylistchina_https.txt
|
||
sed -i '/\^$/d' $KSROOT/koolproxy/data/rules/easylistchina_https.txt
|
||
sed -i '/\^\*\.gif/d' $KSROOT/koolproxy/data/rules/easylistchina_https.txt
|
||
sed -i '/\^\*\.jpg/d' $KSROOT/koolproxy/data/rules/easylistchina_https.txt
|
||
|
||
|
||
|
||
cat $KSROOT/koolproxy/data/rules/easylistchina.txt | grep "^||" | sed 's#^||#||http://#g' >> $KSROOT/koolproxy/data/rules/easylistchina_https.txt
|
||
|
||
cat $KSROOT/koolproxy/data/rules/easylistchina.txt | grep -i '^[0-9a-z]'| grep -v '^http'| sed 's#^#https://#g' >> $KSROOT/koolproxy/data/rules/easylistchina_https.txt
|
||
cat $KSROOT/koolproxy/data/rules/easylistchina.txt | grep -i '^[0-9a-z]'| grep -v '^http'| sed 's#^#http://#g' >> $KSROOT/koolproxy/data/rules/easylistchina_https.txt
|
||
cat $KSROOT/koolproxy/data/rules/easylistchina.txt | grep -i '^[0-9a-z]'| grep -i '^http' >> $KSROOT/koolproxy/data/rules/easylistchina_https.txt
|
||
# 给facebook.com的https放行
|
||
sed -i '/facebook.com/d' $KSROOT/koolproxy/data/rules/easylistchina_https.txt
|
||
sed -i '/fbcdn.net/d' $KSROOT/koolproxy/data/rules/easylistchina_https.txt
|
||
# 删除可能导致卡顿的HTTPS规则
|
||
sed -i '/\.\*\//d' $KSROOT/koolproxy/data/rules/easylistchina_https.txt
|
||
|
||
|
||
|
||
# 删除不必要信息重新打包 15 表示从第15行开始 $表示结束
|
||
sed -i '6,$d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
# 合二归一
|
||
cat $KSROOT/koolproxy/data/rules/easylistchina_https.txt >> $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
# 给三大视频网站放行 由kp.dat负责
|
||
sed -i '/youku.com/d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
sed -i '/iqiyi.com/d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
sed -i '/g.alicdn.com/d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
sed -i '/tudou.com/d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
sed -i '/gtimg.cn/d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
# 给https://qq.com的html规则放行
|
||
sed -i '/qq.com/d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
# 删除可能导致kpr卡死的神奇规则
|
||
sed -i '/https:\/\/\*/d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
# 给国内三大电商平台放行
|
||
sed -i '/jd.com/d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
sed -i '/taobao.com/d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
sed -i '/tmall.com/d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
# 给 netflix.com 放行
|
||
sed -i '/netflix.com/d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
# 给 tvbs.com 放行
|
||
sed -i '/tvbs.com/d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
sed -i '/googletagmanager.com/d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
# 给 microsoft.com 放行
|
||
sed -i '/microsoft.com/d' $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
# 终极 https 卡顿优化 grep -n 显示行号 awk -F 分割数据 sed -i "${del_rule}d" 需要""" 和{}引用变量
|
||
# 当 koolproxyR_del_rule 是1的时候就一直循环,除非 del_rule 变量为空了。
|
||
koolproxyR_del_rule=1
|
||
while [ $koolproxyR_del_rule = 1 ];do
|
||
del_rule=`cat $KSROOT/koolproxy/data/rules/easylistchina.txt | grep -n 'https://' | grep '\*' | grep -v '/\*'| grep -v '\^\*' | grep -v '\*\=' | grep -v '\$s\@' | grep -v '\$r\@'| awk -F":" '{print $1}' | sed -n '1p'`
|
||
if [[ "$del_rule" != "" ]]; then
|
||
sed -i "${del_rule}d" $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
else
|
||
koolproxyR_del_rule=0
|
||
fi
|
||
done
|
||
#cat $KSROOT/koolproxy/data/rules/kpr_our_rule.txt >> $KSROOT/koolproxy/data/rules/easylistchina.txt
|
||
|
||
else
|
||
echo_date 跳过优化 KPR主规则。。。。。
|
||
fi
|
||
|
||
|
||
if [[ "$koolproxyR_https_mobile" == "1" ]]; then
|
||
# 删除不必要信息重新打包 0-11行 表示从第15行开始 $表示结束
|
||
# sed -i '1,11d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
echo_date 正在优化 补充规则yhosts。。。。。
|
||
|
||
# 开始Kpr规则化处理
|
||
cat $KSROOT/koolproxy/data/rules/yhosts.txt > $KSROOT/koolproxy/data/rules/yhosts_https.txt
|
||
sed -i 's/^127.0.0.1\ /||https:\/\//g' $KSROOT/koolproxy/data/rules/yhosts_https.txt
|
||
cat $KSROOT/koolproxy/data/rules/yhosts.txt >> $KSROOT/koolproxy/data/rules/yhosts_https.txt
|
||
sed -i 's/^127.0.0.1\ /||http:\/\//g' $KSROOT/koolproxy/data/rules/yhosts_https.txt
|
||
# 处理tvbox.txt本身规则。
|
||
sed -i 's/^127.0.0.1\ /||/g' /tmp/tvbox.txt
|
||
# 合二归一
|
||
cat $KSROOT/koolproxy/data/rules/yhosts_https.txt > $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
cat /tmp/tvbox.txt >> $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
rm -rf /tmp/tvbox.txt
|
||
|
||
|
||
# 此处对yhosts进行单独处理
|
||
sed -i 's/^@/!/g' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
sed -i 's/^#/!/g' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
sed -i '/localhost/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
sed -i '/broadcasthost/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
sed -i '/broadcasthost/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
sed -i '/cn.bing.com/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
# 给三大视频网站放行 由kp.dat负责
|
||
sed -i '/youku.com/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
sed -i '/iqiyi.com/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
sed -i '/g.alicdn.com/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
sed -i '/tudou.com/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
sed -i '/gtimg.cn/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
|
||
|
||
# 给知乎放行
|
||
sed -i '/zhihu.com/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
# 给https://qq.com的html规则放行
|
||
sed -i '/qq.com/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
# 给github的https放行
|
||
sed -i '/github/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
# 给apple的https放行
|
||
sed -i '/apple.com/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
sed -i '/mzstatic.com/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
# 给api.twitter.com的https放行
|
||
sed -i '/twitter.com/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
# 给facebook.com的https放行
|
||
sed -i '/facebook.com/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
sed -i '/fbcdn.net/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
# 给 instagram.com 放行
|
||
sed -i '/instagram.com/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
# 删除可能导致kpr卡死的神奇规则
|
||
sed -i '/https:\/\/\*/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
# 给国内三大电商平台放行
|
||
sed -i '/jd.com/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
sed -i '/taobao.com/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
sed -i '/tmall.com/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
# 给 netflix.com 放行
|
||
sed -i '/netflix.com/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
# 给 tvbs.com 放行
|
||
sed -i '/tvbs.com/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
sed -i '/googletagmanager.com/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
# 给 microsoft.com 放行
|
||
sed -i '/microsoft.com/d' $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
# 终极 https 卡顿优化 grep -n 显示行号 awk -F 分割数据 sed -i "${del_rule}d" 需要""" 和{}引用变量
|
||
# 当 koolproxyR_del_rule 是1的时候就一直循环,除非 del_rule 变量为空了。
|
||
koolproxyR_del_rule=1
|
||
while [ $koolproxyR_del_rule = 1 ];do
|
||
del_rule=`cat $KSROOT/koolproxy/data/rules/yhosts.txt | grep -n 'https://' | grep '\*' | grep -v '/\*'| grep -v '\^\*' | grep -v '\*\=' | grep -v '\$s\@' | grep -v '\$r\@'| awk -F":" '{print $1}' | sed -n '1p'`
|
||
if [[ "$del_rule" != "" ]]; then
|
||
sed -i "${del_rule}d" $KSROOT/koolproxy/data/rules/yhosts.txt
|
||
else
|
||
koolproxyR_del_rule=0
|
||
fi
|
||
done
|
||
|
||
|
||
else
|
||
echo_date 跳过优化 补充规则yhosts。。。。。
|
||
fi
|
||
# 删除临时文件
|
||
rm -rf $KSROOT/koolproxy/data/rules/*_https.txt
|
||
#rm $KSROOT/koolproxy/data/rules/kpr_our_rule.txt
|
||
|
||
|
||
|
||
echo_date 所有规则更新并优化完毕!
|
||
echo_date =======================================================================================================
|
||
easylist_rules_local=`cat /usr/share/koolproxy/data/rules/easylistchina.txt | sed -n '3p'|awk '{print $3,$4}'`
|
||
fanboy_rules_local=`cat /usr/share/koolproxy/data/rules/fanboy.txt | sed -n '3p'|awk '{print $3,$4}'`
|
||
replenish_rules_local=`cat /usr/share/koolproxy/data/rules/yhosts.txt | sed -n '2p' | cut -d "=" -f2`
|
||
echo $(date "+%F %T"): -------------------easylist version $easylist_rules_local >>$LOGFILE
|
||
echo $(date "+%F %T"): -------------------fanboy version $fanboy_rules_local >>$LOGFILE
|
||
echo $(date "+%F %T"): -------------------yhosts version $replenish_rules_local >>$LOGFILE
|
||
|
||
echo $(date "+%F %T"): ------------------- 内置规则更新成功! ------------------- >>$LOGFILE
|
||
|
||
RESTART_KOOLPROXY=true
|
||
}
|
||
|
||
update_rss_rules() {
|
||
cp $KP_DIR/data/user.txt $KP_DIR/data/rules/user.txt
|
||
config_load $CONFIG
|
||
config_foreach __update_rule rss_rule
|
||
}
|
||
|
||
|
||
update_adb_host() {
|
||
/usr/sbin/adblockplus >>$LOGFILE 2>&1 &
|
||
if [ "$?" == "0" ]; then
|
||
RESTART_DNSMASQ=true
|
||
fi
|
||
}
|
||
|
||
# main process
|
||
init_env
|
||
limit_log $LOGFILE
|
||
|
||
#update_kpr_rules
|
||
kpr_update_rules
|
||
|
||
|
||
# update user rules
|
||
update_rss_rules
|
||
|
||
|
||
koolproxy_mode=$(config_t_get global koolproxy_mode 1)
|
||
koolproxy_host=$(config_t_get global koolproxy_host 0)
|
||
|
||
# update ADB Plus Host
|
||
if [ "$koolproxy_mode" == "2" ] && [ "$koolproxy_host" == "1" ];then
|
||
update_adb_host
|
||
fi
|
||
|
||
if [ $RESTART_KOOLPROXY ]; then
|
||
restart_koolproxy
|
||
echo $(date "+%F %T"): 重启koolproxy进程 >>$LOGFILE
|
||
echo >>$LOGFILE
|
||
fi
|
||
|
||
init_env
|
||
|
||
|
||
|