Implement registration and confirmation of nicks

This commit is contained in:
2020-05-30 21:40:10 +01:00
parent d99c3c394f
commit a3cdb35e05
9 changed files with 149 additions and 15 deletions

View File

@@ -14,6 +14,7 @@ from modules import userinfo
from modules import counters
from modules import monitor
from modules import chankeep
from modules import regproc
from core.relay import sendRelayNotification
from utils.dedup import dedup
@@ -97,12 +98,12 @@ class IRCRelay(IRCClient):
sendAll("%s: relay password mismatch" % self.num)
def sendStage2(self):
if not self.stage2 == None: # [["user", {"sasl": ["message1", "message2"]}], []]
if not len(self.stage2) == 0:
user = self.stage2[0].pop(0)
commands = self.stage2[0].pop(0)
del self.stage2[0]
deliverRelayCommands(self.num, commands, user, self.stage2)
# [["user", {"sasl": ["message1", "message2"]}], []]
if not len(self.stage2) == 0:
user = self.stage2[0].pop(0)
commands = self.stage2[0].pop(0)
del self.stage2[0]
deliverRelayCommands(self.num, commands, user, self.stage2)
def signedOn(self):
if not self.isconnected:
@@ -115,7 +116,8 @@ class IRCRelay(IRCClient):
reactor.callLater(sleeptime, self.msg, main.config["Tweaks"]["ZNC"]["Prefix"]+i, x)
sleeptime += increment
increment += 0.8
reactor.callLater(sleeptime, self.sendStage2)
if not self.stage2 == None:
reactor.callLater(sleeptime, self.sendStage2)
reactor.callLater(sleeptime+5, self.transport.loseConnection)
return
@@ -392,6 +394,9 @@ class IRCBot(IRCClient):
return d
def list(self, noargs=False, nocheck=False):
if not main.network[self.net].relays[self.num]["registered"]:
debug("Will not send LIST, unregistered: %s - %i" % (self.net, self.num))
return
if self.listAttempted:
debug("List request dropped, already asked for LIST - %s - %i" % (self.net, self.num))
return
@@ -448,7 +453,7 @@ class IRCBot(IRCClient):
else:
if self.listRetried:
self.listRetried = False
debug("List received after retry - defaulting to simple list syntax")
debug("List received after retry - defaulting to simple list syntax: %s - %i" % (self.net, self.num))
self.listSimple = True
def got_list(self, listinfo):
@@ -464,6 +469,10 @@ class IRCBot(IRCClient):
if not self.isconnected: # we don't care about
log("endpoint connected: %s - %i" % (self.net, self.num))
self.isconnected = True
if not main.network[self.net].relays[self.num]["registered"]:
if main.config["AutoReg"]:
regproc.registerAccount(self.net, self.num)
debug("Attempting to register: %s - %i" % (self.net, self.num))
for i in options:
if i.startswith("CHANLIMIT"):
if ":" in i:
@@ -673,7 +682,7 @@ class IRCBotFactory(ReconnectingClientFactory):
error = reason.getErrorMessage()
log("%s - %i: connection failed: %s" % (self.net, self.num, error))
if not self.relay:
sendAll("%s -%s: connection failed: %s" % (self.net, self.num, error))
sendAll("%s - %s: connection failed: %s" % (self.net, self.num, error))
sendRelayNotification({"type": "conn", "net": self.net, "num": self.num, "status": "failed", "message": error})
self.retry(connector)
#ReconnectingClientFactory.clientConnectionFailed(self, connector, reason)