From 734945a923a9a7029b6b92fe21d235496ca81c47 Mon Sep 17 00:00:00 2001 From: Klaus-Uwe Mitterer Date: Sun, 3 Feb 2019 15:15:28 +0000 Subject: [PATCH] Move firmware generation to tasks --- manager/views.py | 78 +----------------------------------------------- 1 file changed, 1 insertion(+), 77 deletions(-) diff --git a/manager/views.py b/manager/views.py index 9c341a5..f7a8b83 100644 --- a/manager/views.py +++ b/manager/views.py @@ -17,6 +17,7 @@ from .models import Device, Organization, Network, Model, Wifi, UserStatus from .signals import * from .forms import * from .device import makewificonfig, heartbeathandler +from .tasks import mkfirmware from distutils.dir_util import copy_tree @@ -65,83 +66,6 @@ def hosts(request): device.save() return render(request, "manager/hosts", {"device": device}) -def mkfirmware(device, path): - if device.firmware and device.firmware > device.model.firmware and device.firmware > device.changed and glob.glob("%s/%s.bin" % (path, device.id)): - return True - - BEFORE = os.getcwd() - DEVICEDIR = "/opt/vpnmanager/device-config/%i/" % device.model.id - SRCDIR = "/opt/vpnmanager/imagebuilder/%i/" % device.model.id - - if glob.glob(SRCDIR + "/.kumilock"): - return False - - with open(SRCDIR + "/.kumilock", "w") as lock: - lock.write("") - - tempdir = tempfile.TemporaryDirectory() - - copy_tree(DEVICEDIR, tempdir.name) - - # Write OpenVPN config - - with open(tempdir.name + "/etc/openvpn/client.conf", "w") as vpnconf: - vpnconf.write(device.vpnconfig) - - # Write secret - - with open(tempdir.name + "/etc/vpnsecret", "w") as secret: - secret.write('SECRET="%s"' % device.secret) - - # Write password - - with open(tempdir.name + "/etc/shadow", "r") as shadow: - password = crypt.crypt(device.password, crypt.mksalt(crypt.METHOD_MD5)) - shadowin = shadow.read() - - with open(tempdir.name + "/etc/shadow", "w") as shadowout: - shadowout.write(shadowin.replace("$PASSWORD", password)) - - # Write Wireless config - - with open(tempdir.name + "/etc/config/wireless", "r") as wireless: - wirein = wireless.read() - - with open(tempdir.name + "/etc/config/wireless", "w") as wireout: - wire = wirein.replace("$SSID", device.serial) - wireout.write(wire + "\n" + makewificonfig(device)) - - # Create compilation environment - - os.system("rm -rf " + SRCDIR + "/files/") - os.mkdir(SRCDIR + "/files/") - os.system("cp -r " + tempdir.name + "/* " + SRCDIR + "/files/") - - tempdir.cleanup() - - os.system("rm " + SRCDIR + "/bin/targets/ar71xx/generic/*") - - # Build image - - os.chdir(SRCDIR) - - try: - subprocess.call(["/usr/bin/make"]) - except: - os.remove(SRCDIR + "/.kumilock") - os.chdir(BEFORE) - return False - - os.chdir(BEFORE) - - os.rename(glob.glob(SRCDIR + "/bin/targets/ar71xx/generic/*squashfs-sysupgrade.bin")[0], "%s/%s.bin" % (path, device.id)) - os.remove(SRCDIR + "/.kumilock") - os.system("rm -rf " + SRCDIR + "/files/") - os.system("rm " + SRCDIR + "/bin/targets/ar71xx/generic/*") - device.firmware = datetime.datetime.now() - device.save() - return True - @csrf_exempt def update(request): FWDIR = "/opt/vpnmanager/images/"