aboutsummaryrefslogtreecommitdiff
path: root/modules/starttls.py
diff options
context:
space:
mode:
authorGravatar jesopo2018-09-07 16:34:51 +0100
committerGravatar jesopo2018-09-07 16:34:51 +0100
commita4f0d1bf287762f6097c570ed11cc92ab5ef7131 (patch)
treed21dfe1510fa21794c9c4da91f5d44ac617cb41e /modules/starttls.py
parentListen for 903 for sasl success, not 900 (diff)
Support IRCv3's tls/STARTTLS
Diffstat (limited to 'modules/starttls.py')
-rw-r--r--modules/starttls.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/modules/starttls.py b/modules/starttls.py
new file mode 100644
index 00000000..e3e69341
--- /dev/null
+++ b/modules/starttls.py
@@ -0,0 +1,26 @@
+import base64
+
+class Module(object):
+ def __init__(self, bot, events, exports):
+ self.bot = bot
+ events.on("received.cap.ls").hook(self.on_cap)
+ events.on("received.cap.ack").hook(self.on_cap_ack)
+
+ events.on("received.numeric.670").hook(self.starttls_success)
+ events.on("received.numeric.691").hook(self.starttls_failed)
+
+ def on_cap(self, event):
+ if "tls" in event["capabilities"].keys() and not event["server"].tls:
+ event["server"].queue_capability("tls")
+
+ def on_cap_ack(self, event):
+ if "tls" in event["capabilities"].keys():
+ event["server"].send_starttls()
+ event["server"].wait_for_capability("tls")
+
+ def starttls_success(self, event):
+ event["server"].wrap_tls()
+ event["server"].capability_done("tls")
+ def starttls_failed(self, event):
+ event["server"].capability_done("tls")
+