diff options
Diffstat (limited to 'ipsilon/info')
-rwxr-xr-x | ipsilon/info/common.py | 11 | ||||
-rwxr-xr-x | ipsilon/info/infoldap.py | 55 | ||||
-rwxr-xr-x | ipsilon/info/nss.py | 1 |
3 files changed, 32 insertions, 35 deletions
diff --git a/ipsilon/info/common.py b/ipsilon/info/common.py index 03de66a..586b9e5 100755 --- a/ipsilon/info/common.py +++ b/ipsilon/info/common.py @@ -5,14 +5,15 @@ # See the file named COPYING for the project license from ipsilon.util.log import Log -from ipsilon.util.plugin import PluginLoader, PluginObject -from ipsilon.util.plugin import PluginInstaller +from ipsilon.util.plugin import PluginInstaller, PluginLoader +from ipsilon.util.plugin import PluginObject, PluginConfig -class InfoProviderBase(PluginObject, Log): +class InfoProviderBase(PluginConfig, PluginObject): def __init__(self): - super(InfoProviderBase, self).__init__() + PluginConfig.__init__(self) + PluginObject.__init__(self) self._site = None self.is_enabled = False @@ -29,7 +30,7 @@ class InfoProviderBase(PluginObject, Log): # configure self if self.name in plugins['config']: - self.set_config(plugins['config'][self.name]) + self.import_config(plugins['config'][self.name]) plugins['enabled'].append(self) self.is_enabled = True diff --git a/ipsilon/info/infoldap.py b/ipsilon/info/infoldap.py index 70d36d5..369d3f1 100755 --- a/ipsilon/info/infoldap.py +++ b/ipsilon/info/infoldap.py @@ -8,7 +8,7 @@ from ipsilon.info.common import InfoProviderBase from ipsilon.info.common import InfoProviderInstaller from ipsilon.info.common import InfoMapping from ipsilon.util.plugin import PluginObject -from ipsilon.util.log import Log +from ipsilon.util import config as pconfig import ldap @@ -27,7 +27,7 @@ ldap_mapping = { } -class InfoProvider(InfoProviderBase, Log): +class InfoProvider(InfoProviderBase): def __init__(self): super(InfoProvider, self).__init__() @@ -36,34 +36,29 @@ class InfoProvider(InfoProviderBase, Log): self.name = 'ldap' self.description = """ Info plugin that uses LDAP to retrieve user data. """ - self._options = { - 'server url': [ - """ The LDAP server url """, - 'string', - 'ldap://example.com' - ], - 'tls': [ - " What TLS level show be required " + - "(Demand, Allow, Try, Never, NoTLS) ", - 'string', - 'Demand' - ], - 'bind dn': [ - """ User DN to bind as, if empty uses anonymous bind. """, - 'string', - 'uid=ipsilon,ou=People,dc=example,dc=com' - ], - 'bind password': [ - """ Password to use for bind operation """, - 'string', - 'Password' - ], - 'user dn template': [ - """ Template to turn username into DN. """, - 'string', - 'uid=%(username)s,ou=People,dc=example,dc=com' - ], - } + self.new_config( + self.name, + pconfig.String( + 'server url', + 'The LDAP server url.', + 'ldap://example.com'), + pconfig.Template( + 'user dn template', + 'Template to turn username into DN.', + 'uid=%(username)s,ou=People,dc=example,dc=com'), + pconfig.Pick( + 'tls', + 'What TLS level show be required', + ['Demand', 'Allow', 'Try', 'Never', 'NoTLS'], + 'Demand'), + pconfig.String( + 'bind dn', + 'DN to bind as, if empty uses anonymous bind.', + 'uid=ipsilon,ou=People,dc=example,dc=com'), + pconfig.String( + 'bind password', + 'Password to use for bind operation'), + ) @property def server_url(self): diff --git a/ipsilon/info/nss.py b/ipsilon/info/nss.py index 24f3522..3dfd885 100755 --- a/ipsilon/info/nss.py +++ b/ipsilon/info/nss.py @@ -25,6 +25,7 @@ class InfoProvider(InfoProviderBase): self.mapper = InfoMapping() self.mapper.set_mapping(posix_map) self.name = 'nss' + self.new_config(self.name) def _get_posix_user(self, user): p = pwd.getpwnam(user) |