From 1e2571ac8b304cbc19956d76b5fe33ddfca5b4d8 Mon Sep 17 00:00:00 2001
From: bolvan <k@vodka.home.kg>
Date: Mon, 6 May 2019 19:43:10 +0300
Subject: [PATCH] get_config.sh : download list from config

---
 config              |  2 +-
 docs/readme.txt     | 89 ++++++++++-----------------------------------
 install_easy.sh     |  2 +-
 ipset/get_config.sh | 10 +++++
 4 files changed, 32 insertions(+), 71 deletions(-)
 create mode 100755 ipset/get_config.sh

diff --git a/config b/config
index 20a92a9..9d6e7bf 100644
--- a/config
+++ b/config
@@ -21,7 +21,7 @@ TPWS_OPT_HTTPS="--split-pos=3"
 #SLAVE_ETH=eth0
 
 
-# for install_easy select which init script will be used to get ip or host list
+# select which init script will be used to get ip or host list
 # possible value : get_user.sh get_antizapret.sh get_combined.sh get_reestr.sh get_hostlist.sh
 # comment if not required
 GETLIST="get_antizapret.sh"
diff --git a/docs/readme.txt b/docs/readme.txt
index 63302d5..745afc7 100644
--- a/docs/readme.txt
+++ b/docs/readme.txt
@@ -158,6 +158,9 @@ get_reestr.sh может использовать мультипоточный 
 Все варианты рассмотренных скриптов автоматически создают и заполняют ipset.
 Варианты 2-4 дополнительно вызывают вариант 1.
 
+5) ipset/get_config.sh. этот скрипт вызывает то, что прописано в переменной GETLIST из файла config
+Если переменная не определена, то никаких действий не выполняется.
+
 На роутерах не рекомендуется вызывать эти скрипты чаще раза за 2 суток, поскольку сохранение идет
 либо во внутреннюю флэш память роутера, либо в случае extroot - на флэшку.
 В обоих случаях слишком частая запись может убить флэшку, но если это произойдет с внутренней
@@ -205,7 +208,7 @@ tpws должен запускаться без фильтрации по ipset.
 Выбор параметров
 ----------------
 
-Файл /opt/zapret/config
используется различными компонентами системы и содержит основные настройки.
+Файл /opt/zapret/config используется различными компонентами системы и содержит основные настройки.
 Его нужно просмотреть и при необходимости отредактировать.
 Выберите MODE :
 
@@ -231,8 +234,9 @@ TPWS_OPT_HTTPS="--split-pos=3"
 название внутреннего сетевого интерфейса (LAN).
 
 Параметр GETLIST указывает инсталятору install_easy.sh какой скрипт дергать
-для обновления списка заблокированных ip или хостов.
-
+для обновления списка заблокированных ip или хостов.
Он же вносится в crontab.
+Поместите сюда название скрипта, который будете использовать для обновления листов.
+Если не нужно, то параметр следует закомментировать.
 
 Пример установки на debian-подобную систему
 -------------------------------------------
@@ -265,41 +269,14 @@ TPWS_OPT_HTTPS="--split-pos=3"
 Включить автозапуск службы :
  systemctl enable zapret
 
-В зависимости от выбранного MODE :
-
-MODE содержит "ipset" :
-Удалить старые ip листы, если они были созданы ранее :
- rm /opt/zapret/ipset/zapret-ip.txt /opt/zapret/ipset/zapret-ip-user.txt /opt/zapret/ipset/zapret-ip-ipban.txt /opt/zapret/ipset/zapret-ip-user-ipban.txt
+Удалить старые листы, если они были созданы ранее :
+ rm /opt/zapret/ipset/zapret-ip.txt /opt/zapret/ipset/zapret-ip-user.txt /opt/zapret/ipset/zapret-ip-ipban.txt /opt/zapret/ipset/zapret-ip-user-ipban.txt /opt/zapret/ipset/zapret-hosts.txt
 По желанию прописать в /opt/zapret/ipset/zapret-hosts-user.txt свои домены.
-Выбрать каким скриптом из перечисленных будем получать список ip заблокированных адресов :
- /opt/zapret/ipset/get_user.sh
- /opt/zapret/ipset/get_antizapret.sh
- /opt/zapret/ipset/get_combined.sh
- /opt/zapret/ipset/get_reestr.sh
-Выполнить этот скрипт первый раз вручную для начального заполнения списка.
+Выполнить скрипт обновления листа :
+ /opt/zapret/ipset/get_config.sh
 Зашедулить задание обновления листа :
  crontab -e
- Создать строчку  "0 12 * * */2 <выбранный скрипт>"
-Например :
- Создать строчку  "0 12 * * */2 /opt/zapret/ipset/get_antizapret.sh"
-
-MODE содержит "hostlist" :
-Удалить список доменов РКН, если он уже есть :
- rm /opt/zapret/ipset/zapret-hosts.txt
-По желанию прописать в /opt/zapret/ipset/zapret-hosts-user.txt свои домены
-ЕСЛИ вы хотите использовать список заблокированных доменов РКН:
-Выполнить :
- /opt/zapret/ipset/get_hostlist.sh
-Зашедулить задание обновления листа :
- crontab -e
- Создать строчку  "0 12 * * */2 /opt/zapret/ipset/get_hostlist.sh"
-ИНАЧЕ будет использоваться только zapret-hosts-user.txt
-
-MODE=custom
-Сами должны знать что делать
-
-Иные MODE :
-Ничего делать не нужно
+ Создать строчку  "0 12 * * */2 /opt/zapret/ipset/get_config.sh"
 
 Запустить службу :
  systemctl start zapret
