#!/bin/sh
# NAS-Benutzer verwalten: Linux-Konto ohne Login + ksmbd-Konto + private Freigabe + Gruppe nas (Freigabe gemeinsam)
. /usr/lib/nas-gemeinsam.sh
BASIS=$MNT/$SUBVOL

pruefe_name() {
	echo "$1" | grep -qE '^[a-z][a-z0-9_-]{0,30}$' || { echo "Ungültiger Name (a-z, 0-9, _ -, mit Buchstabe beginnend)."; exit 1; }
	case "$1" in root|daemon|ftp|network|nobody|ntp|logd|ubus|dnsmasq|gemeinsam|archiv|benutzer|ipc|admin) echo "Name ist reserviert."; exit 1;; esac
}
braucht_nas() { ist_eingehaengt || { echo "NAS ist gesperrt – zuerst nas-entsperren."; exit 1; }; }

case "$1" in
anlegen)
	n="$2"; pruefe_name "$n"; braucht_nas
	grep -q "^$n:" /etc/passwd && { echo "Konto $n existiert bereits."; exit 1; }
	useradd -M -N -g $NASGROUP -d /nonexistent -s /bin/false "$n" || exit 1
	echo "SMB-Passwort für $n festlegen:"
	ksmbd.adduser -a "$n" || { userdel "$n"; echo "Abgebrochen."; exit 1; }
	mkdir -p "$BASIS/benutzer/$n"; chown "$n:$NASGROUP" "$BASIS/benutzer/$n"; chmod 0700 "$BASIS/benutzer/$n"
	uci set ksmbd.u_$n=share
	uci set ksmbd.u_$n.name="$n"
	uci set ksmbd.u_$n.path="$BASIS/benutzer/$n"
	uci set ksmbd.u_$n.users="$n"
	uci set ksmbd.u_$n.read_only=no
	uci set ksmbd.u_$n.guest_ok=no
	uci set ksmbd.u_$n.browseable=no
	uci set ksmbd.u_$n.create_mask=0600
	uci set ksmbd.u_$n.dir_mask=0700
	uci commit ksmbd; smb_neustart
	logger -t nas "Benutzer $n angelegt"
	echo "Benutzer $n angelegt: Freigaben \\\\NAS\\$n (privat) und \\\\NAS\\gemeinsam."
	;;
passwort)
	n="$2"; grep -q "^$n:" /etc/passwd || { echo "Konto $n unbekannt."; exit 1; }
	ksmbd.adduser -u "$n" && smb_neustart && echo "Passwort für $n geändert."
	;;
loeschen)
	n="$2"; pruefe_name "$n"; braucht_nas
	grep -q "^$n:" /etc/passwd || { echo "Konto $n unbekannt."; exit 1; }
	printf "Benutzer %s löschen? Daten werden nach archiv/ verschoben, nicht gelöscht. [j/N] " "$n"; read -r a; [ "$a" = j ] || exit 1
	uci -q delete ksmbd.u_$n; uci commit ksmbd
	ksmbd.adduser -d "$n" >/dev/null 2>&1
	if [ -d "$BASIS/benutzer/$n" ]; then
		mkdir -p "$BASIS/archiv"; chmod 0700 "$BASIS/archiv"
		ziel="$BASIS/archiv/$n-$(date +%Y%m%d-%H%M%S)"
		mv "$BASIS/benutzer/$n" "$ziel" && chown -R root:root "$ziel" && echo "Daten verschoben nach $ziel"
	fi
	userdel "$n"; smb_neustart
	logger -t nas "Benutzer $n gelöscht (Daten archiviert)"
	;;
liste)
	echo "NAS-Benutzer (Gruppe $NASGROUP):"
	awk -F: -v g="$(awk -F: -v n=$NASGROUP '$1==n{print $3}' /etc/group)" '$4==g{print "  "$1" (uid "$3")"}' /etc/passwd
	;;
*)
	echo "Aufruf: nas-benutzer anlegen NAME | passwort NAME | loeschen NAME | liste"; exit 1;;
esac
