dockerfiles/hosted-znc/athemesasl.py

32 lines
1.0 KiB
Python

import base64
import znc
class athemesasl(znc.Module):
module_types = [znc.CModInfo.UserModule]
def __init__(self):
self.description = "Atheme SASL"
def OnServerCapAvailable(self, scap):
self.cookie = self.getCookie()
self.username = self.GetUser().GetUserName()
return scap == "sasl"
def OnServerCapResult(self, scap, success):
if scap == "sasl":
if success:
self.PutIRC("AUTHENTICATE AUTHCOOKIE")
self.PutIRC("AUTHENTICATE " +
self.makeSaslAuthString(self.username, self.cookie))
self.PutUser(":bnc.yolo-swag.com NOTICE * :*** Authenticated over Atheme XMLRPC")
def makeSaslAuthString(self, username, cookie):
return (base64.b64encode(bytes("%s\0%s\0%s" %
(username, username, cookie), "utf-8"))).decode("utf-8")
def getCookie(self):
with open("/tmp/znc-cookie-%s" %
self.GetUser().GetUserName(), "r") as fin:
return fin.readline()