2 # -*- coding: utf-8 -*- vim:fileencoding=utf-8:
3 #Copyright © 2011-2013 Greek Research and Technology Network (GRNET S.A.)
5 #Developed by Leonidas Poulopoulos (leopoul-at-noc-dot-grnet-dot-gr),
8 #Permission to use, copy, modify, and/or distribute this software for any
9 #purpose with or without fee is hereby granted, provided that the above
10 #copyright notice and this permission notice appear in all copies.
12 #THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH REGARD
13 #TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
14 #FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
15 #CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
16 #DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
17 #ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
25 def query(query, hostname, flags):
26 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
27 s.connect((hostname, 43))
28 # as IPv6 is not supported by flowspec for the time ommit -T route6
29 s.send(" -i origin -r -K -T route " + query + "\r\n")
37 query = response.splitlines()
43 m = re.match(r"(^route6?\:\s+)(?P<subnets>\S+)", line)
45 if IPNetwork(m.group('subnets')).version == 4:
46 routes4.append(IPNetwork(m.group('subnets')))
47 if IPNetwork(m.group('subnets')).version == 6:
48 routes6.append(IPNetwork(m.group('subnets')))
51 final_routes4 = collapse_address_list(routes4)
53 final_routes6 = collapse_address_list(routes6)
54 final_routes = final_routes4 + final_routes6
58 routes = query(queryas,settings.PRIMARY_WHOIS, None)
60 routes = query(queryas,settings.ALTERNATE_WHOIS, None)