|
|
|
#!/usr/local/bin/python
|
|
|
|
# -*- coding: iso-8859-15 -*-
|
|
|
|
"""
|
|
|
|
BC (Border-Check) is a tool to retrieve info of traceroute tests over website navigation routes.
|
|
|
|
GPLv3 - 2013 by psy (epsylon@riseup.net)
|
|
|
|
"""
|
|
|
|
from xml.dom.minidom import parseString
|
|
|
|
import xml.etree.ElementTree as ET
|
|
|
|
# extract data from a xml file
|
|
|
|
# try:
|
|
|
|
f = open('data.xml', 'r')
|
|
|
|
f2 = open('data.xml', 'r')
|
|
|
|
xml = ET.parse(f)
|
|
|
|
data = f2.read()
|
|
|
|
dom = parseString(data.encode('utf-8'))
|
|
|
|
f.close()
|
|
|
|
f2.close()
|
|
|
|
n_hops = dom.getElementsByTagName('hop')[-1].toxml().replace('<hop>', '').replace('</hop','')
|
|
|
|
hop_list = []
|
|
|
|
hop_ip_list =[]
|
|
|
|
geoarray = []
|
|
|
|
latlong= []
|
|
|
|
asn_list =[]
|
|
|
|
server_name_list = []
|
|
|
|
timestamp_list = []
|
|
|
|
last_hop = int(xml.findall('hop')[-1].text)
|
|
|
|
country_code_list = []
|
|
|
|
|
|
|
|
for counter in range(1, last_hop+1):
|
|
|
|
url = xml.getroot().text
|
|
|
|
hop_element = parseString(dom.getElementsByTagName('hop')[counter].toxml().encode('utf-8'))
|
|
|
|
hop = xml.findall('hop')[counter].text
|
|
|
|
server_name = hop_element.getElementsByTagName('server_name')[0].toxml().replace('<server_name>','').replace('</server_name>','')
|
|
|
|
asn = hop_element.getElementsByTagName('asn')[0].toxml().replace('<asn>','').replace('</asn>','')
|
|
|
|
hop_ip = hop_element.getElementsByTagName('hop_ip')[0].toxml().replace('<hop_ip>','').replace('</hop_ip>','')
|
|
|
|
longitude = hop_element.getElementsByTagName('longitude')[0].toxml().replace('<longitude>','').replace('</longitude>','')
|
|
|
|
latitude = hop_element.getElementsByTagName('latitude')[0].toxml().replace('<latitude>','').replace('</latitude>','')
|
|
|
|
timestamp = hop_element.getElementsByTagName('timestamp')[0].toxml().replace('<timestamp>','').replace('</timestamp>','')
|
|
|
|
country_code = hop_element.getElementsByTagName('country_code')[0].toxml().replace('<country_code>','').replace('</country_code>','')
|
|
|
|
|
|
|
|
latlong = [float(latitude.encode('utf-8')), float(longitude.encode('utf-8'))]
|
|
|
|
geoarray.append(latlong)
|
|
|
|
asn_list.append(asn.encode('utf-8'))
|
|
|
|
hop_list.append(str(hop))
|
|
|
|
hop_ip_list.append(hop_ip.encode('utf-8'))
|
|
|
|
server_name_list.append(server_name.encode('utf-8'))
|
|
|
|
timestamp_list.append(float(timestamp))
|
|
|
|
country_code_list.append(country_code.encode('utf-8'))
|
|
|
|
|
|
|
|
x = open('testmap.html','w')
|
|
|
|
# HTML + JS container
|
|
|
|
output = """
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<title>Border Check - Web Visualizor</title>
|
|
|
|
<link rel="stylesheet" href="js/leaflet/leaflet.css" />
|
|
|
|
<link rel="stylesheet" href="style.css" />
|
|
|
|
<link rel="stylesheet" href="js/cluster/MarkerCluster.Default.css"/>
|
|
|
|
<link rel="stylesheet" href="js/cluster/MarkerCluster.css"/>
|
|
|
|
<script src="js/leaflet/leaflet.js"></script>
|
|
|
|
<script src="js/rlayer-modified.min.js"></script>
|
|
|
|
<script src="js/raphael.js"></script>
|
|
|
|
<script src="js/jquery-1.10.2.min.js"></script>
|
|
|
|
<script src="js/bc2.js"></script>
|
|
|
|
<script src="js/favicon.js"></script>
|
|
|
|
<script src="js/cluster/leaflet.markercluster.js"></script>
|
|
|
|
|
|
|
|
<script type="text/javascript">
|
|
|
|
$(document).ready (function(){
|
|
|
|
var h = $(window).innerHeight();
|
|
|
|
var w = $(window).innerWidth();
|
|
|
|
$("#wrapper").css({
|
|
|
|
"width": w, "height": h
|
|
|
|
})
|
|
|
|
})
|
|
|
|
</script>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<div id="wrapper">
|
|
|
|
<div id="header">"""+url+"""</div>
|
|
|
|
<div id="map" style="width: 100%; height: 100%"></div>
|
|
|
|
<div id="bar"><button id='button'><</button></div>
|
|
|
|
</div>
|
|
|
|
<script type="text/javascript">
|
|
|
|
hop_list = """+str(hop_list)+"""
|
|
|
|
hop_ip_list = """+str(hop_ip_list)+"""
|
|
|
|
counter_max = """+str(last_hop)+"""
|
|
|
|
latlong = """+str(geoarray)+"""
|
|
|
|
asn_list = """+str(asn_list)+"""
|
|
|
|
server_name_list = """+str(server_name_list)+"""
|
|
|
|
timestamp_list = """+str(timestamp_list)+"""
|
|
|
|
country_code_list = """+str(country_code_list)+"""
|
|
|
|
</script>
|
|
|
|
</html>
|
|
|
|
"""
|
|
|
|
x.write(output)
|
|
|
|
x.close
|
|
|
|
# except:
|
|
|
|
# output = """
|
|
|
|
# <html> loading </html>
|
|
|
|
# """
|