Programas de muestra para acceder a la API
Aquí hay dos programas, uno en Python y otro en Perl para ayudar con la ejecución y el acceso a los datos a través de las API.
Para que cualquiera de estos programas funcione, esperan que exista un archivo llamado ~/.shadowserver.api que contenga su clave API y su secreto. Como ejemplo:
[api]
key = <<API-KEY>>
secret = <<SECRET>>
uri = https://transform.shadowserver.org/api2/
Si ocurre un error como este, significa que la consulta está pasando por una gran cantidad de datos y se debe aumentar el tiempo de espera en el programa:
$ ./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
Se pueden encontrar detalles adicionales en https://github.com/The-Shadowserver-Foundation/api_utils/wiki.
Este programa utiliza la API de informes para mantener un árbol del sistema de archivos con la opción de enviar notificaciones cuando se descargan nuevos informes para su procesamiento.
Opciones de cola:
Uso: report-manager.py /path/to/config.ini [ days ]
El argumento opcional 'días' es el número de días anteriores para descargar informes. El valor predeterminado es 2.
Archivo de configuración de muestra:
[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
La sección [informes] es obligatoria y debe contener la clave 'directorio'.
Ajustes:
Si se configura un 'notificador' en la sección [informes], se requiere una sección adicional con un nombre coincidente.
Ajustes:
La entrada de notificación es un objeto JSON que contiene una marca de tiempo, fecha del informe, tipo de informe y 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 de ejemplo para comprobar si hay nuevas descargas una vez por hora:
15 * * * * /opt/shadowserver/report-manager.py /opt/shadowserver/reports.ini