Fix NETHOME detection issue for examusers, staff and parents

This commit is contained in:
Raphael Dannecker 2025-12-10 14:34:01 +01:00
parent 63dec2f8b7
commit 857b834232
3 changed files with 22 additions and 9 deletions

View file

@ -16,11 +16,16 @@ fi
id="$(grep ID "$file" | sed -E "s|^.+ID>([[:digit:]]+)/([[:digit:]]+)</ID.+$|\1:\2|" \ id="$(grep ID "$file" | sed -E "s|^.+ID>([[:digit:]]+)/([[:digit:]]+)</ID.+$|\1:\2|" \
| sort -n -t: -k2 | tail -1 )" | sort -n -t: -k2 | tail -1 )"
if id | grep -q teachers; then for dir in teachers examusers staff parents; do
NETHOME=/srv/samba/schools/default-school/teachers/$USER if [[ -d "/srv/samba/schools/default-school/${dir}/${USER}" ]]; then
else NETHOME="/srv/samba/schools/default-school/${dir}/${USER}"
break
fi
done
if [[ -z "${NETHOME+x}" ]]; then
NETHOME=(/srv/samba/schools/default-school/students/*/"$USER") NETHOME=(/srv/samba/schools/default-school/students/*/"$USER")
fi fi
[[ -d $NETHOME ]] || exit 0 [[ -d $NETHOME ]] || exit 0
IDENTITY="${id%%:*}" IDENTITY="${id%%:*}"

View file

@ -346,11 +346,16 @@ if ! virsh --connect="${QEMU}" list | grep "${VM_NAME}-clone"; then
virsh --connect=qemu:///session undefine --nvram "${VM_NAME}-clone" || echo "${VM_NAME}-clone did not exist" virsh --connect=qemu:///session undefine --nvram "${VM_NAME}-clone" || echo "${VM_NAME}-clone did not exist"
#trap exit_script SIGHUP SIGINT SIGTERM #trap exit_script SIGHUP SIGINT SIGTERM
if id | grep -q teachers; then for dir in teachers examusers staff parents; do
NETHOME=/srv/samba/schools/default-school/teachers/$USER if [[ -d "/srv/samba/schools/default-school/${dir}/${USER}" ]]; then
else NETHOME="/srv/samba/schools/default-school/${dir}/${USER}"
break
fi
done
if [[ -z "${NETHOME+x}" ]]; then
NETHOME=(/srv/samba/schools/default-school/students/*/"$USER") NETHOME=(/srv/samba/schools/default-school/students/*/"$USER")
fi fi
if [[ "${HOME}" != "${NETHOME}" ]]; then if [[ "${HOME}" != "${NETHOME}" ]]; then
VMINFO_DIR="${HOME}" VMINFO_DIR="${HOME}"
else else

View file

@ -93,9 +93,12 @@ def main():
vminfo['User'] = environ.get('USER') vminfo['User'] = environ.get('USER')
vminfo['Groups'] = get_groups(environ.get('USER')) vminfo['Groups'] = get_groups(environ.get('USER'))
if 'teachers' in vminfo['Groups']: for dir in ['teachers','examusers','staff','parents']:
nethome = f"/srv/samba/schools/default-school/teachers/{vminfo['User']}" potential_path = f"/srv/samba/schools/default-school/{dir}/{vminfo['User']}"
else: if path.isdir(potential_path):
nethome = potential_path
break
if not nethome:
result = subprocess.run(['find', '/srv/samba/schools/default-school/students/', '-name', vminfo['User'], '-maxdepth', '2', '-type', 'd'], capture_output=True, text=True, check=False) result = subprocess.run(['find', '/srv/samba/schools/default-school/students/', '-name', vminfo['User'], '-maxdepth', '2', '-type', 'd'], capture_output=True, text=True, check=False)
nethome = result.stdout.splitlines()[0] nethome = result.stdout.splitlines()[0]