From ff85cd8c0c97e38bddc4d588c5db580883c53fb9 Mon Sep 17 00:00:00 2001 From: bol-van Date: Sat, 12 Oct 2024 13:17:35 +0300 Subject: [PATCH] readme: multiple custom docs --- docs/changes.txt | 6 ++++++ docs/readme.txt | 41 ++++++++++++++++++++++++++++++++--------- 2 files changed, 38 insertions(+), 9 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 51bf952..ec76971 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -317,3 +317,9 @@ nfqws: multi-strategy v63: tpws: multi-strategy + +v64: + +blockcheck: warn if dpi bypass software is already running +blockcheck: TPWS_EXTRA, NFQWS_EXTRA +init.d: multiple custom scripts diff --git a/docs/readme.txt b/docs/readme.txt index 93a462e..54dd426 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -1572,18 +1572,42 @@ nfset-ы принадлежат только одной таблице, след Вариант custom -------------- -custom код вынесен в отдельный shell include +custom код вынесен в отдельные shell includes. +Поддерживается старый вариант в /opt/zapret/init.d/sysv/custom -или /opt/zapret/init.d/openwrt/custom +/opt/zapret/init.d/macos/custom +Он считается устаревшим. Актуальный вариант - помещать отдельные скрипты там же, но в директорию "custom.d". +Она будет просканирована стандартным образом, т.е. в алфавитном порядке, и каждый скрипт будет применен. +Рядом имеется "custom.d.examples". Это готовые скрипты, который можно копировать в "custom.d". +Особо стоит отметить "10-inherit-*". Они наследуют стандартные режимы nfqws/tpws/tpws-socks. +Полезно, чтобы не писать код заново. Достаточно лишь скопировать соответствующий файл. -Нужно свой код вписать в функции : +Для linux пишется код в функции zapret_custom_daemons zapret_custom_firewall zapret_custom_firewall_nft -В файле custom пишите ваш код, пользуясь хелперами из "functions" или "zapret". -Смотрите как там сделано добавление iptables или запуск демонов. +Для macos +zapret_custom_daemons +zapret_custom_firewall_v4 +zapret_custom_firewall_v6 + +zapret_custom_daemons поднимает демоны nfqws/tpws в нужном вам количестве и с нужными вам параметрами. +Особо обратите внимание на номер демона в функциях "run_daemon" и "do_daemon". +Они должны быть уникальными во всех скриптах. При накладке будет ошибка. +Так же следует избегать пересечения номеров портов tpws и очередей nfqws. +При пересечении какой-то из демонов не запустится. +Чтобы как-то нивелировать эту проблему, в examples используется переменная DNUM. +На ее базе считается диапазон номеров очередей (5 шт), которые использует этот скрипт. +При таком подходе достаточно, чтобы DNUM был везде уникален. +Поскольку номера очереди и портов имеют нумерацию до 65536, можно использовать DNUM до 13106. +Однако, следует оставить номера очереди 200-299 для стандартных режимов и не использовать их. + +custom скрипты могут использовать переменные из config. Можно помещать в config свои переменные +и использовать их в скриптах. +Можно использовать функции-хелперы. Они являются частью общего пространства функций shell. +Полезные функции можно взять из примеров скриптов. Так же смотрите "common/*.sh". Используя хелпер функции, вы избавитесь от необходимости учитывать все возможные случаи типа наличия/отсутствия ipv6, является ли система роутером, имена интерфейсов, ... Хелперы это учитывают, вам нужно сосредоточиться лишь на фильтрах {ip,nf}tables и @@ -1593,13 +1617,12 @@ zapret_custom_firewall_nft Запуск это или остановка передается в параметре $1 (0 или 1). В openwrt за остановку отвечает procd. -Для фаервола кастом пишется отдельно для iptables и nftables. Все очень похоже, но отличается +Для фаервола в linux кастом пишется отдельно для iptables и nftables. Все очень похоже, но отличается написание фильтров и названия процедур хелперов. Если вам не нужны iptables или nftables - можете не писать соответствующую функцию. -Готовый custom скрипт custom-tpws4http-nfqws4https позволяет применить дурение -tpws к http и nfqws к https. При этом поддерживаются установки из config. -Его можно использовать как стартовую точку для написания своих скриптов. +В macos firewall-функции ничего сами никуда не заносят. Их задача - лишь выдать текст в stdout, +содержащий правила для pf-якоря. Остальное сделает обертка. Простая установка