diff options
| author | 2018-09-07 16:34:51 +0100 | |
|---|---|---|
| committer | 2018-09-07 16:34:51 +0100 | |
| commit | a4f0d1bf287762f6097c570ed11cc92ab5ef7131 (patch) | |
| tree | d21dfe1510fa21794c9c4da91f5d44ac617cb41e /modules/starttls.py | |
| parent | Listen for 903 for sasl success, not 900 (diff) | |
Support IRCv3's tls/STARTTLS
Diffstat (limited to 'modules/starttls.py')
| -rw-r--r-- | modules/starttls.py | 26 |
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") + |
