aboutsummaryrefslogtreecommitdiffstats
path: root/src/msec/libmsec.py
diff options
context:
space:
mode:
authorEugeni Dodonov <eugeni@mandriva.org>2009-02-05 21:19:26 +0000
committerEugeni Dodonov <eugeni@mandriva.org>2009-02-05 21:19:26 +0000
commit5931a0b6c4197e7c9801a7f156a63966a06cf099 (patch)
tree2e56ac45e0d3321a2dea57604ac1829e27dc2374 /src/msec/libmsec.py
parentd424120e150c2b10b44202c3cb3cd49424ef401c (diff)
downloadmsec-5931a0b6c4197e7c9801a7f156a63966a06cf099.tar
msec-5931a0b6c4197e7c9801a7f156a63966a06cf099.tar.gz
msec-5931a0b6c4197e7c9801a7f156a63966a06cf099.tar.bz2
msec-5931a0b6c4197e7c9801a7f156a63966a06cf099.tar.xz
msec-5931a0b6c4197e7c9801a7f156a63966a06cf099.zip
Added initial support for plugins.
Diffstat (limited to 'src/msec/libmsec.py')
-rwxr-xr-xsrc/msec/libmsec.py25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/msec/libmsec.py b/src/msec/libmsec.py
index 98a022d..b1448a8 100755
--- a/src/msec/libmsec.py
+++ b/src/msec/libmsec.py
@@ -721,6 +721,9 @@ class MSEC:
self.configfiles.add_config_assoc(SYSLOGCONF, '[ -f /var/lock/subsys/syslog ] && service syslog reload')
self.configfiles.add_config_assoc('^/etc/issue$', '/usr/bin/killall mingetty')
+ # plugins
+ self.plugins = {}
+
def reset(self):
"""Resets the configuration"""
self.log.debug("Resetting msec data.")
@@ -728,10 +731,30 @@ class MSEC:
def get_action(self, name):
"""Determines correspondent function for requested action."""
+ # finding out what function to call
+ try:
+ plugin, callback = name.split(".", 1)
+ except:
+ # bad format?
+ self.log.error(_("Invalid callback: %s") % (name))
+ return None
+
+ # is it a main function or a plugin?
+ if plugin == config.MAIN_LIB:
+ plugin_ = self
+ else:
+ if plugin in self.plugins:
+ plugin_ = self.plugins[plugin]
+ else:
+ self.log.info(_("Plugin %s not found") % plugin)
+ return self.log.info
+ return None
try:
- func = getattr(self, name)
+ func = getattr(plugin_, callback)
return func
except:
+ self.log.info(_("Not supported function '%s' in '%s'") % (callback, plugin))
+ traceback.print_exc()
return None
def commit(self, really_commit=True):