diff --git a/README.md b/README.md index e69de29..265c50e 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,110 @@ +# Антифильтр - автоматическая генерация BGP routes + +Проект для автоматической генерации и распространения BGP routes. + +## Структура проекта + +``` +. +├── bin/ +│ └── resolve.py # Скрипт генерации routes +├── src/ +│ ├── {community}.{name}.list # Исходные данные +│ └── ... +├── resolve/ +│ ├── {community}.{name}.routes # Сгенерированные routes +│ └── ... +└── .gitea/ + └── workflows/ + └── build.yml # Gitea Actions workflow +``` + +## Как это работает + +1. **Исходные данные** хранятся в файлах `src/{community}.{name}.list` +2. **Community** извлекается из имени файла (первая часть до точки) +3. При коммите в master запускается Gitea Actions workflow +4. Скрипт `bin/resolve.py` обрабатывает каждый `.list` файл: + - Читает записи построчно + - Определяет тип записи (AS, домен, URL, IP, CIDR) + - Резолвит записи в CIDR блоки + - Формирует routes в формате BIRD +5. Сгенерированные `.routes` файлы выгружаются по FTP + +## Формат файлов src/*.list + +Каждый файл может содержать записи пяти типов (вперемешку): + +```text +# Автономная система (AS) +AS1234 +AS-TELEGRAM + +# Домен +t.me +ya.ru + +# Ссылка (должна возвращать список CIDR, по одному в строке) +https://www.cloudflare.com/ips-v4/ + +# IP-адрес +1.2.3.4 + +# CIDR +1.2.3.4/32 +10.0.0.0/8 +``` + +Пустые строки и комментарии (начинающиеся с `#`) игнорируются. + +## Текущие community + +| Community | Описание | +|-----------|----------| +| 64888:101 | WhatsApp | +| 64888:102 | YouTube | +| 64888:103 | Сайты для работы | +| 64888:104 | Разные сайты, добавленные вручную | +| 64888:105 | DeepSeek | +| 64888:106 | Cloudflare | +| 64888:107 | Hetzner | +| 64888:108 | Telegram | +| 64888:109 | Habr | +| 64888:110 | Facebook/Instagram | +| 64888:111 | Twitter | +| 64888:112 | Discord | +| 64888:113 | Akamai CDN (AS-AKAMAI) | +| 64888:114 | Amazon CloudFront (AS16509) | + +## Как добавить свои записи + +1. Создайте новый файл в `src/` с именем `{community}.{name}.list` + - Если community уже существует, используйте его номер + - Если нужен новый community, согласуйте номер с администратором + - `name` - любое понятное имя (латиница, цифры, подчеркивания) + +2. Добавьте записи нужных типов (AS, домены, URL, IP, CIDR) + +3. Сделайте коммит в master + +4. Дождитесь завершения Gitea Actions workflow + +5. Новые routes автоматически применятся на BIRD + +## Требования к серверу с BIRD + +- Python 3 +- bgpq4 +- dnsutils (для dig) +- curl +- inotify-tools (для автоматического обновления) + +## Ручной запуск + +Для локальной генерации без коммита: + +```bash +python3 bin/resolve.py +``` + +Сгенерированные файлы появятся в директории `resolve/`. \ No newline at end of file