2021-04-21 12:09:59 +02:00
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from generator import download_to_file , get_version , write_to_file , get_abspath_source_file
2021-04-21 16:42:55 +02:00
import ipaddress
2021-04-21 12:09:59 +02:00
def process ( files , dst ) :
warninglist = {
' name ' : " List of known Stackpath CDN IP ranges " ,
' version ' : get_version ( ) ,
' description ' : " List of known Stackpath (Highwinds) CDN IP ranges (https://support.stackpath.com/hc/en-us/articles/360001091666-Whitelist-CDN-WAF-IP-Blocks) " ,
' type ' : " cidr " ,
' list ' : [ ] ,
' matching_attributes ' : [ " ip-dst " , " ip-src " , " domain|ip " ]
}
for file in files :
with open ( get_abspath_source_file ( file ) , ' r ' ) as f :
ips = f . readlines ( )
for ip in ips :
2021-04-21 16:42:55 +02:00
iptoadd = ip . strip ( )
try :
ipaddress . ip_network ( ip . strip ( ) )
except ValueError as err : # if it's host given strip to the subnet
iptoadd = str ( ipaddress . IPv6Interface ( ip . strip ( ) ) . ip )
warninglist [ ' list ' ] . append ( iptoadd )
2021-04-21 12:09:59 +02:00
write_to_file ( warninglist , dst )
if __name__ == ' __main__ ' :
sp_base_url = " https://support.stackpath.com/hc/en-us/article_attachments/360083735711/ "
uri_list = [ ' ipblocks.txt ' ]
sp_dst = ' stackpath '
to_process = list ( )
for uri in uri_list :
url = sp_base_url + uri
file = ' stackpath_ {} ' . format ( uri )
download_to_file ( url , file )
to_process . append ( file )
process ( to_process , sp_dst )