Rework data structures, storing all front-end network data in Network objects

This commit is contained in:
Al Beano
2019-08-11 21:58:14 +01:00
parent f6657cb905
commit e5adcfef4c
24 changed files with 258 additions and 284 deletions

View File

@@ -20,13 +20,14 @@ from utils.logging.send import *
from twisted.internet.ssl import DefaultOpenSSLContextFactory
def deliverRelayCommands(relay, relayCommands, user=None, stage2=None):
# where relay is a dictionary extracted from the Network object
keyFN = main.certPath+main.config["Key"]
certFN = main.certPath+main.config["Certificate"]
contextFactory = DefaultOpenSSLContextFactory(keyFN.encode("utf-8", "replace"),
certFN.encode("utf-8", "replace"))
bot = IRCBotFactory(None, relay, relayCommands, user, stage2)
rct = reactor.connectSSL(main.relay[relay]["host"],
int(main.relay[relay]["port"]),
rct = reactor.connectSSL(relay["host"],
int(relay["port"]),
bot, contextFactory)
class IRCRelay(IRCClient):
@@ -34,10 +35,10 @@ class IRCRelay(IRCClient):
self.connected = False
self.buffer = ""
if user == None:
self.user = main.relay[relay]["user"]
self.user = relay["user"]
else:
self.user = user
password = main.relay[relay]["password"]
password = relay["password"]
self.nickname = self.user
self.realname = self.user
self.username = self.user
@@ -88,7 +89,7 @@ class IRCRelay(IRCClient):
return
class IRCBot(IRCClient):
def __init__(self, name):
def __init__(self, name, relay):
self.connected = False
self.channels = []
self.net = "".join([x for x in name if not x in digits])
@@ -96,14 +97,11 @@ class IRCBot(IRCClient):
error("Network with all numbers: %s" % name)
self.buffer = ""
self.name = name
inst = main.pool[name]
alias = main.alias[inst["alias"]]
relay = main.relay[inst["relay"]]
network = main.network[inst["network"]]
alias = relay["alias"]
self.nickname = alias["nick"]
self.realname = alias["realname"]
self.username = inst["alias"]+"/"+inst["network"]
self.username = alias["nick"]+"/"+relay["net"]
self.password = relay["password"]
self.userinfo = None
self.fingerReply = None
@@ -448,7 +446,7 @@ class IRCBotFactory(ReconnectingClientFactory):
self.name = name
self.net = "".join([x for x in self.name if not x in digits])
else:
self.name = "Relay to "+relay
self.name = "Relay to "+relay["net"]+relay["id"]
self.client = None
self.maxDelay = main.config["Tweaks"]["Delays"]["MaxDelay"]
self.initialDelay = main.config["Tweaks"]["Delays"]["InitialDelay"]
@@ -459,7 +457,7 @@ class IRCBotFactory(ReconnectingClientFactory):
def buildProtocol(self, addr):
if self.relay == None:
entry = IRCBot(self.name)
entry = IRCBot(self.name, self.relay)
main.IRCPool[self.name] = entry
else:
entry = IRCRelay(self.relay, self.relayCommands, self.user, self.stage2)

View File

@@ -1,27 +0,0 @@
from twisted.internet import reactor
from core.bot import IRCBot, IRCBotFactory
from twisted.internet.ssl import DefaultOpenSSLContextFactory
import main
from utils.logging.log import *
def startBot(name):
inst = main.pool[name]
relay, alias, network = inst["relay"], inst["alias"], inst["network"]
host = main.relay[relay]["host"]
port = int(main.relay[relay]["port"])
log("Started bot %s to %s network %s" % (name, relay, network))
keyFN = main.certPath+main.config["Key"]
certFN = main.certPath+main.config["Certificate"]
contextFactory = DefaultOpenSSLContextFactory(keyFN.encode("utf-8", "replace"),
certFN.encode("utf-8", "replace"))
bot = IRCBotFactory(name)
rct = reactor.connectSSL(host,
port,
bot, contextFactory)
main.ReactorPool[name] = rct
main.FactoryPool[name] = bot
return