Revision 6ee21ffd

b/accounts/models.py
5 5

  
6 6
class UserProfile(models.Model):
7 7
    user = models.OneToOneField(User)
8
    domain = models.ForeignKey(Peer)
8
    peer = models.ForeignKey(Peer)
9 9

  
10 10
    def get_address_space(self):
11 11
        networks = self.domain.networks.all()
b/flowspec/admin.py
1 1
from django.contrib import admin
2 2
from flowspy.flowspec.models import *
3
from flowspy.accounts.models import *
3 4
from utils import proxy as PR
4 5

  
5 6
class RouteAdmin(admin.ModelAdmin):
......
36 37
#admin.site.register(MatchAddress)
37 38
admin.site.register(MatchPort)
38 39
admin.site.register(MatchDscp)
40
admin.site.register(UserProfile)
39 41
#admin.site.register(MatchFragmentType)
40 42
#admin.site.register(MatchIcmpCode)
41 43
#admin.site.register(MatchIcmpType)
b/flowspec/views.py
14 14
from django.utils import simplejson
15 15
from django.core.urlresolvers import reverse
16 16
from django.contrib import messages
17
from flowspy.accounts.models import *
17 18

  
18 19
from django.forms.models import model_to_dict
19 20

  
......
33 34
                              context_instance=RequestContext(request))
34 35

  
35 36
@login_required
37
def group_routes(request):
38
    if request.user.is_anonymous():
39
        return HttpResponseRedirect(reverse('login'))
40
    peer = request.user.get_profile().peer
41
    if peer:
42
       peer_members = UserProfile.objects.filter(peer=peer)
43
       users = [prof.user for prof in peer_members]
44
       group_routes = Route.objects.filter(applier__in=users)
45
    return render_to_response('user_routes.html', {'routes': group_routes},
46
                              context_instance=RequestContext(request))
47

  
48

  
49
@login_required
36 50
def add_route(request):
37 51
    if request.method == "GET":
38 52
        form = RouteForm()
b/peers/models.py
1 1
from django.db import models
2 2
from utils.whois import *
3
from django.contrib.auth.models import User
3 4

  
4 5
# Create your models here.
5 6
class PeerRange(models.Model):
......
15 16
    peer_name = models.CharField(max_length=128)
16 17
    peer_as = models.IntegerField()
17 18
    peer_tag = models.CharField(max_length=64)
18
    domain_name = models.CharField(max_length=128)
19
    domain_name = models.CharField(max_length=128, null=True, blank=True)
19 20
    networks = models.ManyToManyField(PeerRange, null=True, blank=True)
21

  
20 22
    def __unicode__(self):
21 23
        return self.peer_name
22 24
    class Meta:
......
34 36
            self.save()
35 37
                    
36 38
            
37
        
38
        
