Skip to content

Releases: D4n13l3k00/mikrotik-lists-manager

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 31 May 21:31

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 reddit AS54009, AS22616

Внутренние изменения

  • mikrotik.Client.RenameList — PATCH всех записей списка для смены поля list
  • fetcher.MakeASNProvider — создаёт провайдер из произвольного ASN на лету
  • parseFetchSections / mergeFetchContent — парсинг и мёрдж секций native-файла
  • list: фильтрация и сортировка по stats map без лишних аллокаций
  • sync: рефакторинг runSync — логика синхронизации вынесена в замыкание doSync для переиспользования в watch-цикле

Full Changelog: v1.3.0...v1.4.0

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 31 May 10:00

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.Mutex
  • mikrotik.Client.GetRouterInfo — параллельный запрос двух системных endpoint'ов через sync.WaitGroup
  • output.RouterBanner принимает RouterBannerInfo — структуру с полным набором полей роутера
  • output.EntryRow — новая функция для вывода отдельной записи address-list

Full Changelog: v1.2.3...v1.3.0

v1.2.3

Choose a tag to compare

@github-actions github-actions released this 31 May 08:21

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

Choose a tag to compare

@github-actions github-actions released this 31 May 07:58

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 запросы к роутеру отменяются немедленно, без ожидания окончания операции
  • fetch GitHub: при выборе нескольких сервисов (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

Choose a tag to compare

@github-actions github-actions released this 29 May 13:46

v1.2.1

Производительность

  • sync с несколькими -l списками теперь выполняется параллельно — каждый список получается и применяется одновременно
  • fetch Oracle 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

Choose a tag to compare

@github-actions github-actions released this 17 May 21:12

Новое

Команда 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/32x.x.x.x с отображением изменений в выводе
  • sync: ошибка already have such entry от MikroTik больше не прерывает синхронизацию

Внутреннее

  • Пакет internal/fetcher разбит на отдельные файлы по провайдерам

Full Changelog: v1.1.0...v1.2.0

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 16 May 17:26

Что нового в 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

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 15 May 01:18