diff options
| author | 2019-05-12 14:10:59 +0100 | |
|---|---|---|
| committer | 2019-05-12 14:10:59 +0100 | |
| commit | 1c296826d7e20def21ec577c71590dee4bb1c0e1 (patch) | |
| tree | 99bfbc84a4fcd8f31541664fca4cd187c0db1cd7 /src | |
| parent | Handle ERR_SASLALREADY (diff) | |
| signature | ||
Move module black/white list to IRCBot, allow "safe" loading of all modules
Diffstat (limited to 'src')
| -rw-r--r-- | src/IRCBot.py | 7 | ||||
| -rw-r--r-- | src/ModuleManager.py | 16 |
2 files changed, 21 insertions, 2 deletions
diff --git a/src/IRCBot.py b/src/IRCBot.py index 8879b328..a3cc84c1 100644 --- a/src/IRCBot.py +++ b/src/IRCBot.py @@ -59,6 +59,13 @@ class Bot(object): elif type == TriggerResult.Return: return returned + def load_modules(self, safe: bool=False + ) -> typing.Tuple[typing.List[str], typing.List[str]]: + whitelist = self.get_setting("module-whitelist", []) + blacklist = self.get_setting("module-blacklist", []) + return self.modules.load_modules(self, whitelist=whitelist, + blacklist=blacklist, safe=safe) + def add_server(self, server_id: int, connect: bool = True, connection_param_args: typing.Dict[str, str]={} ) -> IRCServer.Server: diff --git a/src/ModuleManager.py b/src/ModuleManager.py index f764b445..49d00772 100644 --- a/src/ModuleManager.py +++ b/src/ModuleManager.py @@ -193,14 +193,26 @@ class ModuleManager(object): return loaded_module def load_modules(self, bot: "IRCBot.Bot", whitelist: typing.List[str]=[], - blacklist: typing.List[str]=[]): + blacklist: typing.List[str]=[], safe: bool=False + ) -> typing.Tuple[typing.List[str], typing.List[str]]: + fail = [] + success = [] for type, path in self.list_modules(): name = self._module_name(path) if name in whitelist or (not whitelist and not name in blacklist): try: self.load_module(bot, name) except ModuleWarning: - pass + fail.append(name) + continue + except Exception as e: + if safe: + fail.append(name) + continue + else: + raise + success.append(name) + return success, fail def unload_module(self, name: str): if not name in self.modules: |
