views.py 2.87 KB
Newer Older
Őry Máté committed
1 2 3
from django.shortcuts import render_to_response
from django.http import HttpResponse
from django.shortcuts import render_to_response
Őry Máté committed
4 5
from firewall.models import *
from firewall.fw import *
root committed
6 7
from django.views.decorators.csrf import csrf_exempt              
from django.db import IntegrityError               
8 9
from tasks import *
from celery.task.control import inspect
root committed
10

11
import re
root committed
12 13 14
import base64
import json
import sys
Őry Máté committed
15

16

Őry Máté committed
17
def reload_firewall(request):
x committed
18 19 20 21 22 23 24 25 26 27
    if request.user.is_authenticated():
        if(request.user.is_superuser):
            html = u"Be vagy jelentkezve es admin is vagy, kedves %s!" % request.user.username
            html += "<br> 10 masodperc mulva ujratoltodik"
            ReloadTask.delay()
        else:
            html = u"Be vagy jelentkezve, csak nem vagy admin, kedves %s!" % request.user.username
    else:
        html = u"Nem vagy bejelentkezve, kedves ismeretlen!"
    return HttpResponse(html)
root committed
28 29 30

@csrf_exempt
def firewall_api(request):
x committed
31 32 33 34 35 36
    if request.method == 'POST':
        try:
            data=json.loads(base64.b64decode(request.POST["data"]))
            command = request.POST["command"]
            if(data["password"] != "bdmegintelrontottaanetet"):
                raise Exception("rossz jelszo")
37

x committed
38 39
            if(not(data["vlan"] == "vm-net" or data["vlan"] == "war")):
                raise Exception("csak vm-net es war-re mukodik")
40

x committed
41
            data["hostname"] = re.sub(r' ','_', data["hostname"])
42

x committed
43 44 45 46 47 48
            if(command == "create"):
                data["owner"] = "opennebula"
                owner = auth.models.User.objects.get(username=data["owner"])
                host = models.Host(hostname=data["hostname"], vlan=models.Vlan.objects.get(name=data["vlan"]), mac=data["mac"], ipv4=data["ip"], owner=owner, description=data["description"], pub_ipv4=models.Vlan.objects.get(name=data["vlan"]).snat_ip, shared_ip=True)
                host.full_clean()
                host.save()
49

x committed
50
                host.enable_net()
51

x committed
52 53
                for p in data["portforward"]:
                    host.add_port(proto=p["proto"], public=int(p["public_port"]), private=int(p["private_port"]))
root committed
54

x committed
55 56 57 58 59
            elif(command == "destroy"):
                data["owner"] = "opennebula"
                print data["hostname"]
                owner = auth.models.User.objects.get(username=data["owner"])
                host = models.Host.objects.get(hostname=data["hostname"], owner=owner)
60

x committed
61 62 63 64
                host.del_rules()
                host.delete()
            else:
                raise Exception("rossz parancs")
65

x committed
66 67 68 69 70 71 72 73
            reload_firewall_lock()
        except (ValidationError, IntegrityError, AttributeError, Exception) as e:
            return HttpResponse(u"rosszul hasznalod! :(\n%s\n" % e);
        except:
#           raise
            return HttpResponse(u"rosszul hasznalod! :(\n");
        
        return HttpResponse(u"ok");
root committed
74

x committed
75
    return HttpResponse(u"ez kerlek egy api lesz!\n");
root committed
76

77