===========
+0.8.7 RELEASE
+Minor enhancements
+
+Enhancements:
+ - Merged all mail txt files into one
+ - Added all routes in form cleaning (initially, EXPIRED, ADMININACTIVE and ERROR were excluded)
+
+===========
+0.8.6 RELEASE
+Minor UI enhancements/Bug fix
+Fixes:
+ - Fixed issue where rules in ERROR state would cause check_sync to check them
+Enhancements:
+ - Added small dots to ongoing response field to indicate activity
+
+===========
+0.8.5 RELEASE
+Feature enhancement release/Minor UI fixes/Cleanup
+Fixes:
+ - Changed javascript order to prevent unformated content in datatables
+ - Un-needed files cleanup
+ - Error template is now based on base.html template
+Enhancements:
+ - Administrator privileges apply on UI as well
+ - Enhanced application security
+
+===========
+0.8.4 RELEASE
+Vulnerability prevention/bug fixes release
+Fixes:
+ - Fixed a bug where the shib auth backend erased non-shibboleth users info
+ - Added an authsource variable to prevent authentication backend overlapping
+ - Added exception handling for non-Shibboleth users that do not belong to a peer
+
+===========
0.8.3 RELEASE
Feature enhancement release
Fixes:
* PRIMARY_WHOIS
* ALTERNATE_WHOIS
-4.2 Installation
+4.2 Branding
+
+4.2.1 Logos
+
+Inside the static folder you will find two empty png files: logo.dist.png (172x80) and shib_login.dist.png (98x80).
+Edit those two with your favourite image processing software and save them as logo.png and shib_login.png under the same folder. Image sizes are optimized to operate without any
+other code changes. In case you want to incorporate images of different sizes you have to fine tune css and/or html as well.
+
+4.2.2 Footer
+
+Under the templates folder (templates), you can alter the footer.html file to include your own footer messages, badges, etc.
+
+4.3 Installation
* Run:
./manage.py syncdb
firstname = kwargs.get('firstname')
lastname = kwargs.get('lastname')
mail = kwargs.get('mail')
+ authsource = kwargs.get('authsource')
+ if authsource != 'shibboleth':
+ return None
try:
user = self._auth_user(username, firstname, lastname, mail)
except:
try:
user = User.objects.get(username__exact=username)
- user.email = mail
- user.first_name = firstname
- user.last_name = lastname
- user.save()
# The user did not exist. Create one with no privileges
except:
user = User.objects.create_user(username, mail, None)
from django.utils.translation import ugettext_lazy
from django.template.defaultfilters import filesizeformat
from flowspy.flowspec.models import *
+from flowspy.peers.models import *
from ipaddr import *
from django.core.urlresolvers import reverse
from django.contrib.auth.models import User
class Meta:
model = Route
-
+
+ def clean_applier(self):
+ applier = self.cleaned_data['applier']
+ if applier:
+ return self.cleaned_data["applier"]
+ else:
+ raise forms.ValidationError('This field is required.')
+
def clean_source(self):
user = User.objects.get(pk=self.data['applier'])
peer = user.get_profile().peer
destinationports = self.cleaned_data.get('destinationport', None)
protocols = self.cleaned_data.get('protocol', None)
user = self.cleaned_data.get('applier', None)
+ try:
+ issuperuser = self.data['issuperuser']
+ su = User.objects.get(username=issuperuser)
+ except:
+ issuperuser = None
peer = user.get_profile().peer
networks = peer.networks.all()
+ if issuperuser:
+ networks = PeerRange.objects.filter(peer__in=Peer.objects.all()).distinct()
mynetwork = False
route_pk_list = []
if destination:
if IPNetwork(destination) in net:
mynetwork = True
if not mynetwork:
- raise forms.ValidationError(_('Destination address/network should belong to your administrative address space. Check My Profile to review your networks'))
+ raise forms.ValidationError(_('Destination address/network should belong to your administrative address space. Check My Profile to review your networks'))
if (sourceports and ports):
raise forms.ValidationError(_('Cannot create rule for source ports and ports at the same time. Select either ports or source ports'))
if (destinationports and ports):
raise forms.ValidationError(_('Fill at least a Rule Match Condition'))
if not user.is_superuser and then[0].action not in settings.UI_USER_THEN_ACTIONS:
raise forms.ValidationError(_('This action "%s" is not permitted') %(then[0].action))
- existing_routes = Route.objects.exclude(status='EXPIRED').exclude(status='ERROR').exclude(status='ADMININACTIVE')
+ existing_routes = Route.objects.all()
existing_routes = existing_routes.filter(applier__userprofile__peer=peer)
if source:
source = IPNetwork(source).compressed
routes = routes.filter(name=route_name)
for route in routes:
if route.has_expired() and (route.status != 'EXPIRED' and route.status != 'ADMININACTIVE' and route.status != 'INACTIVE'):
- logger.info('Expiring route %s' %route.name)
- subtask(delete).delay(route, reason="EXPIRED")
+ if route.status != 'ERROR':
+ logger.info('Expiring %s route %s' %(route.status, route.name))
+ subtask(delete).delay(route, reason="EXPIRED")
# elif route.has_expired() and (route.status == 'ADMININACTIVE' or route.status == 'INACTIVE'):
# route.status = 'EXPIRED'
# route.response = 'Rule Expired'
admin_url = "https://%s%s" % \
(fqdn,
"/fod/edit/%s"%route.name)
- mail_body = render_to_string("rule_expiration.txt",
- {"route": route, 'expiration_days':expiration_days, 'url':admin_url})
+ mail_body = render_to_string("rule_action.txt",
+ {"route": route, 'expiration_days':expiration_days, 'action':'expires', 'url':admin_url})
days_num = ' days'
expiration_days_text = "%s %s" %('in',expiration_days)
if expiration_days == 0:
@never_cache
def group_routes(request):
group_routes = []
- peer = request.user.get_profile().peer
+ try:
+ peer = request.user.get_profile().peer
+ except UserProfile.DoesNotExist:
+ error = "User <strong>%s</strong> does not belong to any peer or organization. It is not possible to create new firewall rules.<br>Please contact Helpdesk to resolve this issue" % request.user.username
+ return render_to_response('error.html', {'error': error})
if peer:
peer_members = UserProfile.objects.filter(peer=peer)
users = [prof.user for prof in peer_members]
group_routes = Route.objects.filter(applier__in=users)
- return render_to_response('user_routes.html', {'routes': group_routes},
+ if request.user.is_superuser:
+ group_routes = Route.objects.all()
+ return render_to_response('user_routes.html', {'routes': group_routes},
context_instance=RequestContext(request))
_("Insufficient rights on administrative networks. Cannot add rule. Contact your administrator"))
return HttpResponseRedirect(reverse("group-routes"))
if request.method == "GET":
- form = RouteForm()
+ form = RouteForm(initial={'applier': applier})
if not request.user.is_superuser:
form.fields['then'] = forms.ModelMultipleChoiceField(queryset=ThenAction.objects.filter(action__in=settings.UI_USER_THEN_ACTIONS).order_by('action'), required=True)
form.fields['protocol'] = forms.ModelMultipleChoiceField(queryset=MatchProtocol.objects.filter(protocol__in=settings.UI_USER_PROTOCOLS).order_by('protocol'), required=False)
context_instance=RequestContext(request))
else:
- form = RouteForm(request.POST)
+ request_data = request.POST.copy()
+ if request.user.is_superuser:
+ request_data['issuperuser'] = request.user.username
+ else:
+ request_data['applier'] = applier
+ try:
+ del requset_data['issuperuser']
+ except:
+ pass
+ form = RouteForm(request_data)
if form.is_valid():
route=form.save(commit=False)
- route.applier = request.user
+ if not request.user.is_superuser:
+ route.applier = request.user
route.status = "PENDING"
+ route.response = "Applying"
route.source = IPNetwork("%s/%s" %(IPNetwork(route.source).network.compressed, IPNetwork(route.source).prefixlen)).compressed
route.destination = IPNetwork("%s/%s" %(IPNetwork(route.destination).network.compressed, IPNetwork(route.destination).prefixlen)).compressed
route.save()
form.save_m2m()
route.commit_add()
requesters_address = request.META['HTTP_X_FORWARDED_FOR']
- mail_body = render_to_string("rule_add_mail.txt",
- {"route": route, "address": requesters_address})
+ fqdn = Site.objects.get_current().domain
+ admin_url = "https://%s%s" % (fqdn, "/fod/edit/%s"%route.name)
+ mail_body = render_to_string("rule_action.txt",
+ {"route": route, "address": requesters_address, "action": "creation", "url": admin_url})
user_mail = "%s" %route.applier.email
user_mail = user_mail.split(';')
send_new_mail(settings.EMAIL_SUBJECT_PREFIX + "Rule %s creation request submitted by %s" %(route.name, route.applier.username),
logger.info(mail_body, extra=d)
return HttpResponseRedirect(reverse("group-routes"))
else:
+ if not request.user.is_superuser:
+ form.fields['then'] = forms.ModelMultipleChoiceField(queryset=ThenAction.objects.filter(action__in=settings.UI_USER_THEN_ACTIONS).order_by('action'), required=True)
+ form.fields['protocol'] = forms.ModelMultipleChoiceField(queryset=MatchProtocol.objects.filter(protocol__in=settings.UI_USER_PROTOCOLS).order_by('protocol'), required=False)
return render_to_response('apply.html', {'form': form, 'applier':applier},
context_instance=RequestContext(request))
applier_peer = request.user.get_profile().peer
route_edit = get_object_or_404(Route, name=route_slug)
route_edit_applier_peer = route_edit.applier.get_profile().peer
- if applier_peer != route_edit_applier_peer:
+ if applier_peer != route_edit_applier_peer and (not request.user.is_superuser):
messages.add_message(request, messages.WARNING,
_("Insufficient rights to edit rule %s") %(route_slug))
return HttpResponseRedirect(reverse("group-routes"))
return HttpResponseRedirect(reverse("group-routes"))
route_original = deepcopy(route_edit)
if request.POST:
- form = RouteForm(request.POST, instance = route_edit)
+ request_data = request.POST.copy()
+ if request.user.is_superuser:
+ request_data['issuperuser'] = request.user.username
+ else:
+ request_data['applier'] = applier
+ try:
+ del request_data['issuperuser']
+ except:
+ pass
+ form = RouteForm(request_data, instance = route_edit)
+ critical_changed_values = ['source', 'destination', 'sourceport', 'destinationport', 'port', 'protocol', 'then']
if form.is_valid():
+ changed_data = form.changed_data
route=form.save(commit=False)
route.name = route_original.name
- route.applier = request.user
- route.status = "PENDING"
- route.source = IPNetwork("%s/%s" %(IPNetwork(route.source).network.compressed, IPNetwork(route.source).prefixlen)).compressed
- route.destination = IPNetwork("%s/%s" %(IPNetwork(route.destination).network.compressed, IPNetwork(route.destination).prefixlen)).compressed
+ route.status = route_original.status
+ route.response = route_original.response
+ if not request.user.is_superuser:
+ route.applier = request.user
+ if bool(set(changed_data) & set(critical_changed_values)) or (not route_original.status == 'ACTIVE'):
+ route.status = "PENDING"
+ route.response = "Applying"
+ route.source = IPNetwork("%s/%s" %(IPNetwork(route.source).network.compressed, IPNetwork(route.source).prefixlen)).compressed
+ route.destination = IPNetwork("%s/%s" %(IPNetwork(route.destination).network.compressed, IPNetwork(route.destination).prefixlen)).compressed
route.save()
- form.save_m2m()
- route.commit_edit()
- requesters_address = request.META['HTTP_X_FORWARDED_FOR']
- mail_body = render_to_string("rule_edit_mail.txt",
- {"route": route, "address": requesters_address})
- user_mail = "%s" %route.applier.email
- user_mail = user_mail.split(';')
- send_new_mail(settings.EMAIL_SUBJECT_PREFIX + "Rule %s edit request submitted by %s" %(route.name, route.applier.username),
+ if bool(set(changed_data) & set(critical_changed_values)) or (not route_original.status == 'ACTIVE'):
+ form.save_m2m()
+ route.commit_edit()
+ requesters_address = request.META['HTTP_X_FORWARDED_FOR']
+ fqdn = Site.objects.get_current().domain
+ admin_url = "https://%s%s" % (fqdn, "/fod/edit/%s"%route.name)
+ mail_body = render_to_string("rule_action.txt",
+ {"route": route, "address": requesters_address, "action": "edit", "url": admin_url})
+ user_mail = "%s" %route.applier.email
+ user_mail = user_mail.split(';')
+ send_new_mail(settings.EMAIL_SUBJECT_PREFIX + "Rule %s edit request submitted by %s" %(route.name, route.applier.username),
mail_body, settings.SERVER_EMAIL, user_mail,
get_peer_techc_mails(route.applier))
- d = { 'clientip' : requesters_address, 'user' : route.applier.username }
- logger.info(mail_body, extra=d)
+ d = { 'clientip' : requesters_address, 'user' : route.applier.username }
+ logger.info(mail_body, extra=d)
return HttpResponseRedirect(reverse("group-routes"))
else:
+ if not request.user.is_superuser:
+ form.fields['then'] = forms.ModelMultipleChoiceField(queryset=ThenAction.objects.filter(action__in=settings.UI_USER_THEN_ACTIONS).order_by('action'), required=True)
+ form.fields['protocol'] = forms.ModelMultipleChoiceField(queryset=MatchProtocol.objects.filter(protocol__in=settings.UI_USER_PROTOCOLS).order_by('protocol'), required=False)
return render_to_response('apply.html', {'form': form, 'edit':True, 'applier': applier},
context_instance=RequestContext(request))
else:
+ if (not route_original.status == 'ACTIVE'):
+ route_edit.expires = datetime.date.today() + datetime.timedelta(days = settings.EXPIRATION_DAYS_OFFSET)
dictionary = model_to_dict(route_edit, fields=[], exclude=[])
- #form = RouteForm(instance=route_edit)
+ if request.user.is_superuser:
+ dictionary['issuperuser'] = request.user.username
+ else:
+ try:
+ del dictionary['issuperuser']
+ except:
+ pass
form = RouteForm(dictionary)
if not request.user.is_superuser:
form.fields['then'] = forms.ModelMultipleChoiceField(queryset=ThenAction.objects.filter(action__in=settings.UI_USER_THEN_ACTIONS).order_by('action'), required=True)
route = get_object_or_404(Route, name=route_slug)
applier_peer = route.applier.get_profile().peer
requester_peer = request.user.get_profile().peer
- if applier_peer == requester_peer:
+ if applier_peer == requester_peer or request.user.is_superuser:
route.status = "PENDING"
route.expires = datetime.date.today()
- route.applier = request.user
+ if not request.user.is_superuser:
+ route.applier = request.user
+ route.response = "Suspending"
route.save()
route.commit_delete()
requesters_address = request.META['HTTP_X_FORWARDED_FOR']
- mail_body = render_to_string("rule_delete_mail.txt",
- {"route": route, "address": requesters_address})
+ fqdn = Site.objects.get_current().domain
+ admin_url = "https://%s%s" % (fqdn, "/fod/edit/%s"%route.name)
+ mail_body = render_to_string("rule_action.txt",
+ {"route": route, "address": requesters_address, "action": "removal", "url": admin_url})
user_mail = "%s" %route.applier.email
user_mail = user_mail.split(';')
send_new_mail(settings.EMAIL_SUBJECT_PREFIX + "Rule %s removal request submitted by %s" %(route.name, route.applier.username),
mail_body, settings.SERVER_EMAIL, user_mail,
get_peer_techc_mails(route.applier))
d = { 'clientip' : requesters_address, 'user' : route.applier.username }
- logger.info(mail_body, extra=d)
+ logger.info(mail_body, extra=d)
html = "<html><body>Done</body></html>"
return HttpResponse(html)
else:
@never_cache
def user_profile(request):
user = request.user
- peer = request.user.get_profile().peer
-
- return render_to_response('profile.html', {'user': user, 'peer':peer},
+ try:
+ peer = request.user.get_profile().peer
+ peers = Peer.objects.filter(pk=peer.pk)
+ if user.is_superuser:
+ peers = Peer.objects.all()
+ except UserProfile.DoesNotExist:
+ error = "User <strong>%s</strong> does not belong to any peer or organization. It is not possible to create new firewall rules.<br>Please contact Helpdesk to resolve this issue" % user.username
+ return render_to_response('error.html', {'error': error})
+ return render_to_response('profile.html', {'user': user, 'peers':peers},
context_instance=RequestContext(request))
@never_cache
context_instance=RequestContext(request))
try:
user = User.objects.get(username__exact=username)
+ user.email = mail
+ user.first_name = firstname
+ user.last_name = lastname
+ user.save()
user_exists = True
except:
user_exists = False
- user = authenticate(username=username, firstname=firstname, lastname=lastname, mail=mail)
+ user = authenticate(username=username, firstname=firstname, lastname=lastname, mail=mail, authsource='shibboleth')
if user is not None:
try:
peer = Peer.objects.get(domain_name=organization)
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-02-24 11:23+0200\n"
+"POT-Creation-Date: 2012-05-03 11:07+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Leonidas Poulopoulos <leopoul@grnet.gr>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
msgid "%sUser account activated"
msgstr "%s Ενεργοποιήθηκε ο λογαριασμός του χρήστη"
-#: flowspec/forms.py:52 flowspec/forms.py:81
+#: flowspec/forms.py:60 flowspec/forms.py:89
msgid "Invalid network address format"
msgstr "Λανθασμένη μορφή διεύθυνσης δικυου στο πεδίο Πηγή"
-#: flowspec/forms.py:54
+#: flowspec/forms.py:62
msgid "Private addresses not allowed"
msgstr "Δεν επιτρέπονται οι private διευθύνσεις"
-#: flowspec/forms.py:56 flowspec/forms.py:85
+#: flowspec/forms.py:64 flowspec/forms.py:93
msgid "You have no authority on this subnet"
msgstr "Δεν έχετε δικαιώματα σε αυτό το υποδίκτυο"
-#: flowspec/forms.py:77
+#: flowspec/forms.py:85
#, python-format
msgid "Currently no prefix lengths < %s are allowed"
msgstr "Προς το παρόν δεν επιτρέπονται υποδίκτυα <%s"
-#: flowspec/forms.py:99
+#: flowspec/forms.py:107
msgid "Errors in form. Please review and fix them"
msgstr "Σφάλματα στη φόρμα. Παρακαλώ διορθώστε τα"
-#: flowspec/forms.py:119
+#: flowspec/forms.py:134
msgid ""
"Destination address/network should belong to your administrative address "
"space. Check My Profile to review your networks"
"Η διεύθυνση προορισμού πρέπει να ανήκει στα διαχειριστικά σας δίκτυα. "
"Επισκεφθείτε 'Το Προφίλ μου' για την προβολή των διαχειριστικών σας δικτύων"
-#: flowspec/forms.py:121
+#: flowspec/forms.py:136
msgid ""
"Cannot create rule for source ports and ports at the same time. Select "
"either ports or source ports"
-msgstr "Δεν μπορεί να δημιουργηθεί φίλτρο για source ports και ports ταυτόχρονα. Επιλέξτε είτε ports είτε source ports"
+msgstr ""
+"Δεν μπορεί να δημιουργηθεί φίλτρο για source ports και ports ταυτόχρονα. "
+"Επιλέξτε είτε ports είτε source ports"
-#: flowspec/forms.py:123
+#: flowspec/forms.py:138
msgid ""
"Cannot create rule for destination ports and ports at the same time. Select "
"either ports or destination ports"
-msgstr "Δεν μπορεί να δημιουργηθεί φίλτρο για destination ports και ports ταυτόχρονα. Επιλέξτε είτε ports είτε destination ports"
+msgstr ""
+"Δεν μπορεί να δημιουργηθεί φίλτρο για destination ports και ports "
+"ταυτόχρονα. Επιλέξτε είτε ports είτε destination ports"
-#: flowspec/forms.py:125
+#: flowspec/forms.py:140
msgid ""
"Once source port is matched, source has to be filled as well. Either "
"deselect source port or fill source address"
-msgstr "Εφόσον έχετε επιλέξει source port, το πεδίο source πρέπει να συμπληρωθεί. Είτε απο-επιλέξτε το πεδίο source port είτε συμπληρώστε μια διεύθυνση στο source"
+msgstr ""
+"Εφόσον έχετε επιλέξει source port, το πεδίο source πρέπει να συμπληρωθεί. "
+"Είτε απο-επιλέξτε το πεδίο source port είτε συμπληρώστε μια διεύθυνση στο "
+"source"
-#: flowspec/forms.py:127
+#: flowspec/forms.py:142
msgid ""
"Once destination port is matched, destination has to be filled as well. "
"Either deselect destination port or fill destination address"
-msgstr "Εφόσον έχετε επιλέξει destination port, το πεδίο destination πρέπει να συμπληρωθεί. Είτε απο-επιλέξτε το πεδίο destination port είτε συμπληρώστε μια διεύθυνση στο destination"
+msgstr ""
+"Εφόσον έχετε επιλέξει destination port, το πεδίο destination πρέπει να "
+"συμπληρωθεί. Είτε απο-επιλέξτε το πεδίο destination port είτε συμπληρώστε "
+"μια διεύθυνση στο destination"
-#: flowspec/forms.py:129
+#: flowspec/forms.py:144
msgid "Fill at least a Rule Match Condition"
msgstr "Συμπληρώστε τουλάχιστον έναν όρο ταύτισης"
-#: flowspec/forms.py:131
+#: flowspec/forms.py:146
#, python-format
msgid "This action \"%s\" is not permitted"
msgstr "Η ενέργεια %s δεν επιτρέπεται"
-#: flowspec/forms.py:183
+#: flowspec/forms.py:198
msgid "Rate-limiting cannot be < 50kbps"
msgstr ""
-#: flowspec/forms.py:186
+#: flowspec/forms.py:201
msgid "Rate-limiting should be an integer < 50"
msgstr ""
-#: flowspec/forms.py:188 flowspec/forms.py:212
+#: flowspec/forms.py:203 flowspec/forms.py:227
msgid "Cannot be empty"
msgstr "Το πεδίο δεν μπορεί να είναι κενό"
-#: flowspec/forms.py:193
+#: flowspec/forms.py:208
msgid "Cannot select something other than rate-limit"
msgstr ""
-#: flowspec/forms.py:210
+#: flowspec/forms.py:225
msgid "Port should be an integer"
msgstr "Η port θα πρέπει να είναι ένας ακέραιος αριθμός"
-#: flowspec/models.py:103 templates/user_routes.html:273
-msgid "Then"
-msgstr "Ενέργειες"
-
-#: flowspec/models.py:108 templates/review.html:49
-#: templates/review.html.py:107 templates/user_routes.html:271
+#: flowspec/models.py:107 templates/user_routes.html:265
msgid "Name"
msgstr "Όνομα"
-#: flowspec/models.py:110 flowspec/models.py:112
+#: flowspec/models.py:109 flowspec/models.py:111
msgid "Network address. Use address/CIDR notation"
msgstr "Διεύθυνση δικτύου/υποδικτύου. Χρησιμοποιήστε σύνταξη διεύθυνσης/CIDR"
-#: flowspec/models.py:110
+#: flowspec/models.py:109
msgid "Source Address"
-msgstr ""
+msgstr "Διεύθυνση Πηγής"
-#: flowspec/models.py:111
+#: flowspec/models.py:110
msgid "Source Port"
-msgstr ""
+msgstr "Port Πηγής"
-#: flowspec/models.py:112
+#: flowspec/models.py:111
msgid "Destination Address"
-msgstr ""
+msgstr "Διεύθυνση Προορισμού"
-#: flowspec/models.py:113
+#: flowspec/models.py:112
msgid "Destination Port"
-msgstr ""
+msgstr "Port Προορισμού"
-#: flowspec/models.py:114 templates/add_port.html:14 templates/apply.html:308
-#: templates/apply.html.py:327 templates/apply.html:346
+#: flowspec/models.py:113 templates/add_port.html:14 templates/apply.html:326
+#: templates/apply.html.py:345 templates/apply.html:364
msgid "Port"
msgstr ""
-#: flowspec/models.py:120
+#: flowspec/models.py:119
msgid "Protocol"
msgstr "Πρωτόκολλο"
-#: flowspec/models.py:125 templates/user_routes.html:274
+#: flowspec/models.py:121 templates/user_routes.html:267
+msgid "Then"
+msgstr "Ενέργειες"
+
+#: flowspec/models.py:124 templates/user_routes.html:268
msgid "Status"
msgstr "Κατάσταση"
-#: flowspec/models.py:128 templates/user_routes.html:277
+#: flowspec/models.py:127 templates/user_routes.html:271
msgid "Expires"
msgstr "Λήγει"
-#: flowspec/models.py:129 templates/user_routes.html:278
+#: flowspec/models.py:128 templates/user_routes.html:272
msgid "Response"
msgstr "Απόκριση Δικτύου"
-#: flowspec/models.py:130 templates/review.html:57
-#: templates/review.html.py:115
+#: flowspec/models.py:129
msgid "Comments"
msgstr "Σχόλια"
-#: flowspec/models.py:155
+#: flowspec/models.py:154
msgid "Invalid network address format at Destination Field"
msgstr "Λανθασμένη μορφή διεύθυνσης δικυου στο πεδίο Προορισμός"
-#: flowspec/models.py:161
+#: flowspec/models.py:160
msgid "Invalid network address format at Source Field"
msgstr "Λανθασμένη μορφή διεύθυνσης δικυου στο πεδίο Πηγή"
-#: flowspec/views.py:83
+#: flowspec/views.py:89
msgid ""
"Insufficient rights on administrative networks. Cannot add rule. Contact "
"your administrator"
-msgstr "Μη επαρκή δικαιώματα στα διαχειριστικά δίκτυα. Η προσθήκη φίλτρων δεν είναι εφικτή. Επικοινωνήστε με το διαχειριστή σας"
+msgstr ""
+"Μη επαρκή δικαιώματα στα διαχειριστικά δίκτυα. Η προσθήκη φίλτρων δεν είναι "
+"εφικτή. Επικοινωνήστε με το διαχειριστή σας"
-#: flowspec/views.py:128
+#: flowspec/views.py:150
#, python-format
msgid "Insufficient rights to edit rule %s"
msgstr "Μη επαρκή δικαιώματα για την επεξεργασία του φίλτρου %s"
-#: flowspec/views.py:140
+#: flowspec/views.py:162
#, python-format
msgid "Cannot edit a pending rule: %s."
msgstr "Δεν είναι δυνατή η επεξεργασία ενός φίλτρου (%s) σε κατάσταση pending "
-#: flowspec/views.py:242
+#: flowspec/views.py:304
msgid ""
"Your idP should release the HTTP_EPPN attribute towards this service<br>"
msgstr ""
"Ο idP σας θα πρέπει να παρέχει την HTTP_EPPN παράμετερο στην υπηρεσία<br>"
-#: flowspec/views.py:244
+#: flowspec/views.py:306
msgid ""
"Your idP should release the HTTP_SHIB_HOMEORGANIZATION attribute towards "
"this service<br>"
"Ο idP σας θα πρέπει να παρέχει την HTTP_SHIB_HOMEORGANIZATION παράμετερο "
"στην υπηρεσία<br>"
-#: flowspec/views.py:246
+#: flowspec/views.py:308
msgid ""
"Your idP should release an appropriate HTTP_SHIB_EP_ENTITLEMENT attribute "
"towards this service<br>"
"Ο idP σας θα πρέπει να παρέχει την HTTP_SHIB_EP_ENTITLEMENT παράμετερο στην "
"υπηρεσία<br>"
-#: flowspec/views.py:248
+#: flowspec/views.py:310
msgid ""
"Your idP should release the HTTP_SHIB_INETORGPERSON_MAIL attribute towards "
"this service"
"Ο idP σας θα πρέπει να παρέχει την HTTP_SHIB_INETORGPERSON_MAIL παράμετερο "
"στην υπηρεσία<br>"
-#: flowspec/views.py:263
+#: flowspec/views.py:329
msgid ""
"Your organization's domain name does not match our peers' domain "
"names<br>Please contact Helpdesk to resolve this issue"
"Το domain name του οργανισμού σας δε βρέθηκε στ βάση φορέων μας.<br>Παρακαλώ "
"επικοινωνήστε με το Helpdesk για τη διευθέτηση του προβλήματος"
-#: flowspec/views.py:271
+#: flowspec/views.py:337
#, python-format
msgid ""
"User account <strong>%s</strong> is pending activation. Administrators have "
"ενεργοποιηθεί για μεγάλο χρονικό διάστημα, επικοινωνήστε με τον τεχνικό σας "
"υπέυθυνο ή το Helpdesk του ΕΔΕΤ."
-#: flowspec/views.py:275
+#: flowspec/views.py:341
msgid ""
"Something went wrong during user authentication. Contact your administrator"
msgstr ""
"Παρουσιάστηκε ένα σφάλμα κατά την είσοδο του χρήστη. Επικοινωνήστε με το "
"διαχειριστή σας"
-#: flowspec/views.py:279
+#: flowspec/views.py:345
msgid "Invalid login procedure"
msgstr "Εσφαλμένη διαδικασία εισόδου"
"_ characters."
msgstr ""
-#: templates/application_list.html:3
-msgid "Application submitted"
-msgstr ""
-
-#: templates/application_list.html:7
-msgid "Pending applications"
-msgstr ""
-
-#: templates/application_list.html:9 templates/application_list.html.py:18
-msgid "Hostname"
-msgstr ""
-
-#: templates/application_list.html:9 templates/application_list.html.py:18
-msgid "User"
-msgstr ""
-
-#: templates/application_list.html:9 templates/application_list.html.py:18
-msgid "Memory"
-msgstr ""
-
-#: templates/application_list.html:9 templates/application_list.html.py:18
-msgid "vCPUs"
-msgstr ""
-
-#: templates/application_list.html:9 templates/application_list.html.py:18
-#: templates/review.html:72
-msgid "Network"
-msgstr ""
-
-#: templates/application_list.html:9 templates/application_list.html.py:18
-msgid "Filed"
-msgstr ""
-
-#: templates/application_list.html:16
-msgid "Completed applications"
-msgstr ""
-
#: templates/apply.html:6
msgid "Edit Rule"
msgstr "Επεξεργασία φίλτρου"
msgid "Rule Basic Info"
msgstr "Βασικές Πληροφορίες Φίλτρου"
-#: templates/apply.html:261
+#: templates/apply.html:262
+msgid "Admin Options"
+msgstr "Επιλογές Διαχείρισης"
+
+#: templates/apply.html:280
msgid "Rule Match Conditions"
msgstr "Όροι ταύτισης φίλτρου"
-#: templates/apply.html:297
+#: templates/apply.html:315
msgid "Advanced Settings (Ports)"
msgstr "Προηγμένες Ρυθμίσεις (Ports)"
-#: templates/apply.html:299
+#: templates/apply.html:317
msgid ""
"Select source/destination port(s), or select common port(s) for both source/"
"destination"
msgstr ""
-#: templates/apply.html:364
+#: templates/apply.html:382
msgid "Rule Actions"
msgstr "Ενέργειες Φίλτρου"
-#: templates/apply.html:380
+#: templates/apply.html:398
msgid "Expiration"
msgstr "Λήξη"
-#: templates/apply.html:394
+#: templates/apply.html:412
msgid "Use/Comments"
msgstr "Χρήση/Σχόλια"
-#: templates/apply.html:397
+#: templates/apply.html:415
msgid ""
"Give a short description of the intended use of this rule, that justifies "
"the parameter selection above. Feel free to include any additional comments."
msgstr ""
-#: templates/apply.html:408
+#: templates/apply.html:426
msgid "Apply"
msgstr "Εφαρμογή"
-#: templates/apply.html:415
+#: templates/apply.html:433
msgid "Add new port"
-msgstr ""
+msgstr "Νέα port"
-#: templates/base.html:40 templates/error.html:56 templates/welcome.html:7
+#: templates/base.html:41 templates/error.html:39 templates/welcome.html:7
msgid "Welcome"
msgstr "Καλωσήρθατε"
-#: templates/base.html:54 templates/error.html:68 templates/profile.html:4
-#: templates/profile.html.py:6
+#: templates/base.html:55 templates/error.html:42 templates/profile.html:4
+#: templates/profile.html.py:5 templates/profile.html:7
msgid "My profile"
msgstr "Το προφίλ μου"
-#: templates/base.html:56 templates/error.html:70
+#: templates/base.html:57 templates/error.html:44
msgid "Admin"
msgstr "Διαχειριστής"
-#: templates/base.html:58 templates/error.html:72
+#: templates/base.html:59 templates/error.html:46
msgid "Logout"
msgstr "Έξοδος"
-#: templates/base.html:60 templates/welcome.html:17
+#: templates/base.html:61 templates/welcome.html:17
msgid "Shibboleth Login"
msgstr "Είσοδος με Shibboleth"
-#: templates/base.html:68 templates/user_routes.html:230
-#: templates/user_routes.html.py:234
+#: templates/base.html:70 templates/user_routes.html:225
+#: templates/user_routes.html.py:229
msgid "My rules"
msgstr "Τα φίλτρα μου"
-#: templates/base.html:86 templates/error.html:117
-msgid ""
-"If you have any questions or need help, contact GRNET Helpdesk at <a "
-"href='mailto:helpdesk@grnet.gr'>helpdesk@grnet.gr</a> or 800-11-47638."
-msgstr ""
-"Eάν χρειάζεστε διευκρινήσεις ή βοήθεια, επικοινωνήστε με το Helpdesk του "
-"ΕΔΕΤ στο <a href='mailto:helpdesk@grnet.gr'>helpdesk@grnet.gr</a> ή "
-"τηλεφωνικά στο 800-11-47638."
-
-#: templates/base.html:88 templates/error.html:119
-msgid "GRNET"
-msgstr "ΕΔΕΤ"
-
-#: templates/base.html:88 templates/error.html:119 templates/getinfo.html:27
-#: templates/getinfo.html.py:28
-msgid "Info"
-msgstr "Πληροφορίες"
-
-#: templates/base.html:88 templates/error.html:119
-msgid "Service Terms"
-msgstr "Όροι Χρήσης"
-
-#: templates/error.html:4 templates/error.html.py:88
+#: templates/error.html:4 templates/error.html.py:53
msgid "Activation Pending"
msgstr "Απαιτείται Ενεργοποίηση"
-#: templates/error.html:4 templates/error.html.py:88
+#: templates/error.html:4 templates/error.html.py:53
msgid "Error"
msgstr "Σφάλμα"
-#: templates/error.html:74
-msgid ""
-"After clicking Retry Login, it is strongly suggested to close your browser "
-"and visit the page again"
-msgstr ""
-"Αφού επιλέξετε Επανάληψη Εισόδου, προτείνουμε να κλείσετε την εφαρμογή "
-"περιήγησης και να επισκεφθέιτε τη σελίδα ξανά"
-
-#: templates/error.html:74
+#: templates/error.html:48
msgid "Retry Login"
msgstr "Επανάληψη Εισόδου"
-#: templates/error.html:82
-msgid "My routes"
-msgstr "Τα φίλτρα μου"
-
-#: templates/error.html:91
+#: templates/error.html:56
msgid ""
"One or more required shibboleth attributes were not released towards this "
"service"
msgstr "Ένα ή περισσότερα Shibboleth attributes δεν προωθήθηκαν στην υπηρεσία"
-#: templates/error.html:96
+#: templates/error.html:61
msgid "Required shibboleth attributes"
msgstr "Απαιτούμενα Shibboleth attributes "
-#: templates/error.html:103
+#: templates/error.html:68
msgid "Optional"
msgstr "Προεραιτικά"
+#: templates/footer.html:4
+msgid ""
+"If you have any questions or need help, contact GRNET Helpdesk at <a "
+"href='mailto:helpdesk@grnet.gr'>helpdesk@grnet.gr</a> or 800-11-47638."
+msgstr ""
+"Eάν χρειάζεστε διευκρινήσεις ή βοήθεια, επικοινωνήστε με το Helpdesk του "
+"ΕΔΕΤ στο <a href='mailto:helpdesk@grnet.gr'>helpdesk@grnet.gr</a> ή "
+"τηλεφωνικά στο 800-11-47638."
+
+#: templates/footer.html:6
+msgid "GRNET"
+msgstr "ΕΔΕΤ"
+
+#: templates/footer.html:6 templates/getinfo.html:27
+#: templates/getinfo.html.py:28
+msgid "Info"
+msgstr "Πληροφορίες"
+
+#: templates/footer.html:6
+msgid "Service Terms"
+msgstr "Όροι Χρήσης"
+
#: templates/getinfo.html:33
msgid "Intro"
msgstr "Εισαγωγή"
"είσοδος και χρήση της υπηρεσίας προϋποθέτη την ορθή διαμόρφωση συγκεκριμένων "
"ιδιοτήτων του Shibboleth."
-#: templates/profile.html:9
+#: templates/profile.html:10
msgid "My data"
msgstr "Τα στοιχεία μου"
-#: templates/profile.html:10
+#: templates/profile.html:11
msgid "First name"
msgstr "Όνομα"
-#: templates/profile.html:11
+#: templates/profile.html:12
msgid "Last name"
msgstr "Επώνυμο"
-#: templates/profile.html:12 templates/review.html:50
-#: templates/review.html.py:108
+#: templates/profile.html:13
msgid "Email"
msgstr ""
-#: templates/profile.html:13
+#: templates/profile.html:15
+msgid "My Networks"
+msgstr "Τα Δίκτυά μου"
+
+#: templates/profile.html:18
msgid "Organization"
msgstr "Φορέας"
-#: templates/profile.html:14
-msgid "Admin Networks"
-msgstr "Δίκτυα Διαχείρισης"
-
#: templates/profile.html:18
+msgid "Networks"
+msgstr "Δίκτυα"
+
+#: templates/profile.html:27
msgid ""
"Ooops! Seems you have no networks associated with your peer. Contact "
"Helpdesk to resolve this issue."
msgstr ""
-#: templates/review.html:3 templates/review.html.py:27
-msgid "Review application"
-msgstr ""
-
-#: templates/review.html:27
-msgid "by"
-msgstr ""
-
-#: templates/review.html:28
-msgid "Submitted"
-msgstr ""
-
-#: templates/review.html:33 templates/review.html.py:91
-msgid "Instance information"
-msgstr ""
-
-#: templates/review.html:47 templates/review.html.py:105
-msgid "Administrative contact"
-msgstr ""
-
-#: templates/review.html:51 templates/review.html.py:109
-msgid "Phone"
-msgstr ""
-
-#: templates/review.html:64 templates/review.html.py:122
-msgid "Placement"
-msgstr ""
-
-#: templates/review.html:67
-msgid "The user has requested explicit network placement on"
-msgstr ""
-
-#: templates/review.html:71
-msgid ""
-"Choose either a network, or a cluster from the quick list to use the "
-"cluster's default network."
-msgstr ""
-
-#: templates/review.html:80
-msgid "Decision"
-msgstr ""
-
-#: templates/review.html:81
-msgid "Comments to the user"
-msgstr ""
-
-#: templates/review.html:123
-msgid "The instance has been placed on"
-msgstr ""
-
-#: templates/user_keys.html:86
-msgid ""
-"Upload your SSH public keys and have them automatically installed on all "
-"newly-created instances. Keys must be in OpenSSH format, either RSA, or DSA, "
-"with or without a trailing comment."
-msgstr ""
-
-#: templates/user_keys.html:90
-msgid "Fingerprint"
-msgstr ""
-
-#: templates/user_keys.html:90
-msgid "Comment"
-msgstr ""
-
-#: templates/user_keys.html:92
-msgid "Delete"
-msgstr ""
-
-#: templates/user_keys.html:96
-msgid "Add new key"
-msgstr ""
-
-#: templates/user_keys.html:106
-msgid "Add key"
-msgstr ""
-
-#: templates/user_routes.html:19 templates/user_routes.html.py:311
+#: templates/user_routes.html:19 templates/user_routes.html.py:298
msgid "Suspend"
msgstr "Κατάργηση"
-#: templates/user_routes.html:97
+#: templates/user_routes.html:126
msgid "Display"
msgstr "Προβολή"
-#: templates/user_routes.html:97
+#: templates/user_routes.html:126
msgid "All"
msgstr "όλων των"
-#: templates/user_routes.html:97
+#: templates/user_routes.html:126
msgid "rules"
msgstr "φίλτρων"
-#: templates/user_routes.html:99
+#: templates/user_routes.html:128
msgid "No records to display"
msgstr "Δεν βρέθηκαν εγγραφές"
-#: templates/user_routes.html:101
+#: templates/user_routes.html:130
msgid "Showing 0 to 0 of 0 entries"
msgstr "Δείχνοντας 0 εως 0 από 0 εγγραφές"
-#: templates/user_routes.html:104
+#: templates/user_routes.html:133
msgid "Search:"
msgstr "Αναζήτηση:"
-#: templates/user_routes.html:107
+#: templates/user_routes.html:136
msgid "First"
msgstr "Πρώτη"
-#: templates/user_routes.html:108
+#: templates/user_routes.html:137
msgid "Previous"
msgstr "Προηγούμενη"
-#: templates/user_routes.html:109
+#: templates/user_routes.html:138
msgid "Next"
msgstr "Επόμενη"
-#: templates/user_routes.html:110
+#: templates/user_routes.html:139
msgid "Last"
msgstr "Τελευταία"
-#: templates/user_routes.html:237 templates/user_routes.html.py:336
+#: templates/user_routes.html:232 templates/user_routes.html.py:327
msgid "Console"
msgstr "Κονσόλα"
-#: templates/user_routes.html:237
+#: templates/user_routes.html:232
msgid "Add Rule"
msgstr "Δημιουργία φίλτρου"
-#: templates/user_routes.html:272
+#: templates/user_routes.html:266
msgid "Match"
msgstr "Όροι"
-#: templates/user_routes.html:275
+#: templates/user_routes.html:269
msgid "Details"
msgstr "Λεπτομέρειες"
-#: templates/user_routes.html:276
+#: templates/user_routes.html:270
msgid "Applier"
msgstr "Χρήστης"
-#: templates/user_routes.html:279
+#: templates/user_routes.html:273
msgid "Actions"
msgstr "Ενέργειες"
-#: templates/user_routes.html:307
+#: templates/user_routes.html:294
msgid "Rule expired"
msgstr "Λήξη Φίλτρου"
-#: templates/user_routes.html:307
+#: templates/user_routes.html:294
msgid "Suspended by administrator"
msgstr "Απενεργοποιήθηκε από το διαχειριστή"
-#: templates/user_routes.html:307
+#: templates/user_routes.html:294
msgid "Suspended by user"
msgstr "Απενεργοποιήθηκε από το χρήστη"
-#: templates/user_routes.html:310
+#: templates/user_routes.html:297
msgid "Edit"
msgstr "Επεξεργασία"
-#: templates/user_routes.html:315
+#: templates/user_routes.html:302
msgid "Reactivate"
-msgstr ""
+msgstr "Ενεργοποίηση"
-#: templates/user_routes.html:318
+#: templates/user_routes.html:305
msgid "ReSync"
msgstr ""
-#: templates/user_routes.html:332
+#: templates/user_routes.html:308
+msgid "Fix it!"
+msgstr "Επιδιόρθωση"
+
+#: templates/user_routes.html:323
msgid "You are about to suspend rule"
msgstr "Πρόκειται να απενεργοποιήσετε το φίλτρο"
-#: templates/user_routes.html:333
+#: templates/user_routes.html:324
msgid ""
"Suspending the rule will automatically remove the configuration from the "
"network and mark this rule as inactive."
"Η απενεργοποίηση του φίλτρου θα προκαλέσει την αυτόματη αφαίρεση της "
"συγκρότησης από το δίκτυο."
-#: templates/user_routes.html:334
+#: templates/user_routes.html:325
msgid "Are you sure you want to proceed?"
msgstr "Είστε βέβαιοι ότι επιθυμείτε να συνεχίσετε;"
#: templates/registration/activation_complete.html:8
msgid "The user will be notified about his/her account activation"
msgstr "Ο χρήστης θα ενημερωθεί για την ενεργοποίηση του λογαριασμού"
+
+#~ msgid ""
+#~ "After clicking Retry Login, it is strongly suggested to close your "
+#~ "browser and visit the page again"
+#~ msgstr ""
+#~ "Αφού επιλέξετε Επανάληψη Εισόδου, προτείνουμε να κλείσετε την εφαρμογή "
+#~ "περιήγησης και να επισκεφθέιτε τη σελίδα ξανά"
+
+#~ msgid "My routes"
+#~ msgstr "Τα φίλτρα μου"
}
#main {
- background: url("/static/background_grnet.png") repeat-x scroll 0 0 #FFFFFF;
+ background: url("/static/background.png") repeat-x scroll 0 0 #FFFFFF;
padding: 0;
margin: 0;
}
+++ /dev/null
-#
-# An unexpected error has been detected by Java Runtime Environment:
-#
-# SIGSEGV (0xb) at pc=0x00007f64b6eab5b8, pid=1450, tid=140070529919248
-#
-# Java VM: Java HotSpot(TM) 64-Bit Server VM (11.2-b01 mixed mode linux-amd64)
-# Problematic frame:
-# C [libc.so.6+0x305b8] catgets+0x18
-#
-# If you would like to submit a bug report, please visit:
-# http://java.sun.com/webapps/bugreport/crash.jsp
-# The crash happened outside the Java Virtual Machine in native code.
-# See problematic frame for where to report the bug.
-#
-
---------------- T H R E A D ---------------
-
-Current thread (0x0000000040a86c00): JavaThread "main" [_thread_in_native, id=1451, stack(0x00007f64b61de000,0x00007f64b62df000)]
-
-siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x0000000000000008
-
-Registers:
-RAX=0x0000000000000001, RBX=0x00007f646c1a09c0, RCX=0x00007f646baba78d, RDX=0x0000000000000001
-RSP=0x00007f64b62dd1e8, RBP=0x00007f64b62dd220, RSI=0x0000000000000013, RDI=0x0000000000000000
-R8 =0x0000000000000001, R9 =0x0000000000000000, R10=0x0000000000000000, R11=0x00007f64b6eab5a0
-R12=0x0000000000000105, R13=0x00007f646c0e9380, R14=0x000000000000000f, R15=0x00007f64b62dd6f8
-RIP=0x00007f64b6eab5b8, EFL=0x0000000000010202, CSGSFS=0x0000000000000033, ERR=0x0000000000000004
- TRAPNO=0x000000000000000e
-
-Top of Stack: (sp=0x00007f64b62dd1e8)
-0x00007f64b62dd1e8: 00007f646c1a09c0 00007f64b62dd220
-0x00007f64b62dd1f8: 00007f646ba17cc6 00007f646c0e9380
-0x00007f64b62dd208: 00007f646c153df0 00007f646c153df0
-0x00007f64b62dd218: 00007f646c204b20 00007f64b62dd270
-0x00007f64b62dd228: 00007f646ba188e5 0000000000ca0001
-0x00007f64b62dd238: 0000000000000107 0000000000000000
-0x00007f64b62dd248: 00007f646c0e9380 00007f646b8d35e0
-0x00007f64b62dd258: 0000000000000105 0000000000000107
-0x00007f64b62dd268: 00007f646c204b20 0000000040a86dc0
-0x00007f64b62dd278: 00007f646b8d36ee 00007f646bbd81f0
-0x00007f64b62dd288: 00007f64b62dd310 00007f646c1a09c0
-0x00007f64b62dd298: 00007f646b8d43b3 00007f64b62dd2c0
-0x00007f64b62dd2a8: 00007f64b6705c37 0000000000000000
-0x00007f64b62dd2b8: 00007f646c170350 00007f646c170350
-0x00007f64b62dd2c8: 00050019b686e266 00007f646c0e9380
-0x00007f64b62dd2d8: 0101000000000000 00007f646c0dfe70
-0x00007f64b62dd2e8: 00007f646c1ea060 00007f646b43ab40
-0x00007f64b62dd2f8: 0000000000000000 00007f64b62dd6e8
-0x00007f64b62dd308: 0000000000000000 00007f646b22fa92
-0x00007f64b62dd318: 0000000000000000 00007f646b22fb18
-0x00007f64b62dd328: 0000000000000001 00007f646b22fa68
-0x00007f64b62dd338: 00007f646c154940 00007f646b22f03a
-0x00007f64b62dd348: 0000000000000020 00007f646b22f043
-0x00007f64b62dd358: 0000000000000018 00007f646b22f165
-0x00007f64b62dd368: 0000000000000000 00007f646b22f315
-0x00007f64b62dd378: 0000000000000005 00007f646b22f317
-0x00007f64b62dd388: 0000000000000019 00007f646b22f308
-0x00007f64b62dd398: 000000000000fff6 00007f646b22f08a
-0x00007f64b62dd3a8: 000000000000ffe2 00007f646baa6bab
-0x00007f64b62dd3b8: 00007f646c19e170 00007f646baa6bc7
-0x00007f64b62dd3c8: 00007f646c19e240 00007f646baa6bd5
-0x00007f64b62dd3d8: 00007f646c1b88f0 00007f646baa82df
-
-Instructions: (pc=0x00007f64b6eab5b8)
-0x00007f64b6eab5a8: 53 74 6d 83 c6 01 85 f6 7e 66 85 d2 78 62 89 d0
-0x00007f64b6eab5b8: 4c 8b 4f 08 31 d2 0f af c6 48 8b 6f 18 4b 8d 1c
-
-Stack: [0x00007f64b61de000,0x00007f64b62df000], sp=0x00007f64b62dd1e8, free space=1020k
-Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
-C [libc.so.6+0x305b8] catgets+0x18
-C [libmawt.so+0x1a88e5]
-
-Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
-j sun.awt.motif.MWindowPeer.pCreate(Lsun/awt/motif/MComponentPeer;Ljava/lang/String;)V+0
-j sun.awt.motif.MWindowPeer.create(Lsun/awt/motif/MComponentPeer;)V+12
-j sun.awt.motif.MComponentPeer.init(Ljava/awt/Component;)V+31
-j sun.awt.motif.MWindowPeer.init(Ljava/awt/Window;)V+102
-j sun.awt.motif.MFramePeer.<init>(Ljava/awt/Frame;)V+159
-j sun.awt.motif.MToolkit.createFrame(Ljava/awt/Frame;)Ljava/awt/peer/FramePeer;+5
-j java.awt.Frame.addNotify()V+20
-j java.awt.Window.pack()V+28
-j OptionsFrame.<init>(LVncViewer;)V+319
-j VncViewer.init()V+79
-j VncViewer.main([Ljava/lang/String;)V+24
-v ~StubRoutines::call_stub
-
---------------- P R O C E S S ---------------
-
-Java Threads: ( => current thread )
- 0x00007f646c1f8000 JavaThread "AWT-Motif" daemon [_thread_blocked, id=1465, stack(0x00007f64696a4000,0x00007f64697a5000)]
- 0x00007f646c1f7000 JavaThread "AWT-Shutdown" [_thread_blocked, id=1464, stack(0x00007f64697a5000,0x00007f64698a6000)]
- 0x00007f646c185c00 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=1463, stack(0x00007f6469dd9000,0x00007f6469eda000)]
- 0x00007f646c106800 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=1460, stack(0x00007f646beff000,0x00007f646c000000)]
- 0x00007f646c103800 JavaThread "CompilerThread1" daemon [_thread_blocked, id=1459, stack(0x00007f6470005000,0x00007f6470106000)]
- 0x00007f646c101800 JavaThread "CompilerThread0" daemon [_thread_blocked, id=1458, stack(0x00007f6470106000,0x00007f6470207000)]
- 0x00007f646c0ffc00 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=1457, stack(0x00007f6470207000,0x00007f6470308000)]
- 0x00007f646c0e1c00 JavaThread "Finalizer" daemon [_thread_blocked, id=1456, stack(0x00007f6470502000,0x00007f6470603000)]
- 0x00007f646c0e0400 JavaThread "Reference Handler" daemon [_thread_blocked, id=1455, stack(0x00007f6470603000,0x00007f6470704000)]
-=>0x0000000040a86c00 JavaThread "main" [_thread_in_native, id=1451, stack(0x00007f64b61de000,0x00007f64b62df000)]
-
-Other Threads:
- 0x00007f646c0dac00 VMThread [stack: 0x00007f6470704000,0x00007f6470805000] [id=1454]
- 0x00007f646c108c00 WatcherThread [stack: 0x00007f646bdfe000,0x00007f646beff000] [id=1462]
-
-VM state:not at safepoint (normal execution)
-
-VM Mutex/Monitor currently owned by a thread: None
-
-Heap
- PSYoungGen total 17920K, used 4312K [0x00007f649e340000, 0x00007f649f740000, 0x00007f64b2340000)
- eden space 15360K, 28% used [0x00007f649e340000,0x00007f649e776240,0x00007f649f240000)
- from space 2560K, 0% used [0x00007f649f4c0000,0x00007f649f4c0000,0x00007f649f740000)
- to space 2560K, 0% used [0x00007f649f240000,0x00007f649f240000,0x00007f649f4c0000)
- PSOldGen total 40960K, used 0K [0x00007f6476340000, 0x00007f6478b40000, 0x00007f649e340000)
- object space 40960K, 0% used [0x00007f6476340000,0x00007f6476340000,0x00007f6478b40000)
- PSPermGen total 21248K, used 6239K [0x00007f6470f40000, 0x00007f6472400000, 0x00007f6476340000)
- object space 21248K, 29% used [0x00007f6470f40000,0x00007f6471557da8,0x00007f6472400000)
-
-Dynamic libraries:
-40000000-40009000 r-xp 00000000 fe:00 139453 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/bin/java
-40108000-4010a000 rwxp 00008000 fe:00 139453 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/bin/java
-40a7f000-40eef000 rwxp 00000000 00:00 0 [heap]
-7f6469470000-7f6469479000 r-xs 00000000 fe:00 868862 /var/cache/fontconfig/945677eb7aeaf62f1d50efc3fb3ec7d8-le64.cache-3
-7f6469479000-7f646947b000 r-xs 00000000 fe:00 868963 /var/cache/fontconfig/fd9505950c048a77dc4b710eb6a628ed-le64.cache-3
-7f646947b000-7f646947f000 r-xs 00000000 fe:00 868962 /var/cache/fontconfig/ddc79d3ea06a7c6ffa86ede85f3bb5df-le64.cache-3
-7f646947f000-7f6469481000 r-xs 00000000 fe:00 868961 /var/cache/fontconfig/e3fa16a14183b06aa45b3e009278fd14-le64.cache-3
-7f6469481000-7f6469482000 r-xs 00000000 fe:00 868960 /var/cache/fontconfig/e7071f4a29fa870f4323321c154eba04-le64.cache-3
-7f6469482000-7f6469484000 r-xs 00000000 fe:00 868959 /var/cache/fontconfig/a2ab74764b07279e7c36ddb1d302cf26-le64.cache-3
-7f6469484000-7f6469487000 r-xs 00000000 fe:00 868958 /var/cache/fontconfig/c69f04ab05004e31a6d5e715764f16d8-le64.cache-3
-7f6469487000-7f646948b000 r-xs 00000000 fe:00 868957 /var/cache/fontconfig/6eb3985aa4124903f6ff08ba781cd364-le64.cache-3
-7f646948b000-7f646948e000 r-xs 00000000 fe:00 868956 /var/cache/fontconfig/646addb8444faa74ee138aa00ab0b6a0-le64.cache-3
-7f646948e000-7f6469491000 r-xs 00000000 fe:00 868955 /var/cache/fontconfig/20bd79ad97094406f7d1b9654bfbd926-le64.cache-3
-7f6469491000-7f6469492000 r-xs 00000000 fe:00 868954 /var/cache/fontconfig/79517df041c92e3f2b4a9700e7dbe3c7-le64.cache-3
-7f6469492000-7f6469493000 r-xs 00000000 fe:00 868953 /var/cache/fontconfig/4abdb2dd99886b2b2d3168a6b22d0473-le64.cache-3
-7f6469493000-7f6469495000 r-xs 00000000 fe:00 868952 /var/cache/fontconfig/90e84e89a4382a8db77728561d41356d-le64.cache-3
-7f6469495000-7f6469496000 r-xs 00000000 fe:00 868951 /var/cache/fontconfig/b73ae53b2eee308c3d7feb99ac2d34cd-le64.cache-3
-7f6469496000-7f6469497000 r-xs 00000000 fe:00 868950 /var/cache/fontconfig/407fd690308a0b04640307de6deab6da-le64.cache-3
-7f6469497000-7f6469498000 r-xs 00000000 fe:00 868949 /var/cache/fontconfig/8effb20bdbb106bdfb14f95f9ec7e12d-le64.cache-3
-7f6469498000-7f6469499000 r-xs 00000000 fe:00 868948 /var/cache/fontconfig/27f6fa40476fb33ad65cb210c133a216-le64.cache-3
-7f6469499000-7f646949a000 r-xs 00000000 fe:00 868947 /var/cache/fontconfig/98d684ad3abba16030bd60992dc9c5d7-le64.cache-3
-7f646949a000-7f646949c000 r-xs 00000000 fe:00 868946 /var/cache/fontconfig/9123b38b1c36356a690c2f0bc4cbf728-le64.cache-3
-7f646949c000-7f64694a0000 r-xs 00000000 fe:00 868945 /var/cache/fontconfig/9c0624108b9a2ae8552f664125be8356-le64.cache-3
-7f64694a0000-7f64694a9000 r-xs 00000000 fe:00 868944 /var/cache/fontconfig/6d41288fd70b0be22e8c3a91e032eec0-le64.cache-3
-7f64694a9000-7f64694ac000 r-xs 00000000 fe:00 868943 /var/cache/fontconfig/de156ccd2eddbdc19d37a45b8b2aac9c-le64.cache-3
-7f64694ac000-7f64694da000 r-xs 00000000 fe:00 868939 /var/cache/fontconfig/365b55f210c0a22e9a19e35191240f32-le64.cache-3
-7f64694da000-7f64694e0000 r-xs 00000000 fe:00 868937 /var/cache/fontconfig/105b9c7e6f0a4f82d8c9b6e39c52c6f9-le64.cache-3
-7f64696a4000-7f64696a7000 ---p 00000000 00:00 0
-7f64696a7000-7f64697a5000 rwxp 00000000 00:00 0
-7f64697a5000-7f64697a8000 ---p 00000000 00:00 0
-7f64697a8000-7f64698a6000 rwxp 00000000 00:00 0
-7f64698a6000-7f64698ab000 r-xp 00000000 fe:00 204802 /usr/lib/libXfixes.so.3.1.0
-7f64698ab000-7f64699aa000 ---p 00005000 fe:00 204802 /usr/lib/libXfixes.so.3.1.0
-7f64699aa000-7f64699ab000 rwxp 00004000 fe:00 204802 /usr/lib/libXfixes.so.3.1.0
-7f64699ab000-7f64699b4000 r-xp 00000000 fe:00 55987 /usr/lib/libXrender.so.1.3.0
-7f64699b4000-7f6469bb3000 ---p 00009000 fe:00 55987 /usr/lib/libXrender.so.1.3.0
-7f6469bb3000-7f6469bb4000 rwxp 00008000 fe:00 55987 /usr/lib/libXrender.so.1.3.0
-7f6469bb4000-7f6469bbd000 r-xp 00000000 fe:00 204812 /usr/lib/libXcursor.so.1.0.2
-7f6469bbd000-7f6469dbd000 ---p 00009000 fe:00 204812 /usr/lib/libXcursor.so.1.0.2
-7f6469dbd000-7f6469dbe000 rwxp 00009000 fe:00 204812 /usr/lib/libXcursor.so.1.0.2
-7f6469dd9000-7f6469ddc000 ---p 00000000 00:00 0
-7f6469ddc000-7f6469eda000 rwxp 00000000 00:00 0
-7f6469eda000-7f6469f58000 r-xp 00000000 fe:00 139293 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/libfontmanager.so
-7f6469f58000-7f646a05a000 ---p 0007e000 fe:00 139293 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/libfontmanager.so
-7f646a05a000-7f646a070000 rwxp 00080000 fe:00 139293 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/libfontmanager.so
-7f646a070000-7f646a081000 rwxp 00000000 00:00 0
-7f646a081000-7f646a086000 r-xp 00000000 fe:00 55927 /usr/lib/libXdmcp.so.6.0.0
-7f646a086000-7f646a285000 ---p 00005000 fe:00 55927 /usr/lib/libXdmcp.so.6.0.0
-7f646a285000-7f646a286000 rwxp 00004000 fe:00 55927 /usr/lib/libXdmcp.so.6.0.0
-7f646a286000-7f646a2a1000 r-xp 00000000 fe:00 55929 /usr/lib/libxcb.so.1.0.0
-7f646a2a1000-7f646a4a1000 ---p 0001b000 fe:00 55929 /usr/lib/libxcb.so.1.0.0
-7f646a4a1000-7f646a4a2000 rwxp 0001b000 fe:00 55929 /usr/lib/libxcb.so.1.0.0
-7f646a4a2000-7f646a4a3000 r-xp 00000000 fe:00 55931 /usr/lib/libxcb-xlib.so.0.0.0
-7f646a4a3000-7f646a6a2000 ---p 00001000 fe:00 55931 /usr/lib/libxcb-xlib.so.0.0.0
-7f646a6a2000-7f646a6a3000 rwxp 00000000 fe:00 55931 /usr/lib/libxcb-xlib.so.0.0.0
-7f646a6a3000-7f646a6b9000 r-xp 00000000 fe:00 52981 /usr/lib/libICE.so.6.3.0
-7f646a6b9000-7f646a8b9000 ---p 00016000 fe:00 52981 /usr/lib/libICE.so.6.3.0
-7f646a8b9000-7f646a8ba000 rwxp 00016000 fe:00 52981 /usr/lib/libICE.so.6.3.0
-7f646a8ba000-7f646a8be000 rwxp 00000000 00:00 0
-7f646a8be000-7f646a8c6000 r-xp 00000000 fe:00 52983 /usr/lib/libSM.so.6.0.0
-7f646a8c6000-7f646aac5000 ---p 00008000 fe:00 52983 /usr/lib/libSM.so.6.0.0
-7f646aac5000-7f646aac6000 rwxp 00007000 fe:00 52983 /usr/lib/libSM.so.6.0.0
-7f646aac6000-7f646aac8000 r-xp 00000000 fe:00 55925 /usr/lib/libXau.so.6.0.0
-7f646aac8000-7f646acc7000 ---p 00002000 fe:00 55925 /usr/lib/libXau.so.6.0.0
-7f646acc7000-7f646acc8000 rwxp 00001000 fe:00 55925 /usr/lib/libXau.so.6.0.0
-7f646acc8000-7f646acd1000 r-xp 00000000 fe:00 55985 /usr/lib/libXi.so.6.0.0
-7f646acd1000-7f646aed0000 ---p 00009000 fe:00 55985 /usr/lib/libXi.so.6.0.0
-7f646aed0000-7f646aed1000 rwxp 00008000 fe:00 55985 /usr/lib/libXi.so.6.0.0
-7f646aed1000-7f646afd7000 r-xp 00000000 fe:00 55933 /usr/lib/libX11.so.6.2.0
-7f646afd7000-7f646b1d7000 ---p 00106000 fe:00 55933 /usr/lib/libX11.so.6.2.0
-7f646b1d7000-7f646b1dd000 rwxp 00106000 fe:00 55933 /usr/lib/libX11.so.6.2.0
-7f646b1dd000-7f646b238000 r-xp 00000000 fe:00 52985 /usr/lib/libXt.so.6.0.0
-7f646b238000-7f646b437000 ---p 0005b000 fe:00 52985 /usr/lib/libXt.so.6.0.0
-7f646b437000-7f646b43d000 rwxp 0005a000 fe:00 52985 /usr/lib/libXt.so.6.0.0
-7f646b43d000-7f646b43e000 rwxp 00000000 00:00 0
-7f646b43e000-7f646b44e000 r-xp 00000000 fe:00 55935 /usr/lib/libXext.so.6.4.0
-7f646b44e000-7f646b64e000 ---p 00010000 fe:00 55935 /usr/lib/libXext.so.6.4.0
-7f646b64e000-7f646b64f000 rwxp 00010000 fe:00 55935 /usr/lib/libXext.so.6.4.0
-7f646b64f000-7f646b654000 r-xp 00000000 fe:00 204935 /usr/lib/libXtst.so.6.1.0
-7f646b654000-7f646b854000 ---p 00005000 fe:00 204935 /usr/lib/libXtst.so.6.1.0
-7f646b854000-7f646b855000 rwxp 00005000 fe:00 204935 /usr/lib/libXtst.so.6.1.0
-7f646b856000-7f646b85d000 r-xs 00000000 fe:00 868935 /var/cache/fontconfig/089dead882dea3570ffc31a9898cfb69-le64.cache-3
-7f646b85d000-7f646b870000 r-xs 00000000 fe:00 868859 /var/cache/fontconfig/e13b20fdb08344e0e664864cc2ede53d-le64.cache-3
-7f646b870000-7f646bad7000 r-xp 00000000 fe:00 139273 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/motif21/libmawt.so
-7f646bad7000-7f646bbd8000 ---p 00267000 fe:00 139273 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/motif21/libmawt.so
-7f646bbd8000-7f646bc2c000 rwxp 00268000 fe:00 139273 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/motif21/libmawt.so
-7f646bc2c000-7f646bc2f000 rwxp 00000000 00:00 0
-7f646bc2f000-7f646bcc1000 r-xp 00000000 fe:00 139300 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/libawt.so
-7f646bcc1000-7f646bdc0000 ---p 00092000 fe:00 139300 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/libawt.so
-7f646bdc0000-7f646bdd9000 rwxp 00091000 fe:00 139300 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/libawt.so
-7f646bdd9000-7f646bdfe000 rwxp 00000000 00:00 0
-7f646bdfe000-7f646bdff000 ---p 00000000 00:00 0
-7f646bdff000-7f646beff000 rwxp 00000000 00:00 0
-7f646beff000-7f646bf02000 ---p 00000000 00:00 0
-7f646bf02000-7f646c000000 rwxp 00000000 00:00 0
-7f646c000000-7f646c21c000 rwxp 00000000 00:00 0
-7f646c21c000-7f6470000000 ---p 00000000 00:00 0
-7f6470002000-7f6470005000 r-xs 00000000 fe:00 868942 /var/cache/fontconfig/da1bd5ca8443ffe22927a23ce431d198-le64.cache-3
-7f6470005000-7f6470008000 ---p 00000000 00:00 0
-7f6470008000-7f6470106000 rwxp 00000000 00:00 0
-7f6470106000-7f6470109000 ---p 00000000 00:00 0
-7f6470109000-7f6470207000 rwxp 00000000 00:00 0
-7f6470207000-7f647020a000 ---p 00000000 00:00 0
-7f647020a000-7f6470308000 rwxp 00000000 00:00 0
-7f6470308000-7f6470502000 r-xp 00000000 fe:00 67296 /usr/lib/locale/locale-archive
-7f6470502000-7f6470505000 ---p 00000000 00:00 0
-7f6470505000-7f6470603000 rwxp 00000000 00:00 0
-7f6470603000-7f6470606000 ---p 00000000 00:00 0
-7f6470606000-7f6470704000 rwxp 00000000 00:00 0
-7f6470704000-7f6470705000 ---p 00000000 00:00 0
-7f6470705000-7f6470838000 rwxp 00000000 00:00 0
-7f6470838000-7f64709c9000 r-xs 02f2d000 fe:00 132439 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/rt.jar
-7f64709c9000-7f64709ca000 ---p 00000000 00:00 0
-7f64709ca000-7f6470aca000 rwxp 00000000 00:00 0
-7f6470aca000-7f6470acb000 ---p 00000000 00:00 0
-7f6470acb000-7f6470bd6000 rwxp 00000000 00:00 0
-7f6470bd6000-7f6470bf5000 rwxp 00000000 00:00 0
-7f6470bf5000-7f6470c09000 rwxp 00000000 00:00 0
-7f6470c09000-7f6470d35000 rwxp 00000000 00:00 0
-7f6470d35000-7f6470d40000 rwxp 00000000 00:00 0
-7f6470d40000-7f6470d5f000 rwxp 00000000 00:00 0
-7f6470d5f000-7f6470d73000 rwxp 00000000 00:00 0
-7f6470d73000-7f6470e9f000 rwxp 00000000 00:00 0
-7f6470e9f000-7f6470ea9000 rwxp 00000000 00:00 0
-7f6470ea9000-7f6470f3f000 rwxp 00000000 00:00 0
-7f6470f3f000-7f6472400000 rwxp 00000000 00:00 0
-7f6472400000-7f6476340000 rwxp 00000000 00:00 0
-7f6476340000-7f6478b40000 rwxp 00000000 00:00 0
-7f6478b40000-7f649e340000 rwxp 00000000 00:00 0
-7f649e340000-7f649f740000 rwxp 00000000 00:00 0
-7f649f740000-7f64b2340000 rwxp 00000000 00:00 0
-7f64b2340000-7f64b2342000 r-xs 00000000 fe:00 868941 /var/cache/fontconfig/ddd4086aec35a5275babba44bb759c3c-le64.cache-3
-7f64b2342000-7f64b25b2000 rwxp 00000000 00:00 0
-7f64b25b2000-7f64b5342000 rwxp 00000000 00:00 0
-7f64b5342000-7f64b5350000 r-xp 00000000 fe:00 139289 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/libzip.so
-7f64b5350000-7f64b5452000 ---p 0000e000 fe:00 139289 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/libzip.so
-7f64b5452000-7f64b5455000 rwxp 00010000 fe:00 139289 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/libzip.so
-7f64b5455000-7f64b5456000 rwxp 00000000 00:00 0
-7f64b5456000-7f64b547f000 r-xp 00000000 fe:00 139294 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/libjava.so
-7f64b547f000-7f64b557e000 ---p 00029000 fe:00 139294 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/libjava.so
-7f64b557e000-7f64b5585000 rwxp 00028000 fe:00 139294 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/libjava.so
-7f64b5585000-7f64b5592000 r-xp 00000000 fe:00 139276 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/libverify.so
-7f64b5592000-7f64b5691000 ---p 0000d000 fe:00 139276 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/libverify.so
-7f64b5691000-7f64b5694000 rwxp 0000c000 fe:00 139276 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/libverify.so
-7f64b5694000-7f64b569f000 r-xp 00000000 fe:00 1081816 /lib/libnss_files-2.10.2.so
-7f64b569f000-7f64b589e000 ---p 0000b000 fe:00 1081816 /lib/libnss_files-2.10.2.so
-7f64b589e000-7f64b589f000 r-xp 0000a000 fe:00 1081816 /lib/libnss_files-2.10.2.so
-7f64b589f000-7f64b58a0000 rwxp 0000b000 fe:00 1081816 /lib/libnss_files-2.10.2.so
-7f64b58a0000-7f64b58aa000 r-xp 00000000 fe:00 1081798 /lib/libnss_nis-2.10.2.so
-7f64b58aa000-7f64b5aa9000 ---p 0000a000 fe:00 1081798 /lib/libnss_nis-2.10.2.so
-7f64b5aa9000-7f64b5aaa000 r-xp 00009000 fe:00 1081798 /lib/libnss_nis-2.10.2.so
-7f64b5aaa000-7f64b5aab000 rwxp 0000a000 fe:00 1081798 /lib/libnss_nis-2.10.2.so
-7f64b5aab000-7f64b5ab2000 r-xp 00000000 fe:00 1081787 /lib/libnss_compat-2.10.2.so
-7f64b5ab2000-7f64b5cb1000 ---p 00007000 fe:00 1081787 /lib/libnss_compat-2.10.2.so
-7f64b5cb1000-7f64b5cb2000 r-xp 00006000 fe:00 1081787 /lib/libnss_compat-2.10.2.so
-7f64b5cb2000-7f64b5cb3000 rwxp 00007000 fe:00 1081787 /lib/libnss_compat-2.10.2.so
-7f64b5cb3000-7f64b5cc8000 r-xp 00000000 fe:00 1081813 /lib/libnsl-2.10.2.so
-7f64b5cc8000-7f64b5ec7000 ---p 00015000 fe:00 1081813 /lib/libnsl-2.10.2.so
-7f64b5ec7000-7f64b5ec8000 r-xp 00014000 fe:00 1081813 /lib/libnsl-2.10.2.so
-7f64b5ec8000-7f64b5ec9000 rwxp 00015000 fe:00 1081813 /lib/libnsl-2.10.2.so
-7f64b5ec9000-7f64b5ecb000 rwxp 00000000 00:00 0
-7f64b5ecb000-7f64b5ed2000 r-xp 00000000 fe:00 139313 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/native_threads/libhpi.so
-7f64b5ed2000-7f64b5fd3000 ---p 00007000 fe:00 139313 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/native_threads/libhpi.so
-7f64b5fd3000-7f64b5fd5000 rwxp 00008000 fe:00 139313 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/native_threads/libhpi.so
-7f64b5fd5000-7f64b5fd6000 rwxp 00000000 00:00 0
-7f64b5fd6000-7f64b5fdd000 r-xp 00000000 fe:00 1081806 /lib/librt-2.10.2.so
-7f64b5fdd000-7f64b61dc000 ---p 00007000 fe:00 1081806 /lib/librt-2.10.2.so
-7f64b61dc000-7f64b61dd000 r-xp 00006000 fe:00 1081806 /lib/librt-2.10.2.so
-7f64b61dd000-7f64b61de000 rwxp 00007000 fe:00 1081806 /lib/librt-2.10.2.so
-7f64b61de000-7f64b61e1000 ---p 00000000 00:00 0
-7f64b61e1000-7f64b62df000 rwxp 00000000 00:00 0 [threadstack:000fd210]
-7f64b62df000-7f64b6360000 r-xp 00000000 fe:00 1081808 /lib/libm-2.10.2.so
-7f64b6360000-7f64b655f000 ---p 00081000 fe:00 1081808 /lib/libm-2.10.2.so
-7f64b655f000-7f64b6560000 r-xp 00080000 fe:00 1081808 /lib/libm-2.10.2.so
-7f64b6560000-7f64b6561000 rwxp 00081000 fe:00 1081808 /lib/libm-2.10.2.so
-7f64b6561000-7f64b6bee000 r-xp 00000000 fe:00 139284 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/server/libjvm.so
-7f64b6bee000-7f64b6ced000 ---p 0068d000 fe:00 139284 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/server/libjvm.so
-7f64b6ced000-7f64b6e3e000 rwxp 0068c000 fe:00 139284 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/server/libjvm.so
-7f64b6e3e000-7f64b6e7b000 rwxp 00000000 00:00 0
-7f64b6e7b000-7f64b6fc5000 r-xp 00000000 fe:00 1081815 /lib/libc-2.10.2.so
-7f64b6fc5000-7f64b71c5000 ---p 0014a000 fe:00 1081815 /lib/libc-2.10.2.so
-7f64b71c5000-7f64b71c9000 r-xp 0014a000 fe:00 1081815 /lib/libc-2.10.2.so
-7f64b71c9000-7f64b71ca000 rwxp 0014e000 fe:00 1081815 /lib/libc-2.10.2.so
-7f64b71ca000-7f64b71cf000 rwxp 00000000 00:00 0
-7f64b71cf000-7f64b71d1000 r-xp 00000000 fe:00 1081818 /lib/libdl-2.10.2.so
-7f64b71d1000-7f64b73d1000 ---p 00002000 fe:00 1081818 /lib/libdl-2.10.2.so
-7f64b73d1000-7f64b73d2000 r-xp 00002000 fe:00 1081818 /lib/libdl-2.10.2.so
-7f64b73d2000-7f64b73d3000 rwxp 00003000 fe:00 1081818 /lib/libdl-2.10.2.so
-7f64b73d3000-7f64b73e9000 r-xp 00000000 fe:00 1081817 /lib/libpthread-2.10.2.so
-7f64b73e9000-7f64b75e9000 ---p 00016000 fe:00 1081817 /lib/libpthread-2.10.2.so
-7f64b75e9000-7f64b75ea000 r-xp 00016000 fe:00 1081817 /lib/libpthread-2.10.2.so
-7f64b75ea000-7f64b75eb000 rwxp 00017000 fe:00 1081817 /lib/libpthread-2.10.2.so
-7f64b75eb000-7f64b75ef000 rwxp 00000000 00:00 0
-7f64b75ef000-7f64b760c000 r-xp 00000000 fe:00 1081812 /lib/ld-2.10.2.so
-7f64b760c000-7f64b7620000 r-xs 00000000 fe:00 868745 /var/cache/fontconfig/865f88548240fee46819705c6468c165-le64.cache-3
-7f64b7620000-7f64b762a000 rwxp 00000000 00:00 0
-7f64b762a000-7f64b76e0000 rwxp 00000000 00:00 0
-7f64b76e0000-7f64b76e2000 rwxp 00000000 00:00 0
-7f64b76e2000-7f64b76e9000 r-xp 00000000 fe:00 139282 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/jli/libjli.so
-7f64b76e9000-7f64b77ea000 ---p 00007000 fe:00 139282 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/jli/libjli.so
-7f64b77ea000-7f64b77ec000 rwxp 00008000 fe:00 139282 /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/jli/libjli.so
-7f64b77ec000-7f64b77ed000 rwxp 00000000 00:00 0
-7f64b77ed000-7f64b77ee000 r-xs 00000000 fe:00 868940 /var/cache/fontconfig/4794a0821666d79190d59a36cb4f44b5-le64.cache-3
-7f64b77ee000-7f64b77f0000 r-xs 00000000 fe:00 868938 /var/cache/fontconfig/de9486f0b47a4d768a594cb4198cb1c6-le64.cache-3
-7f64b77f0000-7f64b77f4000 r-xs 00000000 fe:00 868936 /var/cache/fontconfig/6386b86020ecc1ef9690bb720a13964f-le64.cache-3
-7f64b77f4000-7f64b77f7000 r-xs 00000000 fe:00 868883 /var/cache/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-le64.cache-3
-7f64b77f7000-7f64b77fa000 r-xs 00000000 fe:02 8841462 /home/apoikos/.fontconfig/2584a6f7bcc9e47f9ed9a4a84c8c76e5-le64.cache-3
-7f64b77fa000-7f64b77fc000 r-xs 0000e000 fe:02 3034507 /home/apoikos/hg/grnet/static/javavnc/VncViewer.jar
-7f64b77fc000-7f64b77fe000 r-xs 0000e000 fe:02 3034507 /home/apoikos/hg/grnet/static/javavnc/VncViewer.jar
-7f64b77fe000-7f64b7806000 rwxs 00000000 fe:00 770054 /tmp/hsperfdata_apoikos/1450
-7f64b7806000-7f64b7807000 rwxp 00000000 00:00 0
-7f64b7807000-7f64b7808000 r-xp 00000000 00:00 0
-7f64b7808000-7f64b780b000 rwxp 00000000 00:00 0
-7f64b780b000-7f64b780c000 r-xp 0001c000 fe:00 1081812 /lib/ld-2.10.2.so
-7f64b780c000-7f64b780d000 rwxp 0001d000 fe:00 1081812 /lib/ld-2.10.2.so
-7fffd5581000-7fffd5596000 rwxp 00000000 00:00 0 [stack]
-7fffd55ff000-7fffd5600000 r-xp 00000000 00:00 0 [vdso]
-ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
-
-VM Arguments:
-java_command: VncViewer.jar HOST hn-03.be1.grnet.gr PORT 11038
-Launcher Type: SUN_STANDARD
-
-Environment Variables:
-PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/home/apoikos/scripts:/opt/openoffice.org3/program:/home/apoikos/scripts:/home/apoikos/workspaces:/opt/openoffice.org3/program
-USERNAME=apoikos
-LD_LIBRARY_PATH=/usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64/server:/usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/amd64:/usr/lib/jvm/java-6-sun-1.6.0.12/jre/../lib/amd64
-SHELL=/bin/zsh
-DISPLAY=:0.0
-
-Signal Handlers:
-SIGSEGV: [libjvm.so+0x5fcd20], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
-SIGBUS: [libjvm.so+0x5fcd20], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
-SIGFPE: [libjvm.so+0x4e0eb0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
-SIGPIPE: [libjvm.so+0x4e0eb0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
-SIGXFSZ: [libjvm.so+0x4e0eb0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
-SIGILL: [libjvm.so+0x4e0eb0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
-SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000
-SIGUSR2: [libjvm.so+0x4e35d0], sa_mask[0]=0x00000000, sa_flags=0x10000004
-SIGHUP: [libjvm.so+0x4e3320], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
-SIGINT: [libjvm.so+0x4e3320], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
-SIGTERM: [libjvm.so+0x4e3320], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
-SIGQUIT: [libjvm.so+0x4e3320], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
-
-
---------------- S Y S T E M ---------------
-
-OS:5.0.4
-
-uname:Linux 2.6.32-trunk-amd64 #1 SMP Sun Jan 10 22:40:40 UTC 2010 x86_64
-libc:glibc 2.10.2 NPTL 2.10.2
-rlimit: STACK 8192k, CORE 0k, NPROC 30634, NOFILE 1024, AS infinity
-load average:0.04 0.04 0.01
-
-CPU:total 2 (2 cores per cpu, 1 threads per core) family 6 model 7 stepping 10, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3
-
-Memory: 4k page, physical 3930156k(32944k free), swap 3903480k(3895184k free)
-
-vm_info: Java HotSpot(TM) 64-Bit Server VM (11.2-b01) for linux-amd64 JRE (1.6.0_12-b04), built on Jan 17 2009 01:04:06 by "java_re" with gcc 3.2.2 (SuSE Linux)
-
-time: Mon Mar 8 14:20:21 2010
-elapsed time: 0 seconds
-
+++ /dev/null
-{% extends "base.html" %}
-{% load i18n %}
-{% block title %}{% trans "Application submitted" %}{% endblock %}
-{% block content %}
-<div align="center">
-{% if pending %}
-<h2>{% trans "Pending applications" %}</h2>
-<table>
-<tr><th>{% trans "Hostname" %}</th><th>{% trans "User" %}</th><th>{% trans "Memory" %}</th><th>{% trans "vCPUs" %}</th><th>{% trans "Network" %}</th><th>{% trans "Filed" %}</th></tr>
-{% for app in pending %}
-<tr><td><a href="{% url application-review app.pk %}">{{ app.hostname }}</a></td><td>{{ app.applicant }}</td><td>{{ app.memory }}</td><td>{{ app.vcpus }}</td><td>{{ app.network|default_if_none:"—" }}</td><td>{{ app.filed|date }}</td></tr>
-{% endfor %}
-</table>
-{% endif %}
-
-<h2>{% trans "Completed applications" %}</h2>
-<table>
-<tr><th>{% trans "Hostname" %}</th><th>{% trans "User" %}</th><th>{% trans "Memory" %}</th><th>{% trans "vCPUs" %}</th><th>{% trans "Network" %}</th><th>{% trans "Filed" %}</th></tr>
-{% for app in completed %}
-<tr><td><a href="{% url application-review app.pk %}">{{ app.hostname }}</a></td><td>{{ app.applicant }}</td><td>{{ app.memory }}</td><td>{{ app.vcpus }}</td><td>{{ app.network|default_if_none:"—" }}</td><td>{{ app.filed|date }}</td></tr>
-{% endfor %}
-</table>
-</div>
-{% endblock %}
</p>
</div>
</fieldset>
+ {% if user.is_superuser %}
+ <fieldset>
+ <legend>
+ {% trans "Admin Options" %}
+ </legend>
+ <div class="roundbox">
+ {{ form.applier.label_tag }}{{ form.applier }}
+ <br>
+ {% if form.applier.errors %}
+ <br>
+ <p class="error" style="clear:both;">
+ {{ form.applier.errors|join:", " }}
+ </p>
+ {% endif %}
+ </div>
+ </fieldset>
+ {% else %}
+ <input type="hidden" id="id_applier" name="applier" value="{{applier}}"/>
+ {% endif %}
<fieldset>
<legend>
{% trans "Rule Match Conditions" %}
</legend>
- <input type="hidden" id="id_applier" name="applier" value="{{applier}}"/>
<div class="roundbox">
{{ form.source.label_tag }}{{ form.source }}<img src="/static/threat_source.png"/> {% if form.source.errors %}
<br>
<div id="main">
<div id="header">
<a class="grnetlogo" href="{% url group-routes %}">
- <img class="logoimg" src="/static/grnet_logo.png">
+ <img class="logoimg" src="/static/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 %}
{% else %}
<span class="topmenuaction"><a href="{% url login %}">{% trans "Shibboleth Login" %}</a></span>
{% endif %}
+ {% endblock %}
</div>
</div>
{% endblock %}
</div>
-
- <div id="footer">
- {% if user.is_authenticated %}
- {% trans "If you have any questions or need help, contact GRNET Helpdesk at <a href='mailto:helpdesk@grnet.gr'>helpdesk@grnet.gr</a> or 800-11-47638." %}<br />
- {% endif %}
- <a href="http://www.grnet.gr">{% trans "GRNET" %} NOC</a> | <a href="{% url getinfo %}">{% trans "Info" %}</a> | <a href="{% url gettos %}">{% trans "Service Terms" %}</a>
- </div>
+ {% block footerblock %}
+ {% include "footer.html" %}
+ {% endblock %}
</div>
</body>
</html>
+{% extends "base.html" %}
{% load i18n %}
-<html>
-<head>
-<title>{% if error %}{% if inactive %}{% trans "Activation Pending" %}{% else %}{% trans "Error" %}{% endif %}{% endif %}</title>
-<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
-<META HTTP-EQUIV="Expires" CONTENT="-1">
-<script src="/static/js/jquery.min.js" type="text/javascript"></script>
-<link rel="stylesheet" type="text/css" href="/static/css/base.css">
-<link rel="stylesheet" type="text/css" href="/static/css/smoothness/jquery-ui-1.8.13.custom.css">
-<script type="text/javascript" src="/static/js/jquery-ui-1.8.12.custom.min.js"></script>
-<script type="text/javascript" src="/static/js/jquery.tooltip.min.js"></script>
-<script type="text/javascript">
-$(document).ready(function(){
- $(".relogin").tooltip({ position: "bottom center", opacity: 0.7});
- });
-</script>
-<style type="text/css">
+{% block title %}{% if error %}{% if inactive %}{% trans "Activation Pending" %}{% else %}{% trans "Error" %}{% endif %}{% endif %}{% endblock %}
+
+{% block extrahead %}
+ <script type="text/javascript">
+ $(document).ready(function(){
+ $(".relogin").tooltip({ position: "bottom center", opacity: 0.7});
+ });
+ </script>
+ <style type="text/css">
- .tooltip {
- display: none;
- background: transparent url(/static/black_arrow_updown.png);
- font-size: 12px;
- height: 70px;
- width: 160px;
- padding: 25px;
- padding-top: 30px;
- color: #fff;
- }
+ .tooltip {
+ display: none;
+ background: transparent url(/static/black_arrow_updown.png);
+ font-size: 12px;
+ height: 70px;
+ width: 160px;
+ padding: 25px;
+ padding-top: 30px;
+ color: #fff;
+ }
</style>
<script type="text/javascript">
}
</script>
-</head>
-
-
+{% endblock %}
-<body>
- <div id="main">
- <div id="header">
- <a class="grnetlogo" href="{% url group-routes %}">
- <img class="logoimg" src="/static/grnet_logo.png">
- </a>
- <div id="title">
- <a href="{% url group-routes %}">Firewall on Demand</a>
- </div>
- <div class="loginform">
- <div id="formcontent">
- {% 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 %}
- <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>
- {% endif %}
- </div>
-
- </div>
- </div>
- <div id="content">
- {% block brcrmb_container %}
- <div class="info_content_title">{% if user.is_authenticated %}<a href="{% url group-routes %}">{% trans "My routes" %}</a>{% endif %}
- {% block breadcrumbs %}{% endblock %}
- </div>
-
- {% endblock %}
- {% block content %}
- {% if error %}{% if inactive %}<h2>{% trans "Activation Pending" %}</h2>{% else %}<h2>{% trans "Error" %}</h2>{% endif %}{% endif %}
- <div>
- {% if missing_attributes %}
- <p>{% trans "One or more required shibboleth attributes were not released towards this service" %}</p>
- {% endif %}
- <p {% if not inactive %}style="color: red;"{% endif %}>{% autoescape off %}{{error}}{% endautoescape %}</p>
- {% if missing_attributes %}
- <p>
- {% trans "Required shibboleth attributes" %}:<br>
- <ul>
- <li>HTTP_EPPN</li>
- <li>HTTP_SHIB_HOMEORGANIZATION</li>
- <li>HTTP_SHIB_INETORGPERSON_MAIL</li>
- <li>An appropriate HTTP_SHIB_EP_ENTITLEMENT</li>
- </ul>
- {% trans "Optional" %}:
- <ul>
- <li>HTTP_SHIB_INETORGPERSON_GIVENNAME</li>
- <li>HTTP_SHIB_PERSON_SURNAME</li>
- </ul>
- </p>
- {% endif %}
- </div>
- {% endblock %}
+{% block menublock %}
+ {% if user.is_authenticated %}
+ <span class="topmenuuser">{% trans "Welcome" %} <strong>{{user}}</strong></span>
+ {% endif %}
+ {% 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 %}
+ <span class="topmenuaction relogin" title="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>
+ {% endif %}
+{% endblock %}
- </div>
- <div id="footer">
- {% if user.is_authenticated %}
- {% trans "If you have any questions or need help, contact GRNET Helpdesk at <a href='mailto:helpdesk@grnet.gr'>helpdesk@grnet.gr</a> or 800-11-47638." %}<br />
- {% endif %}
- <a href="http://www.grnet.gr">{% trans "GRNET" %} NOC</a> | <a href="/about/info/">{% trans "Info" %}</a> | <a href="/about/terms-of-service">{% trans "Service Terms" %}</a>
- </div>
+{% block content %}
+ {% if error %}{% if inactive %}<h2>{% trans "Activation Pending" %}</h2>{% else %}<h2>{% trans "Error" %}</h2>{% endif %}{% endif %}
+ <div>
+ {% if missing_attributes %}
+ <p>{% trans "One or more required shibboleth attributes were not released towards this service" %}</p>
+ {% endif %}
+ <p {% if not inactive %}style="color: red;"{% endif %}>{% autoescape off %}{{error}}{% endautoescape %}</p>
+ {% if missing_attributes %}
+ <p>
+ {% trans "Required shibboleth attributes" %}:<br>
+ <ul>
+ <li>HTTP_EPPN</li>
+ <li>HTTP_SHIB_HOMEORGANIZATION</li>
+ <li>HTTP_SHIB_INETORGPERSON_MAIL</li>
+ <li>An appropriate HTTP_SHIB_EP_ENTITLEMENT</li>
+ </ul>
+ {% trans "Optional" %}:
+ <ul>
+ <li>HTTP_SHIB_INETORGPERSON_GIVENNAME</li>
+ <li>HTTP_SHIB_PERSON_SURNAME</li>
+ </ul>
+ </p>
+ {% endif %}
</div>
-</body>
-</html>
+{% endblock %}
--- /dev/null
+{% load i18n %}
+<div id="footer">
+ {% if user.is_authenticated %}
+ {% trans "If you have any questions or need help, contact GRNET Helpdesk at <a href='mailto:helpdesk@grnet.gr'>helpdesk@grnet.gr</a> or 800-11-47638." %}<br />
+ {% endif %}
+ <a href="http://www.grnet.gr">{% trans "GRNET" %} NOC</a> | <a href="{% url getinfo %}">{% trans "Info" %}</a> | <a href="{% url gettos %}">{% trans "Service Terms" %}</a>
+ <p style="text-align: center;"><img width="46" height="40" border="0" class="image image-img_assist_custom-46x40 " src="http://noc.grnet.gr/sites/default/files/images/image_PSSYGK.img_assist_custom-46x40.png" alt="Flag ΨΣ" title="Flag ΨΣ"> <img width="49" height="40" border="0" class="image image-img_assist_custom-49x40 " src="http://noc.grnet.gr/sites/default/files/images/image_EEflag.img_assist_custom-49x40.png" alt="EU flag" title="EU flag"> <img width="90" height="40" border="0" class="image image-img_assist_custom-90x40 " src="http://noc.grnet.gr/sites/default/files/images/image_YPDBMTH.img_assist_custom-90x40.png" alt="Flag ΥΠΔΒΜΘ" title="Flag ΥΠΔΒΜΘ"><img width="67" height="40" border="0" class="image image-img_assist_custom-67x40 " src="http://noc.grnet.gr/sites/default/files/images/image_ESPA.img_assist_custom-67x40.png" alt="ESPA" title="ESPA"></p>
+</div>
{% load i18n %}
{% block title %}{% trans "My profile" %}{% endblock %}
+{% block breadcrumbs %}:: {% trans "My profile" %}{% endblock %}
{% block content %}
<h3>{% trans "My profile" %}</h3>
<strong>{% trans "First name" %}:</strong> {{user.first_name}} <br>
<strong>{% trans "Last name" %}:</strong> {{user.last_name}} <br>
<strong>{% trans "Email" %}:</strong> {{user.email}}<br>
- <strong>{% trans "Organization" %}:</strong> {{peer}} <br>
- <strong>{% trans "Admin Networks" %}:</strong> <br>
- {% for network in peer.networks.all %}
- {{network}}<br>
- {% empty %}
- <span style="color:red">{% blocktrans %}Ooops! Seems you have no networks associated with your peer. Contact Helpdesk to resolve this issue.{% endblocktrans %}</span>
+ <br>
+ <strong>{% trans "My Networks" %}:</strong><br>
+ <table class="display">
+ <tr>
+ <th class="ui-state-default">{% trans "Organization" %}</th><th class="ui-state-default">{% trans "Networks" %}</th>
+ </tr>
+ {% for peer in peers %}
+ <tr class="gradeC {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}">
+ <td>{{peer}} </td>
+ <td>
+ {% for network in peer.networks.all %}
+ {{network}}<br>
+ {% empty %}
+ <span style="color:red">{% blocktrans %}Ooops! Seems you have no networks associated with your peer. Contact Helpdesk to resolve this issue.{% endblocktrans %}</span>
+ {% endfor %}
+ </td></tr>
{% endfor %}
-
+ </table>
</div>
-
-
{% endblock %}
+
+++ /dev/null
-{% extends "base.html" %}
-{% load i18n %}
-{% block title %}{% trans "Review application" %} #{{ application.pk }}{% endblock %}
-{% block content %}
-<style type="text/css">
-.comments {
- font-style: italic;
- max-width: 40em;
-}
-.notice {
- text-align: center;
- font-style: italic;
-}
-
-#review {
- max-width: 50em;
- margin-left: auto;
- margin-right: auto;
-}
-</style>
-<script>
- function set_network(net){
- $("#id_network").val(net);
- }
-</script>
-<div align="center" id="review">
-<h2>{% trans "Review application" %} #{{ application.pk }} {% trans "by" %} {{ application.applicant }}</h2>
-<p>{% trans "Submitted" %} {{ application.filed|date }}</p>
-{% if application.is_pending %}
-<form method="POST" id="appform">
-{% csrf_token %}
-<fieldset>
-<legend>{% trans "Instance information" %}</legend>
-<table>
-<tr><th>{{ appform.hostname.label_tag }}</th><td>{{ appform.hostname }}<span class="error">{{ appform.hostname.errors|join:", " }}</span></td></tr>
-<tr><th>{{ appform.memory.label_tag }}</th><td>{{ appform.memory }}<span class="error">{{ appform.memory.errors|join:", " }}</span></td></tr>
-<tr><th>{{ appform.vcpus.label_tag }}</th><td>{{ appform.vcpus }}<span class="error">{{ appform.vcpus.errors|join:", " }}</span></td></tr>
-<tr><th>{{ appform.disk_size.label_tag }}</th><td>{{ appform.disk_size }}<span class="error">{{ appform.disk_size.errors|join:", " }}</span></td></tr>
-<tr><th>{{ appform.organization.label_tag }}</th><td>{{ appform.organization }}<span class="error">{{ appform.organization.errors|join:", " }}</span></td></tr>
-<tr><th>{{ appform.hosts_mail_server.label_tag }}</th><td>{{ appform.hosts_mail_server }}<span class="error">{{ appform.hosts_mail_server.errors|join:", " }}</span></td></tr>
-<tr><th>{{ appform.operating_system.label_tag }}</th><td>{{ appform.operating_system }}<span class="error">{{ appform.operating_system.errors|join:", " }}</span></td></tr>
-</table>
-</fieldset>
-
-{% if application.admin_contact_name %}
-<fieldset>
-<legend>{% trans "Administrative contact" %}</legend>
-<table>
-<tr><th>{% trans "Name" %}</th><td>{{ application.admin_contact_name }}</td></tr>
-<tr><th>{% trans "Email" %}</th><td>{{ application.admin_contact_email }}</td></tr>
-<tr><th>{% trans "Phone" %}</th><td>{{ application.admin_contact_phone }}</td></tr>
-</table>
-</fieldset>
-{% endif %}
-
-<fieldset>
-<legend>{% trans "Comments" %}</legend>
-<div class="comments">
-{{ application.comments }}
-</div>
-</fieldset>
-
-<fieldset>
-<legend>{% trans "Placement" %}</legend>
-{% if application.network %}
-<div class="notice">
-{% trans "The user has requested explicit network placement on" %} {{ application.network }} ({{ application.network.cluster.description }})
-</div>
-{% endif %}
-
-<p>{% trans "Choose either a network, or a cluster from the quick list to use the cluster's default network." %}</p>
-<p>{% trans "Network" %}: {{ appform.network }}</p>
-{% if appform.network.errors %}
-<p class="error">{{ appform.network.errors|join:", " }}</p>
-{% endif %}
-<p>{% for cl in fast_clusters %}<a href="#" onclick="set_network('{{ cl.get_default_network.pk }}');">{{ cl.description }} ({{ cl.slug }})</a> {% if not forloop.last %}| {% endif %}{% endfor %}</p>
-</fieldset>
-
-<fieldset>
-<legend>{% trans "Decision" %}</legend>
-<p>{% trans "Comments to the user" %}:</p>
-{% if appform.admin_comments.errors %}
-<p><span class="error">{{ appform.admin_comments.errors }}</span></p>
-{% endif %}
-<p>{{ appform.admin_comments }}</p>
-<p><input type="submit" value="Accept" name="accept"/> <input type="submit" value="Reject" name="reject" /></p>
-</legend>
-</form>
-{% else %}
-<fieldset>
-<legend>{% trans "Instance information" %}</legend>
-<table>
-<tr><th>{{ appform.hostname.label_tag }}</th><td>{{ application.hostname }}</td></tr>
-<tr><th>{{ appform.memory.label_tag }}</th><td>{{ application.memory }}</td></tr>
-<tr><th>{{ appform.vcpus.label_tag }}</th><td>{{ application.vcpus }}</td></tr>
-<tr><th>{{ appform.disk_size.label_tag }}</th><td>{{ application.disk_size }}</td></tr>
-<tr><th>{{ appform.organization.label_tag }}</th><td>{{ application.organization }}</td></tr>
-<tr><th>{{ appform.hosts_mail_server.label_tag }}</th><td>{{ application.hosts_mail_server }}</td></tr>
-<tr><th>{{ appform.operating_system.label_tag }}</th><td>{{ application.operating_system }}</td></tr>
-</table>
-</fieldset>
-
-{% if application.admin_contact_name %}
-<fieldset>
-<legend>{% trans "Administrative contact" %}</legend>
-<table>
-<tr><th>{% trans "Name" %}</th><td>{{ application.admin_contact_name }}</td></tr>
-<tr><th>{% trans "Email" %}</th><td>{{ application.admin_contact_email }}</td></tr>
-<tr><th>{% trans "Phone" %}</th><td>{{ application.admin_contact_phone }}</td></tr>
-</table>
-</fieldset>
-{% endif %}
-
-<fieldset>
-<legend>{% trans "Comments" %}</legend>
-<div class="comments">
-{{ application.comments }}
-</div>
-</fieldset>
-
-<fieldset>
-<legend>{% trans "Placement" %}</legend>
-<p>{% trans "The instance has been placed on" %} {{ application.network }} ({{ application.cluster.description }})</p>
-</fieldset>
-{% endif %}
-
-</div>
-{% endblock %}
--- /dev/null
+{% load tofqdn %}{% ifequal action 'expires' %}Rule {{route.name}} expires {% ifequal expiration_days 0 %}today{% else%}in {{expiration_days}} day{{ expiration_days|pluralize }}{% endifequal %}{% else %}A new rule {{action}} job has spawned
+
+Peer: {{route.applier.get_profile.peer.peer_name}}
+User {{route.applier.username}} requested the {{action}} of the following rule from address {{address}} {% if address|tofqdn %}({{address|tofqdn}}){% endif %}:
+
+Rule name: {{route.name}}{% endifequal %}
+
+Match Statements:
+* Source Address: {{route.source}}
+* Destination Address: {{route.destination}}
+* Protocol: {% if route.protocol.all %}{% for protocol in route.protocol.all %}{{ protocol }}{% if not forloop.last %}, {% endif %}{% endfor %}{% else %}any{% endif %}
+* Ports: {% if route.sourceport.all or route.destinationport.all %}Defined by source/destination ports{% else %}{% if route.port.all %}{% for port in route.port.all %}{{ port }}{% if not forloop.last %}, {% endif %}{% endfor %}{% else %}any{% endif %}{% endif %}
+* Source Ports: {% if route.port.all %}same as ports{% else %}{% if route.sourceport.all %}{% for port in route.sourceport.all %}{{ port }}{% if not forloop.last %}, {% endif %}{% endfor %}{% else %}any{% endif %}{% endif %}
+* Destination Ports: {% if route.port.all %}same as ports{% else %}{% if route.destinationport.all %}{% for port in route.destinationport.all %}{{ port }}{% if not forloop.last %}, {% endif %}{% endfor %}{% else %}any{% endif %}{% endif %}
+
+Then Actions:
+* Action:{% for then in route.then.all %}{{ then }}{% if not forloop.last %}, {% endif %}{% endfor %}
+
+Comments: {% if route.comments %}{{route.comments}}{% else %}-{% endif %}
+
+Expires: {% ifequal action 'removal' %}Now, removal requested{%else%}{{route.expires}}{% endifequal %}
+
+Rule url: {{url}}
+
+++ /dev/null
-{% load tofqdn %}
-A new rule creation job has spawned
-
-Peer: {{route.applier.get_profile.peer.peer_name}}
-User {{route.applier.username}} requested the application of the following rule from address {{address}} {% if address|tofqdn %}({{address|tofqdn}}){% endif %}:
-
-Match
-* Dst Addr:{{route.destination}}
-* Src Addr: {{route.source}}
-* Protocol:{% for protocol in route.protocol.all %}{{ protocol }}{% if not forloop.last %}, {% endif %}{% endfor %}
-* Ports:{% for port in route.ports.all %}{{ port }}{% if not forloop.last %}, {% endif %}{% endfor %}
-* Source Ports:{% for port in route.sourceport.all %}{{ port }}{% if not forloop.last %}, {% endif %}{% endfor %}
-* Destination Ports:{% for port in route.destinationport.all %}{{ port }}{% if not forloop.last %}, {% endif %}{% endfor %}
-
-*Then:{% for then in route.then.all %}{{ then }}{% if not forloop.last %}, {% endif %}{% endfor %}
+++ /dev/null
-{% load tofqdn %}
-A new rule removal job has spawned
-
-Peer: {{route.applier.get_profile.peer.peer_name}}
-User {{route.applier.username}} requested the removal of the following rule from address {{address}} {% if address|tofqdn %}({{address|tofqdn}}){% endif %}:
-
-Match
-* Dst Addr:{{route.destination}}
-* Src Addr: {{route.source}}
-* Protocol:{% for protocol in route.protocol.all %}{{ protocol }}{% if not forloop.last %}, {% endif %}{% endfor %}
-* Ports:{% for port in route.ports.all %}{{ port }}{% if not forloop.last %}, {% endif %}{% endfor %}
-* Source Ports:{% for port in route.sourceport.all %}{{ port }}{% if not forloop.last %}, {% endif %}{% endfor %}
-* Destination Ports:{% for port in route.destinationport.all %}{{ port }}{% if not forloop.last %}, {% endif %}{% endfor %}
-
-*Then:{% for then in route.then.all %}{{ then }}{% if not forloop.last %}, {% endif %}{% endfor %}
+++ /dev/null
-{% load tofqdn %}
-A new rule edit job has spawned
-
-Peer: {{route.applier.get_profile.peer.peer_name}}
-User {{route.applier.username}} requested the application of the following rule from address {{address}} {% if address|tofqdn %}({{address|tofqdn}}){% endif %}:
-
-Match
-* Dst Addr:{{route.destination}}
-* Src Addr: {{route.source}}
-* Protocol:{% for protocol in route.protocol.all %}{{ protocol }}{% if not forloop.last %}, {% endif %}{% endfor %}
-* Ports:{% for port in route.ports.all %}{{ port }}{% if not forloop.last %}, {% endif %}{% endfor %}
-* Source Ports:{% for port in route.sourceport.all %}{{ port }}{% if not forloop.last %}, {% endif %}{% endfor %}
-* Destination Ports:{% for port in route.destinationport.all %}{{ port }}{% if not forloop.last %}, {% endif %}{% endfor %}
-
-*Then:{% for then in route.then.all %}{{ then }}{% if not forloop.last %}, {% endif %}{% endfor %}
+++ /dev/null
-Rule {{route.name}} expires {% ifequal expiration_days 0 %}today{% else%}in {{expiration_days}} day{{ expiration_days|pluralize }}{% endifequal %}
-
-Match
-* Dst Addr:{{route.destination}}
-* Src Addr: {{route.source}}
-* Protocol:{% for protocol in route.protocol.all %}{{ protocol }}{% if not forloop.last %}, {% endif %}{% endfor %}
-* Ports:{% for port in route.ports.all %}{{ port }}{% if not forloop.last %}, {% endif %}{% endfor %}
-* Source Ports:{% for port in route.sourceport.all %}{{ port }}{% if not forloop.last %}, {% endif %}{% endfor %}
-* Destination Ports:{% for port in route.destinationport.all %}{{ port }}{% if not forloop.last %}, {% endif %}{% endfor %}
-
-*Then:{% for then in route.then.all %}{{ then }}{% if not forloop.last %}, {% endif %}{% endfor %}
-
-Visit {{url}} to edit the rule.
+++ /dev/null
-<div id="sshkeys_placeholder">
-<script>
- $(document).ajaxSend(function(event, xhr, settings) {
- function getCookie(name) {
- var cookieValue = null;
- if (document.cookie && document.cookie != '') {
- var cookies = document.cookie.split(';');
- for (var i = 0; i < cookies.length; i++) {
- var cookie = jQuery.trim(cookies[i]);
- // Does this cookie string begin with the name we want?
- if (cookie.substring(0, name.length + 1) == (name + '=')) {
- cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
- break;
- }
- }
- }
- return cookieValue;
- }
- function sameOrigin(url) {
- // url could be relative or scheme relative or absolute
- var host = document.location.host; // host + port
- var protocol = document.location.protocol;
- var sr_origin = '//' + host;
- var origin = protocol + sr_origin;
- // Allow absolute or scheme relative URLs to same origin
- return (url == origin || url.slice(0, origin.length + 1) == origin + '/') ||
- (url == sr_origin || url.slice(0, sr_origin.length + 1) == sr_origin + '/') ||
- // or any other URL that isn't scheme relative or absolute i.e relative.
- !(/^(\/\/|http:|https:).*/.test(url));
- }
- function safeMethod(method) {
- return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
- }
-
- if (!safeMethod(settings.type) && sameOrigin(settings.url)) {
- xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
- }
-});
-
- $(function() {
- $('.remove_btn').button({
- icons: {
- primary: "ui-icon-circle-close"
- },
- text: false
- })
- $('#add_ssh_key_btn').button();
- $('#add_ssh_key_btn').click(function() {
- str = $('#sshkeyform').serialize();
- $.ajax({
- type: "POST",
- url: "{% url user-keys %}",
- data: str,
- success: function(response){
-// var $response=$(response);
-// var resdata = $response.filter("#sshkeys_placeholder").html();
- $("#sshkeys_placeholder").html(response);
- }
- });
- return false;
- });
- $('a[id^="remove_key_"]').click(function() {
- var $this = $(this);
- var id = $this.attr("id");
- var key_id = id.replace("remove_key_", "")
- $.ajax({
- type: "GET",
- url: "{% url delete-key %}"+key_id,
- success: function(response){
-// var $response=$(response);
-// var resdata = $response.filter("#sshkeys_placeholder").html();
- $("#sshkeys_placeholder").html(response);
- }
- });
- return false;
- });
- });
- </script>
-
-<style type="text/css">
-.fingerprint {
- font-family: monospace;
-}
-</style>
-{% load i18n %}
-<p>{% trans "Upload your SSH public keys and have them automatically installed on all newly-created instances. Keys must be in OpenSSH format, either RSA, or DSA, with or without a trailing comment." %}</p>
-
-{% if keys %}
-<table>
-<tr><th>{% trans "Fingerprint" %}</th><th>{% trans "Comment" %}</th></tr>
-{% for key in keys %}
-<tr><td class="fingerprint">{{ key.fingerprint }}</td><td>{{ key.comment|default:"—" }}</td><td><a class="remove_btn" id="remove_key_{{key.id}}" href="#">{% trans "Delete" %}</a></tr>
-{% endfor %}
-</table>
-{% endif %}
-<h2>{% trans "Add new key" %}</h2>
-{% if msg %}
-<div class="error">{{msg}}</div>
-{% endif %}
-<form method="POST" id="sshkeyform">
-{% csrf_token %}
-{% if form.ssh_pubkey.errors %}
-<div class="error">{{ form.ssh_pubkey.errors }}</div>
-{% endif %}
-{{ form.ssh_pubkey }}<br />
-<button id="add_ssh_key_btn">{% trans "Add key" %}</button>
-</form>
-</div>
-
'{% trans "Cancel" %}': function(){
$('#dialog').dialog('close');
},
-
-
},
close: function(){
update_val = $("#hid_mid").val();
});
$('#console').parent().css('opacity', 0.9);
$('#console').parent().css('filter', 'alpha(opacity=90)');
+ $(".button_place #routebutton").button({
+ icons: {
+ primary: "ui-icon-circle-plus"
+ },
+ });
+ $(".edit_button").button({
+ icons: {
+ primary: "ui-icon-wrench"
+ },
+ }).css('width','100px');;
+ $(" .del_button").button({
+ icons: {
+ primary: "ui-icon-circle-close"
+ },
+ }).click(function(){
+ $('#dialog').dialog('open');
+ return false;
+ }).css('width','100px');
+ $("#consolebutton").button({
+ icons: {
+ primary: "ui-icon-image"
+ },
+ }).click(function(){
+ $("#consolebutton").stop().stop();
+ $("#consolebutton").css('color', '#555555');
+ $('#console').dialog('open');
+ return false;
+ });
+ $(".statustootipclass").tooltip();
+ $(".expiresclass").tooltip();
+ $(".commentclass").tooltip();
var oTable = $('#routes_table').dataTable({
"bJQueryUI": true,
"aoColumns": [{
}
}
});
-
oTable.fnDraw();
-
$('input[name="status_filter"]').click(function(){
-
//slice off the last '|' or it doesn't work
//also be sure to use the third parameter
});
- $(".button_place #routebutton").button({
- icons: {
- primary: "ui-icon-circle-plus"
- },
- });
- $(".edit_button").button({
- icons: {
- primary: "ui-icon-wrench"
- },
- }).css('width','100px');;
- $(" .del_button").button({
- icons: {
- primary: "ui-icon-circle-close"
- },
- }).click(function(){
- $('#dialog').dialog('open');
- return false;
- }).css('width','100px');
- $("#consolebutton").button({
- icons: {
- primary: "ui-icon-image"
- },
- }).click(function(){
- $("#consolebutton").stop().stop();
- $("#consolebutton").css('color', '#555555');
- $('#console').dialog('open');
- return false;
- });
- $(".statustootipclass").tooltip();
- $(".expiresclass").tooltip();
- $(".commentclass").tooltip();
var reg_exp = '';
var checkboxs = document.getElementsByName('status_filter');
for (var i = 0, inp; inp = checkboxs[i]; i++) {
</tbody>
</table>
</div>
- <table class="display" width="100%" id="nodes_table">
<table class="display" width="100%" id="routes_table">
<thead>
<tr>
<tr class="GradeC" >
<td>{{ route.pk }}</td>
- <td><span {% if route.comments %}
- class="commentclass"
- style="border-bottom:1px dotted red;"
- title="{{route.comments}}"
- {% endif %}>{{ route.name }}</span></td>
+ <td><span {% if route.comments %} class="commentclass" style="border-bottom:1px dotted red;" title="{{route.comments}}" {% endif %}>{{ route.name }}</span></td>
<td>{{ route.get_match|safe|escape }}</td>
<td style="text-align: center;">{{route.get_then|safe|escape}}</td>
- <td style="text-align: center; "><span
- {% if route.status == 'EXPIRED' or route.status == 'ADMININACTIVE' or route.status == 'INACTIVE' or route.status == 'OUTOFSYNC'%}
- class="statustootipclass"
- style="border-bottom:1px dotted red;"
+ <td style="text-align: center; "><span {% if route.status == 'EXPIRED' or route.status == 'ADMININACTIVE' or route.status == 'INACTIVE' or route.status == 'OUTOFSYNC'%} class="statustootipclass" style="border-bottom:1px dotted red;"
title = "{% ifequal route.status 'INACTIVE' %}Suspended by user{% else %}{% ifequal route.status 'ADMININACTIVE' %}Suspended by administrator{% else %}{% ifequal route.status 'EXPIRED' %}Suspended due to expiration{% else %}{% ifequal route.status 'OUTOFSYNC' %}Syncronization error. Configuration in device deffers from rule{% endifequal %}{% endifequal %}{% endifequal %}{% endifequal %}"{% endif %}>{% if route.status == 'EXPIRED' or route.status == 'ADMININACTIVE' or route.status == 'INACTIVE' %}SUSPENDED{% else %}{% if route.status == 'OUTOFSYNC' %}ERROR{% else %}{{route.status}}{% endif %}{% endif %}</span></td>
{% comment %}<td style="text-align: center;">{{ route.response }}</td>{% endcomment %}
<td style="text-align: center;">{{ route.applier }}</td>
style="border-bottom:2px dashed red;"
title="Expires {% ifequal route.days_to_expire '0' %}today{% else%}in {{route.days_to_expire}} day{{ route.days_to_expire|pluralize }}{% endifequal %}"
{% endif %}{% endif %}>{{ route.expires }}</span></td>
- <td style="text-align: center;">{% if route.status == 'EXPIRED' %}{% trans "Rule expired" %}{% else %}{% if route.status == 'ADMININACTIVE' %}{% trans "Suspended by administrator" %}{% else %}{% if route.status == 'INACTIVE' %}{% trans "Suspended by user" %}{% else %}{{ route.response }}{% endif %}{% endif %}{% endif %}</td>
+ <td style="text-align: center;">{% if route.status == 'EXPIRED' %}{% trans "Rule expired" %}{% else %}{% if route.status == 'ADMININACTIVE' %}{% trans "Suspended by administrator" %}{% else %}{% if route.status == 'INACTIVE' %}{% trans "Suspended by user" %}{% else %}{{ route.response }}{% if route.status == 'PENDING' %}<img src="/static/dots.gif">{% endif %}{% endif %}{% endif %}{% endif %}</td>
<td style="text-align: center; width:180px;">
{% ifequal route.status 'ACTIVE' %}
<a href="{% url edit-route route.name %}" class="edit_button" id="edit_button_{{route.pk}}">{% trans "Edit" %}</a>
{% ifequal route.status 'OUTOFSYNC' %}
<a href="{% url edit-route route.name %}" class="edit_button" id="edit_button_{{route.pk}}">{% trans "ReSync" %}</a>
{% else %}
+ {% ifequal route.status 'ERROR' %}
+ <a href="{% url edit-route route.name %}" class="edit_button" id="edit_button_{{route.pk}}">{% trans "Fix it!" %}</a>
+ {% else %}
-
{% endifequal %}
+ {% endifequal %}
{% endif %}
{% endifequal %}
</td>
url(r'^fod/delete/(?P<route_slug>[\w\-]+)/$', 'flowspy.flowspec.views.delete_route', name="delete-route"),
url(r'^fod/login/?', 'flowspy.flowspec.views.user_login', name="login"),
url(r'^fod/welcome/?', 'flowspy.flowspec.views.welcome', name="welcome"),
+ url(r'^fod/info/?', 'flowspy.flowspec.views.getinfo', name="getinfo"),
+ url(r'^fod/tos/?', 'flowspy.flowspec.views.gettos', name="gettos"),
url(r'^fod/logout/?', 'flowspy.flowspec.views.user_logout', name="logout"),
(r'^fod/setlang/?$', 'django.views.i18n.set_language'),
# Uncomment the admin/doc line below to enable admin documentation: