โปรแกรมตัวอย่างในการเข้าถึง 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
จำเป็นต้องมีส่วน [รายงาน] และต้องมีคีย์ 'ไดเรกทอรี'
การตั้งค่า:
หากมีการกำหนดค่า 'ตัวแจ้งเตือน' ในส่วน [รายงาน] จำเป็นต้องมีส่วนเพิ่มเติมที่มีชื่อตรงกัน
การตั้งค่า:
รายการการแจ้งเตือนเป็นออบเจ็กต์ 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