1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- import os
- from urllib2 import urlopen
- from django.http import StreamingHttpResponse
- from django.shortcuts import render_to_response, get_object_or_404
- from django.views.generic.detail import DetailView
- from django.conf import settings
- from django.contrib.auth.decorators import login_required
- from django.utils.decorators import method_decorator
- from coin.members.models import Member
- from coin.vpn.models import VPNConfiguration
- class VPNView(DetailView):
- @method_decorator(login_required)
- def dispatch(self, *args, **kwargs):
- return super(VPNView, self).dispatch(*args, **kwargs)
- def get_object(self):
- return get_object_or_404(VPNConfiguration, pk=self.kwargs.get("id"),
- offersubscription__member=self.request.user)
- def generate_password(request, id):
- """This generates a random password, saves it in hashed form, and returns
- it to the user in cleartext.
- """
- vpn = get_object_or_404(VPNConfiguration, pk=id,
- offersubscription__member=request.user)
- # This function has nothing to here, but it's convenient.
- password = Member.objects.make_random_password()
- vpn.password = password
- # This will hash the password automatically
- vpn.full_clean()
- vpn.save()
- return render_to_response('vpn/password.html', {"vpn": vpn,
- "password": password})
- class VPNGeneratePasswordView(VPNView):
- """This generates a random password, saves it in hashed form, and returns
- it to the user in cleartext.
- """
- def get_context_data(self, **kwargs):
- context = super(VPNGeneratePasswordView, self).get_context_data(**kwargs)
- # Generate a new random password and save it
- password = Member.objects.make_random_password()
- self.object.password = password
- # This will hash the password automatically
- self.object.full_clean()
- self.object.save()
- context['password'] = password
- return context
- def get_graph(request, vpn_id, period="daily"):
- """ This get the graph for the associated vpn_id and time period
- """
- vpn = get_object_or_404(VPNConfiguration, pk=vpn_id,
- offersubscription__member__user=request.user.id)
-
- time_periods = { 'hourly': '-1hour', 'daily': '-24hours', 'weekly': '-8days', 'monthly': '-32days', 'yearly': '-13months', }
- if period not in time_periods:
- period = 'daily'
- graph_url = os.path.join(settings.GRAPHITE_SERVER,
- "render/?width=586&height=308&from=%(period)s&" \
- "target=alias%%28scaleToSeconds%%28vpn1.%(login)s.downrxbytes%%2C1%%29%%2C%%20%%22Download%%22%%29&" \
- "target=alias%%28scaleToSeconds%%28vpn1.%(login)s.uptxbytes%%2C1%%29%%2C%%20%%22Upload%%22%%29&" \
- "title=VPN%%20Usage%%20%(login)s" % \
- { 'period': time_periods[period], 'login': vpn.login })
- return StreamingHttpResponse(urlopen(graph_url), content_type="image/png")
|