diff --git a/hosts/radius/generate_passwords.py b/hosts/radius/generate_passwords.py new file mode 100644 index 0000000..4b01ff1 --- /dev/null +++ b/hosts/radius/generate_passwords.py @@ -0,0 +1,76 @@ +### +# 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. +# +# 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 + +### 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() + +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() + + print(f"{username}\tCleartext-Password := \"{pw}\"") + + print() \ No newline at end of file