diff options
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/sasl.py | 23 |
1 files changed, 9 insertions, 14 deletions
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") |
