#!/usr/bin/env bash
set -euo pipefail
requested="${1:-}"
case "$requested" in /home/*|/mnt/*|/media/*|/srv/*|/var/lib/gesundheitsbelege/projects/*) ;; *) exit 10 ;; esac
target="$(realpath -e -- "$requested")"
[ -d "$target" ] && [ ! -L "$target" ] || exit 11
case "$target" in /home/*|/mnt/*|/media/*|/srv/*|/var/lib/gesundheitsbelege/projects/*) ;; *) exit 12 ;; esac
opener="$(command -v xdg-open || command -v gio || true)"
[ -n "$opener" ] || exit 13
for runtime in /run/user/[0-9]*; do
  [ -d "$runtime" ] || continue
  uid="$(basename -- "$runtime")"
  user="$(getent passwd "$uid" | cut -d: -f1)"
  [ -n "$user" ] || continue
  [ -S "$runtime/bus" ] || continue
  if [ "$(basename -- "$opener")" = "gio" ]; then command=("$opener" open "$target"); else command=("$opener" "$target"); fi
  /usr/bin/setsid -f /usr/sbin/runuser -u "$user" -- env DISPLAY=:0 WAYLAND_DISPLAY=wayland-0 XDG_RUNTIME_DIR="$runtime" DBUS_SESSION_BUS_ADDRESS="unix:path=$runtime/bus" "${command[@]}" >/dev/null 2>&1
  printf '%s\n' "$target"
  exit 0
done
exit 20
