now checks url params

adapted templates
renderer checks for sources
This commit is contained in:
age 2006-08-24 14:41:11 +00:00
parent 414a6c6e60
commit 3b97f675bf
8 changed files with 94 additions and 50 deletions

View file

@ -8,44 +8,75 @@ class CryptoBoxWebserverSites(CryptoBox.CryptoBoxProps, CryptoBoxWebserverSettin
url2func = {'index':'show_status','doc':'show_doc','logs':'show_log'}
'''
def __prepare(self, csname="show_status"):
'''this method handles stuff that all sites need as preparation
def __prepare(self, action="show_status"):
'''handles stuff that all sites need as preparation
self.settings is filled be the following methodcall
thus every rendered site will get actual values from the configfile
after that the site-method may set individual values too
The default site to render is 'show_status'.
Self.settings is filled by the following methodcall
thus every rendered site will get actual values from the configfile.
After that the concrete site-method (e.g. doc) may set individual values.
'''
self.setSettings(self)
self.settings
## default site to render is 'show_status'
self.settings["Data.Action"] = csname
#self.settings
self.settings["Data.Action"] = action
#TODO: check ssl status
def __sanitize_input(self,data):
#TODO: don't let evil cracker fuck up your code
return data
def __sanitize_input(self, evilparams):
'''mistrusts every given parameter and wipes crap out
Every single site method has to call this before even looking
at url-given parameters.
This has to be called manually, since I don't see any other way of
sanitizing input automatically for all sites.'''
#TODO: generate languages from existing hdf files
niceparams = { 'weblang': ('', 'de', 'en'),
'loglevel': ('','info', 'warn', 'debug', 'error'),
'type': ('reboot', 'poweroff')
}
for evilkey in evilparams.keys():
## if the param isn't in the niceparams list, ignore it
if not niceparams.get(evilkey):
self.log.warn("irgnoring \"%s\"" % evilkey)
return False
#TODO: until now only a warning message is printed
## if the param has no such value, set it to a default (the first in the list)
if evilparams.get(evilkey) not in niceparams.get(evilkey):
self.log.warn("\"%s\" not in weblang %s"% (evilkey, niceparams.get(evilkey)))
#TODO: set it to: niceparams.get(evilkey)[0]))
return
def __check_config(self):
#TODO
pass
def __check_init_running(self):
#TODO
pass
######################################################################
## put real sites down here and don't forget to expose the mat the end
def logs(self):
'''be careful to name this method just "log" seems to be a
reserved word'''
def logs(self, loglevel=""):
'''displays a HTML version of the logfile
The loglevel has to be set and nothing else, as we just log in
english.
Be awar not to name this method just "log" as it seems to be a
reserved word.'''
self.__sanitize_input({"loglevel":loglevel})
self.__prepare("show_log")
import filehandling
self.settings["Data.Log"] = filehandling.read_file(self.settings["Settings.Details"])
self.settings["Data.Log"] = filehandling.read_file(self.settings["Log.Details"])
#TODO: give the logs a nice format for displaying as html
# sed s/$/<\/br>/
return website.render(self)
def status(self):
def status(self, weblang=""):
'''shows the current status of the box
'''
self.__sanitize_input({"weblang":weblang})
self.__prepare("show_status")
if not self.__check_config():
self.settings["Data.Warning"] = "NotInitialized"
@ -59,18 +90,23 @@ class CryptoBoxWebserverSites(CryptoBox.CryptoBoxProps, CryptoBoxWebserverSettin
self.settings["Data.Action"] = "show_status"
self.settings["Data.Redirect.Delay"] = "60"
return website.render(self)
def config(self,weblang=""):
pass
def doc(self,action="",page="",weblang=""):
#TODO: action is unnessessary, remove here and from all templates
'''prints the offline wikipage
TODO: action is unnessessary, remove here and from all html
files in doc/html/[de|en]/*
'''
self.__prepare("show_doc")
if not page == "":
if page:
self.settings["Data.Doc.Page"] = page
#self.log.info(page)
#self.log.info(self.settings)
else:
if page == "":
self.settings["Data.Doc.Page"] ="CryptoBoxUser"
#self.log.info(page)
#self.log.info(self.settings)
if not weblang == "":
self.settings["Settings.DocLang"] = weblang
return website.render(self)
def system(self,type=""):