mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-02-15 03:51:51 +00:00
89 lines
2.3 KiB
Bash
89 lines
2.3 KiB
Bash
#!/bin/sh
|
|
|
|
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
|
|
|
|
checkmd5(){
|
|
local nowmd5=$(md5sum /tmp/adguard.list 2>/dev/null)
|
|
nowmd5=${nowmd5%% *}
|
|
local lastmd5=$(uci get AdGuardHome.AdGuardHome.gfwlistmd5 2>/dev/null)
|
|
if [ "$nowmd5" != "$lastmd5" ]; then
|
|
uci set AdGuardHome.AdGuardHome.gfwlistmd5="$nowmd5"
|
|
uci commit AdGuardHome
|
|
[ "$1" == "noreload" ] || /etc/init.d/AdGuardHome reload
|
|
fi
|
|
}
|
|
|
|
configpath=$(uci get AdGuardHome.AdGuardHome.configpath 2>/dev/null)
|
|
[ "$1" == "del" ] && sed -i '/programaddstart/,/programaddend/d' $configpath && checkmd5 "$2" && exit 0
|
|
gfwupstream=$(uci get AdGuardHome.AdGuardHome.gfwupstream 2>/dev/null)
|
|
if [ -z $gfwupstream ]; then
|
|
gfwupstream="tcp://208.67.220.220:5353"
|
|
fi
|
|
if [ ! -f "$configpath" ]; then
|
|
echo "please make a config first"
|
|
exit 1
|
|
fi
|
|
wget-ssl --no-check-certificate https://cdn.jsdelivr.net/gh/gfwlist/gfwlist/gfwlist.txt -O- | base64 -d > /tmp/gfwlist.txt
|
|
cat /tmp/gfwlist.txt | awk -v upst="$gfwupstream" 'BEGIN{getline;}{
|
|
s1=substr($0,1,1);
|
|
if (s1=="!")
|
|
{next;}
|
|
if (s1=="@"){
|
|
$0=substr($0,3);
|
|
s1=substr($0,1,1);
|
|
white=1;}
|
|
else{
|
|
white=0;
|
|
}
|
|
|
|
if (s1=="|")
|
|
{s2=substr($0,2,1);
|
|
if (s2=="|")
|
|
{
|
|
$0=substr($0,3);
|
|
split($0,d,"/");
|
|
$0=d[1];
|
|
}else{
|
|
split($0,d,"/");
|
|
$0=d[3];
|
|
}}
|
|
else{
|
|
split($0,d,"/");
|
|
$0=d[1];
|
|
}
|
|
star=index($0,"*");
|
|
if (star!=0)
|
|
{
|
|
$0=substr($0,star+1);
|
|
dot=index($0,".");
|
|
if (dot!=0)
|
|
$0=substr($0,dot+1);
|
|
else
|
|
next;
|
|
s1=substr($0,1,1);
|
|
}
|
|
if (s1==".")
|
|
{fin=substr($0,2);}
|
|
else{fin=$0;}
|
|
if (index(fin,".")==0) next;
|
|
if (index(fin,"%")!=0) next;
|
|
if (index(fin,":")!=0) next;
|
|
match(fin,"^[0-9\.]+")
|
|
if (RSTART==1 && RLENGTH==length(fin)) {print "ipset add gfwlist "fin>"/tmp/doipset.sh";next;}
|
|
if (fin=="" || finl==fin) next;
|
|
finl=fin;
|
|
if (white==0)
|
|
{print(" - '\''[/"fin"/]"upst"'\''");}
|
|
else{
|
|
print(" - '\''[/"fin"/]#'\''");}
|
|
}END{print(" - '\''[/programaddend/]#'\''")}' > /tmp/adguard.list
|
|
grep programaddstart $configpath
|
|
if [ "$?" == "0" ]; then
|
|
sed -i '/programaddstart/,/programaddend/c\ - '\''\[\/programaddstart\/\]#'\''' $configpath
|
|
sed -i '/programaddstart/'r/tmp/adguard.list $configpath
|
|
else
|
|
sed -i '1i\ - '\''[/programaddstart/]#'\''' /tmp/adguard.list
|
|
sed -i '/upstream_dns:/'r/tmp/adguard.list $configpath
|
|
fi
|
|
checkmd5 "$2"
|
|
rm -f /tmp/gfwlist.txt /tmp/adguard.list
|