1
0
vcp-bula-nixfiles/hosts/radius/generate_passwords.py

87 lines
2.2 KiB
Python
Raw Normal View History

###
# Hier werden die Passwörter generiert und sie VLANs zugeordnet. Diese Datei
# kann nach `radius.bula22.de:/etc/raddb/mods-config/files/authorize` geschoben
# werden.
#
# ACHTUNG! Die Passwörter sind nicht idempotent, sondern werden neu generiert.
# Das Skript also nur ausführen, solange die User noch nicht online sind.
# Danach muss wieder manuell gefrickelt werden. Das Passwort für leitstelle01
# ist bereits publik, darum wird es hier überschrieben.
#
# Anpassbar:
# - Welcher Userprefix kommt in welches VLAN.
# - Wie viele User gehen pro Prefix online?
#
# Fragen? Fragen! DECT664 oder über Signal / Matrix / rfc1149.
###
import secrets
import string
USERS_PER_PREFIX = 20
LEITSTELLE01_PW = "Findest du in der existierenden authorize file"
### LEITSTELLE
# DEFAULT
# Tunnel-Private-Group-Id = "205",
# Fall-Through = Yes
#
# leitstelle01 Cleartext-Password := "oofahcul3aiV4ri8"
prefixes = [
(201, "ikt"),
(202, "buehne"),
(202, "technik"),
(203, "hospital"),
(204, "zoll"),
(205, "leitstelle"),
(206, "bll"),
(206, "finanzen"),
(208, "bayern"),
(208, "elydipark"),
(208, "hessen"),
(208, "trabantenstadt"),
(208, "waltara"),
(208, "zeche"),
(209, "infojurte"),
(210, "intfairground"),
(210, "intinfocenter"),
(211, "programmtre"),
(212, "openoffice")
]
def gen_password():
alphabet = string.ascii_letters + string.digits
return ''.join(secrets.choice(alphabet) for i in range(10))
print("DEFAULT")
print("\tTunnel-Type = \"VLAN\",")
print("\tTunnel-Medium-Type = IEEE-802,")
print("\tFall-Through = Yes")
print()
csv_file = "Username,password\n"
for (vlan, prefix) in prefixes:
print(f"## {prefix.upper()}")
print(f"DEFAULT")
print(f"\tTunnel-Private-Group-Id := \"{vlan}\",")
print(f"\tFall-Through = Yes")
print()
for i in range(1, USERS_PER_PREFIX + 1):
username = f"{prefix}{i:02d}"
pw = gen_password()
if username == "leitstelle01":
pw = LEITSTELLE01_PW
print(f"{username}\tCleartext-Password := \"{pw}\"")
csv_file += username + "," + pw + "\n"
print()
f = open("accounts.csv", "w")
f.write(csv_file)
f.close()