#!/bin/sh set -eu is_integer() { case "${1:-}" in '' | *[!0-9]*) return 1 ;; *) return 0 ;; esac } chown_path() { owner="$1" path="$2" if ! chown "$owner" "$path"; then echo "Warning: could not change ownership of $path to $owner; continuing." >&2 fi } run_as_requested_user() { uid="${USER_UID:-}" gid="${USER_GID:-}" if [ -z "$uid" ] && [ -z "$gid" ]; then return 1 fi if [ -z "$uid" ] || [ -z "$gid" ]; then echo "Both USER_UID and USER_GID must be set together." >&2 exit 1 fi if ! is_integer "$uid" || ! is_integer "$gid"; then echo "USER_UID and USER_GID must be numeric." >&2 exit 1 fi mkdir -p /app/.kaizoku/home for path in /downloads /jellyfin/tv /jellyfin/movies /app/.kaizoku /app/.kaizoku/home; do chown_path "$uid:$gid" "$path" done cd /app exec setpriv \ --reuid "$uid" \ --regid "$gid" \ --clear-groups \ env HOME=/app/.kaizoku/home python3 /app/app.py "$@" } mkdir -p /downloads /jellyfin/tv /jellyfin/movies /app/.kaizoku run_as_requested_user "$@" || true cd /app exec python3 /app/app.py "$@"