# Антифильтр - автоматическая генерация 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/`.