diff options
| author | 2019-05-12 14:10:59 +0100 | |
|---|---|---|
| committer | 2019-05-12 14:10:59 +0100 | |
| commit | 1c296826d7e20def21ec577c71590dee4bb1c0e1 (patch) | |
| tree | 99bfbc84a4fcd8f31541664fca4cd187c0db1cd7 | |
| parent | Handle ERR_SASLALREADY (diff) | |
| signature | ||
Move module black/white list to IRCBot, allow "safe" loading of all modules
| -rw-r--r-- | src/IRCBot.py | 7 | ||||
| -rw-r--r-- | src/ModuleManager.py | 16 | ||||
| -rwxr-xr-x | start.py | 5 |
3 files changed, 23 insertions, 5 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: @@ -71,12 +71,11 @@ if args.module: module.module.command_line(args.module_args) sys.exit(0) -whitelist = bot.get_setting("module-whitelist", []) -blacklist = bot.get_setting("module-blacklist", []) server_configs = bot.database.servers.get_all() + if len(server_configs): - modules.load_modules(bot, whitelist=whitelist, blacklist=blacklist) + bot.load_modules() servers = [] for server_id, alias in server_configs: |
