--- /dev/null
+from django.db import models
+from django.contrib.auth.models import User
+from flowspy.peers.models import *
+
+
+class UserProfile(models.Model):
+ user = models.OneToOneField(User)
+ domain = models.ForeignKey(Peer)
+
+ def get_address_space(self):
+ networks = self.domain.networks.all()
+ if not networks:
+ return False
+ return networks
\ No newline at end of file
--- /dev/null
+"""
+This file demonstrates two different styles of tests (one doctest and one
+unittest). These will both pass when you run "manage.py test".
+
+Replace these with more appropriate tests for your application.
+"""
+
+from django.test import TestCase
+
+class SimpleTest(TestCase):
+ def test_basic_addition(self):
+ """
+ Tests that 1 + 1 always equals 2.
+ """
+ self.failUnlessEqual(1 + 1, 2)
+
+__test__ = {"doctest": """
+Another way to test that 1 + 1 is equal to 2.
+
+>>> 1 + 1 == 2
+True
+"""}
+
--- /dev/null
+# Create your views here.
--- /dev/null
+from django.db import models
+from utils.whois import *
+
+# Create your models here.
+class PeerRange(models.Model):
+ network = models.CharField(max_length=128)
+ def __unicode__(self):
+ return self.network
+ class Meta:
+ db_table = u'peer_range'
+
+# Create your models here.
+class Peer(models.Model):
+ peer_id = models.IntegerField(primary_key=True)
+ peer_name = models.CharField(max_length=128)
+ peer_as = models.IntegerField()
+ peer_tag = models.CharField(max_length=64)
+ domain_name = models.CharField(max_length=128)
+ networks = models.ManyToManyField(PeerRange, null=True, blank=True)
+ def __unicode__(self):
+ return self.peer_name
+ class Meta:
+ db_table = u'peer'
+
+ def fill_networks(self):
+ network_range = []
+ peer_as = "AS%s" %self.peer_as
+ network_range = whois(peer_as)
+ if network_range:
+ for network_item in network_range:
+ range, created = PeerRange.objects.get_or_create(network=network_item.compressed)
+ if not range.network in self.networks.all():
+ self.networks.add(range)
+ self.save()
+
+
+
+
--- /dev/null
+"""
+This file demonstrates two different styles of tests (one doctest and one
+unittest). These will both pass when you run "manage.py test".
+
+Replace these with more appropriate tests for your application.
+"""
+
+from django.test import TestCase
+
+class SimpleTest(TestCase):
+ def test_basic_addition(self):
+ """
+ Tests that 1 + 1 always equals 2.
+ """
+ self.failUnlessEqual(1 + 1, 2)
+
+__test__ = {"doctest": """
+Another way to test that 1 + 1 is equal to 2.
+
+>>> 1 + 1 == 2
+True
+"""}
+
--- /dev/null
+# Create your views here.
--- /dev/null
+import socket
+from ipaddr import *
+import re
+
+RIPEWHOIS = 'whois.ripe.net'
+GRNETWHOIS = 'whois.grnet.gr'
+
+def query(query, hostname, flags):
+ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ s.connect((hostname, 43))
+ s.send(" -i origin -r -K -T route -T route6 " + query + "\r\n")
+ response = ''
+ while True:
+ d = s.recv(4096)
+ response += d
+ if not d:
+ break
+ s.close()
+ query = response.splitlines()
+ routes4 = []
+ routes6 = []
+ final_routes4 = []
+ final_routes6 = []
+ for line in query:
+ m = re.match(r"(^route6?\:\s+)(?P<subnets>\S+)", line)
+ if m:
+ if IPNetwork(m.group('subnets')).version == 4:
+ routes4.append(IPNetwork(m.group('subnets')))
+ if IPNetwork(m.group('subnets')).version == 6:
+ routes6.append(IPNetwork(m.group('subnets')))
+ final_routes = []
+ if len(routes4):
+ final_routes4 = collapse_address_list(routes4)
+ if len(routes6):
+ final_routes6 = collapse_address_list(routes6)
+ final_routes = final_routes4 + final_routes6
+ return final_routes
+
+def whois(queryas):
+ routes = query(queryas,GRNETWHOIS, None)
+ if not routes:
+ routes = query(queryas,RIPEWHOIS, None)
+ return routes
\ No newline at end of file