#!/bin/bash # uso: creautente # Qui posso hardcodare un issuer per le chiavi che genero # notare che va urlencoded quindi per dire uno spazio diventa %20 # è puramente estetico, viene scritto nella app del cellulare quando si legge il QR code. # non ha alcuna funzione nella autenticazione. issuer='Nome%20Azienda' # Se non ho esattamente un argomento, esco con un errore if [ "$#" -ne 1 ]; then echo "Numero di argomenti errato" echo "USO: $0 " echo "Esempio: $0 mario.rossi" exit 1 fi # Se il nome utente contiene qualcosa che non siano i caratteri accettati da openvpn, non procedo if ! [[ "$1" =~ ^[0-9a-zA-Z._@-]+$ ]]; then echo "Errore, lo username può contenere solo lettere, numeri, e questi caratteri speciali: _ - . @" echo "Non sono accettate le lettere accentate." echo "Gli emoji sono FUORI DISCUSSIONE" exit 1 fi # se esiste già un file di QR code con lo stesso nome dell'utente che sto creando, esco con un errore if [ -f $1.png ]; then echo "Errore: esiste già un file di QR code con nome $1.png." exit 1 fi # creiamo una stringa per il TOTP di 9 caratteri e la convertiamo in base32 # uso 9 caratteri che producono 16 caratteri in base32, e` lo standard che usa MS totp=`pwgen -sy 9 1 | base32` echo "Creo utente $1 con otp-secret $totp" echo "Il QR code relativo è creato in un file con nome $1.png" echo "la riga per aggiungere l'utente su openvpn è accodata al file oath.secrets" qrencode -o $1.png -d 300 -s 10 "otpauth://totp/$issuer:$1?secret=$totp" echo "$1:$totp" >> oath.secrets exit 0