Implement additional error checking for provisioning instances and parsing messages, and prevent ZNC from auto-connecting an instance if ConnectOnCreate is off

This commit is contained in:
Mark Veidemanis 2019-02-01 23:26:01 +00:00
parent 8926cb76ec
commit a4b7bd50b1
4 changed files with 13 additions and 5 deletions

View File

@ -29,10 +29,11 @@ class Provision:
rtrn = provision.provisionRelayForNetwork(spl[1], spl[2], spl[3])
if rtrn == "PROVISIONED":
failure("Relay %s already provisioned for network %s" % (spl[1], spl[3]))
failure("Relay %s already provisioned for alias %s on network %s" % (spl[1], spl[2], spl[3]))
return
elif rtrn == "DUPLICATE":
failure("Instance with relay %s and alias %s already exists for network %s" % (spl[1], spl[2], spl[3]))
return
elif rtrn:
success("Started provisioning network %s on relay %s for alias %s" % (spl[3], spl[1], spl[2]))
info("Instance name is %s" % rtrn)

View File

@ -121,10 +121,14 @@ class IRCBot(IRCClient):
nick = step[0]
if len(step) == 2:
step2 = step[1].split("@")
if len(step2) == 2:
ident, host = step2
else:
ident = nick
host = nick
else:
ident = nick
host = nick
return [nick, ident, host]

View File

@ -29,7 +29,7 @@ class Server(Protocol):
def connectionMade(self):
log("Connection from %s:%s" % (self.addr.host, self.addr.port))
self.send("Hello.")
self.send("Greetings.")
def connectionLost(self, reason):
self.authed = False

View File

@ -54,8 +54,8 @@ def provisionRelayForAlias(relay, alias):
return True
def provisionRelayForNetwork(relay, alias, network):
if "networks" in main.relay[relay].keys():
if network in main.relay[relay]["networks"]:
if all([x in ["users", "networks"] for x in main.relay[relay].keys() if x in ["users", "networks"]]):
if network in main.relay[relay]["networks"] and alias in main.relay[relay]["users"]:
return "PROVISIONED"
else:
main.relay[relay]["networks"] = []
@ -87,5 +87,8 @@ def provisionRelayForNetwork(relay, alias, network):
main.saveConf("pool")
if main.config["ConnectOnCreate"]:
startBot(network+i)
else:
deliverRelayCommands(relay, {"status": ["Disconnect"]}, user=alias+"/"+network)
storedNetwork = True
return network+i