summaryrefslogtreecommitdiffstats
path: root/ipsilon/info/infosssd.py
diff options
context:
space:
mode:
Diffstat (limited to 'ipsilon/info/infosssd.py')
-rw-r--r--ipsilon/info/infosssd.py22
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