aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/sasl.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/modules/sasl.py b/modules/sasl.py
index 7bde0813..8df4b3c9 100644
--- a/modules/sasl.py
+++ b/modules/sasl.py
@@ -14,9 +14,16 @@ class Module(object):
event["server"].send_capability_request("sasl")
def on_cap(self, event):
- if "sasl" in event["capabilities"] and event["server"].get_setting(
- "sasl", None):
+ has_sasl = "sasl" in event["capabilities"]
+ has_mechanisms = has_sasl and not event["capabilities"]["sasl"
+ ] == None
+ has_plaintext = has_mechanisms and "PLAIN" in event["capabilities"
+ ]["sasl"].split(",")
+
+ if has_sasl and (has_plaintext or not has_mechanisms) and event[
+ "server"].get_setting("sasl", None):
event["server"].queue_capability("sasl")
+
def on_cap_ack(self, event):
if "sasl" in event["capabilities"]:
event["server"].send_authenticate("PLAIN")