From 60b052af0c0401acd37ac208dceca0e9abacfa68 Mon Sep 17 00:00:00 2001 From: oddluck <39967334+oddluck@users.noreply.github.com> Date: Sun, 23 Feb 2020 18:47:50 +0000 Subject: [PATCH] UndernetX: noJoinsUntilAuthed --- UndernetX/plugin.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/UndernetX/plugin.py b/UndernetX/plugin.py index d31935a..0d20562 100644 --- a/UndernetX/plugin.py +++ b/UndernetX/plugin.py @@ -50,8 +50,11 @@ class UndernetX(callbacks.Plugin): self.__parent = super(UndernetX, self) callbacks.Plugin.__init__(self, irc) instance.irc = irc + self.reset() + def _login(self, irc): + self.reset() username = self.registryValue('auth.username') password = self.registryValue('auth.password') xserv = self.registryValue('auth.xservice') @@ -66,7 +69,11 @@ class UndernetX(callbacks.Plugin): if modex: log.info("Setting +x") irc.sendMsg(ircmsgs.IrcMsg("MODE {} +x".format(irc.nick))) - + self.identified = True + waitingJoins = self.waitingJoins.pop(irc.network, None) + if waitingJoins: + for m in waitingJoins: + irc.sendMsg(m) else: log.info("Received a NOTICE from X. msg: {}".format(msg.args[1])) return @@ -76,6 +83,22 @@ class UndernetX(callbacks.Plugin): else: log.debug("Notice isn't from UnderNet.. Ignoring") + def reset(self): + self.identified = False + self.waitingJoins = {} + + def outFilter(self, irc, msg): + if irc.state.supported.get('NETWORK', '') == 'UnderNet': + if msg.command == 'JOIN': + if not self.identified: + if self.registryValue('auth.noJoinsUntilAuthed'): + self.log.info('Holding JOIN to %s @ %s until identified.', + msg.channel, irc.network) + self.waitingJoins.setdefault(irc.network, []) + self.waitingJoins[irc.network].append(msg) + return None + return msg + def do376(self, irc, msg): """Watch for the MOTD and login if we can""" if irc.state.supported.get('NETWORK', '') == 'UnderNet':