58 lines
1.2 KiB
Bash
58 lines
1.2 KiB
Bash
#!/bin/sh
|
|
set -eu
|
|
|
|
is_true() {
|
|
case "$(printf '%s' "${1:-}" | tr '[:upper:]' '[:lower:]')" in
|
|
1 | true | yes | on) return 0 ;;
|
|
*) return 1 ;;
|
|
esac
|
|
}
|
|
|
|
is_integer() {
|
|
case "${1:-}" in
|
|
'' | *[!0-9]*) return 1 ;;
|
|
*) return 0 ;;
|
|
esac
|
|
}
|
|
|
|
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/.ani-cli-web/home
|
|
chown "$uid:$gid" /downloads /app/.ani-cli-web /app/.ani-cli-web/home
|
|
|
|
cd /app
|
|
exec setpriv \
|
|
--reuid "$uid" \
|
|
--regid "$gid" \
|
|
--clear-groups \
|
|
env HOME=/app/.ani-cli-web/home ./ani-cli-web "$@"
|
|
}
|
|
|
|
mkdir -p /downloads /app/.ani-cli-web
|
|
|
|
if is_true "${UPDATE_ON_START:-false}"; then
|
|
echo "Checking for ani-cli updates with sudo ani-cli --update"
|
|
sudo ani-cli --update
|
|
fi
|
|
|
|
run_as_requested_user "$@" || true
|
|
|
|
cd /app
|
|
exec ./ani-cli-web "$@"
|