now checks url params
adapted templates renderer checks for sources
This commit is contained in:
parent
414a6c6e60
commit
3b97f675bf
8 changed files with 94 additions and 50 deletions
|
@ -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=""):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue