Implement the backend for automatically provisioning relays

This commit is contained in:
2019-01-26 01:57:24 +00:00
parent 6046329a83
commit 4efea3f535
15 changed files with 356 additions and 160 deletions

View File

@@ -1,35 +1,27 @@
from twisted.internet import reactor
from twisted.internet.ssl import DefaultOpenSSLContextFactory
from core.bot import IRCBot, IRCBotFactory
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"]))
if instance["protocol"] == "plain":
log("Started bot %s to %s:%s protocol %s nickname %s" % (name,
instance["host"],
instance["port"],
instance["protocol"],
instance["nickname"]))
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.connectTCP(instance["host"], instance["port"], bot, timeout=int(instance["timeout"]))
main.ReactorPool[name] = rct
main.FactoryPool[name] = bot
return
else:
bot = IRCBotFactory(name)
rct = reactor.connectTCP(instance["host"], instance["port"], bot, timeout=int(instance["timeout"]), bindAddress=instance["bind"])
main.ReactorPool[name] = rct
main.FactoryPool[name] = bot
return
elif instance["protocol"] == "ssl":
keyFN = main.certPath+instance["key"]
certFN = main.certPath+instance["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)
rct = reactor.connectSSL(instance["host"],
int(instance["port"]),
bot, contextFactory)
main.ReactorPool[name] = rct
main.FactoryPool[name] = bot
@@ -37,7 +29,10 @@ def addBot(name):
else:
bot = IRCBotFactory(name)
rct = reactor.connectSSL(instance["host"], int(instance["port"]), bot, contextFactory, bindAddress=instance["bind"])
rct = reactor.connectSSL(instance["host"],
int(instance["port"]),
bot, contextFactory,
bindAddress=instance["bind"])
main.ReactorPool[name] = rct
main.FactoryPool[name] = bot