prefs is inheretable
This commit is contained in:
parent
c14d5cfbd7
commit
975b2bb14a
2 changed files with 66 additions and 56 deletions
|
@ -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
|
||||
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()
|
||||
|
||||
|
|
|
@ -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,6 +161,7 @@ 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)
|
||||
|
|
Loading…
Reference in a new issue