From acad80296a8a4f55557f23e0ef29fbc0533a6457 Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Tue, 29 Aug 2023 22:49:18 +0200 Subject: [PATCH] Services: Update 'identified' state using SASL status Otherwise features like auto-opping are permanently unavailable when using SASL instead of NickServ IDENTIFY --- plugins/Services/plugin.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/plugins/Services/plugin.py b/plugins/Services/plugin.py index 3087804b2..2ef33ebe0 100644 --- a/plugins/Services/plugin.py +++ b/plugins/Services/plugin.py @@ -372,6 +372,30 @@ class Services(callbacks.Plugin): self.log.info('Received notice from NickServ %s: %q.', on, ircutils.stripFormatting(msg.args[1])) + def do903(self, irc, msg): # RPL_SASLSUCCESS + if self.disabled(irc): + return + state = self._getState(irc) + state.identified = True + for channel in irc.state.channels.keys(): + self.checkPrivileges(irc, channel) + if irc.state.fsm in [irclib.IrcStateFsm.CONNECTED, + irclib.IrcStateFsm.CONNECTED_SASL]: + for channel in state.channels: + irc.queueMsg(networkGroup.channels.join(channel)) + waitingJoins = state.waitingJoins + state.waitingJoins = [] + for join in waitingJoins: + irc.sendMsg(join) + + do907 = do903 # ERR_SASLALREADY, just to be sure we didn't miss it + + def do901(self, irc, msg): # RPL_LOGGEDOUT + if self.disabled(irc): + return + state = self._getState(irc) + state.identified = False + def checkPrivileges(self, irc, channel): if self.disabled(irc): return