Renovate the module system and implement adding and resuming pool instances using the new relay/alias/network system
This commit is contained in:
46
core/bot.py
46
core/bot.py
@@ -95,44 +95,27 @@ class IRCBot(IRCClient):
|
||||
error("Network with all numbers: %s" % name)
|
||||
self.buffer = ""
|
||||
self.name = name
|
||||
instance = main.pool[name]
|
||||
inst = main.pool[name]
|
||||
alias = main.alias[inst["alias"]]
|
||||
relay = main.relay[inst["relay"]]
|
||||
network = main.network[inst["network"]]
|
||||
|
||||
self.nickname = instance["nickname"]
|
||||
self.realname = instance["realname"]
|
||||
self.username = instance["username"]
|
||||
self.userinfo = instance["userinfo"]
|
||||
self.fingerReply = instance["finger"]
|
||||
self.versionName = instance["version"]
|
||||
self.nickname = alias["nick"]
|
||||
self.realname = alias["realname"]
|
||||
self.username = inst["alias"]+"/"+inst["network"]
|
||||
self.password = relay["password"]
|
||||
self.userinfo = None
|
||||
self.fingerReply = None
|
||||
self.versionName = None
|
||||
self.versionNum = None
|
||||
self.versionEnv = None
|
||||
self.sourceURL = instance["source"]
|
||||
self.autojoin = instance["autojoin"]
|
||||
self.sourceURL = None
|
||||
|
||||
self._who = {}
|
||||
self._getWho = {}
|
||||
|
||||
self._names = {}
|
||||
|
||||
self.authtype = instance["authtype"]
|
||||
if self.authtype == "ns":
|
||||
self.authpass = instance["password"]
|
||||
self.authentity = instance["authentity"]
|
||||
else:
|
||||
self.password = instance["password"]
|
||||
|
||||
def refresh(self):
|
||||
instance = main.pool[self.name]
|
||||
if not instance["nickname"] == self.nickname:
|
||||
self.nickname = instance["nickname"]
|
||||
self.setNick(self.nickname)
|
||||
|
||||
self.userinfo = instance["userinfo"]
|
||||
self.fingerReply = instance["finger"]
|
||||
self.versionName = instance["version"]
|
||||
self.versionNum = None
|
||||
self.versionEnv = None
|
||||
self.sourceURL = instance["source"]
|
||||
|
||||
def parsen(self, user):
|
||||
step = user.split("!")
|
||||
nick = step[0]
|
||||
@@ -350,10 +333,6 @@ class IRCBot(IRCClient):
|
||||
log("signed on: %s" % self.name)
|
||||
if main.config["Notifications"]["Connection"]:
|
||||
keyword.sendMaster("SIGNON: %s" % self.name)
|
||||
if self.authtype == "ns":
|
||||
self.msg(self.authentity, "IDENTIFY %s" % self.nspass)
|
||||
for i in self.autojoin:
|
||||
self.join(i)
|
||||
count.event(self.net, "signedon")
|
||||
|
||||
def joined(self, channel):
|
||||
@@ -454,7 +433,6 @@ class IRCBotFactory(ReconnectingClientFactory):
|
||||
def __init__(self, name, relay=None, relayCommands=None, user=None, stage2=None):
|
||||
if not name == None:
|
||||
self.name = name
|
||||
self.instance = main.pool[name]
|
||||
self.net = "".join([x for x in self.name if not x in digits])
|
||||
else:
|
||||
self.name = "Relay to "+relay
|
||||
|
||||
@@ -1,39 +1,38 @@
|
||||
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 addBot(name):
|
||||
instance = main.pool[name]
|
||||
log("Started bot %s to %s:%s protocol %s nickname %s" % (name,
|
||||
instance["host"],
|
||||
instance["port"],
|
||||
instance["protocol"],
|
||||
instance["nickname"]))
|
||||
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))
|
||||
|
||||
if instance["protocol"] == "ssl":
|
||||
keyFN = main.certPath+main.config["Key"]
|
||||
certFN = main.certPath+main.config["Certificate"]
|
||||
contextFactory = DefaultOpenSSLContextFactory(keyFN.encode("utf-8", "replace"),
|
||||
certFN.encode("utf-8", "replace"))
|
||||
if instance["bind"] == None:
|
||||
bot = IRCBotFactory(name)
|
||||
rct = reactor.connectSSL(instance["host"],
|
||||
int(instance["port"]),
|
||||
bot, contextFactory)
|
||||
keyFN = main.certPath+main.config["Key"]
|
||||
certFN = main.certPath+main.config["Certificate"]
|
||||
contextFactory = DefaultOpenSSLContextFactory(keyFN.encode("utf-8", "replace"),
|
||||
certFN.encode("utf-8", "replace"))
|
||||
if "bind" in main.relay[relay].keys():
|
||||
bot = IRCBotFactory(name)
|
||||
rct = reactor.connectSSL(host,
|
||||
port,
|
||||
bot, contextFactory,
|
||||
bindAddress=main.relay[relay]["bind"])
|
||||
|
||||
main.ReactorPool[name] = rct
|
||||
main.FactoryPool[name] = bot
|
||||
return
|
||||
else:
|
||||
main.ReactorPool[name] = rct
|
||||
main.FactoryPool[name] = bot
|
||||
return
|
||||
else:
|
||||
bot = IRCBotFactory(name)
|
||||
rct = reactor.connectSSL(host,
|
||||
port,
|
||||
bot, contextFactory)
|
||||
|
||||
bot = IRCBotFactory(name)
|
||||
rct = reactor.connectSSL(instance["host"],
|
||||
int(instance["port"]),
|
||||
bot, contextFactory,
|
||||
bindAddress=instance["bind"])
|
||||
main.ReactorPool[name] = rct
|
||||
main.FactoryPool[name] = bot
|
||||
return
|
||||
|
||||
main.ReactorPool[name] = rct
|
||||
main.FactoryPool[name] = bot
|
||||
return
|
||||
|
||||
@@ -22,9 +22,8 @@ def parseCommand(addr, authed, data):
|
||||
else:
|
||||
failure("No text was sent")
|
||||
return
|
||||
for i in main.CommandMap.keys():
|
||||
if spl[0] == i:
|
||||
main.CommandMap[i](addr, authed, data, obj, spl, success, failure, info, incUsage, length)
|
||||
return
|
||||
if spl[0] in main.CommandMap.keys():
|
||||
main.CommandMap[spl[0]](addr, authed, data, obj, spl, success, failure, info, incUsage, length)
|
||||
return
|
||||
incUsage(None)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user