Fix Microsoft Azure generator: format changed from XML to JSON + download link changed.
							parent
							
								
									e0b3968635
								
							
						
					
					
						commit
						c00b21de5f
					
				| 
						 | 
				
			
			@ -1,25 +1,49 @@
 | 
			
		|||
#!/usr/bin/env python3
 | 
			
		||||
# -*- coding: utf-8 -*-
 | 
			
		||||
 | 
			
		||||
import requests
 | 
			
		||||
import xml.etree.ElementTree as ET
 | 
			
		||||
import json
 | 
			
		||||
import datetime
 | 
			
		||||
import requests
 | 
			
		||||
from bs4 import BeautifulSoup
 | 
			
		||||
 | 
			
		||||
url = 'https://download.microsoft.com/download/0/1/8/018E208D-54F8-44CD-AA26-CD7BC9524A8C/PublicIPs_20171226.xml'
 | 
			
		||||
r = requests.get(url)
 | 
			
		||||
office365 = ET.fromstring(r.text)
 | 
			
		||||
l = []
 | 
			
		||||
for region in office365.iter('Region'):
 | 
			
		||||
    for subnet in region.iter('IpRange'):
 | 
			
		||||
        l.append(subnet.get('Subnet'))
 | 
			
		||||
from generator import download, download_to_file, get_abspath_list_file, get_version
 | 
			
		||||
 | 
			
		||||
warninglist = {}
 | 
			
		||||
warninglist['name'] = 'List of known Microsoft Azure Datacenter IP Ranges'
 | 
			
		||||
warninglist['version'] = int(datetime.date.today().strftime('%Y%m%d'))
 | 
			
		||||
warninglist['description'] = 'Microsoft Azure Datacenter IP Ranges'
 | 
			
		||||
warninglist['list'] = sorted(set(l))
 | 
			
		||||
warninglist['matching_attributes'] = ["ip-src", "ip-dst", "domain|ip"]
 | 
			
		||||
warninglist['type'] = 'cidr'
 | 
			
		||||
 | 
			
		||||
print(json.dumps(warninglist))
 | 
			
		||||
def get_json_url(page):
 | 
			
		||||
    soup = BeautifulSoup(page.text, 'html.parser')
 | 
			
		||||
    retry_link_text = soup.find(class_='link-align')
 | 
			
		||||
    retry_links = retry_link_text.find_all('a')
 | 
			
		||||
    return retry_links[0].get('href')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def process(file, dst):
 | 
			
		||||
 | 
			
		||||
    warninglist = {
 | 
			
		||||
        'name': 'List of known Microsoft Azure Datacenter IP Ranges',
 | 
			
		||||
        'version': get_version(),
 | 
			
		||||
        'description': 'Microsoft Azure Datacenter IP Ranges',
 | 
			
		||||
        'list': [],
 | 
			
		||||
        'matching_attributes': ["ip-src", "ip-dst", "domain|ip"],
 | 
			
		||||
        'type': 'cidr'
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    with open(file, 'r') as json_file:
 | 
			
		||||
        ms_azure_ip_list = json.load(json_file)
 | 
			
		||||
    
 | 
			
		||||
    for value in ms_azure_ip_list['values']:
 | 
			
		||||
        warninglist['list'] += value['properties']['addressPrefixes']
 | 
			
		||||
 | 
			
		||||
    warninglist['list'] = sorted(set(warninglist['list']))
 | 
			
		||||
 | 
			
		||||
    with open(get_abspath_list_file(dst), 'w') as data_file:
 | 
			
		||||
        json.dump(warninglist, data_file, indent=2, sort_keys=True)
 | 
			
		||||
        data_file.write("\n")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    ms_azure_url = 'https://www.microsoft.com/en-us/download/confirmation.aspx?id=56519'
 | 
			
		||||
    ms_azure_file = 'ms-azure.json'
 | 
			
		||||
    ms_azure_dst = 'microsoft-azure'
 | 
			
		||||
 | 
			
		||||
    ms_azure_json_url = get_json_url(download(ms_azure_url))
 | 
			
		||||
    download_to_file(ms_azure_json_url, ms_azure_file)
 | 
			
		||||
    process(ms_azure_file, ms_azure_dst)
 | 
			
		||||
		Loading…
	
		Reference in New Issue