Implement authentication detection

* pending command to see which instances have never authenticated
* authcheck command to see which instances are not currently
  authenticated
This commit is contained in:
2020-05-31 21:52:56 +01:00
parent 12db2f349e
commit 45070b06e2
7 changed files with 96 additions and 16 deletions

View File

@@ -1,6 +1,7 @@
import main
from modules import provision
from utils.logging.log import *
from utils.logging.debug import *
from copy import deepcopy
def selectInst(net):
@@ -11,11 +12,10 @@ def selectInst(net):
inst[i] = main.irc["_"][i]
else:
inst = main.irc["_"]
print(inst)
print("hello")
return inst
def registerAccount(net, num):
debug("Attempting to register: %s - %i" % (net, num))
alias = main.alias[num]
nickname = alias["nick"]
username = nickname+"/"+net
@@ -42,17 +42,43 @@ def confirmAccount(net, num, token):
main.IRCPool[name].msg(entity, cmd)
enableAuthentication(net, num)
def confirmRegistration(net, num):
obj = main.network[net]
name = net+str(num)
if name in main.IRCPool.keys():
debug("Relay authenticated: %s - %i" %(net, num))
main.IRCPool[name].authenticated = True
if obj.relays[num]["registered"]:
return
if name in main.IRCPool.keys():
if main.IRCPool[name]._regAttempt:
main.IRCPool[name]._regAttempt.cancel()
obj.relays[num]["registered"] = True
main.saveConf("network")
def enableAuthentication(net, num):
obj = main.network[net]
nick = main.alias[num]["nick"]
security = obj.security
auth = obj.auth
password = obj.aliases[num]["password"]
uname = main.alias[num]["nick"]+"/"+net
provision.provisionAuthenticationData(num, nick, net, security, auth, password) # Set up for auth
if obj.relays[num]["registered"]:
warn("Authentication already enabled: %s - %i" % (net, num))
obj.relays[num]["registered"] = True
main.saveConf("network")
main.IRCPool[net+str(num)].msg(main.config["Tweaks"]["ZNC"]["Prefix"]+"status", "Jump")
if selectInst(net)["check"] == False:
confirmRegistration(net, num)
def registerTest(c):
inst = selectInst(c["net"])
if inst["check"] == False:
return
if inst["checktype"] == "msg":
if c["type"] == "query":
if inst["checkmsg"] in c["msg"] and c["nick"] == inst["entity"]:
confirmRegistration(c["net"], c["num"])
return
elif inst["checktype"] == "mode":
if c["type"] == "mode":
if inst["checkmode"] in c["modes"] and c["status"] == True:
confirmRegistration(c["net"], c["num"])
return