# HG changeset patch # User ft # Date 1415627101 -3600 # Node ID f7b8f096b3596cf90af87a676cbee1fad38ec82a # Parent 28b7682d547638ba4fef6a691f9e6c501809b63f upaded package with latest source diff -r 28b7682d5476 -r f7b8f096b359 encryptionprovider-package --- a/encryptionprovider-package Tue Nov 04 18:26:39 2014 +0100 +++ b/encryptionprovider-package Mon Nov 10 14:45:01 2014 +0100 @@ -7,7 +7,7 @@ Standards-Version: 3.9.2 Package: encryptionprovider -Version: 0.0.26 +Version: 0.0.29 Maintainer: ft # Pre-Depends: Depends: python,python-requests,python-urllib3,python-netifaces,python-netaddr,python-webpy diff -r 28b7682d5476 -r f7b8f096b359 encryptionprovider_0.0.27_all.deb Binary file encryptionprovider_0.0.27_all.deb has changed diff -r 28b7682d5476 -r f7b8f096b359 encryptionprovider_0.0.28_all.deb Binary file encryptionprovider_0.0.28_all.deb has changed diff -r 28b7682d5476 -r f7b8f096b359 encryptionprovider_0.0.29_all.deb Binary file encryptionprovider_0.0.29_all.deb has changed diff -r 28b7682d5476 -r f7b8f096b359 passwordreceiver.py --- a/passwordreceiver.py Tue Nov 04 18:26:39 2014 +0100 +++ b/passwordreceiver.py Mon Nov 10 14:45:01 2014 +0100 @@ -41,14 +41,53 @@ import os import sys import base64 -#import logging +import thread +import urllib3 +import netaddr opensecurity_urls = ( '/password', 'os_password', '/init', 'os_init' ) -#__LOG = logging.getLogger("passwordreceiver") +STATUS_CODE_OK = 200 + + +def sendDataToRest (urlpath, data): + netifaces.ifaddresses("eth0")[2][0]["addr"] + + # Get first address in network (0 = network ip -> 192.168.0.0) + remote_ip = netaddr.IPNetwork("%s/%s" %(netifaces.ifaddresses("eth0")[2][0]["addr"], netifaces.ifaddresses("eth0")[2][0]["netmask"]))[1] + + url = ("http://%s:8090//%s" %(remote_ip, urlpath)) + + try: + response = httpPool.request_encode_body("POST", url, fields=data, retries=0) + except Exception, e: + return + + if response.status == STATUS_CODE_OK: + return True + else: + return False + + +def sendNotification (type, message): + data = {"msgtype" : type, "text" : message} + + if (type == "information"): + sendDataToRest ("message", data) + else: + sendDataToRest ("notification", data) + +def sendInitialisationFailedError(): + sendNotification("critical", "Initialisation of the stick failed.") + + + + + + class os_password: @@ -108,30 +147,25 @@ os.remove(keyfilepath) def runPreInitScript(self, preinitscript, device): - #__LOG.debug("Start preinit Script") command = [preinitscript, device] process = subprocess.Popen( command, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) retval = process.wait() ( stdout, stderr ) = process.communicate() - #__LOG.debug("preinit done result: %s" %(retval,)) - if (retval != 0): raise web.badrequest(stderr) def runPostInitScript(self, postinitscript): - #__LOG.debug("Start postinit Script") - command = [postinitscript] process = subprocess.Popen( command, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) retval = process.wait() ( stdout, stderr ) = process.communicate() - #__LOG.debug("postinit done result: %s" %(retval,)) - if (retval != 0): - raise web.badrequest(stderr) + return False + else: + return True def GET(self, settings): return self.POST(settings) @@ -154,9 +188,12 @@ command = [settings["script"], settings["device"], settings["mountpoint"], args["password"], settings["keyfilepath"]] else: command = [settings["script"], settings["device"], settings["mountpoint"], args["password"]] - - #__LOG.debug("Start init script") + thread.start_new_thread(self.initStick, (command,settings,args,)) + + return "Success: Init started" + + def initStick(self, command, settings, args): process = subprocess.Popen( command, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) retval = process.wait() ( stdout, stderr ) = process.communicate() @@ -164,15 +201,12 @@ if "keyfile" in args: self.deleteKeyfile(settings["keyfilepath"]) - #__LOG.debug("init done result: %s" %(retval,)) - if (retval != 0): - raise web.badrequest(stderr) + sendInitialisationFailedError(); # Do the postinit stuff - self.runPostInitScript(settings["postinitscript"]) - - return "Success: Stick is initialized and mounted" + if (self.runPostInitScript(settings["postinitscript"]) != True): + sendInitialisationFailedError(); class MyRestListener(web.application): def __init__(self, mapping=(), fvars={}, autoreload=None, script=None, device=None, mountpoint=None, tries=None, keyfilepath=None, preinitscript=None, postinitscript=None):