diff --git a/pythonrewrite/bin2/CryptoBox.py b/pythonrewrite/bin2/CryptoBox.py index 05468b0..4272aed 100644 --- a/pythonrewrite/bin2/CryptoBox.py +++ b/pythonrewrite/bin2/CryptoBox.py @@ -7,24 +7,15 @@ progress. So things might be confusing here. Hopefully not for long. :) ''' -import logging import CryptoBoxLogger import CryptoBoxContainer +import types import re import os import sys -try: - import configobj ## needed for reading and writing the config file -except: - print("Could't import 'configobj'! Try apt-get install python-configobj.") - sys.exit() -import types import unittest -CONF_LOCATIONS = [ - "./cryptobox.conf", - "~/.cryptobox.conf", - "/etc/cryptobox/cryptobox.conf"] +CONF_LOCATIONS = [ "./cryptobox.conf", "~/.cryptobox.conf", "/etc/cryptobox/cryptobox.conf"] class CryptoBox: '''this class rules them all! @@ -32,10 +23,11 @@ class CryptoBox: put things like logging, conf and oter stuff in here, that might be used by more classes, it will be passed on to them''' def __init__(self): - self.initLogging() - pass + self.__initLogging() + self.__initPreferences() - def initLogging(self): + def __initLogging(self): + import logging '''initialises the logging system use it with: 'self.log.[debug|info|warning|error|critical](logmessage)' @@ -45,12 +37,46 @@ class CryptoBox: i would prefer start logging to stdout, read the config and redirect logging to the logfile found in the config [a] ''' ## basicConfig(...) needs python >= 2.4 - logging.basicConfig(level=logging.DEBUG, - format='%(asctime)s %(module)s %(levelname)s %(message)s', - filename='./cryptobox.log', - filemode='w') - self.log = logging.getLogger("CryptoBoxProps") - self.log.info("loggingsystem is up'n running") + try: + logging.basicConfig(level=logging.DEBUG, + format='%(asctime)s %(module)s %(levelname)s %(message)s', + filename='./cryptobox.log', + filemode='w') + self.log = logging.getLogger("CryptoBoxProps") + self.log.info("loggingsystem is up'n running") + ## from now on everything can be logged via self.log... + except: + sys.stderr.write("Something with the loggingsystem went wrong. I give up.") + sys.exit(1) + + def __initPreferences(self): + try: + import configobj ## needed for reading and writing the config file + except: + self.log.error("Could't import 'configobj'! Try apt-get install python-configobj.") + sys.exit(1) + + for f in CONF_LOCATIONS: + if os.path.exists(os.path.expanduser(f)): + conf_file = os.path.expanduser(f) + break + try: + self.cbxPrefs = configobj.ConfigObj(conf_file) + self.log.debug("found config: %s" % self.cbxPrefs.items()) + except: + self.log.error("Could not read configuration file. I give up.\n") + sys.exit(1) + try: + nameDB_file = os.path.join( + self.cbxPrefs["Main"]["DataDir"], + self.cbxPrefs["Main"]["NameDatabase"]) + if os.path.exists(nameDB_file): + self.nameDB = configobj.ConfigObj(nameDB_file) + else: + self.nameDB = configobj.ConfigObj(nameDB_file, create_empty=True) + except SyntaxError: + self.log.error("Error during parsing of name database file (%s).\n" % (nameDB_file, )) + sys.exit(1) def cbx_inheritance_test(self): print "you lucky widow" @@ -63,40 +89,18 @@ class CryptoBoxProps(CryptoBox): All properties of the cryptobox can be accessed by this class. ''' - def __init__(self, conf_file=None): + def __init__(self): '''read config and fill class variables''' "enable it again - or remove the priv-dropping" #if os.geteuid() != 0: # sys.stderr.write("You need to be root to run this program!\n") # sys.exit(1) + CryptoBox.__init__(self) #self.cbx_inheritance_test() - if conf_file == None: - for f in CONF_LOCATIONS: - if os.path.exists(os.path.expanduser(f)): - conf_file = os.path.expanduser(f) - break - else: - #sys.stderr.write("Could not find a configuration file. I give up.\n") - self.log.error("Could not find a configuration file. I give up.\n") - sys.exit(1) - try: - self.cbxPrefs = configobj.ConfigObj(conf_file) - except SyntaxError: - #sys.stderr.write("Error during parsing of configuration file (%s).\n" % (conf_file, )) - self.log.error("Could not find a configuration file. I give up.\n") - try: - nameDB_file = os.path.join( - self.cbxPrefs["Main"]["DataDir"], - self.cbxPrefs["Main"]["NameDatabase"]) - if os.path.exists(nameDB_file): - self.nameDB = configobj.ConfigObj(nameDB_file) - else: - self.nameDB = configobj.ConfigObj(nameDB_file, create_empty=True) - except SyntaxError: - #sys.stderr.write("Error during parsing of name database file (%s).\n" % (nameDB_file, )) - self.log.error("Error during parsing of name database file (%s).\n" % (nameDB_file, )) - sys.exit(1) + #print self.cbxPrefs.items() + #### + self.__cboxUID = int(self.cbxPrefs["System"]["User"]) self.__cboxGID = int(self.cbxPrefs["System"]["Group"]) self.debug = CryptoBoxLogger.CryptoBoxLogger( @@ -321,14 +325,13 @@ Destination = /tmp/cryptobox.log def testConfigFile(self): - self.assertRaises(KeyError, CryptoBoxProps, "/not/existing/path") - CryptoBoxProps(self.configFile) + CryptoBoxProps() self.assertTrue(os.path.exists(self.nameDBFile)) self.assertTrue(os.path.exists(self.logFile)) def testDeviceCheck(self): - cb = CryptoBoxProps(self.configFile) + cb = CryptoBoxProps() self.assertTrue(cb.isDeviceAllowed("/dev/loop")) self.assertTrue(cb.isDeviceAllowed("/dev/loop1")) self.assertTrue(cb.isDeviceAllowed("/dev/loop/urgd")) @@ -343,4 +346,5 @@ Destination = /tmp/cryptobox.log if __name__ == "__main__": unittest.main() + #cb = CryptoBoxProps() diff --git a/pythonrewrite/bin2/CryptoBoxWebserver.py b/pythonrewrite/bin2/CryptoBoxWebserver.py index 7881bbc..dc3c70f 100644 --- a/pythonrewrite/bin2/CryptoBoxWebserver.py +++ b/pythonrewrite/bin2/CryptoBoxWebserver.py @@ -17,15 +17,18 @@ class CryptoBoxSite: '''this is the motherclass of all cbx sites put the stuff in her, that every site will need access to''' + def __init__(self): + pass + def print_foo(self): '''a stupid demo method''' self.cbx_inheritance_test() print "fooooooooooooobaaaaaaaaaaaaaaaaaaaar" -class CryptoBoxSites(CryptoBox.CryptoBoxProps, CryptoBoxSite): - ''' - ''' +#class CryptoBoxSites(CryptoBox.CryptoBoxProps, CryptoBoxSite): +class CryptoBoxSites(CryptoBox.CryptoBox, CryptoBox.CryptoBoxProps, CryptoBoxSite): + def index(self,action="show_status",page="",weblang="",device="", type=""): #PROPOSAL: @@ -142,7 +145,9 @@ class CryptoBoxSites(CryptoBox.CryptoBoxProps, CryptoBoxSite): #go render stuff cs = CryptoBoxRenderSite() - content = cs.render(TemplateDir+"/main.cs",settings,LangDir+"/"+Language+".hdf") + self.log.debug("rendering site") + content = cs.render(self.cbxPrefs["Settings"]["TemplateDir"]+"/main.cs",settings, \ + self.cbxPrefs["Settings"]["LangDir"]+"/"+Language+".hdf") return content @@ -156,18 +161,19 @@ class CryptoBoxRenderSite: def render(self,cs_path,settings = {},hdf_path = ""): """ render a clearsilver template and return the result. + gets: - path to clearsilver template - dictionary with settings (optional) - path to hdf dataset (optional) """ - hdf=neo_util.HDF() + hdf = neo_util.HDF() if hdf_path != "": hdf.readFile(hdf_path) for key in settings.keys(): hdf.setValue(key,str(settings[key])) - cs= neo_cs.CS(hdf) + cs = neo_cs.CS(hdf) cs.parseFile(cs_path) return cs.render()