@@ -440,47 +417,20 @@ ipset можно выкинуть, если не будем пользовать
 
 Настроить параметры согласно разделу "Выбор параметров".
 
-В зависимости от выбранного MODE :
-
-MODE содержит "ipset" :
-Удалить старые ip листы, если они были созданы ранее :
- rm /opt/zapret/ipset/zapret-ip.txt /opt/zapret/ipset/zapret-ip-user.txt /opt/zapret/ipset/zapret-ip-ipban.txt /opt/zapret/ipset/zapret-ip-user-ipban.txt
+Удалить старые листы, если они были созданы ранее :
+ rm /opt/zapret/ipset/zapret-ip.txt /opt/zapret/ipset/zapret-ip-user.txt /opt/zapret/ipset/zapret-ip-ipban.txt /opt/zapret/ipset/zapret-ip-user-ipban.txt /opt/zapret/ipset/zapret-hosts.txt
 По желанию прописать в /opt/zapret/ipset/zapret-hosts-user.txt свои домены.
-Выбрать каким скриптом из перечисленных будем получать список ip заблокированных адресов :
- /opt/zapret/ipset/get_user.sh
- /opt/zapret/ipset/get_antizapret.sh
- /opt/zapret/ipset/get_combined.sh
- /opt/zapret/ipset/get_reestr.sh
-Выполнить этот скрипт первый раз вручную для начального заполнения списка.
+Выполнить скрипт обновления листа :
+ /opt/zapret/ipset/get_config.sh
 Зашедулить задание обновления листа :
  crontab -e
- Создать строчку  "0 12 * * */2 <выбранный скрипт>"
-Например :
- Создать строчку  "0 12 * * */2 /opt/zapret/ipset/get_antizapret.sh"
-
-MODE содержит "hostlist" :
-Удалить список доменов РКН, если он уже есть :
- rm /opt/zapret/ipset/zapret-hosts.txt
-По желанию прописать в /opt/zapret/ipset/zapret-hosts-user.txt свои домены
-ЕСЛИ вы хотите использовать список заблокированных доменов РКН:
-Выполнить :
- /opt/zapret/ipset/get_hostlist.sh
-Зашедулить задание обновления листа :
- crontab -e
- Создать строчку  "0 12 * * */2 /opt/zapret/ipset/get_hostlist.sh"
-ИНАЧЕ будет использоваться только zapret-hosts-user.txt
-
-MODE=custom
-Сами должны знать что делать
-
-Иные MODE :
-Ничего делать не нужно
+ Создать строчку  "0 12 * * */2 /opt/zapret/ipset/get_config.sh"
 
 Включить автозапуск службы и запустить ее :
  /etc/init.d/zapret enable
  /etc/init.d/zapret start
 
-В зависимости от выбранного в инит скрипте MODE скопировать нужный файл настроек фаервола :
+В зависимости от выбранного в файле config MODE скопировать нужный файл настроек фаервола :
  cp /opt/zapret/init.d/openwrt/firewall.zapret.$MODE /etc/firewall.zapret
 Например :
  cp /opt/zapret/init.d/openwrt/firewall.zapret.tpws_ipset_https /etc/firewall.zapret
@@ -506,13 +456,14 @@ MODE=custom
 ЕСЛИ СОВСЕМ ВСЕ УЖАСНО С МЕСТОМ : не надо устанавливать дополнительные пакеты через opkg.
 оставьте лишь /opt/zapret/tpws/tpws, /opt/zapret/config, /etc/init.d/zapret, /etc/firewall.zapret
 используйте MODE=tpws_all или tpws_all_https
-такой вариант потребует около 100 кб места
и полностью статичен.
+такой вариант потребует около 100 кб места
и полностью статичен.
 отсутствуют любые загрузки, обновления, изменения файлов.
 tpws без ipset использует всего лишь DNAT, который есть по умолчанию
 
 СОВЕТ : Покупайте только роутеры с USB. В USB можно воткнуть флэшку и вынести на нее корневую файловую систему
 или использовать ее в качестве оверлея. Не надо мучать себя, запихивая незапихиваемое в 8 мб встроенной флэшки.
 Для комфортной работы с zapret нужен роутер с 16 Mb встроенной памяти или USB разъемом и 64 (а лучше 128) Mb RAM.
+Списки РКН растут, скоро уже и 16 Mb не будет хватать (если уже не).
 
 
 Простая установка на openwrt
diff --git a/install_easy.sh b/install_easy.sh
index 9964cf0..b0d11b5 100755
--- a/install_easy.sh
+++ b/install_easy.sh
@@ -12,7 +12,7 @@ ZAPRET_CONFIG=$EXEDIR/config
 SYSTEMD_SYSV_GENERATOR=/lib/systemd/system-generators/systemd-sysv-generator
 SYSTEMD_SYSV_GENERATOR2=/usr$SYSTEMD_SYSV_GENERATOR
 
-[ -n "$GETLIST" ] && GET_LIST="$EXEDIR/ipset/$GETLIST"
+GET_LIST="$EXEDIR/ipset/get_config.sh"
 GET_LIST_PREFIX=/ipset/get_
 
 exists()
diff --git a/ipset/get_config.sh b/ipset/get_config.sh
new file mode 100755
index 0000000..0ae2c8f
--- /dev/null
+++ b/ipset/get_config.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+# run script specified in config
+
+SCRIPT=$(readlink -f $0)
+EXEDIR=$(dirname $SCRIPT)
+
+. "$EXEDIR/../config"
+
+[ -z "$GETLIST" ] && return
+[ -x "$EXEDIR/$GETLIST" ] && "$EXEDIR/$GETLIST"