diff options
Diffstat (limited to 'ipsilon/info/infosssd.py')
-rw-r--r-- | ipsilon/info/infosssd.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/ipsilon/info/infosssd.py b/ipsilon/info/infosssd.py index 0dd78cc..fec3a48 100644 --- a/ipsilon/info/infosssd.py +++ b/ipsilon/info/infosssd.py @@ -9,6 +9,7 @@ from ipsilon.info.common import InfoProviderBase from ipsilon.info.common import InfoProviderInstaller from ipsilon.util.plugin import PluginObject from ipsilon.util.policy import Policy +from ipsilon.admin.common import AdminError from string import Template import cherrypy import time @@ -80,6 +81,27 @@ class InfoProvider(InfoProviderBase): return reply + """ + The SSSD plugin can only be properly enabled and disabled as root + so it isn't something that can be done in the UI. Use the hacky + location to determine where in the stack we are to know how the + call came in, either via initialization or the admin UI. + """ + + def enable(self): + location = self.call_location() + if 'ipsilon/admin/common.py' in location: + raise AdminError('sssd plugin cannot be enabled from the UI') + else: + super(InfoProvider, self).enable() + + def disable(self): + location = self.call_location() + if 'ipsilon/admin/common.py' in location: + raise AdminError('sssd plugin cannot be disabled from the UI') + else: + super(InfoProvider, self).disable() + CONF_TEMPLATE = """ LoadModule lookup_identity_module modules/mod_lookup_identity.so |