b/peers/sql/peer.sql
1
INSERT INTO `peer` (`peer_id`, `peer_name`, `peer_as`, `peer_tag`, `domain_name`) VALUES
2
(0, 'Εθνικό Δίκτυο Έρευνας και Τεχνολογίας', '5408', 'GRNET', 'grnet.gr'),
3
(1, 'Ανωτάτη Σχολή Καλών Τεχνών', '65079', 'ASFA', 'asfa.gr'),
4
(2, 'Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης', '5470', 'AUTH', 'auth.gr'),
5
(3, 'Γεωπονικό Πανεπιστήμιο Αθηνών', '65078', 'AUA', 'aua.gr'),
6
(4, 'Δημοκρίτειο Πανεπιστήμιο Θράκης', '8253', 'DUTH', 'duth.gr'),
7
(5, 'Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών', '8643', 'UOA', 'uoa.gr'),
8
(6, 'Εθνικό Μετσόβιο Πολυτεχνείο', '3323', 'NTUA', 'ntua.gr'),
9
(7, 'Ιόνιο Πανεπιστήμιο', '8618', 'IONIO', 'ionio.gr'),
10
(8, 'Οικονομικό Πανεπιστήμιο Αθηνών', '8611', 'AUEB', 'aueb.gr'),
11
(9, 'Πανεπιστήμιο Αιγαίου', '8617', 'AEGEAN', 'aegean.gr'),
12
(10, 'Πανεπιστήμιο Θεσσαλίας', '65077', 'UTH', 'uth.gr'),
13
(11, 'Πανεπιστήμιο Ιωαννίνων', '8581', 'UOI', 'uoi.gr'),
14
(12, 'Πανεπιστήμιο Κρήτης', '6867', 'UOC', 'uoc.gr'),
15
(13, 'Πανεπιστήμιο Μακεδονίας Οικονομικών και Κοινωνικών Επιστημών', '12364', 'UOM', 'uom.gr'),
16
(14, 'Πανεπιστήμιο Πατρών', '65024', 'UPATRAS', 'upatras'),
17
(15, 'Πανεπιστήμιο Πειραιά', '12402', 'UNIPI', 'unipi.gr'),
18
(16, 'Πάντειο Πανεπιστήμιο  Κοινωνικών & Πολιτικών Επιστημών', '65088', 'PANTEION', 'panteion.gr'),
19
(17, 'Πολυτεχνείο Κρήτης', '8278', 'TUC', 'tuc.gr'),
20
(18, 'Σχολή Ικάρων', '65086', 'HAFA', 'hafa.gr'),
21
(19, 'Χαροκόπειο Πανεπιστήμιο', '65083', 'HUA', 'hua.gr'),
22
(20, 'ΤΕΙ Αθηνών', '9069', 'TEIATH', 'teiath.gr'),
23
(21, 'ΤΕΙ Ηπείρου', '65074', 'TEIEP', 'teiep.gr'),
24
(22, 'ΤΕΙ Κρήτης', '8762', 'TEICRETE', 'teiher.gr'),
25
(23, 'ΤΕΙ Θεσσαλονίκης', '5489', 'TEITHE', 'teithe.gr'),
26
(24, 'ΤΕΙ Καβάλας', '65073', 'TEIKAV', 'teikav.edu.gr'),
27
(25, 'ΤΕΙ Καλαμάτας', '65072', 'TEIKAL', 'teikal.gr'),
28
(26, 'ΤΕΙ Δυτικής Μακεδονίας', '65087', 'TEIKOZ', 'teikoz.gr'),
29
(27, 'ΤΕΙ Λαμίας', '65071', 'TEILAM', 'teilam.gr'),
30
(28, 'ΤΕΙ Λάρισας', '8700', 'TEILAR', 'teilar.gr'),
31
(29, 'ΤΕΙ Μεσολογγίου', '65070', 'TEIMES', 'teimes.gr'),
32
(30, 'ΤΕΙ Πάτρας', '20551', 'TEIPAT', 'teipat.gr'),
33
(31, 'ΤΕΙ Πειραιά', '65068', 'TEIPIR', 'teipir.gr'),
34
(32, 'ΤΕΙ Σερρών', '65067', 'TEISER', 'teiser.gr'),
35
(33, 'ΤΕΙ Χαλκίδας', '65081', 'TEIHAL', 'teihal.gr'),
36
(34, 'ΕΚΕΦΕ-Δημόκριτος', '2546', 'ARIADNET', 'ariadne-t.gr'),
37
(35, 'Γενική Γραμματεία Έρευνας και Τεχνολογίας', '65066', 'GSRT', 'gsrt.gr'),
38
(37, 'Εθνικό Κέντρο Τεκμηρίωσης-ΕΙΕ', '65075', 'EKT', 'ekt.gr'),
39
(38, 'Εθνικό Κέντρο Διαβήτη', '65065', 'HNDC', 'hndc.gr'),
40
(42, 'Ινστιτούτο Pasteur', '65085', 'PASTEUR', 'pasteur.gr'),
41
(43, 'Ίδρυμα Τεχνολογίας και Έρευνας', '8522', 'FORTH', 'forth.gr'),
42
(44, 'OTE - Συγκρότημα Εργαστηρίων Νέων Τεχνολογιών & Υπηρεσιών', '65089', 'OTERND', 'oteresearch.gr'),
43
(46, 'Κέντρο Ερευνών για Θέματα Ισότητας', '65084', 'KETHI', 'kethi.gr'),
44
(47, 'Εθνικό Ίδρυμα Ερευνών', '65075', 'EIE', 'eie.gr'),
45
(49, 'Ελληνικό Κέντρο Θαλασσίων Ερευνών', '65064', 'HCMR', 'hcmr.gr'),
46
(50, 'GR-IX - OTE', '6799', 'OTENET', 'OTENET.GR'),
47
(53, 'GR-IX - Forthnet', '1241', 'FORTHNET', 'FORTHNET.GR'),
48
(54, 'GR-IX - HOL', '3329', 'HOL', 'HOL.GR'),
49
(58, 'Πανελλήνιο Σχολικό Δίκτυο', '8248', 'SCH', 'sch.gr'),
50
(59, 'Διαχείριση ΕΔΕΤ', '65057', 'GRNETADM', 'admin.grnet.gr'),
51
(60, 'Ινστιτούτο Πολιτιστικής & Εκπαιδευτικής Τεχνολογίας', '65063', 'CETI', 'ceti.gr'),
52
(62, 'GR-IX - VODAFONE', '12361', 'VODAFONE', 'VODAFONE.GR'),
53
(63, 'ΕΚΕΤΑ - Ινστιτούτο Πληροφορικής και Τηλεματικής (ΙΠΤΗΛ)', '65051', 'IPTHL', 'iti.gr'),
54
(64, 'GR-IX - TELLAS', '25472', 'TELLAS', 'tellas.gr'),
55
(66, 'Κέντρο Ερευνών ΝΕΣΤΩΡ', '65060', 'NESTOR', 'nestor.org.gr'),
56
(69, 'Υπουργείο Παιδείας, Δια Βίου Μάθησης και Θρησκευμάτων', '65059', 'YPEPTH', 'ypepth.gr'),
57
(70, 'Εθνικό Αστεροσκοπείο Αθηνών', '15690', 'NOA', 'noa.gr'),
58
(71, 'ΕΙΧΗΜΥΘ', '15948', 'ICEHT', 'iceht.gr'),
59
(72, 'Ε.ΚΕ.ΒΕ "ΑΛΕΞΑΝΔΡΟΣ ΦΛΕΜΙΓΚ"', '65056', 'FLEMING', 'fleming.gr'),
60
(73, 'GR-IX - Wind', '15617', 'WIND', 'TELESTET.GR'),
61
(75, 'Ελληνικός Οργανισμός Τυποποίησης - ΕΛΟΤ', '65058', 'ELOT', 'elot.gr'),
62
(76, 'Οργανισμός Αντισεισμικού Σχεδιασμού και Προστασίας', '65055', 'OASP', 'oasp.gr'),
63
(78, 'Α.Σ.ΠΑΙ.Τ.Ε.', '65069', 'SELETE', 'aspete.gr'),
64
(79, 'Ελληνικό Ανοικτό Πανεπιστήμιο', '20813', 'EAP', 'eap.gr'),
65
(81, 'GEANT - European High Speed Research Network', '20965', 'GEANT', 'geant.net'),
66
(82, 'CEDEFOP - Ευρωπαϊκό Κέντρο για την Ανάπτυξη της Επαγγελματικής Κατάρτισης', '15536', 'CEDEFOP', 'cedefop.eu.int'),
67
(83, 'Διεθνές Κέντρο Δημόσιας Διοίκησης Θεσσαλονίκης - UNTC', '65054', 'UNTC', 'untcentre.org'),
68
(84, 'Βουλή των Ελλήνων', '65053', 'VOULI', 'parliament.gr'),
69
(86, 'Δίκτυο ΣΥΖΕΥΞΙΣ', '65052', 'SYZEYXIS', 'syzeyxis.gr'),
70
(87, 'GR-IX - NETONE', '9151', 'NETONE', 'netone.gr'),
71
(88, 'Πανεπιστήμιο Πελοποννήσου', '65049', 'UOP', 'uop.gr'),
72
(89, 'Ρυθμιστική Αρχή Ενέργειας - ΡΑΕ', '65050', 'RAE', 'rae.gr'),
73
(90, 'Κέντρο Ανανεώσιμων Πηγών Ενέργειας - ΚΑΠΕ', '65046', 'KAPE', 'cres.gr'),
74
(91, 'Ινστιτούτο Γεωλογικών & Μεταλλευτικών Ερευνών - ΙΓΜΕ', '65048', 'IGME', 'igme.gr'),
75
(92, 'Ίδρυμα Ευγενίδου', '65045', 'EVGENIDIO', 'eugenfound.edu.gr'),
76
(93, 'Ανώτατη Εκκλησιαστική Σχολή Θεσσαλονίκης', '65044', 'OIPP', 'oipp.gr'),
77
(94, 'Γεωργική & Βιοτεχνική Σχολή Θεσσαλονίκης', '65042', 'GEWRGIKH', 'afs.edu.gr'),
78
(95, 'Ακαδημία Αθηνών - Ίδρυμα Ιατροβιολογικών Ερευνών', '65043', 'IIBEAA', 'bioacademy.gr'),
79
(96, 'Ινστιτούτο Τεχνικής Σεισμολογίας & Αντισεισμικών Κατασκευών - ΙΤΣΑΚ', '65039', 'ITSAK', 'itsak.gr'),
80
(98, 'GR-IX - ORANGE (EQUANT)', '4004', 'ORANGE', 'orange-ftgroup.com'),
81
(99, 'GR-IX - VIVODI', '21284', 'VIVODI', 'vivodi.gr'),
82
(106, 'ΤΕΙ Ιονίων Νήσων', '65041', 'TEIION', 'teiion.gr'),
83
(108, 'Γενική Γραμματεία Εθνικής Στατιστικής Υπηρεσίας Ελλάδας', '65035', 'STAT', 'statistics.gr'),
84
(109, 'Στρατιωτική Σχολή Ευελπίδων/ΓΕΠ', '65033', 'SSE', 'sse.gr'),
85
(112, 'Σχολή Ναυτικών Δοκίμων', '65031', 'SND', 'snd.edu.gr, hna.gr'),
86
(113, 'Ινστιτούτο Έρευνας Μουσικής & Ακουστικής', '65032', 'IRMA', 'iema.gr'),
87
(114, 'Ελληνικό Ινστιτούτο Υγιεινής & Ασφάλειας της Εργασίας', '65030', 'ELINYAE', 'elinyae.gr'),
88
(116, 'Πανεπιστήμιο Δυτικής Μακεδονίας', '65029', 'UOWM', 'uowm.gr'),
89
(122, 'Υπηρεσία Φοιτητικού DSL - Δίκτυο Τερματισμού Συνδέσεων Χρηστών', '197121', 'EDUDSL', 'edudsl.gr'),
90
(123, 'Πανεπιστήμιο Στερεάς Ελλάδας', '65027', 'UCG', 'ucg.gr'),
91
(124, 'Υπηρεσία Φοιτητικού DSL "ΔΙΟΔΟΣ" - Υπηρεσία Μητρώου ΓΓΕΤ (Πληροφ. Σύστημα)', '65026', 'PSDIODOS', 'diodos.net.gr'),
92
(125, 'Αρχαιολογική Εταιρεία εν Αθήναις', '65025', 'ARCHET', 'archetai.gr'),
93
(126, 'Ακαδημία Αθηνών', '65016', 'ACADEMY', 'academyofathens.gr'),
94
(128, 'Ερευνητικό Ακαδημαϊκό Ινστιτούτο Τεχνολογίας Υπολογιστών', '6744', 'CTI', 'cti.gr'),
95
(130, 'Μεσογειακό Αγρονομικό Ινστιτούτο Χανίων', '65022', 'MAICH', 'maich.gr'),
96
(132, 'Ινστιτούτο Βιομηχανικών Συστημάτων', '65020', 'ISI', 'isi.gr'),
97
(134, 'Νόησις - Κέντρο Διάδοσης Επιστημών και Μουσείο Τεχνολογίας', '65018', 'NOESIS', 'tmth.edu.gr'),
98
(136, 'Ίδρυμα Κρατικών Υποτροφιών', '65019', 'IKY', 'IKYPD'),
99
(138, 'AS112 ΕΔΕΤ', '112', 'GRNET-AS112', NULL),
100
(139, 'K-Root server ΕΔΕΤ', '25152', 'GRNKROOT', NULL),
101
(140, 'Διεθνές Πανεπιστήμιο Ελλάδας', '65036', 'IHU', 'ihu.edu.gr'),
102
(141, 'ΕΚΕΤΑ - Εθνικό Κέντρο Έρευνας και Τεχνολογικής Ανάπτυξης', '47616', 'CERTH', 'certh.gr'),
103
(142, 'Αμερικανική Σχολή Κλασικών Σπουδών', '65017', 'ASCSA', 'Asca.edu.gr'),
104
(143, 'Εθνικό Οπτικοακουστικό Αρχείο', '65015', 'AVARCH', 'avarchive.gr'),
105
(144, 'Αμερικάνικο κολέγιο Ανατολία', '65014', 'ACT', 'Anatolia.edu.act.edu'),
106
(145, 'GR-IX - ON Telecoms', '41920', 'ONTELECM', 'ontelecoms.com'),
107
(146, 'GR-IX - CYTA', '6866', 'CYTA', NULL),
108
(148, 'Ινστιτούτο Επεξεργασίας Λόγου', '65082', 'ILSP', 'ilsp.gr'),
109
(149, 'Hellas Grid (HG)', '65037', 'HG', 'hellasgrid.gr'),
110
(150, 'Google', '15169', 'GOOGLE', 'google.com'),
111
(151, 'EGV', '50555', 'EGV', 'opengov.gr'),
112
(152, 'RIPE', '3333', 'RIPE', 'ripe.net'),
113
(160, 'Ανώτερη Σχολή Τουριστικής Εκπαίδευσης (ΡΟΔΟΣ)', '65012', 'ASTER', 'aster.edu.gr'),
114
(162, 'Σχολή Μονίμων Υπαξιωματικών', '65013', 'SMY', NULL),
115
(166, 'GR-IX - Verizon', '702', 'VERIZON', NULL),
116
(167, 'Πανεπιστήμιο Δυτικής Ελλάδας', '65034', 'UWG', 'uwg.edu.gr'),
117
(170, 'Ανωτάτη Διακλαδική Σχολή Πολέμου - ΑΔΙΣΠΟ', '65038', 'ADISPO', 'adispo.gr'),
118
(171, 'Ινστιτούτο Πληροφοριακών Συστημάτων και Προσoμοίωσης (ΙΠΣΥΠ/IMIS)', '65011', 'IMIS', NULL);
b/templates/user_routes.html
112 112
	<th style="text-align: center;">{% trans "Then" %}</th>
