aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorGravatar jesopo2018-09-03 11:14:27 +0100
committerGravatar jesopo2018-09-03 11:14:52 +0100
commit29851d4305bb4a3278260ef3530cd2558f360944 (patch)
tree8a3ddbf168439245cc152492ff8286b41ee557db /modules
parentAdd greeting.py (diff)
signature
Make CAP functionality more part of the framework and support message-tags and
multi-prefix
Diffstat (limited to 'modules')
-rw-r--r--modules/sasl.py23
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")