From 582efc24773b34a77b4077ecd98a11e25c95d00e Mon Sep 17 00:00:00 2001 From: psy Date: Mon, 16 Sep 2013 10:15:38 -0700 Subject: [PATCH] fixed error when some xml data fails. code checkpoint. --- main.py | 15 ++++----------- web/index.py | 52 ++++++++++++++++++++-------------------------------- 2 files changed, 24 insertions(+), 43 deletions(-) diff --git a/main.py b/main.py index f3987d0..b009572 100755 --- a/main.py +++ b/main.py @@ -251,10 +251,10 @@ class bc(object): if self.method == '-e': self.method = '-E' try: - self.content = subprocess.check_output(['lft', '-S', '-n', self.method, self.destination_ip]) + self.content = subprocess.check_output(['lft', '-S', '-n', self.destination_ip]) # support for older python versions (<2.7) that don't support subprocess.check_output except: - a = subprocess.Popen(['lft', '-S', '-n', self.method, self.destination_ip], stdout=subprocess.PIPE) + a = subprocess.Popen(['lft', '-S', '-n', self.destination_ip], stdout=subprocess.PIPE) self.content = a.stdout.read() self.attempts += 1 @@ -331,27 +331,21 @@ class bc(object): self.attempts = 0 self.result_list = [] self.lft() - - if self.options.debug == True: logfile = open('tracelogfile', 'a') thingstolog = ['='*45 + "\n", "Browser: ", self.browser_path.split('/')[-1], "\n", "Version: ", self.browser_version, "\n", "Path to browser: ", self.browser_path, "\n", "History db: ", self.browser_history_path, "\n","URL: ", self.url[0], "\n", "Host: ",url, "\n", "Host ip: ", url_ip, "\n", '='*45, "\n"] for item in thingstolog: logfile.write(item) print '='*45 + "\n" + "Packages Route:\n" + '='*45 - output = self.content.splitlines() - for line in output: if self.options.debug == True: logfile.write(line+'\n') line = line.split() - for ip in line: if re.match(r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$",ip): self.hop_ip = ip - record = self.geoip.record_by_addr(ip) try: self.asn = self.geoasn.org_by_addr(ip) @@ -389,8 +383,9 @@ class bc(object): self.vardict = {'destination_ip': self.destination_ip, 'hop_count': self.hop_count,'hop_ip': self.hop_ip, 'server_name': self.server_name, 'country': self.country, 'city': self.city, 'longitude': self.longitude, 'latitude': self.latitude, 'asn' : self.asn, 'timestamp' : self.timestamp } except: print "Trace:", self.hop_count, "->", "Not allowed" - self.hop_count+=1 + self.vardict = {'destination_ip': self.destination_ip, 'hop_count': self.hop_count,'hop_ip': self.hop_ip, 'server_name': self.server_name, 'country': '-', 'city': '-', 'longitude': '-', 'latitude': '-', 'asn' : self.asn, 'timestamp' : self.timestamp } + self.hop_count+=1 # write xml data to file self.result_list.append(self.vardict) xml_results = xml_reporting(self) @@ -403,10 +398,8 @@ class bc(object): logfile.close() self.old_url = url self.hop_count = 0 # to start a new map - print "\n" return - def getGEO(self): """ Get Geolocation database (http://dev.maxmind.com/geoip/legacy/geolite/) diff --git a/web/index.py b/web/index.py index da8c5b5..2eab7ab 100755 --- a/web/index.py +++ b/web/index.py @@ -1,25 +1,21 @@ -#new index.py -# -*- coding: ISO-8859-1 -*- -from lxml import etree - +#!/usr/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 f = open('data.xml', 'r') f2 = open('data.xml', 'r') -xml = etree.parse(f) - +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('', '').replace('','').replace('','') - asn = hop.getElementsByTagName('asn')[0].toxml().replace('','').replace('','') - hop_ip = hop.getElementsByTagName('hop_ip')[0].toxml().replace('','').replace('','') - longitude = hop.getElementsByTagName('longitude')[0].toxml().replace('','').replace('','') - latitude = hop.getElementsByTagName('latitude')[0].toxml().replace('','').replace('','') - - point = """ L.marker(["""+latitude+""", """+longitude+"""]).addTo(map) - .bindPopup(""""+server_name+"""
"""+hop_ip+"""
"""+asn+"""
").openPopup(); """ - - latlong = [float(latitude.encode('utf-8')), float(longitude.encode('utf-8'))] - geoarray.append(latlong) + hop = parseString(dom.getElementsByTagName('hop')[counter].toxml().encode('utf-8')) + server_name = hop.getElementsByTagName('server_name')[0].toxml().replace('','').replace('','') + asn = hop.getElementsByTagName('asn')[0].toxml().replace('','').replace('','') + hop_ip = hop.getElementsByTagName('hop_ip')[0].toxml().replace('','').replace('','') + longitude = hop.getElementsByTagName('longitude')[0].toxml().replace('','').replace('','') + latitude = hop.getElementsByTagName('latitude')[0].toxml().replace('','').replace('','') - hoplist.append(point) + point = """ L.marker(["""+latitude+""", """+longitude+"""]).addTo(map) + .bindPopup(""""+server_name+"""
"""+hop_ip+"""
"""+asn+"""
").openPopup(); """ - b = b+point - - -test = open('test.html','w') + latlong = [float(latitude.encode('utf-8')), float(longitude.encode('utf-8'))] + geoarray.append(latlong) + hoplist.append(point) + b = b+point output = """ @@ -78,6 +69,3 @@ output = """ """ - -test.write(output) -test.close \ No newline at end of file