113 113
	<th style="text-align: center;">{% trans "Status" %}</th>
114 114
	{% comment %}<th style="text-align: center;">{% trans "Details" %}</th>{% endcomment %}
115
	<th style="text-align: center;">{% trans "Applier" %}</th>
115 116
	<th style="text-align: center;">{% trans "Expires" %}</th>
116 117
	<th style="text-align: center;">{% trans "Response" %}</th>
117 118
	<th style="text-align: center; width:120px;">{% trans "Actions" %}</th>
......
127 128
	<td style="text-align: center;">{{route.get_then|safe|escape}}</td>
128 129
	<td style="text-align: center;">{% if route.is_online %}Online{% else %}Offline{% endif %}</td>
129 130
	{% comment %}<td style="text-align: center;">{{ route.response }}</td>{% endcomment %}
131
	<td style="text-align: center;">{{ route.applier }}</td>
130 132
	<td style="text-align: center;">{{ route.expires }}</td>
131 133
	<td style="text-align: center;">{{ route.response }}</td>
132 134
	<td style="text-align: center;">
b/urls.py
8 8
    # Example:
9 9
    # (r'^flowspy/', include('flowspy.foo.urls')),
10 10
    (r'^poll/', include('flowspy.poller.urls')),
11
    url(r'^/?$', 'flowspy.flowspec.views.user_routes', name="user-routes"),
11
    url(r'^/?$', 'flowspy.flowspec.views.group_routes', name="group-routes"),
12 12
    url(r'^add/?$', 'flowspy.flowspec.views.add_route', name="add-route"),
13 13
    url(r'^edit/(?P<route_slug>\w+)/$', 'flowspy.flowspec.views.edit_route', name="edit-route"),
14 14
    url(r'^delete/(?P<route_slug>\w+)/$', 'flowspy.flowspec.views.delete_route', name="delete-route"),

Also available in: Unified diff