From 29851d4305bb4a3278260ef3530cd2558f360944 Mon Sep 17 00:00:00 2001 From: jesopo Date: Mon, 3 Sep 2018 11:14:27 +0100 Subject: Make CAP functionality more part of the framework and support message-tags and multi-prefix --- modules/sasl.py | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) (limited to 'modules') diff --git a/modules/sasl.py b/modules/sasl.py index 15a7523a..a5092615 100644 --- a/modules/sasl.py +++ b/modules/sasl.py @@ -4,10 +4,9 @@ class Module(object): def __init__(self, bot, events, exports): self.bot = bot events.on("preprocess.connect").hook(self.preprocess_connect) - events.on("received.cap").hook(self.on_cap) + events.on("received.cap.ls").hook(self.on_cap) + events.on("received.cap.ack").hook(self.on_cap_ack) events.on("received.authenticate").hook(self.on_authenticate) - events.on("received.numeric").on( - "902", "903", "904", "905", "906", "907", "908").hook(self.on_90x) def preprocess_connect(self, event): sasl = event["server"].get_setting("sasl") @@ -15,13 +14,12 @@ class Module(object): event["server"].send_capability_request("sasl") def on_cap(self, event): - if event["subcommand"] == "NAK": - event["server"].send_capability_end() - elif event["subcommand"] == "ACK": - if not "sasl" in event["capabilities"]: - event["server"].send_capability_end() - else: - event["server"].send_authenticate("PLAIN") + if "sasl" in event["capabilities"]: + event["server"].queue_capability("sasl") + def on_cap_ack(self, event): + if "sasl" in event["capabilities"]: + event["server"].send_authenticate("PLAIN") + event["server"].wait_for_capability("sasl") def on_authenticate(self, event): if event["message"] != "+": @@ -33,7 +31,4 @@ class Module(object): auth_text = base64.b64encode(auth_text.encode("utf8")) auth_text = auth_text.decode("utf8") event["server"].send_authenticate(auth_text) - - def on_90x(self, event): - event["server"].send_capability_end() - + event["server"].capability_done("sasl") -- cgit v1.3.1-10-gc9f91