Примеры программ для доступа к API
Вот две программы, одна на Python и одна на Perl, которые помогут выполнить выполнение и получить доступ к данным через API.
Чтобы любая из этих программ функционировала, они ожидают, что файл с именем ~/.shadowserver.api существует и содержит ваш ключ API и секрет. В качестве примера:
[api]
key = <<API-KEY>>
secret = <<SECRET>>
uri = https://transform.shadowserver.org/api2/
Если возникает такая ошибка, это означает, что запрос проходит через большой объем данных и таймаут в программе следует увеличить:
$ ./call-api.py reports/query '{"report":"united-states", "date":"2020-10-27", "query":{"city":"ashburn"}, "limit":3}' pretty
API Exception: The read operation timed out
Дополнительную информацию можно найти по адресу https://github.com/The-Shadowserver-Foundation/api_utils/wiki.
Эта программа использует API отчетов для поддержки дерева файловой системы с возможностью отправки уведомлений при загрузке новых отчетов для обработки.
Варианты очереди:
Использование: report-manager.py /path/to/config.ini [ days ]
Необязательный аргумент «дни» — это количество предыдущих дней, за которые нужно загрузить отчеты. Значение по умолчанию — 2.
Пример файла конфигурации:
[reports]
directory = /var/tmp/reports
min_disk_free = 512
notifier = none
url_prefix = http://myserver/reports/
[stomp]
server = 127.0.0.1
port = 61613
user = guest
password = guest
queue = /queue/mytest
[redis]
server = 127.0.0.1
port = 6379
;password = guest
queue = mytest
[kafka]
server = 127.0.0.1
port = 9092
queue = mytest
Раздел [reports] является обязательным и должен содержать ключ «каталог».
Настройки:
Если в разделе [отчеты] настроен «уведомитель», необходим дополнительный раздел с соответствующим именем.
Настройки:
Запись уведомления представляет собой объект JSON, который содержит метку времени, дату отчета, тип отчета и uri:
{
"timestamp" : "2022-09-01 11:32:45",
"report_date" : "2022-08-31",
"report_type" : "scan_stun",
"uri" : "http://myserver/reports/2022/08/31/2022-08-31-scan_stun_example_com-asn.csv"
}
Пример crontab для проверки новых загрузок один раз в час:
15 * * * * /opt/shadowserver/report-manager.py /opt/shadowserver/reports.ini