نماذج من البرامج للوصول إلى 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.
يستخدم هذا البرنامج واجهة برمجة تطبيقات التقارير للحفاظ على شجرة نظام الملفات مع خيار إرسال إشعارات عند تنزيل تقارير جديدة للمعالجة.
خيارات قائمة الانتظار:
الاستخدام: 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
قسم [التقارير] مطلوب ويجب أن يحتوي على مفتاح "الدليل".
إعدادات:
إذا تم تكوين "المخطر" في قسم [التقارير]، يلزم وجود قسم إضافي باسم مطابق.
إعدادات:
إدخال الإشعار هو كائن 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