Получение данных реестра Роскомнадзора. Необходимое ПО:
- Rebar (https://github.com/rebar/rebar)
- Erlang/OTP >= 17.0 (http://www.erlang.org/download.html)
- Для сборки релиза потребуется relx (https://github.com/erlware/relx)
Для запуска приложения необходимо иметь файл запроса и файл с подписью. Все параметры указываются в файле 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 - имена полей которые будут присутствовать в дампе.
- id - идентификатор записи в реестре
- entryType - тип записи
- includeTime - время включения записи в реестр
- ip - IP адреса ассоциированные с записью
- subnet - подсеть в формате CIDR ассоциированная с записью
- domain - доменное имя
- decision - организациия принявшая решение о включении ресурса в реестр, а так же дата принятия решения
- url - URL ресурса
- blockType - тип блокировки: default - по умолчанию, domain - блокировка всего домена
Пример:
[id,decision,url,domain,ip]
Порядок следования полей в файле, будет таким же как порядок имен полей в конфигурации.
{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
Тип метода для всех запросов - 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
Запуск сервера:
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