From b089dd0ce4d578f414d361415f5ed00930f8037a Mon Sep 17 00:00:00 2001 From: Laurent Ghigonis Date: Thu, 28 Feb 2013 02:19:41 +0100 Subject: dtube: work mostly on layout --- dtube/dtube.py | 70 +++++++++++++++++++++++++--------------------------------- 1 file changed, 30 insertions(+), 40 deletions(-) (limited to 'dtube') diff --git a/dtube/dtube.py b/dtube/dtube.py index 076a0c3..2639e42 100755 --- a/dtube/dtube.py +++ b/dtube/dtube.py @@ -3,26 +3,6 @@ # dtube - Tube Definer, detube the intertubes to look into the right tube # 2013 Laurent Ghigonis # -# Get info from AS -# /AS23118 -# AS Info - Route propagation - Prefixes - Peers - Whois - IRR -# -# Get info from IP range -# /net/213.186.33/24 -# Network Info - Whois - DNS - IRR -# -# Get info from IP -# /ip/173.194.34.1 -# XXX -# -# Get info from DNS name -# /dns/google.de -# DNS Info - Website Info - IP Info - Whois -# -# Get info from Country -# /country/US -# XXX - # TODO # * command line usage # * cache @@ -41,7 +21,15 @@ from optparse import OptionParser import conf_dtube def usage(): - return "usage: %s [-t ranges|A|PTR|ip] [-f filter] [-v] range-cidr|AS|DNS|IP" % sys.argv[0] + return """usage: %s [-t ranges|A|PTR|ip] [-f filter] [-v] AS|range-cidr|IP|DNS|country + +Example: +%s AS23118 +%s 91.220.156.0/24 +%s 8.8.8.8 +%s ovh.net +%s US +""" % (sys.argv[0], sys.argv[0], sys.argv[0], sys.argv[0], sys.argv[0], sys.argv[0]) # XXX already exists in python libs ? def merge_table(left, right): @@ -127,16 +115,20 @@ class HeAS(He): "description": p.xpath('td[position()=2]/child::text()')[0].strip(), "country": p.xpath('td/div/img')[0].get('title'), } - pp = pprint.PrettyPrinter() - self.prefixes_txt = pp.pformat(self.prefixes) + self.prefixes_txt = "" + for p in self.prefixes.keys(): + self.prefixes_txt += p \ + + '\t' + self.prefixes[p]["description"] \ + + '\t(' + self.prefixes[p]["country"] + ')' + '\n' # XXX Peers # XXX Whois # XXX IRR def show(self): - print "====== INFOS ======" + print "====== INFO ======" print self.info print "====== PREFIXES ======" + print "Range\t\tDescription\t(Country)" print self.prefixes_txt class HeIPrange(He): @@ -151,14 +143,7 @@ class HeIPrange(He): def parse(self): # Network Info info_it = self.tree.xpath('//div[@id="netinfo"]')[0] - self.info = [e.text for e in info_it.getiterator()] - # XXX - #self.info.remove(None) - #for tab in info_it.xpath('table'): - # head = '\t'.join(tab.xpath('tr/th/child::text()')) - # net = '\t'.join(tab.xpath('tbody/tr/td/a/child::text()')) - # desc = tab.xpath('tbody/tr/td/child::text()')[-1] - # self.info += head + '\n' + net + '\t' + desc + '\n' + self.info = [e.text for e in info_it.getiterator()] # XXX ugly # XXX Whois # DNS dns_l = self.tree.xpath('//div[@id="dns"]') @@ -170,17 +155,22 @@ class HeIPrange(He): "href": i.xpath('td[position()=1]/a')[0].get('href'), "PTR": i.xpath('td[position()=2]/a/child::text()')[0], "PTR_href": i.xpath('td[position()=2]/a')[0].get('href'), - "A_list": i.xpath('td[position()=2]/a/child::text()'), + "A_list": i.xpath('td[position()=3]/a/child::text()'), "A_href_list": [it.get('href') for it in i.xpath('td[position()=3]/a')], } - pp = pprint.PrettyPrinter() - self.dns_txt = pp.pformat(self.dns) + self.dns_txt = "" + for d in self.dns.keys(): + self.dns_txt += d + '\t' + self.dns[d]["PTR"] + if len(self.dns[d]["A_list"]) > 0: + self.dns_txt += ' | ' + ' '.join(self.dns[d]["A_list"]) + self.dns_txt += '\n' # XXX IRR def show(self): - print "====== INFOS ======" + print "====== INFO ======" print self.info print "====== DNS ======" + print "IP\tPTR [| A]" print self.dns_txt class HeIP(He): @@ -225,10 +215,10 @@ if __name__ == '__main__': sys.exit(0) parser = OptionParser(usage=usage()) - parser.add_option('-t', action="store", dest="query_type", default=0, type=str, - help='Query type: range, A, PTR, ip, country') - parser.add_option('-f', action="store", dest="filter", default=None, type=str, - help='Filter regex for company name') + #parser.add_option('-t', action="store", dest="query_type", default=0, type=str, + # help='Query type: range, A, PTR, ip, country') + #parser.add_option('-f', action="store", dest="filter", default=None, type=str, + # help='Filter regex for company name') parser.add_option('-v', action="store_true", dest="verbose", default=False, help='verbose') (options, args) = parser.parse_args() -- cgit v1.2.3-59-g8ed1b