Compare commits

..
2 Commits
Author SHA1 Message Date
OpenCode Agent cec0a7b037 docs(PROJECT): актуализирована архитектура и структура директорий
- Добавлена директория strategies/ с описанием .conf файлов
- Уточнено, что general*.sh — обёртки run_strategy.sh <name>
- run_strategy.sh теперь читает .conf, а не собирает аргументы вручную
- Добавлен ensure_wrappers.sh в дерево проекта
2026-05-10 19:51:52 +04:00
OpenCode Agent e0b6c1e0d6 docs(README): актуализирована структура и troubleshooting после перехода на strategies/*.conf
- Убраны устаревшие маркеры '<<< НОВОЕ' из дерева проекта
- Добавлен пункт troubleshooting: nfqws segfault + решение через --full-auto
- В update.sh добавлено пояснение когда использовать --full-auto
- Структура приведена в соответствие с текущей архитектурой (strategies/*.conf)
2026-05-10 19:51:19 +04:00
2 changed files with 735 additions and 691 deletions
+9 -4
View File
@@ -7,7 +7,7 @@ Linux-перенос проекта [Flowseal/zapret-discord-youtube](https://gi
**Архитектура:** **Архитектура:**
- `nfqws` (bol-van/zapret) — ядерный обработчик пакетов - `nfqws` (bol-van/zapret) — ядерный обработчик пакетов
- iptables/nftables + NFQUEUE — перехват трафика - iptables/nftables + NFQUEUE — перехват трафика
- 20 стратегий обхода DPI (fake, multisplit, fakedsplit, hostfakesplit, syndata и др.) - 20 стратегий обхода DPI (fake, multisplit, fakedsplit, hostfakesplit, syndata и др.), хранятся в `strategies/*.conf`
- systemd — сервисы и таймеры - systemd — сервисы и таймеры
--- ---
@@ -17,13 +17,17 @@ Linux-перенос проекта [Flowseal/zapret-discord-youtube](https://gi
``` ```
zapret/ zapret/
├── bin/ # nfqws + fake .bin пакеты (собираются при install) ├── bin/ # nfqws + fake .bin пакеты (собираются при install)
├── lib/functions.sh # Общие: firewall setup/cleanup, colors, distro detect ├── lib/
│ └── functions.sh # Общие: firewall setup/cleanup, colors, distro detect
├── lists/ # Домены и IP для обхода ├── lists/ # Домены и IP для обхода
│ ├── list-general.txt # Discord, YouTube, Google, GitHub, Telegram, Steam │ ├── list-general.txt # Discord, YouTube, Google, GitHub, Telegram, Steam
│ ├── list-google.txt # Google-специфичные домены │ ├── list-google.txt # Google-специфичные домены
│ ├── list-exclude.txt # Что НЕ трогать (банки, госуслуги) │ ├── list-exclude.txt # Что НЕ трогать (банки, госуслуги)
│ ├── ipset-all.txt # IP-диапазоны (placeholder → обновляется) │ ├── ipset-all.txt # IP-диапазоны (placeholder → обновляется)
│ └── ipset-exclude.txt # локальные диапазоны │ └── ipset-exclude.txt # локальные диапазоны
├── strategies/ # Конфиги стратегий (RULE1=...), конвертируются из .bat
│ ├── general.conf
│ └── general_ALT2.conf
├── .service/ # Runtime-конфигурация + hosts ├── .service/ # Runtime-конфигурация + hosts
│ ├── version.txt # Текущая версия │ ├── version.txt # Текущая версия
│ ├── installed_strategy # Какая стратегия в systemd │ ├── installed_strategy # Какая стратегия в systemd
@@ -37,13 +41,14 @@ zapret/
├── utils/ ├── utils/
│ ├── test_zapret.sh # curl-проверка доступности │ ├── test_zapret.sh # curl-проверка доступности
│ └── targets.txt # Цели теста │ └── targets.txt # Цели теста
├── general*.sh # 20 обёрток → run_strategy.sh ├── general*.sh # Обёртки → run_strategy.sh <name>
├── run_strategy.sh # Единый движок: собирает аргументы nfqws ├── run_strategy.sh # Единый движок: читает .conf, подставляет %BIN%/%LISTS%
├── autotest.sh # Автоподбор: запускает каждую, тестит curl, ставит systemd ├── autotest.sh # Автоподбор: запускает каждую, тестит curl, ставит systemd
├── install.sh # Входная точка: setup + build + autotest + systemd ├── install.sh # Входная точка: setup + build + autotest + systemd
├── service.sh # Меню управления (аналог service.bat) ├── service.sh # Меню управления (аналог service.bat)
├── setup.sh # Зависимости по дистру, модуль ядра, user lists ├── setup.sh # Зависимости по дистру, модуль ядра, user lists
├── install_nfqws.sh # git clone bol-van/zapret → make nfqws → fake .bin ├── install_nfqws.sh # git clone bol-van/zapret → make nfqws → fake .bin
├── ensure_wrappers.sh # Создаёт general_*.sh из strategies/*.conf
└── update.sh # Pipeline: check version → update files → rebuild → autotest └── update.sh # Pipeline: check version → update files → rebuild → autotest
``` ```
+42 -3
View File
@@ -171,8 +171,40 @@ sudo ./install.sh
--- ---
## Структура проекта (новая модульная архитектура) ## Структура проекта (модульная архитектура)
```text
.
├── bin/ # nfqws + fake .bin (собирается)
├── lib/
│ └── functions.sh # Общие: firewall, цвета, cleanup
├── lists/ # Списки доменов и IP
│ ├── list-general.txt # Discord, YouTube, GitHub, Telegram, Steam
│ ├── list-google.txt # Google/YouTube
│ ├── list-exclude.txt # Исключения (банки, госуслуги)
│ ├── ipset-all.txt # IP-диапазоны
│ └── ipset-exclude.txt # Локальные подсети
├── strategies/ # Модульные стратегии (.conf)
│ └── general.conf # Конфиг стратегии (RULE1=... RULE2=...)
│ # Другие .conf появляются автоматически через sync_from_upstream.sh
├── utils/
│ ├── test_zapret.sh # curl-тесты
│ └── targets.txt # Цели
├── systemd/ # Юниты и таймеры
├── .service/
│ ├── version.txt # Версия (x.y.z-linux)
│ ├── hosts # Статичные IP (GitHub, Telegram)
│ └── installed_strategy # Какая стратегия в systemd
├── general*.sh # Обёртки → run_strategy.sh
├── run_strategy.sh # Движок: читает .conf, подставляет %BIN%/%LISTS%, запускает nfqws
├── sync_from_upstream.sh # Авто-мердж с Windows-репон
├── autotest.sh # Автоподбор рабочей стратегии
├── install.sh # Полный установщик (setup + build + autotest + systemd)
├── service.sh # Меню управления (аналог service.bat)
├── setup.sh # Зависимости по дистрибутиву
├── install_nfqws.sh # Сборка nfqws из bol-van/zapret
├── ensure_wrappers.sh # Создаёт general_*.sh из strategies/*.conf
└── update.sh # Полный pipeline: sync → build → test → install
``` ```
. .
├── bin/ # nfqws + fake .bin (собирается) ├── bin/ # nfqws + fake .bin (собирается)
@@ -197,13 +229,13 @@ sudo ./install.sh
│ └── installed_strategy # Какая стратегия в systemd │ └── installed_strategy # Какая стратегия в systemd
├── general*.sh # Обёртки → run_strategy.sh ├── general*.sh # Обёртки → run_strategy.sh
├── run_strategy.sh # Движок: читает .conf, подставляет %BIN%/%LISTS%, запускает nfqws ├── run_strategy.sh # Движок: читает .conf, подставляет %BIN%/%LISTS%, запускает nfqws
├── sync_from_upstream.sh # <<< НОВОЕ: авто-мердж с Windows-репон ├── sync_from_upstream.sh # Авто-мердж с Windows-репон
├── autotest.sh # Автоподбор рабочей стратегии ├── autotest.sh # Автоподбор рабочей стратегии
├── install.sh # Полный установщик (setup + build + autotest + systemd) ├── install.sh # Полный установщик (setup + build + autotest + systemd)
├── service.sh # Меню управления (аналог service.bat) ├── service.sh # Меню управления (аналог service.bat)
├── setup.sh # Зависимости по дистрибутиву ├── setup.sh # Зависимости по дистрибутиву
├── install_nfqws.sh # Сборка nfqws из bol-van/zapret ├── install_nfqws.sh # Сборка nfqws из bol-van/zapret
├── ensure_wrappers.sh # <<< НОВОЕ: создаёт general_*.sh из strategies/*.conf ├── ensure_wrappers.sh # Создаёт general_*.sh из strategies/*.conf
└── update.sh # Полный pipeline: sync → build → test → install └── update.sh # Полный pipeline: sync → build → test → install
``` ```
@@ -306,6 +338,11 @@ sudo ./update.sh --full-auto # форсировать пересборку + п
sudo ./update.sh --help # справка sudo ./update.sh --help # справка
``` ```
**Когда использовать `--full-auto`:**
- После обновления дистрибутива/ядра (может сломать бинарный совместимость `nfqws`)
- Если `nfqws` падает с segfault (пересборка с безопасными флагами)
- Если установка новой стратегии не работает
**Что делает при обновлении Flowseal:** **Что делает при обновлении Flowseal:**
``` ```
Step 0: sync_from_upstream.sh Step 0: sync_from_upstream.sh
@@ -401,6 +438,8 @@ sudo ./update.sh --full-auto
2. **Отсутствуют fake .bin файлы** — пересоберите: `sudo ./install_nfqws.sh` 2. **Отсутствуют fake .bin файлы** — пересоберите: `sudo ./install_nfqws.sh`
3. **nfnetlink_queue не загружен** — `sudo modprobe nfnetlink_queue` 3. **nfnetlink_queue не загружен** — `sudo modprobe nfnetlink_queue`
4. **iptables/nftables конфликт** — `sudo ./service.sh → 2. Remove Services`, затем `sudo ./general.sh` 4. **iptables/nftables конфликт** — `sudo ./service.sh → 2. Remove Services`, затем `sudo ./general.sh`
5. **nfqws падает с segfault** — пересоберите с безопасными флагами: `sudo ./update.sh --full-auto`
- Скрипт автоматически выключит `-flto=auto` и `--gc-sections`, которые вызывают крах на некоторых системах
### Если curl-тесты падают, но nfqws запущен ### Если curl-тесты падают, но nfqws запущен