aboutsummaryrefslogtreecommitdiff
path: root/modules
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
parentListen for 903 for sasl success, not 900 (diff)
signature
Support IRCv3's tls/STARTTLS
Diffstat (limited to 'modules')
-rw-r--r--modules/sasl.py6
-rw-r--r--modules/starttls.py26
2 files changed, 26 insertions, 6 deletions
diff --git a/modules/sasl.py b/modules/sasl.py
index 51e48587..32e20137 100644
--- a/modules/sasl.py
+++ b/modules/sasl.py
@@ -3,17 +3,11 @@ import base64
class Module(object):
def __init__(self, bot, events, exports):
self.bot = bot
- events.on("preprocess.connect").hook(self.preprocess_connect)
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.903").hook(self.sasl_success)
- def preprocess_connect(self, event):
- sasl = event["server"].get_setting("sasl")
- if sasl:
- event["server"].send_capability_request("sasl")
-
def on_cap(self, event):
has_sasl = "sasl" in event["capabilities"]
has_mechanisms = has_sasl and not event["capabilities"]["sasl"
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")
+