/rkn_registry

Получение выгрузки реестра Роскомнадзора

Primary LanguageErlang

RKN_REGISTRY

Получение данных реестра Роскомнадзора. Необходимое ПО:

Параметры конфигурации

Для запуска приложения необходимо иметь файл запроса и файл с подписью. Все параметры указываются в файле app.config. Журналы работы сервера, по-умолчанию находятся в каталоге var/log/rkn_registry/ Параметры которые необходимо изменить:

  • dump_format_ver - версия формата реестра, “1.0” или “2.0”, по умолчанию “2.0”
  • get_last_update_period - периодичность проверки актуальности реестра, в секундах
  • xml - путь до файла с XML запросом, по-умолчанию “/etc/rkn_registry/request.xml”
  • sign - путь до файла с подписью запроса, по-умолчанию “/etc/rkn_registry/request.bin”
  • www_log_path - путь до каталога содержащего журналы web сервера, по-умолчанию ”var/log/rkn_registry/www
  • www_root - путь до корневого каталога web-сервера, по-умолчанию ”var/opt/rkn_registry/www
  • data_store_path - путь до каталога где будет сохраняться CVS и XML дампы реестра, так же в этом каталоге необходимо создать подкаталог arch/
  • trace - путь до файла с трассировкой событий, по-умолчанию “/var/log/rkn_registry/process.log”
  • port - порт , который будет слушать web сервер, к примеру 8899
  • listen_on - IPv4 адрес который будет слушать web сервер, к примеру 127.0.0.1
  • hostname - имя виртуального хоста
  • email_on_update - необязательный набор параметров. Необходим, если вы хотите получить уведомелние на e-mail после обновления реестра. Пример настройки отправки уведомлений находится ниже.
  • dump_csv - делать дамп в csv при обновлении реестра, true или false
  • csv_separator - разделитель полей для CSV, к примеру “;”
  • csv_fields - имена полей которые будут присутствовать в дампе.

Наименования и значения полей для формирования CSV дампа

  • id - идентификатор записи в реестре
  • entryType - тип записи
  • includeTime - время включения записи в реестр
  • ip - IP адреса ассоциированные с записью
  • subnet - подсеть в формате CIDR ассоциированная с записью
  • domain - доменное имя
  • decision - организациия принявшая решение о включении ресурса в реестр, а так же дата принятия решения
  • url - URL ресурса
  • blockType - тип блокировки: default - по умолчанию, domain - блокировка всего домена

Пример:

[id,decision,url,domain,ip]

Порядок следования полей в файле, будет таким же как порядок имен полей в конфигурации.

Пример настройки отправки уведомлений на e-mail

{email_on_update,                                                                                                             
  [                                                         
   {server_opts, [{relay, "relay.mail.ru"}, {tls, never},  {username, "user@mail.ru"}, {password, PasWWoord"},{auth, always}]},
   {from, "user@mail.ru"},
   {to,[
        [{email, "recipient1@mail.ru"}, {subject, "Registry update"}, {body_prefix, ""}, {body_suffix, ""}],
        [{email, "recipient2@mail.ru"}, {subject, "Registry update"}, {body_prefix, ""}, {body_suffix, ""}]
       ]}
  ]
}

Опция является необязательной.

Запуск приложения

cd application/directory
make
 ./registry.sh start

или

cd application/directory
make
 ./dev_start.sh

HTTP API приложения

Тип метода для всех запросов - GET , URL для всех запросов - /data.yaws

Параметры запросов

  • act=list - дамп в формате JSON
  • act=list, field = [ip | domain | org | date | decision | subnet | id | includeTime ], value=<ЗНАЧЕНИЕ> - дамп с фильтрацией по значению указанного поля
  • act=status - статус сервера в формате JSON
  • act=list_only, field = [ip | domain | org | date | decision | subnet | id | includeTime | entryType] - вывод только указанного поля (данные дедуплицируются!)
  • act=dump_last_zip - получение последнего скачанного архива
  • act=dump_last_csv - получение последнего CSV дампа
  • act=dump_last_xml - получение последнего XML файла с реестром
  • act=dump_route, spec = [jnx_set_route | jnx_del_route | [csc_set_route | csc_del_route , [table = VRF_Name]]] - получение конфигурации роутеров Juniper и Cisco, для блокирования IP адресов ресурсов из реестра, путем установки роутов в Null. Для роутеров Cisco можно указать название VRF, если требуется установить роуты не в глобальную таблицу.

Пример запроса: http://localhost:8899/data.yaws?act=list&field=domain&value=www.ru http://localhost:8899/data.yaws?act=dump_route&spec=csc_set_route&table=Inet

Запуск из Erlang REPL

Запуск сервера:

registry:start(XMLRequestFile, SignFile).

Пример:

registry:start("priv/request.xml", "priv/request.bin").

Статус сервера:

registry:status().

Пример:

registry:status().

[{"XMLRequest","/etc/rkn_registry/request.xml"},
 {"XMLRequestSign","/etc/rkn_registry/request.bin"},
 {"dumpFormatVersion","2.0"},
 {"lastDumpDate","17-Oct-2014, 11:39"},
 {"NextAction","get_last_update"},
 {"UpdateCounter",1},
 {"lastArchive", "/var/opt/rkn_registry/cache/arch/2014-10-17-11-42.zip"},
 {"LastError","[]"},
 {"lastErrorDateTime",[]},
 {"CodeString",[]},
 {"LastTryCount",1},
 {"LastChildPid",[]}]

Запуск готового релиза

  • Скачать архив с релизом: https://github.com/apofiget/some_stuff/releases/latest
  • Развернуть на файловой системе
  • Отредактировать параметры в файле release/<версия>/sys.config
  • Запустить приложение bin/rkn_registry start
  • Для доступа к REPL виртуальной машины выполнить bin/rkn_registry remote_console