diff --git a/bgpdata/migrations/0001_initial.py b/bgpdata/migrations/0001_initial.py index 6948af1..93425e8 100644 --- a/bgpdata/migrations/0001_initial.py +++ b/bgpdata/migrations/0001_initial.py @@ -39,7 +39,7 @@ class Migration(migrations.Migration): ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('pingable', models.BooleanField(default=False)), ('reachable', models.BooleanField(default=False)), - ('AS', models.ForeignKey(to='bgpdata.AS')), + ('AS', models.ForeignKey(to='bgpdata.AS', on_delete=models.CASCADE)), ], options={ }, @@ -73,10 +73,10 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('origin', models.CharField(max_length=10, choices=[(b'path', b'BGP Path'), (b'direct', b'Direct Connection')])), - ('as1', models.ForeignKey(related_name='peering1', to='bgpdata.AS')), - ('as2', models.ForeignKey(related_name='peering2', to='bgpdata.AS')), - ('router1', models.ForeignKey(related_name='peering1', default=None, to='bgpdata.BorderRouter', null=True)), - ('router2', models.ForeignKey(related_name='peering2', default=None, to='bgpdata.BorderRouter', null=True)), + ('as1', models.ForeignKey(related_name='peering1', to='bgpdata.AS', on_delete=models.CASCADE)), + ('as2', models.ForeignKey(related_name='peering2', to='bgpdata.AS', on_delete=models.CASCADE)), + ('router1', models.ForeignKey(related_name='peering1', default=None, to='bgpdata.BorderRouter', null=True, on_delete=models.CASCADE)), + ('router2', models.ForeignKey(related_name='peering2', default=None, to='bgpdata.BorderRouter', null=True, on_delete=models.CASCADE)), ], options={ }, @@ -85,13 +85,13 @@ class Migration(migrations.Migration): migrations.AddField( model_name='as', name='crawl', - field=models.ForeignKey(to='bgpdata.CrawlRun'), + field=models.ForeignKey(to='bgpdata.CrawlRun', on_delete=models.CASCADE), preserve_default=True, ), migrations.AddField( model_name='announcement', name='originAS', - field=models.ForeignKey(to='bgpdata.AS'), + field=models.ForeignKey(to='bgpdata.AS', on_delete=models.CASCADE), preserve_default=True, ), ] diff --git a/bgpdata/migrations/0003_crawllog.py b/bgpdata/migrations/0003_crawllog.py index 2c39a81..61118d1 100644 --- a/bgpdata/migrations/0003_crawllog.py +++ b/bgpdata/migrations/0003_crawllog.py @@ -18,8 +18,8 @@ class Migration(migrations.Migration): ('logtime', models.DateTimeField(auto_now_add=True)), ('severity', models.CharField(max_length=10, choices=[(b'INFO', b'info'), (b'ERROR', b'error'), (b'DEBUG', b'debug'), (b'WARN', b'warning')])), ('message', models.TextField()), - ('crawl', models.ForeignKey(to='bgpdata.CrawlRun')), - ('host', models.ForeignKey(to='bgpdata.ConfigHost')), + ('crawl', models.ForeignKey(to='bgpdata.CrawlRun', on_delete=models.CASCADE)), + ('host', models.ForeignKey(to='bgpdata.ConfigHost', on_delete=models.SET_NULL)), ], options={ }, diff --git a/bgpdata/migrations/0005_auto_20150321_1608.py b/bgpdata/migrations/0005_auto_20150321_1608.py index 11e5325..5f0f353 100644 --- a/bgpdata/migrations/0005_auto_20150321_1608.py +++ b/bgpdata/migrations/0005_auto_20150321_1608.py @@ -14,7 +14,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='crawllog', name='host', - field=models.ForeignKey(to='bgpdata.ConfigHost', null=True), + field=models.ForeignKey(to='bgpdata.ConfigHost', null=True, on_delete=models.SET_NULL), preserve_default=True, ), ] diff --git a/bgpdata/migrations/0006_auto_20150321_1845.py b/bgpdata/migrations/0006_auto_20150321_1845.py index bdd127d..6245059 100644 --- a/bgpdata/migrations/0006_auto_20150321_1845.py +++ b/bgpdata/migrations/0006_auto_20150321_1845.py @@ -20,7 +20,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='crawllog', name='host', - field=models.ForeignKey(blank=True, to='bgpdata.ConfigHost', null=True), + field=models.ForeignKey(blank=True, to='bgpdata.ConfigHost', null=True, on_delete=models.CASCADE), preserve_default=True, ), ] diff --git a/bgpdata/migrations/0007_auto_20150322_1828.py b/bgpdata/migrations/0007_auto_20150322_1828.py index 8577d04..01b67b0 100644 --- a/bgpdata/migrations/0007_auto_20150322_1828.py +++ b/bgpdata/migrations/0007_auto_20150322_1828.py @@ -15,8 +15,8 @@ class Migration(migrations.Migration): name='BorderRouterPair', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('router1', models.ForeignKey(related_name='routerpair1', default=None, blank=True, to='bgpdata.BorderRouter', null=True)), - ('router2', models.ForeignKey(related_name='routerpair2', default=None, blank=True, to='bgpdata.BorderRouter', null=True)), + ('router1', models.ForeignKey(related_name='routerpair1', default=None, blank=True, to='bgpdata.BorderRouter', null=True, on_delete=models.CASCADE)), + ('router2', models.ForeignKey(related_name='routerpair2', default=None, blank=True, to='bgpdata.BorderRouter', null=True, on_delete=models.CASCADE)), ], options={ }, @@ -33,7 +33,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name='announcement', name='router', - field=models.ForeignKey(default=None, to='bgpdata.BorderRouter'), + field=models.ForeignKey(default=None, to='bgpdata.BorderRouter', on_delete=models.CASCADE), preserve_default=False, ), migrations.AddField( diff --git a/bgpdata/migrations/0008_auto_20150322_1906.py b/bgpdata/migrations/0008_auto_20150322_1906.py index d6ae2f3..7f81f13 100644 --- a/bgpdata/migrations/0008_auto_20150322_1906.py +++ b/bgpdata/migrations/0008_auto_20150322_1906.py @@ -18,7 +18,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name='borderrouterpair', name='peering', - field=models.ForeignKey(default=None, to='bgpdata.Peering'), + field=models.ForeignKey(default=None, to='bgpdata.Peering', on_delete=models.CASCADE), preserve_default=False, ), ] diff --git a/bgpdata/migrations/0010_auto_20150327_0003.py b/bgpdata/migrations/0010_auto_20150327_0003.py index 02795c5..f3ee565 100644 --- a/bgpdata/migrations/0010_auto_20150327_0003.py +++ b/bgpdata/migrations/0010_auto_20150327_0003.py @@ -14,7 +14,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name='as', name='lastSeen', - field=models.ForeignKey(related_name='as_lastseen', default=None, blank=True, to='bgpdata.CrawlRun', null=True), + field=models.ForeignKey(related_name='as_lastseen', default=None, blank=True, to='bgpdata.CrawlRun', null=True, on_delete=models.SET_NULL), preserve_default=True, ), migrations.AddField( diff --git a/bgpdata/migrations/0015_auto_20170117_0034.py b/bgpdata/migrations/0015_auto_20170117_0034.py index a0eb9c6..0fa7d70 100644 --- a/bgpdata/migrations/0015_auto_20170117_0034.py +++ b/bgpdata/migrations/0015_auto_20170117_0034.py @@ -14,7 +14,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name='announcement', name='crawlAS', - field=models.ForeignKey(related_name='crawl_as', to='bgpdata.AS', null=True), + field=models.ForeignKey(related_name='crawl_as', to='bgpdata.AS', null=True, on_delete=models.CASCADE), preserve_default=True, ), migrations.AlterField( diff --git a/bgpdata/migrations/0016_auto_20170117_0103.py b/bgpdata/migrations/0016_auto_20170117_0103.py index 11cef4f..1a579ba 100644 --- a/bgpdata/migrations/0016_auto_20170117_0103.py +++ b/bgpdata/migrations/0016_auto_20170117_0103.py @@ -14,7 +14,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='announcement', name='originAS', - field=models.ForeignKey(to='bgpdata.AS', null=True), + field=models.ForeignKey(to='bgpdata.AS', null=True, on_delete=models.CASCADE), preserve_default=True, ), ] diff --git a/bgpdata/models.py b/bgpdata/models.py index b70f96d..adee1fe 100644 --- a/bgpdata/models.py +++ b/bgpdata/models.py @@ -29,7 +29,7 @@ class CrawlRun(models.Model): startTime = models.DateTimeField() endTime = models.DateTimeField(null=True, blank=True) - hostsCrawled = models.ManyToManyField(ConfigHost, null=True, blank=True) + hostsCrawled = models.ManyToManyField(ConfigHost, blank=True) graph = models.TextField() asCount = models.IntegerField(default=0) @@ -65,7 +65,7 @@ class CrawlLog(models.Model): (WARN, 'warning'), ) - crawl = models.ForeignKey(CrawlRun) + crawl = models.ForeignKey(CrawlRun, on_delete=models.CASCADE) host = models.ForeignKey(ConfigHost, null=True, blank=True, on_delete=models.SET_NULL) logtime = models.DateTimeField(auto_now_add=True) severity = models.CharField(max_length=10, choices=SEVERITY) @@ -90,12 +90,13 @@ class CrawlLog(models.Model): class AS(models.Model): # asno - crawl = models.ForeignKey(CrawlRun) + crawl = models.ForeignKey(CrawlRun, on_delete=models.CASCADE) number = models.IntegerField(db_index=True) directlyCrawled = models.BooleanField(default=False) online = models.BooleanField(default=True, db_index=True) - lastSeen = models.ForeignKey(CrawlRun, blank=True, null=True, default=None, related_name='as_lastseen') + lastSeen = models.ForeignKey(CrawlRun, blank=True, null=True, default=None, related_name='as_lastseen', + on_delete=models.CASCADE) class Meta: unique_together = (('crawl', 'number'),) @@ -126,7 +127,7 @@ class AS(models.Model): class BorderRouter(models.Model): # as id, ip, check method, pingable, reachable # unique: (crawl_id, asno, as id) - AS = models.ForeignKey(AS) + AS = models.ForeignKey(AS, on_delete=models.CASCADE) routerID = models.GenericIPAddressField() pingable = models.BooleanField(default=False) @@ -139,7 +140,7 @@ class BorderRouter(models.Model): class Announcement(models.Model): - router = models.ForeignKey(BorderRouter) + router = models.ForeignKey(BorderRouter, on_delete=models.CASCADE) ip = models.GenericIPAddressField() prefix = models.IntegerField() @@ -147,8 +148,8 @@ class Announcement(models.Model): # NOTE: increase length for longer pathes (currently supports a length of ~85) ASPath = models.CharField(max_length=512) nextHop = models.GenericIPAddressField() - originAS = models.ForeignKey(AS, null=True) - crawlAS = models.ForeignKey(AS, related_name='crawl_as', null=True) + originAS = models.ForeignKey(AS, null=True, on_delete=models.CASCADE) + crawlAS = models.ForeignKey(AS, related_name='crawl_as', null=True, on_delete=models.CASCADE) def __str__(self): return "%s/%s via %s (crawl %s)" % (self.ip, self.prefix, self.ASPath, self.router.AS.crawl.pk) @@ -167,8 +168,8 @@ class Peering(models.Model): ('as1', 'as2'), ) - as1 = models.ForeignKey(AS, related_name='peering1') - as2 = models.ForeignKey(AS, related_name='peering2') + as1 = models.ForeignKey(AS, related_name='peering1', on_delete=models.CASCADE) + as2 = models.ForeignKey(AS, related_name='peering2', on_delete=models.CASCADE) origin = models.CharField(max_length=10, choices=ORIGIN) def __str__(self): @@ -188,9 +189,11 @@ class Peering(models.Model): class BorderRouterPair(models.Model): - peering = models.ForeignKey(Peering) - router1 = models.ForeignKey(BorderRouter, default=None, blank=True, null=True, related_name='routerpair1') - router2 = models.ForeignKey(BorderRouter, default=None, blank=True, null=True, related_name='routerpair2') + peering = models.ForeignKey(Peering, on_delete=models.CASCADE) + router1 = models.ForeignKey(BorderRouter, default=None, blank=True, null=True, related_name='routerpair1', + on_delete=models.CASCADE) + router2 = models.ForeignKey(BorderRouter, default=None, blank=True, null=True, related_name='routerpair2', + on_delete=models.CASCADE) def __str__(self): return "%s <--> %s (crawl %d)" % (self.router1, self.router2, self.router1.AS.crawl.pk) @@ -208,7 +211,7 @@ class ASLastSeen(models.Model): directlyCrawled = models.BooleanField(default=False) online = models.BooleanField() lastSeen = models.DateTimeField(blank=True, null=True) - crawlLastSeen = models.ForeignKey(CrawlRun) + crawlLastSeen = models.ForeignKey(CrawlRun, null=True, on_delete=models.SET_NULL) def __str__(self): return ("AS{} {}, last seen {} (crawl {})" @@ -217,4 +220,4 @@ class ASLastSeen(models.Model): class ASLastSeenNeighbor(models.Model): asn = models.IntegerField() - neighbor = models.ForeignKey(ASLastSeen) + neighbor = models.ForeignKey(ASLastSeen, on_delete=models.CASCADE) diff --git a/dnmapper/settings.py b/dnmapper/settings.py index 1a306b3..cdeadf6 100644 --- a/dnmapper/settings.py +++ b/dnmapper/settings.py @@ -47,12 +47,11 @@ INSTALLED_APPS = ( API_LIMIT_PER_PAGE = 100 -MIDDLEWARE_CLASSES = ( +MIDDLEWARE = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ) diff --git a/dnmapper/urls.py b/dnmapper/urls.py index 7c0ea2a..40d40cc 100644 --- a/dnmapper/urls.py +++ b/dnmapper/urls.py @@ -14,5 +14,5 @@ urlpatterns = ( url(r'^$', RedirectView.as_view(url='/map/')), url(r'^map/', include(bgpdata.urls)), - url(r'^admin/', include(admin.site.urls)), + url(r'^admin/', admin.site.urls), ) diff --git a/requirements.txt b/requirements.txt index c7f19e3..055620e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -django==1.11.25 +django<3 django-tastypie