aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/ircv3_sasl/__init__.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/modules/ircv3_sasl/__init__.py b/modules/ircv3_sasl/__init__.py
index e1ca6193..d124fae3 100644
--- a/modules/ircv3_sasl/__init__.py
+++ b/modules/ircv3_sasl/__init__.py
@@ -20,6 +20,9 @@ def _validate(s):
@utils.export("serverset", {"setting": "sasl",
"help": "Set the sasl username/password for this server",
"validate": _validate, "example": "PLAIN BitBot:hunter2"})
+@utils.export("serverset", {"setting": "sasl-hard-fail",
+ "help": "Set whether a SASL failure should cause a disconnect",
+ "validate": utils.bool_or_none, "example": "on"})
class Module(ModuleManager.BaseModule):
def _best_userpass_mechanism(self, mechanisms):
for potential_mechanism in USERPASS_MECHANISMS:
@@ -144,9 +147,12 @@ class Module(ModuleManager.BaseModule):
self._end_sasl(event["server"])
def _panic(self, server, message):
- message = "SASL panic for %s: %s" % (str(server), message)
- if not server.from_init:
- self.log.error(message)
- self.bot.disconnect(server)
+ if server.get_setting("sasl-hard-fail", True):
+ message = "SASL panic for %s: %s" % (str(server), message)
+ if not server.from_init:
+ self.log.error(message)
+ self.bot.disconnect(server)
+ else:
+ self.bot.panic(reason=message)
else:
- self.bot.panic(reason=message)
+ self._end_sasl()