52 lines
1.7 KiB
Bash
52 lines
1.7 KiB
Bash
#!/bin/bash
|
|
source ./data_utils.sh
|
|
|
|
add_user() {
|
|
initialize_user_list
|
|
|
|
# Benutzername abfragen
|
|
username=$(dialog --inputbox "Benutzernamen eingeben:" 10 50 3>&1 1>&2 2>&3)
|
|
if [[ -z "$username" ]]; then
|
|
dialog --msgbox "Der Benutzername darf nicht leer sein." 10 30
|
|
return
|
|
fi
|
|
|
|
# Überprüfen, ob der Benutzer existiert
|
|
existing_user=$(grep "^$username:" <(read_users))
|
|
if [[ -n "$existing_user" ]]; then
|
|
if echo "$existing_user" | grep -q ":aktiv$"; then
|
|
dialog --msgbox "Benutzer $username existiert bereits." 10 30
|
|
return
|
|
fi
|
|
|
|
# Benutzer ist gelöscht, wird wieder aktiviert
|
|
uid=$(echo "$existing_user" | cut -d':' -f2)
|
|
dialog --msgbox "Benutzer $username war gelöscht und wird wiederhergestellt." 10 30
|
|
else
|
|
# Nächste verfügbare UID berechnen
|
|
uid=$(($(read_users | cut -d':' -f2 | sort -n | tail -1) + 1))
|
|
if [[ -z "$uid" || "$uid" -lt 2000 ]]; then
|
|
uid=2000
|
|
fi
|
|
fi
|
|
|
|
# Passwort abfragen
|
|
password=$(dialog --insecure --passwordbox "Passwort eingeben:" 10 50 3>&1 1>&2 2>&3)
|
|
password_confirm=$(dialog --insecure --passwordbox "Passwort erneut eingeben:" 10 50 3>&1 1>&2 2>&3)
|
|
|
|
if [[ "$password" != "$password_confirm" ]]; then
|
|
dialog --msgbox "Passwörter stimmen nicht überein." 10 30
|
|
return
|
|
fi
|
|
|
|
# Passwort verschlüsseln
|
|
encrypted_password=$(echo "$password" | openssl enc -aes-256-cbc -salt -base64 -pass pass:my_secret_key)
|
|
|
|
# Benutzer hinzufügen oder wiederherstellen
|
|
add_user_to_file "$username" "$uid" "$encrypted_password" "fileserver" "aktiv"
|
|
|
|
dialog --msgbox "Benutzer $username wurde erfolgreich hinzugefügt." 10 30
|
|
}
|
|
|
|
add_user
|