Skip to content

Выгрузка реестров РосКомНадзора (ЕАИС) включая социально значимые сайты

Notifications You must be signed in to change notification settings

k0ldbl00d/rkndownloader

Repository files navigation

RKN Downloader

example workflow

Приложение для выгрузки реестров РосКомНадзора операторами связи.

Поддерживаются:

  • Единый реестр доменных имён, указателей страниц сайтов в сети «Интернет» и сетевых адресов, позволяющих идентифицировать сайты в сети «Интернет», содержащие информацию, распространение которой в Российской Федерации запрещено - Приказ Роскомнадзора от 14.12.2017 № 249, Приказ Роскомнадзора от 21.02.2013 № 170
  • Перечень отечественных социально значимых информационных ресурсов в информационно-телекоммуникационной сети «Интернет» — Приказ Минкомсвязи России от 31.03.2020г. № 148
  • Уведомления в Telegram об ошибках выгрузки

How-to

Потребуется любой Linux (Centos, Ubuntu, etc) с установленным docker или Windows с Docker Desktop. Для Windows путь к каталогу с данными указывается через «\».

  1. Создать каталог для данных, например /opt/rknd/data
  2. Поместить в этот каталог файлы запроса на выгрузку - request.xml и откреплённой цифровой подписи request.xml.p7s. Цифровую подпись можно сделать в программах Крипто-Про или Крипто-АРМ.
  3. Запустить docker-контейнер.

Приложение проверяет доступность нового файла реестра раз в 30 минут. Если доступна новая версия реестра - она скачивается и помещается в каталог data.

В результате в каталоге data появятся файлы:

  • latest.zip - Запрещённые сайты
  • latest-soc.zip - Социально значимые сайты
  • social-ips.txt - Текстовый список IP-адресов сетей социально значимых сайтов
  • mikrotik-social.rsc - Скрипт для Mikrotik RouterOS, обновляющий address-list в фаерволе
  • lastdumpdate - Файл с информацией о пооследней успешной выгрузке реестра
  • info.rrd - Файл со статистической информацией (rrdtool)
  • stat.png - График, на котором отображается количество IP-адресов из реестра СЗР

Возможен запуск нескольких контейнеров, если у вас несколько организаций-операторов, просто запустите несколько экземпляров контейнера, указав разные каталоги data в опции -v

Запуск через docker-compose

Рекомендуется использовать именно этот способ. Он проще в обновлении.

  1. Копируем содержимое файла docker-compose-example.yml в файл docker-compose.yml
  2. Редактируем файл docker-compose.yml, изменяя необходимые значения
  3. Запускаем:
    $ docker-compose pull
    $ docker-compose up -d
    

Обновление

Для обновления версии приложения выполните команлы из шага 3 еще раз.

Уведомления в Telegram:

Приложение может присылать уведомления об ошибках загрузки, а также об приближающемся окончании срока действия цифровой подписи.

  1. Создаём нового бота в Telegram через бота @BotFather или используем ранее созданного. Нужно выяснить токен - секретный ключ, чтобы приложение могло отправлять уведомления через бота.
  2. Выясняем свой идентификатор чата. Это можно сделать через существующих ботов (например @getmyid_bot). Если хотите чтобы бот отправлял сообщения в канал или общий чат - используйте ID этого канала или чата.
  3. Для docker-compose - указываем эти параметры в переменных среды TELEGRAM_BOT_TOKEN и TELEGRAM_CHAT_ID в секции environment файла конфигурации docker-compose.yml.
  4. Для получения уведомлений не только об ошибках, но и об успешной выгрузке, установите значение переменной TELEGRAM_NOTIFY_ON_SUCCESS равным 1. Если вы хотите получать уведомления только об ошибках - установите значение равным 0.

Запуск обычного Docker-контейнера

На случай если вы не хотите использовать docker-compose.

Пример для Linux:

$ docker run -d --restart=always -v /opt/rknd/data:/app/data tcsmr/rknd

Пример для Windows:

$ docker run -d --restart=always -v D:\rknd\data:/app/data tcsmr/rknd

Пример для запуска с уведомлениями в Telegram

$ docker run -d \
  -e TELEGRAM_BOT_TOKEN="секретный-токен" \
  -e TELEGRAM_CHAT_ID="идентификатор-чата-telegram" \
  --restart=always \
  -v /opt/rknd/data:/app/data \
  tcsmr/rknd

Просмотр журнала событий

Для начала, выясняем container id запущенного контейнера, либо можем обратиться к нему по имени, если задали его при запуске с помощью опции --name

$ docker ps
CONTAINER ID   IMAGE        COMMAND               
b3a85085d43e   tcsmr/rknd   "sh docker-entrypoin…"

Просмотр журнала:

$ docker logs b3a85085d43e

Самостоятельная сборка образа

Пригодится, если вы хотите самостоятельно собрать Docker-образ из исходников.

Скачиваем исходники в виде ZIP-архива или git'ом:

$ git clone https://github.com/k0ldbl00d/rkndownloader.git

Переходим в каталог rkndownloader и собираем образ:

$ docker build -t tcsmr/rknd .

Функции, которые планируется реализовать

  1. Формирование plain-text списка IP-адресов и подсетей для реестра социально значимых ресурсов
  2. Формирование скрипта для Mikrotik RouterOS
  3. Уведомления в Telegram об ошибках обновления
  4. Уведомление об истечении срока действия цифровой подписи

About

Выгрузка реестров РосКомНадзора (ЕАИС) включая социально значимые сайты

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published