diff options
author | Michael DeHaan <mdehaan@redhat.com> | 2007-12-05 11:46:38 -0500 |
---|---|---|
committer | Michael DeHaan <mdehaan@redhat.com> | 2007-12-05 11:46:38 -0500 |
commit | 762de2e043b967bdf0bdc1be8189ab21b055a808 (patch) | |
tree | 38d29d16c66bcc5ae7a8c65b21725b8fa2a11a88 /cobbler | |
parent | 58cae26af9b3a868041b52fc0dde6047faff73a3 (diff) | |
download | third_party-cobbler-762de2e043b967bdf0bdc1be8189ab21b055a808.tar.gz third_party-cobbler-762de2e043b967bdf0bdc1be8189ab21b055a808.tar.xz third_party-cobbler-762de2e043b967bdf0bdc1be8189ab21b055a808.zip |
mod_python version of webui now operational at http://server/cobbler/web with pluggable authn/authz and using same tokens through entire communication chain. Should probably implement a session logout though.
Diffstat (limited to 'cobbler')
-rw-r--r-- | cobbler/remote.py | 8 | ||||
-rw-r--r-- | cobbler/webui/CobblerWeb.py | 34 | ||||
-rw-r--r-- | cobbler/webui/master.py | 30 |
3 files changed, 37 insertions, 35 deletions
diff --git a/cobbler/remote.py b/cobbler/remote.py index dcc01d1..081f8c8 100644 --- a/cobbler/remote.py +++ b/cobbler/remote.py @@ -456,9 +456,9 @@ class CobblerReadWriteXMLRPCInterface(CobblerXMLRPCInterface): self.logger.debug("invalid token: %s" % token) raise CX(_("invalid token: %s" % token)) - def check_access(self,token,resource): + def check_access(self,token,resource,arg1=None,arg2=None): validated = self.__validate_token(token) - return self.__authorize(token,resource) + return self.__authorize(token,resource,arg1,arg2) def __get_user_from_token(self,token): if not self.token_cache.has_key(token): @@ -481,9 +481,9 @@ class CobblerReadWriteXMLRPCInterface(CobblerXMLRPCInterface): self.logger.info("login failed: %s" % login_user) raise CX(_("login failed: %s") % login_user) - def __authorize(self,token,resource): + def __authorize(self,token,resource,arg1=None,arg2=None): user = self.__get_user_from_token(token) - if self.authz.authorize(user,resource): + if self.authz.authorize(user,resource,arg1,arg2): return True else: raise CX(_("user does not have access to resource: %s") % resource) diff --git a/cobbler/webui/CobblerWeb.py b/cobbler/webui/CobblerWeb.py index a69df82..9985994 100644 --- a/cobbler/webui/CobblerWeb.py +++ b/cobbler/webui/CobblerWeb.py @@ -20,7 +20,9 @@ from cobbler.utils import * import logging import sys -LOGGING_ENABLED = False +# FIXME: make logging use apache logging + +LOGGING_ENABLED = True if LOGGING_ENABLED: # set up logging @@ -179,10 +181,10 @@ class CobblerWeb(object): # Index # ------------------------------------------------------------------------ # - def index(self): + def index(self,**args): return self.__render( 'index.tmpl', { } ) - def menu(self): + def menu(self,**args): return self.__render( 'blank.tmpl', { } ) # ------------------------------------------------------------------------ # @@ -206,7 +208,7 @@ class CobblerWeb(object): # Distributions # ------------------------------------------------------------------------ # - def distro_list(self,page=None,limit=None): + def distro_list(self,page=None,limit=None,**spam): if not self.__xmlrpc_setup(): return self.xmlrpc_auth_failure() @@ -223,7 +225,7 @@ class CobblerWeb(object): else: return self.__render('empty.tmpl', {}) - def distro_edit(self, name=None): + def distro_edit(self, name=None,**spam): if not self.__xmlrpc_setup(): return self.xmlrpc_auth_failure() @@ -330,7 +332,7 @@ class CobblerWeb(object): return (page, results_per_page, pages) - def system_list(self,page=None,limit=None): + def system_list(self,page=None,limit=None,**spam): if not self.__xmlrpc_setup(): return self.xmlrpc_auth_failure() @@ -456,7 +458,7 @@ class CobblerWeb(object): return self.system_list() - def system_edit(self, name=None): + def system_edit(self, name=None,**spam): if not self.__xmlrpc_setup(): return self.xmlrpc_auth_failure() @@ -474,7 +476,7 @@ class CobblerWeb(object): # ------------------------------------------------------------------------ # # Profiles # ------------------------------------------------------------------------ # - def profile_list(self,page=None,limit=None): + def profile_list(self,page=None,limit=None,**spam): if not self.__xmlrpc_setup(): return self.xmlrpc_auth_failure() @@ -491,10 +493,10 @@ class CobblerWeb(object): else: return self.__render('empty.tmpl', {}) - def subprofile_edit(self, name=None): + def subprofile_edit(self, name=None,**spam): return self.profile_edit(name,1) - def profile_edit(self, name=None, subprofile=0): + def profile_edit(self, name=None, subprofile=0, **spam): if not self.__xmlrpc_setup(): return self.xmlrpc_auth_failure() @@ -611,7 +613,7 @@ class CobblerWeb(object): # Repos # ------------------------------------------------------------------------ # - def repo_list(self,page=None,limit=None): + def repo_list(self,page=None,limit=None,**spam): if not self.__xmlrpc_setup(): return self.xmlrpc_auth_failure() @@ -628,7 +630,7 @@ class CobblerWeb(object): else: return self.__render('empty.tmpl', {}) - def repo_edit(self, name=None): + def repo_edit(self, name=None,**spam): if not self.__xmlrpc_setup(): return self.xmlrpc_auth_failure() @@ -706,14 +708,14 @@ class CobblerWeb(object): # Kickstart files # ------------------------------------------------------------------------ # - def ksfile_list(self): + def ksfile_list(self,**spam): if not self.__xmlrpc_setup(): return self.xmlrpc_auth_failure() return self.__render( 'ksfile_list.tmpl', { 'ksfiles': self.remote.get_kickstart_templates(self.token) } ) - def ksfile_edit(self, name=None): + def ksfile_edit(self, name=None,**spam): if not self.__xmlrpc_setup(): return self.xmlrpc_auth_failure() return self.__render( 'ksfile_edit.tmpl', { @@ -757,7 +759,7 @@ class CobblerWeb(object): mac = self.remote.get_random_mac() return mac - def error_page(self, message): + def error_page(self, message, **spam): # hack to remove some junk from remote fault errors so they # look as if they were locally generated and not exception-based. @@ -769,7 +771,7 @@ class CobblerWeb(object): 'message': message } ) - def xmlrpc_auth_failure(self): + def xmlrpc_auth_failure(self, **spam): return self.__render( 'error_page.tmpl', { 'message': "XMLRPC Authentication Error. See Apache logs for details." } ) diff --git a/cobbler/webui/master.py b/cobbler/webui/master.py index 356fceb..d4b1d2b 100644 --- a/cobbler/webui/master.py +++ b/cobbler/webui/master.py @@ -33,10 +33,10 @@ VFN=valueForName currentTime=time.time __CHEETAH_version__ = '2.0' __CHEETAH_versionTuple__ = (2, 0, 0, 'final', 0) -__CHEETAH_genTime__ = 1196374123.089437 -__CHEETAH_genTimestamp__ = 'Thu Nov 29 17:08:43 2007' +__CHEETAH_genTime__ = 1196809899.3260081 +__CHEETAH_genTimestamp__ = 'Tue Dec 4 18:11:39 2007' __CHEETAH_src__ = 'webui_templates/master.tmpl' -__CHEETAH_srcLastModified__ = 'Wed Nov 7 12:24:52 2007' +__CHEETAH_srcLastModified__ = 'Tue Dec 4 17:33:59 2007' __CHEETAH_docstring__ = 'Autogenerated by CHEETAH: The Python-Powered Template Engine' if __CHEETAH_versionTuple__ < RequiredCheetahVersionTuple: @@ -152,56 +152,56 @@ class master(Template): <li><a href="''') _v = VFFSL(SL,"base_url",True) # '$base_url' on line 32, col 22 if _v is not None: write(_filter(_v, rawExpr='$base_url')) # from line 32, col 22. - write('''/settings_view" class="menu">Settings</a></li> + write('''?mode=settings_view" class="menu">Settings</a></li> <li><hr/></li> <li>LIST</li> <li><a href="''') _v = VFFSL(SL,"base_url",True) # '$base_url' on line 35, col 22 if _v is not None: write(_filter(_v, rawExpr='$base_url')) # from line 35, col 22. - write('''/distro_list" class="menu">Distros</a></li> + write('''?mode=distro_list" class="menu">Distros</a></li> <li><a href="''') _v = VFFSL(SL,"base_url",True) # '$base_url' on line 36, col 22 if _v is not None: write(_filter(_v, rawExpr='$base_url')) # from line 36, col 22. - write('''/profile_list" class="menu">Profiles</a></li> + write('''?mode=profile_list" class="menu">Profiles</a></li> <li><a href="''') _v = VFFSL(SL,"base_url",True) # '$base_url' on line 37, col 22 if _v is not None: write(_filter(_v, rawExpr='$base_url')) # from line 37, col 22. - write('''/system_list" class="menu">Systems</a></li> + write('''?mode=system_list" class="menu">Systems</a></li> <li><a href="''') _v = VFFSL(SL,"base_url",True) # '$base_url' on line 38, col 22 if _v is not None: write(_filter(_v, rawExpr='$base_url')) # from line 38, col 22. - write('''/ksfile_list" class="menu">Kickstarts</a></li> + write('''?mode=ksfile_list" class="menu">Kickstarts</a></li> <li><a href="''') _v = VFFSL(SL,"base_url",True) # '$base_url' on line 39, col 22 if _v is not None: write(_filter(_v, rawExpr='$base_url')) # from line 39, col 22. - write('''/repo_list" class="menu">Repos</a></li> + write('''?mode=repo_list" class="menu">Repos</a></li> <li><hr/></li> <li>ADD</li> <li><a href="''') _v = VFFSL(SL,"base_url",True) # '$base_url' on line 42, col 22 if _v is not None: write(_filter(_v, rawExpr='$base_url')) # from line 42, col 22. - write('''/distro_edit" class="menu">Distro</a></li> + write('''?mode=distro_edit" class="menu">Distro</a></li> <li><a href="''') _v = VFFSL(SL,"base_url",True) # '$base_url' on line 43, col 22 if _v is not None: write(_filter(_v, rawExpr='$base_url')) # from line 43, col 22. - write('''/profile_edit" class="menu">Profile</a></li> + write('''?mode=profile_edit" class="menu">Profile</a></li> <li><a href="''') _v = VFFSL(SL,"base_url",True) # '$base_url' on line 44, col 22 if _v is not None: write(_filter(_v, rawExpr='$base_url')) # from line 44, col 22. - write('''/subprofile_edit" class="menu">Subprofile</a></li> + write('''?mode=subprofile_edit" class="menu">Subprofile</a></li> <li><a href="''') _v = VFFSL(SL,"base_url",True) # '$base_url' on line 45, col 22 if _v is not None: write(_filter(_v, rawExpr='$base_url')) # from line 45, col 22. - write('''/system_edit" class="menu">System</a></li> + write('''?mode=system_edit" class="menu">System</a></li> <li><a href="''') _v = VFFSL(SL,"base_url",True) # '$base_url' on line 46, col 22 if _v is not None: write(_filter(_v, rawExpr='$base_url')) # from line 46, col 22. - write('''/repo_edit" class="menu">Repo</a></li> + write('''?mode=repo_edit" class="menu">Repo</a></li> <li><hr/><br/></li> <li><a class="button sync" href="''') _v = VFFSL(SL,"base_url",True) # '$base_url' on line 48, col 42 if _v is not None: write(_filter(_v, rawExpr='$base_url')) # from line 48, col 42. - write('''/sync">Sync</a></li> + write('''?mode=sync">Sync</a></li> </ul> </div> |