Releases: D4n13l3k00/mikrotik-lists-manager
Release list
v1.4.0
v1.4.0
Новые команды
find <address>
Ищет IP или CIDR во всех address-list на роутере. Находит точные совпадения, а также проверяет попадание IP в CIDR-записи и наоборот.
mikrotik-lists-manager find 8.8.8.8 -H 192.168.1.1 -u admin
mikrotik-lists-manager find 8.8.0.0/16 -H 192.168.1.1 -u admin
backup
Сохраняет все статические address-list с роутера в папку — один файл на список. Поддерживает форматы native и mikrotik.
mikrotik-lists-manager backup -H 192.168.1.1 -u admin -o ./backup
mikrotik-lists-manager backup -H 192.168.1.1 -u admin -o ./backup -f mikrotik
rename <old> <new>
Переименовывает address-list на роутере, обновляя поле list у всех записей через REST PATCH.
mikrotik-lists-manager rename vpn-old vpn-routes -H 192.168.1.1 -u admin
completion [bash|zsh|fish|powershell]
Генерирует скрипт автодополнения команд и флагов для популярных оболочек.
mikrotik-lists-manager completion fish > ~/.config/fish/completions/mikrotik-lists-manager.fish
Новые флаги
sync --watch / -w
Следит за файлом и пересинхронизирует список на роутере при каждом изменении. Интервал проверки задаётся флагом --watch-interval (по умолчанию 3 сек).
mikrotik-lists-manager sync vpn.list -H 192.168.1.1 -u admin -l vpn-routes -w
list --sort и --filter / -F
--sort size сортирует списки по убыванию количества записей вместо алфавита. --filter фильтрует по подстроке в имени.
mikrotik-lists-manager list -H 192.168.1.1 -u admin --sort size
mikrotik-lists-manager list -H 192.168.1.1 -u admin -F vpn
fetch --format / -f и --merge / -m
-f mikrotik выводит результат в формате RSC-скрипта (/ip firewall address-list add ...).
-m обновляет только изменившиеся секции в существующем файле, не затирая остальное.
mikrotik-lists-manager fetch -p cloudflare,telegram -f mikrotik -o ranges.rsc
mikrotik-lists-manager fetch -p cloudflare,telegram -m -o ranges.lst
fetch --asn / -A
Получает IPv4-префиксы произвольного ASN через RIPE STAT — без необходимости добавлять провайдера в код.
mikrotik-lists-manager fetch -A AS12345 -o custom.lst
mikrotik-lists-manager fetch -A 12345,67890 -o custom.lst
Параллельная загрузка в fetch
Все провайдеры теперь скачиваются одновременно через errgroup. На большом количестве провайдеров ускорение пропорционально их числу.
Новые провайдеры для fetch
Добавлено 17 новых провайдеров (все через RIPE STAT):
| Провайдер | Slug | ASN |
|---|---|---|
| Pornhub / MindGeek | pornhub |
AS55222, AS29789 |
| Netflix | netflix |
AS2906 |
| Twitch | twitch |
AS46489 |
| Steam / Valve | steam |
AS32590 |
| Blizzard | blizzard |
AS57976, AS209242 |
| Riot Games | riot |
AS6507, AS26008 |
| Ubisoft | ubisoft |
AS39561 |
| EA / Electronic Arts | ea |
AS12128, AS14068 |
| Epic Games | epic |
AS46562 |
| Roblox | roblox |
AS22697 |
| Apple | apple |
AS714, AS6185 |
| Yandex | yandex |
AS13238 |
| VK | vk |
AS47541, AS44507 |
| Telega (VK) | telega |
AS203502 |
| Mail.ru | mailru |
AS47764, AS57620 |
| Zoom | zoom |
AS8100, AS21929 |
reddit |
AS54009, AS22616 |
Внутренние изменения
mikrotik.Client.RenameList— PATCH всех записей списка для смены поляlistfetcher.MakeASNProvider— создаёт провайдер из произвольного ASN на летуparseFetchSections/mergeFetchContent— парсинг и мёрдж секций native-файлаlist: фильтрация и сортировка поstatsmap без лишних аллокацийsync: рефакторингrunSync— логика синхронизации вынесена в замыканиеdoSyncдля переиспользования в watch-цикле
Full Changelog: v1.3.0...v1.4.0
v1.3.0
v1.3.0
Новые команды
info
Подключается к роутеру и выводит информацию о нём без выполнения каких-либо операций.
mikrotik-lists-manager info -H 192.168.1.1 -u admin
list --entries / list -e <name>
Показывает все записи конкретного address-list с адресами, комментариями и статусом disabled. Записи отсортированы по алфавиту, в конце выводится счётчик отключённых записей.
mikrotik-lists-manager list -H 192.168.1.1 -u admin -e vpn-routes
Баннер роутера
При запуске команд sync, append, remove и info теперь выводится информационный блок с параметрами роутера:
- Название платы и адрес роутера
- Версия RouterOS и архитектура
- CPU (модель и количество ядер)
- Память (свободно / всего, MiB)
- Аптайм
- Модель, ревизия и серийный номер RouterBoard
- Версия прошивки (с предупреждением если доступно обновление)
- Версия заводской прошивки
Данные получаются параллельно из /rest/system/resource и /rest/system/routerboard. Для CHR и x86-устройств секция RouterBoard не отображается.
Ускорение синхронизации
Команды sync, append и remove теперь выполняют API-запросы к роутеру параллельно. Новый флаг -c / --concurrency задаёт количество одновременных запросов (по умолчанию: 5, 0 = последовательно).
mikrotik-lists-manager sync vpn.list -H 192.168.1.1 -u admin -l vpn-routes -c 10
На списках от 100 записей ускорение составляет 3–5× в зависимости от RTT до роутера.
Исправления
- Ctrl+C теперь корректно останавливает параллельные операции — ранее после нажатия приложение продолжало запускать оставшиеся горутины и лишь замедлялось вместо остановки.
Внутренние изменения
syncer.Applyпринимает параметрconcurrency int; атомарные счётчики (sync/atomic), вывод подsync.Mutexmikrotik.Client.GetRouterInfo— параллельный запрос двух системных endpoint'ов черезsync.WaitGroupoutput.RouterBannerпринимаетRouterBannerInfo— структуру с полным набором полей роутераoutput.EntryRow— новая функция для вывода отдельной записи address-list
Full Changelog: v1.2.3...v1.3.0
v1.2.3
v1.2.3
Новые провайдеры для команды fetch
Облачные хостинги
akamai— Akamai CDN (AS20940, AS16625)digitalocean— DigitalOcean (AS14061)hetzner— Hetzner Online (AS24940)ovh— OVHcloud (AS16276)
Социальные сети и мессенджеры
meta— Facebook, Instagram, WhatsApp (AS32934, AS63293, AS54115)twitter— Twitter / X (AS13414, AS35995)tiktok— TikTok / ByteDance (AS396986, AS138699)discord— Discord (AS36459)linkedin— LinkedIn (AS14413)
Прочее
tor— IPv4-адреса выходных узлов Tor с check.torproject.org
Внутренние изменения
- Добавлен общий хелпер
fetchRIPEPrefixesна базе RIPE STAT BGP API (stat.ripe.net/data/announced-prefixes) — все новые провайдеры без собственного публичного endpoint используют его; результаты дедуплицируются
Full Changelog: v1.2.2...v1.2.3
v1.2.2
v1.2.2
Исправления
sync/diff: RouterOS хранит хост-адреса как/32(8.8.8.8/32), тогда как sync-файлы обычно содержат голый IP (8.8.8.8). Раньше это приводило к лишней паре Add + Delete при каждой синхронизации — теперь оба формата считаются одной записью- HTTP-клиент MikroTik теперь повторяет запрос и при временных ответах
5xxот роутера, а не только при сетевых ошибках
Улучшения
- Все команды корректно завершаются по Ctrl+C / SIGTERM — in-flight запросы к роутеру отменяются немедленно, без ожидания окончания операции
fetchGitHub: при выборе нескольких сервисов (hooks, web, api, actions…)api.github.com/metaтеперь запрашивается один раз за сессию; раньше перекачивался для каждого выбранного сервиса
Внутренние изменения
- Все методы
mikrotik.Clientпринимаютcontext.Context; интерфейсsyncer.APIClientобновлён соответственно - Добавлены тесты на нормализацию адресов в
Diff
Full Changelog: v1.2.1...v1.2.2
v1.2.1
v1.2.1
Производительность
syncс несколькими-lсписками теперь выполняется параллельно — каждый список получается и применяется одновременноfetchOracle Cloud: JSON скачивается один раз за сессию и кэшируется; раньше перекачивался для каждого выбранного региона
Надёжность
- HTTP-клиент MikroTik повторяет запрос до 3 раз с задержкой 0 / 500ms / 1000ms при сетевых ошибках — временный сбой больше не прерывает большую синхронизацию на полпути
Новое поведение
syncпредупреждает, если входной файл содержит дублирующиеся адреса (последнее вхождение побеждает, как и раньше, но теперь это видно)
Исправления
- Чтение из stdin (аргумент
-) теперь используетio.ReadAll(os.Stdin)вместоos.ReadFile("/dev/stdin")— корректно работает с пайпами на всех платформах
Внутренние изменения
ParseDataLineэкспортирован изinternal/parserи переиспользуется вinternal/optimizer, дублирующаяся реализация удалена- Тесты
Syncerобновлены под новую сигнатуруDiff; добавлен тест на обнаружение дублей
Full Changelog: v1.2.0...v1.2.1
v1.2.0
Новое
Команда fetch
Скачивает актуальные IPv4 CIDR-диапазоны из публичных источников и сохраняет в native .lst файл с секциями по провайдерам.
Поддерживаемые провайдеры:
| Провайдер | Slug |
|---|---|
| Cloudflare | cloudflare |
| Google (public + GCP) | google |
| AWS | aws |
| Azure | azure |
| Fastly | fastly |
| Telegram | telegram |
| GitHub | github + выбор сервисов (github/copilot, github/actions и др.) |
| Oracle Cloud | oracle + выбор регионов (oracle/eu-frankfurt-1 и др.) |
Без флагов — интерактивный TUI с выбором провайдеров, сервисов GitHub и регионов Oracle.
# TUI
./mikrotik-lists-manager fetch -o ranges.lst
# все провайдеры
./mikrotik-lists-manager fetch -a -o ranges.lst
# конкретные
./mikrotik-lists-manager fetch -p cloudflare,telegram,github/copilot -o ranges.lstУлучшения
- optimize: конвертация
x.x.x.x/32→x.x.x.xс отображением изменений в выводе - sync: ошибка
already have such entryот MikroTik больше не прерывает синхронизацию
Внутреннее
- Пакет
internal/fetcherразбит на отдельные файлы по провайдерам
Full Changelog: v1.1.0...v1.2.0
v1.1.0
Что нового в v1.1.0
Новые возможности
Команда list — показывает все address-list на роутере с количеством записей и сколько из них отключено, без необходимости знать имена заранее:
./mikrotik-lists-manager list -H 192.168.1.1 -u adminНесколько списков за раз — все команды (sync, append, remove, export, enable, disable) теперь принимают несколько списков через запятую или повторением флага:
./mikrotik-lists-manager sync list.lst -l vpn,blocked
./mikrotik-lists-manager disable -a -l vpn -l blockedПрогресс-бар — при 10 и более изменениях в sync автоматически показывается прогресс-бар вместо построчного вывода. Флаг -v / --verbose включает оба режима одновременно:
./mikrotik-lists-manager sync list.lst -l VPN_LIST -vИсправления
- Устранено наслоение прогресс-бара и построчного вывода в verbose режиме
Прочее
- Добавлена лицензия MIT
- CI: добавлена сборка под Linux ARMv5
- CI: релиз создаётся только если тег поставлен на ветку master
Full Changelog: v1.0.0...v1.1.0