From f02a96613af7f73dbcc71937650cd6ec66730e43 Mon Sep 17 00:00:00 2001 From: Julian Marcos Date: Tue, 28 Dec 2021 23:07:03 +0100 Subject: [PATCH] [ZNC] Make znc user. --- .gitignore | 2 ++ makeuser | 3 +++ znccreate.py | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 znccreate.py diff --git a/.gitignore b/.gitignore index 6a18ad4..e4e35e3 100644 --- a/.gitignore +++ b/.gitignore @@ -94,3 +94,5 @@ ENV/ # Rope project settings .ropeproject +# znc config +znc-config.json diff --git a/makeuser b/makeuser index e7240b0..bb562b0 100755 --- a/makeuser +++ b/makeuser @@ -55,6 +55,9 @@ case $1 in echo "adding ssh pubkey" echo "$3" | sudo tee /home/$1/.ssh/authorized_keys + echo "making znc user" + ./znccreate.py "$1" "$newpw" + echo "announcing new user on mastodon" toot "welcome new user ~$1!" diff --git a/znccreate.py b/znccreate.py new file mode 100644 index 0000000..d1685de --- /dev/null +++ b/znccreate.py @@ -0,0 +1,39 @@ +#!/usr/bin/python3.8 +import socket, ssl, json, time, sys +# Takes the first argument as a username and the second as the password. +def loadconf(cfgfile): + with open(cfgfile, 'r') as f: + cfg = json.load(f) + return cfg +def send(msg): + s.send(f"{msg}\n".encode('utf-8')) + +cfg = loadconf("znc-config.json") + +readbuffer="" +s = socket.socket() +if cfg['tls'] == 'yes': + ctx = ssl.create_default_context(purpose=ssl.Purpose.CLIENT_AUTH) + s = ctx.wrap_socket(s) +s.connect((cfg['srv'], int(cfg['port']))) +send("NICK bot") +send("USER bot 0 * :A bot to make users") + +while True: + readbuffer = readbuffer + s.recv(2048).decode('utf-8') + temp = str.split(readbuffer, "\n") + readbuffer = temp.pop() + + for line in temp: + line = str.rstrip(line) + line = str.split(line) + + #print(' '.join(line)) + if line[1] == '464': + send(f"PASS {cfg['user']}:{cfg['password']}") + if line[0][1:] == 'irc.znc.in' and line[1] == '001': + user = sys.argv[1] + pswd = sys.argv[2] + send(f"PRIVMSG *controlpanel :AddUser {user} {pswd}") + print(f"Maken znc user {user}") + sys.exit(0)