Contoh program untuk mengakses API
Berikut dua program, satu dengan Python dan satu lagi di Perl untuk membantu eksekusi dan mengakses data melalui API.
Agar salah satu dari program ini berfungsi, mereka mengharapkan file bernama ~/.shadowserver.api ada dan berisi kunci dan rahasia API Anda. Sebagai contoh:
[api]
key = <<API-KEY>>
secret = <<SECRET>>
uri = https://transform.shadowserver.org/api2/
Jika kesalahan seperti ini terjadi, berarti query melewati banyak data dan batas waktu dalam program harus ditingkatkan:
$ ./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
Detail tambahan dapat ditemukan di https://github.com/The-Shadowserver-Foundation/api_utils/wiki.
Program ini menggunakan API laporan untuk memelihara pohon sistem file dengan opsi untuk mengirimkan pemberitahuan ketika laporan baru diunduh untuk diproses.
Pilihan antrian:
Penggunaan: report-manager.py /path/to/config.ini [ days ]
Argumen opsional 'hari' adalah jumlah hari sebelumnya untuk mengunduh laporan. Standarnya adalah 2.
Contoh file konfigurasi:
[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
Bagian [laporan] wajib diisi dan harus berisi kunci 'direktori'.
Pengaturan:
Jika 'pemberitahuan' dikonfigurasi di bagian [laporan], diperlukan bagian tambahan dengan nama yang cocok.
Pengaturan:
Entri notifikasi adalah objek JSON yang berisi stempel waktu, tanggal laporan, jenis laporan, dan 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"
}
Contoh crontab untuk memeriksa unduhan baru satu kali per jam:
15 * * * * /opt/shadowserver/report-manager.py /opt/shadowserver/reports.ini