from django.shortcuts import render_to_response from django.http import HttpResponse from django.shortcuts import render_to_response from firewall.models import * from firewall.fw import * from django.views.decorators.csrf import csrf_exempt from django.db import IntegrityError from tasks import * from celery.task.control import inspect import re import base64 import json import sys def reload_firewall(request): 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) @csrf_exempt def firewall_api(request): 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") if(not(data["vlan"] == "vm-net" or data["vlan"] == "war")): raise Exception("csak vm-net es war-re mukodik") data["hostname"] = re.sub(r' ','_', data["hostname"]) 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() host.enable_net() for p in data["portforward"]: host.add_port(proto=p["proto"], public=int(p["public_port"]), private=int(p["private_port"])) 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) host.del_rules() host.delete() else: raise Exception("rossz parancs") 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"); return HttpResponse(u"ez kerlek egy api lesz!\n");