Implement registration and confirmation of nicks
This commit is contained in:
27
core/bot.py
27
core/bot.py
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user