From 3cac53eb80859c016fbbe010edea459340186b73 Mon Sep 17 00:00:00 2001 From: bol-van Date: Thu, 17 Mar 2022 14:13:21 +0300 Subject: [PATCH] ipset: get_antizapret_domains.sh --- docs/readme.txt | 9 ++++--- install_easy.sh | 9 +++---- ipset/get_antizapret_domains.sh | 47 +++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 9 deletions(-) create mode 100755 ipset/get_antizapret_domains.sh diff --git a/docs/readme.txt b/docs/readme.txt index d3b66b1..2b358f4 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -810,13 +810,14 @@ ip2net фильтрует входные данные, выкидывая неп Альтернативой ipset является использование tpws или nfqws со списком доменов. Может быть только один hostlist. -Поддерживаются 2 варианта : +Поддерживаются следующие варианты : 1) Внесите домены для дурения в ipset/zapret-hosts-users.txt. Удалите ipset/zapret-hosts.txt.gz. -Тогда init скрипт будет запускать tpws с листом zapret-hosts-users.txt. +Тогда init скрипт будет запускать tpws/nfqws с листом zapret-hosts-users.txt. -2) Список доменов РКН может быть получен скриптом ipset/get_reestr_hostlist.sh - кладется в ipset/zapret-hosts.txt.gz. +2) Список доменов РКН может быть получен скриптами ipset/get_reestr_hostlist.sh или ipset/get_antizapret_domains.sh +- кладется в ipset/zapret-hosts.txt.gz. Этот скрипт автоматически добавляет к списку РКН домены из zapret-hosts-user.txt и исключает zapret-hosts-exclude.txt. -init скрипт будет запускать tpws с листом zapret-hosts.txt.gz. +init скрипт будет запускать tpws/nfqws с листом zapret-hosts.txt.gz. При фильтрации по именам доменов демон должен запускаться без фильтрации по ipset. tpws и nfqws решают нужно ли применять дурение в зависимости от поля Host: в http запросе или SNI в TLS ClientHello. diff --git a/install_easy.sh b/install_easy.sh index c3c4a05..3def7dd 100755 --- a/install_easy.sh +++ b/install_easy.sh @@ -240,14 +240,13 @@ select_getlist() echo if ask_yes_no $D "do you want to auto download ip/host list"; then if [ "$MODE_FILTER" = "hostlist" ] ; then - local GL_OLD=$GETLIST - GETLIST="get_reestr_hostlist.sh" - [ "$GL_OLD" != "$GET_LIST" ] && write_config_var GETLIST + GETLISTS="get_antizapret_domains.sh get_reestr_hostlist.sh" + GETLIST_DEF="get_antizapret_domains.sh" else GETLISTS="get_user.sh get_antifilter_ip.sh get_antifilter_ipsmart.sh get_antifilter_ipsum.sh get_antifilter_ipresolve.sh get_antifilter_allyouneed.sh get_reestr_ip.sh get_reestr_combined.sh get_reestr_resolve.sh" - GETLIST_DEF="get_antifilter_ipsmart.sh" - ask_list GETLIST "$GETLISTS" "$GETLIST_DEF" && write_config_var GETLIST + GETLIST_DEF="get_antifilter_allyouneed.sh" fi + ask_list GETLIST "$GETLISTS" "$GETLIST_DEF" && write_config_var GETLIST return fi fi diff --git a/ipset/get_antizapret_domains.sh b/ipset/get_antizapret_domains.sh new file mode 100755 index 0000000..a6a3fd3 --- /dev/null +++ b/ipset/get_antizapret_domains.sh @@ -0,0 +1,47 @@ +#!/bin/sh + +IPSET_DIR="$(dirname "$0")" +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)" + +. "$IPSET_DIR/def.sh" + +# useful in case ipban set is used in custom scripts +FAIL= +getuser || FAIL=1 +"$IPSET_DIR/create_ipset.sh" +[ -n "$FAIL" ] && exit + +ZURL=https://antizapret.prostovpn.org/domains-export.txt +ZDOM="$TMPDIR/zapret.txt" + + +curl -k --fail --max-time 600 --connect-timeout 5 --retry 3 --max-filesize 251658240 "$ZURL" >"$ZDOM" || +{ + echo domain list download failed + exit 2 +} + +composite_list() +{ + # combine reestr and user list + if [ -f "$ZUSERLIST_EXCLUDE" ]; then + nice -n 5 $GREP -xvFf "$ZUSERLIST_EXCLUDE" "$ZDOM" + else + cat "$ZDOM" + fi + [ -f "$ZUSERLIST" ] && $AWK '{ print tolower($0) }' <"$ZUSERLIST" +} + +dlsize=$(LANG=C wc -c "$ZDOM" | xargs | cut -f 1 -d ' ') +if test $dlsize -lt 102400; then + echo list file is too small. can be bad. + exit 2 +fi + +composite_list | sort -u | zz "$ZHOSTLIST" + +rm -f "$ZDOM" + +hup_zapret_daemons + +exit 0