diff --git a/peers/admin.py b/peers/admin.py index 9145469ed10f32729fcab8a258865d8cc6f9448c..37be53fdd84ca39aad063a6186970aff4b23a67e 100644 --- a/peers/admin.py +++ b/peers/admin.py @@ -19,19 +19,28 @@ from django.contrib import admin -from peers.models import * -from flowspec.forms import * -from django.conf import settings +from peers.models import PeerRange, TechcEmail, Peer +from django import forms from django.forms import ModelForm from django.contrib.admin.widgets import FilteredSelectMultiple + class PeerAdminForm(ModelForm): - networks=forms.ModelMultipleChoiceField(PeerRange.objects.all(),widget= - FilteredSelectMultiple("PeerRange",True), required=False) - techc_emails=forms.ModelMultipleChoiceField(TechcEmail.objects.all(),widget= - FilteredSelectMultiple("TechcEmail",True), required=False) + networks = forms.ModelMultipleChoiceField( + PeerRange.objects.all(), + widget=FilteredSelectMultiple("PeerRange", True), + required=False + ) + + techc_emails = forms.ModelMultipleChoiceField( + TechcEmail.objects.all(), + widget=FilteredSelectMultiple("TechcEmail", True), + required=False + ) + class Meta: - model= Peer + model = Peer + class PeerAdmin(admin.ModelAdmin): form = PeerAdminForm diff --git a/peers/models.py b/peers/models.py index 41241a30db3390d74f769f78c169c04213551a69..284ffd42f40d2375542601146a2c15ded891546d 100644 --- a/peers/models.py +++ b/peers/models.py @@ -19,26 +19,32 @@ from django.db import models from utils.whois import * -from django.contrib.auth.models import User from django.conf import settings + class PeerRange(models.Model): network = models.CharField(max_length=128) + def __unicode__(self): return self.network + class Meta: db_table = u'peer_range' ordering = ['network'] managed = settings.PEER_RANGE_MANAGED_TABLE + class TechcEmail(models.Model): email = models.CharField(max_length=352, db_column="email") + def __unicode__(self): return self.email + class Meta: - db_table="techc_email" + db_table = "techc_email" managed = settings.PEER_TECHC_MANAGED_TABLE + class Peer(models.Model): peer_id = models.AutoField(primary_key=True) peer_name = models.CharField(max_length=128) @@ -51,16 +57,16 @@ class Peer(models.Model): def __unicode__(self): return self.peer_name + class Meta: db_table = u'peer' ordering = ['peer_name'] managed = settings.PEER_MANAGED_TABLE - def fill_networks(self): network_range = [] networks_list = [] - peer_as = "AS%s" %self.peer_as + peer_as = "AS%s" % self.peer_as network_range = whois(peer_as) if network_range: for network_item in network_range: @@ -68,5 +74,3 @@ class Peer(models.Model): networks_list.append(range) self.networks = networks_list self.save() - - diff --git a/poller/urls.py b/poller/urls.py index 11097f8a5fb6611e8567c866776dd4d8dedd96a4..be4f625a48940bc51f1c8c20e358b9cfad7baa04 100644 --- a/poller/urls.py +++ b/poller/urls.py @@ -16,11 +16,11 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # -from django.conf.urls.defaults import * - -urlpatterns = patterns('poller.views', - ('^$', 'main'), - url('^message/existing$', 'message_existing', name='fetch-existing'), - url('^message/updates$', 'message_updates', name='fetch-updates')) - +from django.conf.urls.defaults import patterns, url +urlpatterns = patterns( + 'poller.views', + ('^$', 'main'), + url('^message/existing$', 'message_existing', name='fetch-existing'), + url('^message/updates$', 'message_updates', name='fetch-updates') +) diff --git a/poller/views.py b/poller/views.py index 98c251a80907c717ce39243f51d034c7163a1d1e..c2f9241ea5cb9a8777543730e9e853825af7b205 100644 --- a/poller/views.py +++ b/poller/views.py @@ -28,10 +28,8 @@ from django.template.loader import render_to_string from django.http import HttpResponse from gevent.event import Event from django.conf import settings -#from django.views.decorators.csrf import csrf_exempt from django.http import HttpResponseRedirect from django.core.urlresolvers import reverse -from django.conf import settings import beanstalkc @@ -46,6 +44,7 @@ handler = logging.FileHandler(LOG_FILENAME) handler.setFormatter(formatter) logger.addHandler(handler) + def create_message(message, user, time): data = {'id': str(uuid.uuid4()), 'body': message, 'user':user, 'time':time} data['html'] = render_to_string('poll_message.html', dictionary={'message': data}) @@ -56,10 +55,12 @@ def json_response(value, **kwargs): kwargs.setdefault('content_type', 'text/javascript; charset=UTF-8') return HttpResponse(json.dumps(value), **kwargs) + class Msgs(object): cache_size = 500 - + _instance = None + def __new__(cls, *args, **kwargs): if not cls._instance: cls._instance = super(Msgs, cls).__new__(cls, *args, **kwargs) @@ -98,7 +99,7 @@ class Msgs(object): self.user_cursor[user] = '' return json_response({'messages': self.user_cache[user]}) return HttpResponseRedirect(reverse('group-routes')) - + def message_new(self, mesg=None): if mesg: message = mesg['message'] @@ -111,7 +112,7 @@ class Msgs(object): except: self.user_cache[user] = [] self.user_cache[user].append(msg) - if self.user_cache[user][-1] == self.user_cache[user][0]: + if self.user_cache[user][-1] == self.user_cache[user][0]: self.user_cursor[user] = self.user_cache[user][-1]['id'] else: self.user_cursor[user] = self.user_cache[user][-2]['id'] @@ -120,11 +121,11 @@ class Msgs(object): try: assert(self.new_message_user_event[user]) except: - self.new_message_user_event[user] = Event() + self.new_message_user_event[user] = Event() self.new_message_user_event[user].set() self.new_message_user_event[user].clear() return json_response(msg) - + def message_updates(self, request): if request.is_ajax(): cursor = {} @@ -137,7 +138,7 @@ class Msgs(object): cursor[user] = self.user_cursor[user] except: return HttpResponse(content='', mimetype=None, status=400) - + try: if not isinstance(self.user_cache[user], list): self.user_cache[user] = [] @@ -164,13 +165,12 @@ class Msgs(object): job.bury() logger.info("Got New message") self.message_new(msg) - - + def start_polling(self): logger.info("Start Polling") gevent.spawn(self.monitor_polls) - + msgs = Msgs() main = msgs.main diff --git a/templates/403.html b/templates/403.html index bdf45930a7c2b97beee4ce172b2b2ab8d6e07655..03c0e8f95c3c784abf4f566dfa0d51d066afe8ec 100644 --- a/templates/403.html +++ b/templates/403.html @@ -1,4 +1,4 @@ -{% extends "b3theme/base.html" %} +{% extends "base.html" %} {% load widget_tweaks %} {% load i18n %} @@ -26,7 +26,7 @@ </div> <!-- /.col-lg-12 --> </div> - + <div class="row"> <div class="col-lg-12"> <div class="panel panel-danger"> @@ -43,7 +43,7 @@ </div> </div> </div> - + {% endblock %} diff --git a/templates/404.html b/templates/404.html index e84efd74958299ac7773546dcb5f1c195d8e252e..3dbc5d538f97184df1e79a86b9c7f73fb1d2883c 100644 --- a/templates/404.html +++ b/templates/404.html @@ -1,4 +1,4 @@ -{% extends "b3theme/base.html" %} +{% extends "base.html" %} {% load widget_tweaks %} {% load i18n %} @@ -26,7 +26,7 @@ </div> <!-- /.col-lg-12 --> </div> - + <div class="row"> <div class="col-lg-12"> <div class="panel panel-danger"> @@ -43,7 +43,7 @@ </div> </div> </div> - + {% endblock %} diff --git a/templates/apply.html b/templates/apply.html index 73243cf1bb3ab815495fb41f41c7334c4ea766fb..a58cdc76262dca9641ec19caf042a623baa32594 100644 --- a/templates/apply.html +++ b/templates/apply.html @@ -1,4 +1,4 @@ -{% extends "b3theme/base.html" %} +{% extends "base.html" %} {% load widget_tweaks %} {% load i18n %} @@ -23,7 +23,7 @@ <link href="{{STATIC_URL}}b3theme/css/plugins/morris/morris-0.4.3.min.css" rel="stylesheet"> <link href="{{STATIC_URL}}b3theme/css/plugins/timeline/timeline.css" rel="stylesheet"> <link href="{{STATIC_URL}}datepicker/css/datepicker.css" rel="stylesheet"> - + {% endblock %} {% block extraheadbottom %} @@ -34,7 +34,7 @@ #rule_form_container input:not([type="submit"]), #rule_form_container select { background: none repeat scroll 0 0 #FFFFFF; border: 1px solid #DDDDDD; - -moz-border-radius: 3px; border-radius:3px; -webkit-border-radius: 3px; + -moz-border-radius: 3px; border-radius:3px; -webkit-border-radius: 3px; float: left; font-family: "Century Gothic",Helvetica,sans-serif; font-size: 13px; @@ -46,7 +46,7 @@ #rule_form_container{ -moz-border-radius: 10px 10px 10px 10px; border-radius:10px; -webkit-border-radius: 10px; - -moz-box-shadow: 0 0 3px #AAAAAA; box-shadow: 0 0 3px #AAAAAA; -webkit-box-shadow: 0 0 3px #AAAAAA; + -moz-box-shadow: 0 0 3px #AAAAAA; box-shadow: 0 0 3px #AAAAAA; -webkit-box-shadow: 0 0 3px #AAAAAA; background-color: #F9F9F9; border: 2px solid #FFFFFF; overflow: hidden; @@ -91,7 +91,7 @@ $("#id_protocol").select2(); $("#id_fragmenttype").select2(); $("#id_then").select2(); - + reArrangeSelect("id_sourceport"); $("#id_sourceport").select2({ placeholder: "Source Port(s)" @@ -111,8 +111,8 @@ $('#setFromAll').click(function(){ $("#id_source").val('0.0.0.0/0'); }); - - + + /*$('#id_then').attr("multiple", "");*/ /* $( "#id_expires" ).datepicker({ dateFormat: 'yy-mm-dd' , maxDate: '+10d', minDate: '+1d', changeMonth: false, changeYear: false }).datepicker( $.datepicker.regional[ "el" ] ); @@ -126,7 +126,7 @@ buttons: { '{% trans "Add" %}': function() { $.ajax({ - url:"{% url add-rate-limit %}", + url:"{% url add-rate-limit %}", data:$("#add_rl_form").serialize(), type: "POST", cache: false, @@ -139,7 +139,7 @@ } catch (exception) { $('#then_diag').html(data); - } + } } }); }, @@ -167,7 +167,7 @@ $('#then_diag').dialog('open'); return false; }); - + {% endcomment %} $(".new_port").click(function(){ $(".new_port").hide(); @@ -182,14 +182,14 @@ // $('#port_diag').dialog('open'); return false; }); - + function reArrangeSelect(elementId) { $("#"+elementId).html($("#"+elementId+" option").sort(function(a, b) { return parseInt(a.text) == parseInt(b.text) ? 0 : parseInt(a.text) < parseInt(b.text) ? -1 : 1 })); } }); - + </script> {% endblock %} {% block contentplaceholder %} @@ -211,8 +211,8 @@ </div> <!-- /.panel-heading --> <div class="panel-body"> - <form method="POST" role="form" class="form-horizontal"> - + <form method="POST" role="form" class="form-horizontal"> + {% csrf_token %} {% load unescape %} {% if form.non_field_errors %} @@ -221,7 +221,7 @@ </div> {% endif %} <fieldset {% if edit %} style="display:none;" {% endif %}> - + <div class="form-group {% if form.name.errors %} has-error {% endif %}"> <label for="id_name" class="col-md-2 control-label"><b>{% trans "Name" %}</b></label> <div class="col-md-8"> @@ -248,7 +248,7 @@ {% endif %} <fieldset> <hr> - <div class="form-group {% if form.source.errors %} has-error {% endif %}"> + <div class="form-group {% if form.source.errors %} has-error {% endif %}"> <label for="id_source" class="col-md-2 control-label"><b>{% trans "Source Address" %}</b></label> <div class="col-md-6"> {% render_field form.source class+="form-control" placeholder=form.source.help_text %} @@ -259,8 +259,8 @@ <img src="{{STATIC_URL}}threat_source.png" style="height: 30px;"/> <button type="button" class="btn btn-md btn-info btn-outline" id="setFromAll">Any</button> </div> </div> - - <div class="form-group {% if form.destination.errors %} has-error {% endif %}"> + + <div class="form-group {% if form.destination.errors %} has-error {% endif %}"> <label for="id_destination" class="col-md-2 control-label"><b>{% trans "Destination Address" %}</b></label> <div class="col-md-6"> {% render_field form.destination class+="form-control" placeholder=form.destination.help_text %} @@ -271,8 +271,8 @@ <img src="{{STATIC_URL}}secure_destination.png" style="height: 30px;"/> </div> </div> - - <div class="form-group {% if form.protocol.errors %} has-error {% endif %}"> + + <div class="form-group {% if form.protocol.errors %} has-error {% endif %}"> <label for="id_protocol" class="col-md-2 control-label" style="font-weight: normal;">{% trans "Protocol(s)" %}</label> <div class="col-md-8"> {% render_field form.protocol class+="form-control" %} @@ -280,8 +280,8 @@ {% endif %} </div> </div> - - <div class="form-group {% if form.fragmenttype.errors %} has-error {% endif %}"> + + <div class="form-group {% if form.fragmenttype.errors %} has-error {% endif %}"> <label for="id_fragmenttype" class="col-md-2 control-label" style="font-weight: normal;">{% trans "Fragment Type" %}</label> <div class="col-md-8"> {% render_field form.fragmenttype class+="form-control" %} @@ -296,7 +296,7 @@ <div class="form-group "> <label class="col-md-10" style="font-weight: normal;"><small>{% trans "Select source/destination port(s), or select common port(s) for both source/destination" %}</small></label> </div> - <div class="form-group {% if form.sourceport.errors %} has-error {% endif %} {% if form.destinationport.errors %} has-error {% endif %} {% if form.port.errors %} has-error {% endif %}"> + <div class="form-group {% if form.sourceport.errors %} has-error {% endif %} {% if form.destinationport.errors %} has-error {% endif %} {% if form.port.errors %} has-error {% endif %}"> <label for="id_sourceport" class="col-md-2 control-label" style="font-weight: normal;">{% trans "Src. Port(s)" %}</label> <div class="col-md-2"> {% render_field form.sourceport class+="form-control" %} @@ -329,13 +329,13 @@ </div> </div> </fieldset> - + <!-- END OF PORTS --> - + <fieldset> <hr> - - <div class="form-group {% if form.then.errors %} has-error {% endif %}"> + + <div class="form-group {% if form.then.errors %} has-error {% endif %}"> <label for="id_then" class="col-md-2 control-label">{% trans "Then Actions" %}</label> <div class="col-md-8"> {% render_field form.then class+="form-control" %} @@ -343,11 +343,11 @@ {% endif %} </div> </div> - + </fieldset> <fieldset> <hr> - <div class="form-group {% if form.expires.errors %} has-error {% endif %}"> + <div class="form-group {% if form.expires.errors %} has-error {% endif %}"> <label for="id_then" class="col-md-2 control-label">{% trans "Expires" %}</label> <div class="col-md-8"> {% render_field form.expires class+="form-control datepicker" data-date-format="yyyy-mm-dd" %} @@ -356,12 +356,12 @@ </div> </div> </fieldset> - - + + <fieldset> <hr> - - <div class="form-group {% if form.comments.errors %} has-error {% endif %}"> + + <div class="form-group {% if form.comments.errors %} has-error {% endif %}"> <label for="id_comments" class="col-md-2 control-label">{% trans "Comments" %}</label> <div class="col-md-8"> {% render_field form.comments class+="form-control" placeholder="Give a short description of the intended use of this rule, that justifies the parameter selection above. Feel free to include any additional comments." %} @@ -370,7 +370,7 @@ </div> </div> - + </fieldset> <div class="form-group"> <div class="col-md-2"></div> @@ -378,7 +378,7 @@ <button type="submit" id="applybutton" value="{% trans 'Apply' %}" class="btn btn-md btn-primary">Apply</button> </div> </div> - + </form> </div></div></div></div> diff --git a/templates/b3theme/base.html b/templates/b3theme/base.html deleted file mode 100644 index 0475d056236d16b21819b8b6d1c1d58eecb1a433..0000000000000000000000000000000000000000 --- a/templates/b3theme/base.html +++ /dev/null @@ -1,200 +0,0 @@ -<!DOCTYPE html> -<html> -{% load i18n %} -<head> - - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>GRNET FoD :: {% block title %}{% endblock %}</title> - <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> - <META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> - <link REL="SHORTCUT ICON" HREF="{{STATIC_URL}}favicon.ico"> - <!-- Core CSS - Include with every page --> - <link href="{{STATIC_URL}}b3theme/css/bootstrap.min.css" rel="stylesheet"> - <link href="{{STATIC_URL}}b3theme/font-awesome/css/font-awesome.css" rel="stylesheet"> - - {% block extrahead %}{% endblock %} - - <!-- SB Admin CSS - Include with every page --> - <link href="{{STATIC_URL}}b3theme/css/sb-admin.css" rel="stylesheet"> - {% block extraheadbottom %}{% endblock %} - <style> - .navbar-brand { - float: left; - font-size: 18px; - height: 20px; - line-height: 20px; - padding: 1px; -} - -.footer { - border-top: 1px solid #E5E5E5; - color: #777777; - padding-bottom: 40px; - padding-top: 40px; - text-align: center; -} - - </style> -</head> - -<body> - - <div id="wrapper"> - - <nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0"> - <div class="navbar-header"> - <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".sidebar-collapse"> - <span class="sr-only">Toggle navigation</span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - </button> - <a class="navbar-brand" href="{% url dashboard %}"><img src="{{STATIC_URL}}fodlogo2.png"> </a> - </div> - <!-- /.navbar-header --> - - <ul class="nav navbar-top-links navbar-right"> - <li class="dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown">{% trans "Language" %}: {% for lang in LANGUAGES %}{% ifequal LANGUAGE_CODE lang.0 %}{% trans lang.1 %}{% endifequal %}{% endfor %}<b class="caret"></b></a> - <ul class="dropdown-menu"> - <form action="{% url django.views.i18n.set_language %}" method="post" style="display:inline;" id="langform"> - {% csrf_token %} - <input name="next" type="hidden" value="{{ next }}" /> - <input id="langsel" name="language" type="hidden" value="" /> - </form> - {% for lang in LANGUAGES %} - <li> - <a class="select_lang" href="#" onclick="setlang('{{ lang.0 }}'); return false;" title="{{lang.1}}">{% trans lang.1 %}{% ifequal LANGUAGE_CODE lang.0 %} <i class="icon-ok"></i>{% endifequal %}</a> - </li> - {% endfor %} - </ul> - </li> - <!-- /.dropdown --> - - - {% if user.is_authenticated %} - <li class="dropdown"> - <a class="dropdown-toggle" data-toggle="dropdown" href="#"> - <i class="fa fa-user fa-fw"></i> <i class="fa fa-caret-down"></i> - </a> - <ul class="dropdown-menu dropdown-user" role="menu" > - <li role="presentation" class="dropdown-header">{{user}}</li> - <li class="divider"></li> - {% if user.get_profile.peer %} - <li> - <a href="{% url user-profile %}"><i class="fa fa-user fa-fw"></i>{% trans "My profile" %}</a> - </li> - {% endif %} - {% if user.is_superuser %} - <li class="divider"></li> - <li><a href="{% url admin:index %}"><i class="fa fa-cogs"></i> {% trans "Admin" %}</a> - </li> - {% endif %} - <li class="divider"></li> - <li><a href="{% url logout %}"><i class="fa fa-sign-out fa-fw"></i> {% trans "Logout" %}</a> - </li> - - </ul> - <!-- /.dropdown-user --> - </li> - {% else %} - <li><a href="{% url login %}">{% trans "Shibboleth Login" %}</a></li> - {% endif %} - <!-- /.dropdown --> - </ul> - <!-- /.navbar-top-links --> - - </nav> - <!-- /.navbar-static-top --> - {% block sidenav %} - <nav class="navbar-default navbar-static-side" role="navigation"> - {% if user.is_authenticated %} - <div class="sidebar-collapse"> - <ul class="nav" id="side-menu"> - <li> - <a href="{% url dashboard %}"><i class="fa fa-dashboard fa-fw"></i> {% trans "Dashboard" %}</a> - </li> - <li> - <a href="{% url group-routes %}"><i class="fa fa-shield fa-fw"></i> {% trans "Rules" %}</a> - </li> - <li> - <a href="{% url add-route %}"><i class="fa fa-plus-circle fa-fw"></i> {% trans "Add Rule" %}</a> - </li> - {% if perms.accounts.overview %}<li> - <a href="{% url overview %}"><i class="fa fa-desktop fa-fw"></i> {% trans "Overview" %}</a> - </li>{% endif %} - {% if user.is_superuser %} - <li><a href="{% url admin:index %}"><i class="fa fa-cogs fa-fw"></i> {% trans "Admin" %}</a> - </li> - {% endif %} - {% if user.get_profile.peer %} - <li> - <a href="{% url user-profile %}"><i class="fa fa-user fa-fw"></i> {% trans "My profile" %}</a> - </li> - {% endif %} - </ul> - <!-- /#side-menu --> - </div> - {% endif %} - <!-- /.sidebar-collapse --> - </nav> - <!-- /.navbar-static-side --> - {% endblock %} - <div id="page-wrapper"> - - {% if messages %} - <div class="row"> - <div class="lg-col-12"> - <div id="messages"> - {% for message in messages %} - <div {% if message.tags %} class="alert alert-{{ message.tags }} alert-dismissable"{% endif %}> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - {{ message }}</span><br /> - {% endfor %} - </div> - </div> - </div> - {% endif %} - - {% block contentplaceholder %} - {% endblock %} - </div> - <!-- /#page-wrapper --> - - </div> - <!-- /#wrapper --> - {% block footerblock %} - {% include "footer.html" %} - {% endblock %} - <!-- Core Scripts - Include with every page --> - <script src="{{STATIC_URL}}b3theme/js/jquery-1.10.2.js"></script> - <script src="{{STATIC_URL}}js/jquery_csrf_protect.js" type="text/javascript"></script> - <script src="{{STATIC_URL}}b3theme/js/bootstrap.min.js"></script> - <script src="{{STATIC_URL}}b3theme/js/plugins/metisMenu/jquery.metisMenu.js"></script> - <script type="text/javascript" src="{{STATIC_URL}}js/jquery.cookie.js"></script> - - {% block pagejs %}{% endblock %} - - <!-- SB Admin Scripts - Include with every page --> - <script src="{{STATIC_URL}}b3theme/js/sb-admin.js"></script> - - <!-- Page-Level Scripts - Use for reference --> - {% block pagejsbottom %}{% endblock %} - <script type="text/javascript"> - - function setlang(lang){ - $("#langsel").val(lang); - $("#langform").submit(); - } - - $(document).ready(function() { - $.ajaxSetup({ cache: false }); -}); - - </script> - -</body> - -</html> diff --git a/templates/base.html b/templates/base.html index 18eaba939bbf099ee86ce0587b692282b1c6e930..036efb86cc43f07671e2ac46e3ce4e7e09b51d91 100644 --- a/templates/base.html +++ b/templates/base.html @@ -1,123 +1,62 @@ -<!DOCTYPE HTML> +<!DOCTYPE html> <html> -<head> {% load i18n %} -<title>GRNET's FoD :: {% block title %}{% endblock %} </title> -<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> -<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> -<link REL="SHORTCUT ICON" HREF="{{STATIC_URL}}favicon.ico"> -<script src="{{STATIC_URL}}js/jquery.min.js" type="text/javascript"></script> -<script src="{{STATIC_URL}}js/jquery_csrf_protect.js" type="text/javascript"></script> -<link rel="stylesheet" type="text/css" href="{{STATIC_URL}}css/bootstrap.css"> -<link rel="stylesheet" type="text/css" href="{{STATIC_URL}}css/bootstrap-responsive.css"> -<link rel="stylesheet" type="text/css" href="{{STATIC_URL}}css/smoothness/jquery-ui-1.8.13.custom.css"> -<link rel="stylesheet" type="text/css" href="{{STATIC_URL}}css/base.css"> - -<script type="text/javascript" src="{{STATIC_URL}}js/jquery-ui-1.8.23.custom.min.js"></script> -<script type="text/javascript" src="{{STATIC_URL}}js/jquery.cookie.js"></script> -<script type="text/javascript" src="{{STATIC_URL}}js/bootstrap.js"></script> -<script type="text/javascript"> +<head> - function setlang(lang){ - $("#langsel").val(lang); - $("#langform").submit(); - } + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>GRNET FoD :: {% block title %}{% endblock %}</title> + <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> + <META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> + <link REL="SHORTCUT ICON" HREF="{{STATIC_URL}}favicon.ico"> + <!-- Core CSS - Include with every page --> + <link href="{{STATIC_URL}}b3theme/css/bootstrap.min.css" rel="stylesheet"> + <link href="{{STATIC_URL}}b3theme/font-awesome/css/font-awesome.css" rel="stylesheet"> + + {% block extrahead %}{% endblock %} -</script> -<style> -body { - background-color: #EEEEEE; - height: 100%; - overflow-y: scroll; + <!-- SB Admin CSS - Include with every page --> + <link href="{{STATIC_URL}}b3theme/css/sb-admin.css" rel="stylesheet"> + {% block extraheadbottom %}{% endblock %} + <style> + .navbar-brand { + float: left; + font-size: 18px; + height: 20px; + line-height: 20px; + padding: 1px; } -#content { - background-color: #FFFFFF; - min-height: 100%; - padding: 20px; - padding-top: 90px; - position: relative; + +.footer { + border-top: 1px solid #E5E5E5; + color: #777777; + padding-bottom: 40px; + padding-top: 40px; + text-align: center; } -</style> -{% block extrahead %}{% endblock %} + + </style> </head> +<body> + <div id="wrapper"> -<body> - {% comment %} - <div id="header"> - <a class="grnetlogo" href="{% url group-routes %}"> - <img class="logoimg" src="{{STATIC_URL}}logo.png"> - </a> - <div id="title"> - <a href="{% url group-routes %}">Firewall on Demand</a> - </div> - <div class="loginform"> - <div id="formcontent"> - {% block menublock %} - {% if user.is_authenticated %} - <span class="topmenuuser">{% trans "Welcome" %} <strong>{{user}}</strong></span> - {% endif %} - - <span {% if user.is_authenticated %}class="topmenuaction"{% else %}class="topmenuuser"{% endif %} > - <form action="{% url django.views.i18n.set_language %}" method="post" style="display:inline;" id="langform"> - {% csrf_token %} - <input name="next" type="hidden" value="{{ next }}" /> - <input id="langsel" name="language" type="hidden" value="" /> - {% for lang in LANGUAGES %}<a class="select_lang" href="#" onclick="setlang('{{ lang.0 }}'); return false;" title="{{lang.1}}">{% ifnotequal LANGUAGE_CODE lang.0 %}<font style="font-weight:normal;">{% endifnotequal %}{% trans lang.1 %}{% ifnotequal LANGUAGE_CODE lang.0 %}</font>{% endifnotequal %}</a>{% if not forloop.last %} -{% endif %} - {% endfor %} - </form> - </span> - - {% if user.is_authenticated %} - <span class="topmenuaction"><a href="{% url user-profile %}">{% trans "My profile" %}</a></span> - {% if user.is_superuser %} - <span class="topmenuaction"><a href="{% url admin:index %}">{% trans "Admin" %}</a></span> - {% endif %} - <span class="topmenuaction"><a href="{% url logout %}">{% trans "Logout" %}</a></span> - {% else %} - {% if error %} - <span class="topmenuaction relogin" title="{% trans 'After clicking Retry Login, it is strongly suggested to close your browser and visit the page again' %}"><a href="{% url logout %}">{% trans "Retry Login" %}</a></span> - {% else %} - <span class="topmenuaction"><a href="{% url login %}">{% trans "Shibboleth Login" %}</a></span> - {% endif %} - {% endif %} - {% endblock %} - </div> - - </div> - </div> - {% endcomment %} - <div class="navbar navbar-fixed-top"> - - <div class="navbar-inner"> - <div class="container"> - - {% block topmenu %} - <a class="brand brandimg" href="{% url group-routes %}"><img src="{{STATIC_URL}}img/fod_logo.png" /></a> - <ul class="nav"> - {% if user.is_authenticated %} - - {% if user.get_profile.peer %} - <li> - <a href="{% url user-profile %}">{% trans "My profile" %}</a> - </li> - {% endif %} - - {% if perms.accounts.overview %}<li> - <a href="{% url overview %}">{% trans "Overview" %}</a> - </li>{% endif %} - {% if user.is_superuser %} - <li {% block hometop %}{% endblock %}> - <a href="{% url admin:index %}">{% trans "Admin" %}</a> - </li> - {% endif %} - {% else %} - <li {% block faqtop %}{% endblock %}> - - </li> - {% endif %} - <li class="dropdown"> + <nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".sidebar-collapse"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand" href="{% url dashboard %}"><img src="{{STATIC_URL}}fodlogo2.png"> </a> + </div> + <!-- /.navbar-header --> + + <ul class="nav navbar-top-links navbar-right"> + <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">{% trans "Language" %}: {% for lang in LANGUAGES %}{% ifequal LANGUAGE_CODE lang.0 %}{% trans lang.1 %}{% endifequal %}{% endfor %}<b class="caret"></b></a> <ul class="dropdown-menu"> <form action="{% url django.views.i18n.set_language %}" method="post" style="display:inline;" id="langform"> @@ -132,56 +71,130 @@ body { {% endfor %} </ul> </li> - - </ul> - {% endblock %} - <ul class="nav pull-right"> - {% if user.is_authenticated %} - <li><span><strong>{{user}}</strong></span></li> + <!-- /.dropdown --> + + + {% if user.is_authenticated %} + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#"> + <i class="fa fa-user fa-fw"></i> <i class="fa fa-caret-down"></i> + </a> + <ul class="dropdown-menu dropdown-user" role="menu" > + <li role="presentation" class="dropdown-header">{{user}}</li> + <li class="divider"></li> + {% if user.get_profile.peer %} <li> - <a href="{% url logout %}">{% trans "Logout" %}</a> + <a href="{% url user-profile %}"><i class="fa fa-user fa-fw"></i>{% trans "My profile" %}</a> </li> - {% else %} - {% if error %} - {% if inactive %} - <li><a href="{% url login %}">{% trans "Shibboleth Login" %}</a></li> - {% else %} - <li> - <a id='ttip' data-placement="bottom" rel="tooltip" href="{% url logout %}" data-original-title="{% trans 'After clicking Retry Login, it is strongly suggested to close your browser and visit the page again' %}">{% trans "Retry Login" %}</a> - </li>{% endif %} - {% else %} + {% endif %} + {% if user.is_superuser %} + <li class="divider"></li> + <li><a href="{% url admin:index %}"><i class="fa fa-cogs"></i> {% trans "Admin" %}</a> + </li> + {% endif %} + <li class="divider"></li> + <li><a href="{% url logout %}"><i class="fa fa-sign-out fa-fw"></i> {% trans "Logout" %}</a> + </li> + + </ul> + <!-- /.dropdown-user --> + </li> + {% else %} <li><a href="{% url login %}">{% trans "Shibboleth Login" %}</a></li> {% endif %} - {% endif %} - </ul> - - </div> - </div> - </div> - {% block contentplaceholder %} - <div id="content" class="container"> - {% block brcrmb_container %} - <ul class="breadcrumb">{% if user.is_authenticated %}<li><a href="{% url group-routes %}">{% trans "My rules" %}</a></li>{% else %}<li><a href="{% url welcome %}">{% trans "Welcome" %}</a></li>{% endif %} - {% block breadcrumbs %}{% endblock %} - </ul> - {% endblock %} - {% if messages %} + <!-- /.dropdown --> + </ul> + <!-- /.navbar-top-links --> + + </nav> + <!-- /.navbar-static-top --> + {% block sidenav %} + <nav class="navbar-default navbar-static-side" role="navigation"> + {% if user.is_authenticated %} + <div class="sidebar-collapse"> + <ul class="nav" id="side-menu"> + <li> + <a href="{% url dashboard %}"><i class="fa fa-dashboard fa-fw"></i> {% trans "Dashboard" %}</a> + </li> + <li> + <a href="{% url group-routes %}"><i class="fa fa-shield fa-fw"></i> {% trans "Rules" %}</a> + </li> + <li> + <a href="{% url add-route %}"><i class="fa fa-plus-circle fa-fw"></i> {% trans "Add Rule" %}</a> + </li> + {% if perms.accounts.overview %}<li> + <a href="{% url overview %}"><i class="fa fa-desktop fa-fw"></i> {% trans "Overview" %}</a> + </li>{% endif %} + {% if user.is_superuser %} + <li><a href="{% url admin:index %}"><i class="fa fa-cogs fa-fw"></i> {% trans "Admin" %}</a> + </li> + {% endif %} + {% if user.get_profile.peer %} + <li> + <a href="{% url user-profile %}"><i class="fa fa-user fa-fw"></i> {% trans "My profile" %}</a> + </li> + {% endif %} + </ul> + <!-- /#side-menu --> + </div> + {% endif %} + <!-- /.sidebar-collapse --> + </nav> + <!-- /.navbar-static-side --> + {% endblock %} + <div id="page-wrapper"> + + {% if messages %} + <div class="row"> + <div class="lg-col-12"> <div id="messages"> {% for message in messages %} - <span{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</span><br /> + <div {% if message.tags %} class="alert alert-{{ message.tags }} alert-dismissable"{% endif %}> + <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> + {{ message }}</span><br /> {% endfor %} </div> + </div> + </div> {% endif %} - - - {% block content %} - {% endblock %} - </div> - {% endblock %} - {% block footerblock %} + {% block contentplaceholder %} + {% endblock %} + </div> + <!-- /#page-wrapper --> + + </div> + <!-- /#wrapper --> + {% block footerblock %} {% include "footer.html" %} {% endblock %} - + <!-- Core Scripts - Include with every page --> + <script src="{{STATIC_URL}}b3theme/js/jquery-1.10.2.js"></script> + <script src="{{STATIC_URL}}js/jquery_csrf_protect.js" type="text/javascript"></script> + <script src="{{STATIC_URL}}b3theme/js/bootstrap.min.js"></script> + <script src="{{STATIC_URL}}b3theme/js/plugins/metisMenu/jquery.metisMenu.js"></script> + <script type="text/javascript" src="{{STATIC_URL}}js/jquery.cookie.js"></script> + + {% block pagejs %}{% endblock %} + + <!-- SB Admin Scripts - Include with every page --> + <script src="{{STATIC_URL}}b3theme/js/sb-admin.js"></script> + + <!-- Page-Level Scripts - Use for reference --> + {% block pagejsbottom %}{% endblock %} + <script type="text/javascript"> + + function setlang(lang){ + $("#langsel").val(lang); + $("#langform").submit(); + } + + $(document).ready(function() { + $.ajaxSetup({ cache: false }); +}); + + </script> + </body> + </html> diff --git a/templates/dashboard.html b/templates/dashboard.html index 9fc7f408b9e2eb0e9887cf7641f9f8700cf97b9e..7ced0e68bd9ed590277895988132bc4da3fb3ad4 100644 --- a/templates/dashboard.html +++ b/templates/dashboard.html @@ -1,11 +1,11 @@ -{% extends "b3theme/base.html" %} +{% extends "base.html" %} {% load i18n %} {% block extrahead %} <link href="{{STATIC_URL}}b3theme/css/plugins/morris/morris-0.4.3.min.css" rel="stylesheet"> <link href="{{STATIC_URL}}b3theme/css/plugins/timeline/timeline.css" rel="stylesheet"> <style type="text/css"> - + .dl-horizontal dt { width: 70px; } @@ -36,7 +36,7 @@ <ul class="timeline"> {% for route in routes %} <li class="{% cycle '' 'timeline-inverted' %}"> - + {% if route.status == 'EXPIRED' or route.status == 'ADMININACTIVE' or route.status == 'INACTIVE' or route.status == 'OUTOFSYNC'%} {% if route.status == 'EXPIRED' or route.status == 'ADMININACTIVE' or route.status == 'INACTIVE' %} <div class="timeline-badge"><i class="fa fa-adjust"></i></div> @@ -61,7 +61,7 @@ <div class="timeline-panel"> <div class="timeline-heading"> - <h4 class="timeline-title">{{route.name}}</h4> + <h4 class="timeline-title">{{route.name}}</h4> <p> <small class="text-muted"><i class="fa fa-pencil-square-o"></i> {% trans "Last update" %}: {{route.last_updated}} {% trans "by" %} {{route.applier}}</small> </p> @@ -96,15 +96,15 @@ </p> {{ route.get_match|safe|escape }} - + <dl class="dl-horizontal"> <dt>Then</dt><dd>{{ route.get_then }}</dd> </dl> - + </small> <div> {% ifequal route.status 'ACTIVE' %} - <a href="{% url edit-route route.name %}" class="btn-info btn btn-xs btn-outline" id="edit_button_{{route.pk}}">{% trans "Edit" %}</a> + <a href="{% url edit-route route.name %}" class="btn-info btn btn-xs btn-outline" id="edit_button_{{route.pk}}">{% trans "Edit" %}</a> <button class="del_buttonpre btn-outline btn btn-xs btn-warning" id="{{route.name}}" data-routename="{{route.name}}">{% trans "Deactivate" %}</button> {% else %} {% if route.status == 'EXPIRED' or route.status == 'ADMININACTIVE' or route.status == 'INACTIVE' %} @@ -202,7 +202,7 @@ var refreshUrl = "{% url group-routes-ajax %}"; url: delurl, cache: false, success: function(data) { - + } }); return false; @@ -219,4 +219,4 @@ var refreshUrl = "{% url group-routes-ajax %}"; </script> -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/error.html b/templates/error.html index 1927a04b8d7573b9d66d8bfb7446a4a6e93921a7..b6476a1205204fbe650a197df9d01d45d38c7f52 100644 --- a/templates/error.html +++ b/templates/error.html @@ -1,4 +1,4 @@ -{% extends "b3theme/base.html" %} +{% extends "base.html" %} {% load widget_tweaks %} {% load i18n %} @@ -32,7 +32,7 @@ </div> <!-- /.col-lg-12 --> </div> - + <div class="row"> <div class="col-lg-12"> <div class="panel {% if error %}{% if inactive %}panel-primary{% else %}panel-danger{% endif %}{% endif %}"> @@ -67,7 +67,7 @@ </div> </div> </div> - + {% endblock %} diff --git a/templates/flatpages/default.html b/templates/flatpages/default.html index 5f583a8cca7ee7fa929413d6b52ebbde228181d0..ce8fa5d9a3efd5a5a8eaa14f0eac6133471735e4 100644 --- a/templates/flatpages/default.html +++ b/templates/flatpages/default.html @@ -1,4 +1,4 @@ -{% extends "b3theme/base.html" %} +{% extends "base.html" %} {% block sidenav %}{% endblock %} {% load i18n %} {% block title %}{{ flatpage.title }}{% endblock %} @@ -19,7 +19,7 @@ $("#langsel").val(lang); var form = $("#langform"); $.ajax({ - url: form.attr('action'), + url: form.attr('action'), data: form.serialize(), type: "POST", cache: false, @@ -27,7 +27,7 @@ window.location.href=location.href + "../" + lang + "/"; } }); - + } </script> {% endblock %} @@ -35,11 +35,11 @@ {% block extrahead %} <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Expires" CONTENT="-1"> - + {% endblock %} {% block contentplaceholder %} - + <div class="container"> <div class="row"> <div class="col-lg-12"> @@ -47,9 +47,9 @@ </div> <!-- /.col-lg-12 --> </div> - - - + + + <div class="row"> <div class="col-lg-8"> <div class="panel panel-primary"> @@ -58,14 +58,14 @@ </div> <!-- /.panel-heading --> <div class="panel-body"> - + {{ flatpage.content|linebreaks }} </div> - </div> - </div> - </div> + </div> + </div> + </div> </div> - - + + {% endblock %} diff --git a/templates/overview/index.html b/templates/overview/index.html index 6d47f5fa4de9c99783e23c48e72274685a5af918..32044291619badc1529c2cd9bbfdda52028ef07e 100644 --- a/templates/overview/index.html +++ b/templates/overview/index.html @@ -1,11 +1,11 @@ -{% extends "b3theme/base.html" %} +{% extends "base.html" %} {% load i18n %} - + {% block extrahead %} <link href="{{STATIC_URL}}b3theme/css/plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet"> <style type="text/css"> - + .dl-horizontal dt { width: 70px; } @@ -71,27 +71,27 @@ jQuery.extend( jQuery.fn.dataTableExt.oSort, { } else { var x = 10000000000000; // = l'an 1000 ... } - + return x; }, - + "date-euro-asc": function ( a, b ) { return a - b; }, - + "date-euro-desc": function ( a, b ) { return b - a; } } ); $.fn.dataTableExt.oApi.fnReloadAjax = function ( oSettings, sNewSource, fnCallback, bStandingRedraw ) -{ +{ // DataTables 1.10 compatibility - if 1.10 then versionCheck exists. // 1.10s API has ajax reloading built in, so we use those abilities // directly. if ( $.fn.dataTable.versionCheck ) { var api = new $.fn.dataTable.Api( oSettings ); - + if ( sNewSource ) { api.ajax.url( sNewSource ).load( fnCallback, !bStandingRedraw ); } @@ -100,50 +100,50 @@ $.fn.dataTableExt.oApi.fnReloadAjax = function ( oSettings, sNewSource, fnCallba } return; } - + if ( sNewSource !== undefined && sNewSource !== null ) { oSettings.sAjaxSource = sNewSource; } - + // Server-side processing should just call fnDraw if ( oSettings.oFeatures.bServerSide ) { this.fnDraw(); return; } - + this.oApi._fnProcessingDisplay( oSettings, true ); var that = this; var iStart = oSettings._iDisplayStart; var aData = []; - + this.oApi._fnServerParams( oSettings, aData ); - + oSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aData, function(json) { /* Clear the old information from the table */ that.oApi._fnClearTable( oSettings ); - + /* Got the data - add it to the table */ var aData = (oSettings.sAjaxDataProp !== "") ? that.oApi._fnGetObjectDataFn( oSettings.sAjaxDataProp )( json ) : json; - + for ( var i=0 ; i<aData.length ; i++ ) { that.oApi._fnAddData( oSettings, aData[i] ); } - + oSettings.aiDisplay = oSettings.aiDisplayMaster.slice(); - + that.fnDraw(); - + if ( bStandingRedraw === true ) { oSettings._iDisplayStart = iStart; that.oApi._fnCalculateEnd( oSettings ); that.fnDraw( false ); } - + that.oApi._fnProcessingDisplay( oSettings, false ); - + /* Callback user function - for event handlers etc */ if ( typeof fnCallback == 'function' && fnCallback !== null ) { @@ -160,7 +160,7 @@ var refreshUrl = "{% url overview-ajax %}"; - + oTable = $('#routes_table').dataTable( { "bPaginate": true, "bFilter": true, @@ -177,7 +177,7 @@ var refreshUrl = "{% url overview-ajax %}"; "fnInitComplete": function(oSettings, json) { oTable.fnSetColumnVis( 0,false ); update_size(); - + }, "aoColumns":[ @@ -192,12 +192,12 @@ var refreshUrl = "{% url overview-ajax %}"; }, {"mData":"match", "sClass" : "alignCenter","bSearchable": true,"bSortable": true, "mRender": function (data, type, full) { - return '<small>'+data+'</small>'; + return '<small>'+data+'</small>'; } }, {"mData":"then", "sClass" : "alignCenter","bSearchable": true,"bSortable": true, "mRender": function (data, type, full) { - return '<small>'+data+'</small>'; + return '<small>'+data+'</small>'; } }, {"mData":"status", "sClass" : "alignCenter","bSearchable": true,"bSortable": true, @@ -208,7 +208,7 @@ var refreshUrl = "{% url overview-ajax %}"; return '<span class="label label-default">DEACTIVATED</span>'; } else - { + { if (status == "OUTOFSYNC"){ return '<span class="label label-danger">ERROR</span>'; } @@ -229,23 +229,23 @@ var refreshUrl = "{% url overview-ajax %}"; return '<span class="label label-danger">'+status+'</span>'; } } - } + } } }, {"mData":"applier", "sClass" : "alignCenter","bSearchable": true,"bSortable": true, "mRender": function (data, type, full) { - return '<small>'+data+'</small>'; + return '<small>'+data+'</small>'; } }, {"mData":"expires", "sClass" : "alignCenter","bSearchable": true,"bSortable": true, "mRender": function (data, type, full) { - return '<small>'+data+'</small>'; + return '<small>'+data+'</small>'; }}, {"mData":"response", "sClass" : "alignCenter","bSearchable": true,"bSortable": true, "mRender": function (data, type, full) { status = full.status; toolt = '<a rel="tooltip" href="#" data-toggle="tooltip" data-placement="top"'; - if (status == "EXPIRED" ||status == "ADMININACTIVE" || status == "INACTIVE" || status == "OUTOFSYNC"){ + if (status == "EXPIRED" ||status == "ADMININACTIVE" || status == "INACTIVE" || status == "OUTOFSYNC"){ if (status == "INACTIVE" ){ title = "{% trans 'Deactivated by user' %}"; } @@ -268,7 +268,7 @@ var refreshUrl = "{% url overview-ajax %}"; } }, - + ] } ); @@ -278,7 +278,7 @@ var refreshUrl = "{% url overview-ajax %}"; clearTimeout(window.refresh_size); window.refresh_size = setTimeout(function() { update_size(); }, 250); }); - + var update_size = function() { $(oTable).css({ width: $(oTable).parent().width() }); pw=$(oTable).parent().width(); @@ -290,7 +290,7 @@ var update_size = function() { oTable.fnSetColumnVis( 7,true ); oTable.fnSetColumnVis( 5,true ); } - oTable.fnAdjustColumnSizing(); + oTable.fnAdjustColumnSizing(); } }); $("body").tooltip({ selector: '[data-toggle="tooltip"]' }); @@ -338,7 +338,7 @@ $("body").tooltip({ selector: '[data-toggle="tooltip"]' }); </li> <li><a href="#users-pills" data-toggle="tab">Users</a> </li> - + </ul> <!-- Tab panes --> @@ -374,7 +374,7 @@ $("body").tooltip({ selector: '[data-toggle="tooltip"]' }); </div> <div class="tab-pane fade in active" id="rules-pills"> <h4>{% trans "Rules" %}</h4> - + <div class="table-responsive"> <table class="table table-striped table-bordered" id="routes_table"> <thead> @@ -395,7 +395,7 @@ $("body").tooltip({ selector: '[data-toggle="tooltip"]' }); </table> </div> </div> - + </div> </div> <!-- /.panel-body --> @@ -404,4 +404,4 @@ $("body").tooltip({ selector: '[data-toggle="tooltip"]' }); </div> </div> {% endif %} - {% endblock %} \ No newline at end of file + {% endblock %} diff --git a/templates/overview/login.html b/templates/overview/login.html index f72563ec66c122ce542203c3de8f597f85a82039..3c83fc13a25088b4c4d950d924144a3ef203a927 100644 --- a/templates/overview/login.html +++ b/templates/overview/login.html @@ -1,4 +1,4 @@ -{% extends "b3theme/base.html" %} +{% extends "base.html" %} {% load widget_tweaks %} {% block sidenav %}{% endblock %} {% load i18n %} @@ -16,7 +16,7 @@ </style> {% endblock %} {% block title %} - + {% trans "Overview Login" %} {% endblock %} @@ -30,8 +30,8 @@ </div> <!-- /.col-lg-12 --> </div> - - + + <div class="row"> <div class="col-lg-8"> <div class="panel panel-primary"> @@ -40,8 +40,8 @@ </div> <!-- /.panel-heading --> <div class="panel-body"> - <form class="form-horizontal" method="post" action="{% url altlogin %}" role="form"> - + <form class="form-horizontal" method="post" action="{% url altlogin %}" role="form"> + {% csrf_token %} {% load unescape %} {% if form.non_field_errors %} @@ -49,7 +49,7 @@ {{ form.non_field_errors|unescape}} </div> {% endif %} - + <div class="form-group {% if form.username.errors %} has-error {% endif %}"> <label for="id_username" class="col-md-2 control-label"><b>{% trans "Username" %}</b></label> <div class="col-md-8"> @@ -75,9 +75,9 @@ <input name="next" id="next" type="hidden" value="{% url group-routes %}"> </form> </div> - </div> - </div> - </div> + </div> + </div> + </div> </div> {% endblock %} diff --git a/templates/profile.html b/templates/profile.html index 227e15565c04b8bdf3987441f68b53953e7bd8ac..4fdd703dc7ec20ff7b577ec6d1f869970596d0fb 100644 --- a/templates/profile.html +++ b/templates/profile.html @@ -1,4 +1,4 @@ -{% extends "b3theme/base.html" %} +{% extends "base.html" %} {% load i18n %} {% block title %}{% trans "My profile" %}{% endblock %} @@ -53,7 +53,7 @@ </div> <!-- /.panel-body --> </div> - + <div class="panel panel-info"> <div class="panel-heading"> <i class="fa fa-user"></i> {% trans "My Profile" %} @@ -70,7 +70,7 @@ </div> </div> </div> - + diff --git a/templates/registration/activate.html b/templates/registration/activate.html index 0389d8472b6557e651d549b09d97ad53b0190191..79a3c0c4fae5316c9cc41c3f3ce997f269a0ef76 100644 --- a/templates/registration/activate.html +++ b/templates/registration/activate.html @@ -1,4 +1,4 @@ -{% extends "b3theme/base.html" %} +{% extends "base.html" %} {% load i18n %} {% block title %}{% trans "Activation Status" %}{% endblock %} @@ -22,7 +22,7 @@ </div> <!-- /.col-lg-12 --> </div> - + <div class="row"> <div class="col-lg-12"> <div class="panel panel-primary"> diff --git a/templates/registration/activate_edit.html b/templates/registration/activate_edit.html index 5d17e2d1ec14ada0ae37304e87bd1cc1239dc7e2..5ccb4435a4ed1a760c40e8dc9553b1a186928feb 100644 --- a/templates/registration/activate_edit.html +++ b/templates/registration/activate_edit.html @@ -1,4 +1,4 @@ -{% extends "b3theme/base.html" %} +{% extends "base.html" %} {% load widget_tweaks %} {% load i18n %} @@ -22,7 +22,7 @@ </div> <!-- /.col-lg-12 --> </div> - + <div class="row"> <div class="col-lg-12"> <div class="panel panel-primary"> @@ -30,12 +30,12 @@ <i class="fa fa-user"></i> {% trans "Activate User" %} </div> <!-- /.panel-heading --> - <div class="panel-body"> + <div class="panel-body"> <form method="POST" class="form-horizontal"> {% csrf_token %} {% if form.non_field_errors %} <p class="error">{{ form.non_field_errors}}</p> {% endif %} - <div class="form-group {% if form.user.errors %} has-error {% endif %}"> + <div class="form-group {% if form.user.errors %} has-error {% endif %}"> <label class="col-md-2 control-label" for="id_peer"><b>{% trans "User" %}</b></label> <div class="col-md-8"> {% render_field form.user class+="form-control" %} @@ -43,7 +43,7 @@ {% endif %} </div> </div> - <div class="form-group {% if form.peer.errors %} has-error {% endif %}"> + <div class="form-group {% if form.peer.errors %} has-error {% endif %}"> <label class="col-md-2 control-label" for="id_peer"><b>{% trans "Institution" %}</b></label> <div class="col-md-8"> {% render_field form.peer class+="form-control" %} @@ -58,7 +58,7 @@ <button type="submit" id="applybutton" value="{% trans 'Apply' %}" class="btn btn-md btn-primary">{% trans "Activate" %}</button> </div> </div> - + </div> </div> </div> diff --git a/templates/registration/activation_complete.html b/templates/registration/activation_complete.html index e545bce90819211c076f022f0380170aad667932..08fbc212635b1eb6421ac8b2480025823dcd4096 100644 --- a/templates/registration/activation_complete.html +++ b/templates/registration/activation_complete.html @@ -1,4 +1,4 @@ -{% extends "b3theme/base.html" %} +{% extends "base.html" %} {% load i18n %} {% block title %}{% trans "Activation Complete" %}{% endblock %} @@ -22,7 +22,7 @@ </div> <!-- /.col-lg-12 --> </div> - + <div class="row"> <div class="col-lg-12"> <div class="panel panel-primary"> @@ -37,4 +37,4 @@ </div> </div> </div> - {% endblock %} \ No newline at end of file + {% endblock %} diff --git a/templates/registration/select_institution.html b/templates/registration/select_institution.html index caf127c8bf9604f4a84cc7d4bc0a528d5b472ee2..1a173693cead13b9088b0aaf65aad10bf459a41e 100644 --- a/templates/registration/select_institution.html +++ b/templates/registration/select_institution.html @@ -1,4 +1,4 @@ -{% extends "b3theme/base.html" %} +{% extends "base.html" %} {% load widget_tweaks %} {% load i18n %} @@ -22,7 +22,7 @@ </div> <!-- /.col-lg-12 --> </div> - + <div class="row"> <div class="col-lg-12"> <div class="panel panel-primary"> @@ -31,14 +31,14 @@ </div> <!-- /.panel-heading --> <div class="panel-body"> - + <div class="alert alert-info">Excellent! You are a step away from joining the service. Select your institution from the dropdown list.</div> <form method="POST" class="form-horizontal" action="{% url selectinst %}"> {% csrf_token %} {% if form.non_field_errors %} <p class="error">{{ form.non_field_errors}}</p> {% endif %} <div style="display: none">{{form.user}}</div> - <div class="form-group {% if form.peer.errors %} has-error {% endif %}"> + <div class="form-group {% if form.peer.errors %} has-error {% endif %}"> <label class="col-md-2 control-label" for="id_peer"><b>{% trans "Institution" %}</b></label> <div class="col-md-8"> {% render_field form.peer class+="form-control" %} @@ -53,7 +53,7 @@ <button type="submit" id="applybutton" value="{% trans 'Apply' %}" class="btn btn-md btn-primary">Apply</button> </div> </div> - + </div> </div> </div> @@ -62,4 +62,4 @@ {% endblock %} - \ No newline at end of file + diff --git a/templates/user_routes.html b/templates/user_routes.html index b3ca893669426b9d0683d79a527a137f09d9f191..8fc6f29dd69a90489bfe9ef6ea84fa06329cc5a9 100644 --- a/templates/user_routes.html +++ b/templates/user_routes.html @@ -1,4 +1,4 @@ -{% extends "b3theme/base.html" %} +{% extends "base.html" %} {% load i18n %} {% block extrahead %} <link href="{{STATIC_URL}}b3theme/css/plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet"> diff --git a/templates/welcome.html b/templates/welcome.html index b07d4a5529e1ba6f8d9486bb5c3a2d2e34d7d2db..01badb0b17303d564c573d42bf20f343989a2d25 100644 --- a/templates/welcome.html +++ b/templates/welcome.html @@ -1,4 +1,4 @@ -{% extends "b3theme/base.html" %} +{% extends "base.html" %} {% load i18n %} {% block title %}{% trans "Login" %}{% endblock %} {% block sidenav %}{% endblock %} @@ -55,7 +55,7 @@ </div> - + <div class="row" style="padding-top:5px;"></div> <div class="row"> <div class="col-lg-4"> @@ -68,10 +68,10 @@ <div class="well"><h3>{% trans "How" %}?</h3><hr> <p>{% blocktrans %}If you have properly set your Shibboleth attributes, you may proceed{% endblocktrans %}</p> <div class="text-center"> - + <p><img src="{{STATIC_URL}}shib_login.png" style="border:none;"></p> <p><a href="{% url login %}" type="button" class="btn btn-outline btn-primary">{% trans "Shibboleth Login" %}</a></p> - + </div></div> </div> <div class="col-lg-4"> @@ -85,12 +85,12 @@ <div class="text-center"> <br> <p> - <iframe width="640" height="360" src="https://www.youtube.com/embed/VZy7DG8sjSk?rel=0" frameborder="0" allowfullscreen></iframe> + <iframe width="640" height="360" src="https://www.youtube.com/embed/VZy7DG8sjSk?rel=0" frameborder="0" allowfullscreen></iframe> </p> - + <p>{% blocktrans %}Welcome to GRNET's FoD service.{% endblocktrans %}</p> </div> </div> </div> {% endcomment %} - {% endblock %} \ No newline at end of file + {% endblock %} diff --git a/utils/proxy.py b/utils/proxy.py index f21a6feac99004ec0d89b97e09b02c2b9937d3de..1791d5e5502fe83c9723d5c8ddaeb5f66e7a90ae 100644 --- a/utils/proxy.py +++ b/utils/proxy.py @@ -28,12 +28,12 @@ import os from celery.exceptions import TimeLimitExceeded, SoftTimeLimitExceeded cwd = os.getcwd() - + LOG_FILENAME = os.path.join(settings.LOG_FILE_LOCATION, 'celery_jobs.log') -#FORMAT = '%(asctime)s %(levelname)s: %(message)s' -#logging.basicConfig(format=FORMAT) +# FORMAT = '%(asctime)s %(levelname)s: %(message)s' +# logging.basicConfig(format=FORMAT) formatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s') logger = logging.getLogger(__name__) @@ -42,9 +42,11 @@ handler = logging.FileHandler(LOG_FILENAME) handler.setFormatter(formatter) logger.addHandler(handler) + def fod_unknown_host_cb(host, fingerprint): return True + class Retriever(object): def __init__(self, device=settings.NETCONF_DEVICE, username=settings.NETCONF_USER, password=settings.NETCONF_PASS, filter=settings.ROUTES_FILTER, port=settings.NETCONF_PORT, route_name=None, xml=None): self.device = device @@ -55,12 +57,12 @@ class Retriever(object): self.xml = xml if route_name: self.filter = settings.ROUTE_FILTER%route_name - + def fetch_xml(self): with manager.connect(host=self.device, port=self.port, username=self.username, password=self.password, hostkey_verify=False) as m: xmlconfig = m.get_config(source='running', filter=('subtree',self.filter)).data_xml return xmlconfig - + def proccess_xml(self): if self.xml: xmlconfig = self.xml @@ -69,8 +71,8 @@ class Retriever(object): parser = np.Parser() parser.confile = xmlconfig device = parser.export() - return device - + return device + def fetch_device(self): device = cache.get("device") logger.info("[CACHE] hit! got device") @@ -85,15 +87,16 @@ class Retriever(object): else: return False + class Applier(object): - def __init__(self, route_objects = [], route_object=None, device=settings.NETCONF_DEVICE, username=settings.NETCONF_USER, password=settings.NETCONF_PASS, port=settings.NETCONF_PORT): + def __init__(self, route_objects=[], route_object=None, device=settings.NETCONF_DEVICE, username=settings.NETCONF_USER, password=settings.NETCONF_PASS, port=settings.NETCONF_PORT): self.route_object = route_object self.route_objects = route_objects self.device = device self.username = username self.password = password self.port = port - + def to_xml(self, operation=None): logger.info("Operation: %s"%operation) if self.route_object: @@ -150,14 +153,14 @@ class Applier(object): route.match['dscp'].append(dscp.dscp) except: pass - + try: if route_obj.fragmenttype: for frag in route_obj.fragmenttype.all(): route.match['fragment'].append(frag.fragmenttype) except: pass - + for thenaction in route_obj.then.all(): if thenaction.action_value: route.then[thenaction.action] = thenaction.action_value @@ -186,8 +189,8 @@ class Applier(object): device = device.export(netconf_config=True) return ET.tostring(device) else: - return False - + return False + def apply(self, configuration = None, operation=None): reason = None if not configuration: @@ -215,8 +218,8 @@ class Applier(object): logger.error(cause) return False, cause except Exception as e: - cause="Caught edit exception: %s %s" %(e,reason) - cause=cause.replace('\n', '') + cause = "Caught edit exception: %s %s" % (e, reason) + cause = cause.replace('\n', '') logger.error(cause) m.discard_changes() return False, cause @@ -224,7 +227,7 @@ class Applier(object): try: commit_confirmed_response = m.commit(confirmed=True, timeout=settings.COMMIT_CONFIRMED_TIMEOUT) commit_confirmed_is_successful, reason = is_successful(commit_confirmed_response) - + if not commit_confirmed_is_successful: raise Exception() else: @@ -244,7 +247,7 @@ class Applier(object): cause=cause.replace('\n', '') logger.error(cause) return False, cause - + if settings.COMMIT: if edit_is_successful and commit_confirmed_is_successful: try: @@ -255,7 +258,7 @@ class Applier(object): retrieve = Retriever(xml=newconfig) logger.info("[CACHE] caching device configuration") cache.set("device", retrieve.proccess_xml(), 3600) - + if not commit_is_successful: raise Exception() else: @@ -276,25 +279,25 @@ class Applier(object): return False, cause else: return False, "No configuration was supplied" - + + def is_successful(response): from StringIO import StringIO doc = parsexml_(StringIO(response)) rootNode = doc.getroot() success_list = rootNode.xpath("//*[local-name()='ok']") - if len(success_list)>0: + if len(success_list) > 0: return True, None else: reason_return = '' reason_list = rootNode.xpath("//*[local-name()='error-message']") for reason in reason_list: - reason_return = "%s %s" %(reason_return, reason.text) + reason_return = '%s %s' % (reason_return, reason.text) return False, reason_return - - + + def parsexml_(*args, **kwargs): if 'parser' not in kwargs: kwargs['parser'] = ET.ETCompatXMLParser() doc = ET.parse(*args, **kwargs) return doc - diff --git a/utils/randomizer.py b/utils/randomizer.py index 4b1c8490268971c41e84df0df30202f4becf268b..2942b1fcc937a43c3b3af723451fa2e58cd2b79f 100644 --- a/utils/randomizer.py +++ b/utils/randomizer.py @@ -20,5 +20,6 @@ import string import random + def id_generator(size=6, chars=string.ascii_uppercase + string.digits): return ''.join(random.choice(chars) for x in range(size)) diff --git a/utils/whois.py b/utils/whois.py index 9e77441cde04a0580ec5248aa0563b5c14de5ad0..55e42e467c2e6e85543fd59488b3a6a303c80dee 100644 --- a/utils/whois.py +++ b/utils/whois.py @@ -22,10 +22,11 @@ from ipaddr import * import re from django.conf import settings + def query(query, hostname, flags): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((hostname, 43)) - # as IPv6 is not supported by flowspec for the time ommit -T route6 + # as IPv6 is not supported by flowspec for the time ommit -T route6 s.send(" -i origin -r -K -T route " + query + "\r\n") response = '' while True: @@ -54,8 +55,9 @@ def query(query, hostname, flags): final_routes = final_routes4 + final_routes6 return final_routes + def whois(queryas): - routes = query(queryas,settings.PRIMARY_WHOIS, None) + routes = query(queryas, settings.PRIMARY_WHOIS, None) if not routes: - routes = query(queryas,settings.ALTERNATE_WHOIS, None) - return routes \ No newline at end of file + routes = query(queryas, settings.ALTERNATE_WHOIS, None) + return routes diff --git a/widget_tweaks/templatetags/widget_tweaks.py b/widget_tweaks/templatetags/widget_tweaks.py index 0120f021081cf0f0a0e9d6648c28d54ea44b7ff8..b0bb89c8585f827542cf6579801b0af944ddfbed 100644 --- a/widget_tweaks/templatetags/widget_tweaks.py +++ b/widget_tweaks/templatetags/widget_tweaks.py @@ -1,5 +1,5 @@ import re -from django.template import Library, Node, Variable, TemplateSyntaxError +from django.template import Library, Node, TemplateSyntaxError register = Library()