aboutsummaryrefslogtreecommitdiff
path: root/modules/sasl
diff options
context:
space:
mode:
authorGravatar jesopo2019-05-11 18:22:40 +0100
committerGravatar jesopo2019-05-11 18:22:40 +0100
commitd291cd506373046d703450bc9d97082b89cbe8be (patch)
tree41a80e2c54f041d0bc550e9201c5119a6aab14f6 /modules/sasl
parentChange ducks-min-message default to 100 (diff)
Revamp how CAPs are tracked through REQ and ACK/NAK etc
Diffstat (limited to 'modules/sasl')
-rw-r--r--modules/sasl/__init__.py28
1 files changed, 14 insertions, 14 deletions
diff --git a/modules/sasl/__init__.py b/modules/sasl/__init__.py
index f6292d4a..b0635b4d 100644
--- a/modules/sasl/__init__.py
+++ b/modules/sasl/__init__.py
@@ -41,22 +41,22 @@ class Module(ModuleManager.BaseModule):
do_sasl = True
if do_sasl:
- event["server"].queue_capability("sasl")
+ cap = utils.irc.Capability("sasl")
+ cap.on_ack(lambda: self._sasl_ack(event["server"]))
+ return cap
- @utils.hook("received.cap.ack")
- def on_cap_ack(self, event):
- if "sasl" in event["capabilities"]:
- sasl = event["server"].get_setting("sasl")
- mechanism = sasl["mechanism"].upper()
- if mechanism == "USERPASS":
- server_mechanisms = event["server"].server_capabilities["sasl"]
- server_mechanisms = server_mechanisms or [
- USERPASS_MECHANISMS[0]]
- mechanism = self._best_userpass_mechanism(server_mechanisms)
+ def _sasl_ack(self, server):
+ sasl = server.get_setting("sasl")
+ mechanism = sasl["mechanism"].upper()
+ if mechanism == "USERPASS":
+ server_mechanisms = server.server_capabilities["sasl"]
+ server_mechanisms = server_mechanisms or [
+ USERPASS_MECHANISMS[0]]
+ mechanism = self._best_userpass_mechanism(server_mechanisms)
- event["server"].send_authenticate(mechanism)
- event["server"].sasl_mechanism = mechanism
- event["server"].wait_for_capability("sasl")
+ server.send_authenticate(mechanism)
+ server.sasl_mechanism = mechanism
+ server.wait_for_capability("sasl")
@utils.hook("received.authenticate")
def on_authenticate(self, event):