Implement Kaizoku provider downloader
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
#!/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/.kaizoku/home
|
||||
chown "$uid:$gid" /downloads /app/.kaizoku /app/.kaizoku/home
|
||||
|
||||
cd /app
|
||||
exec setpriv \
|
||||
--reuid "$uid" \
|
||||
--regid "$gid" \
|
||||
--clear-groups \
|
||||
env HOME=/app/.kaizoku/home python3 /app/app.py "$@"
|
||||
}
|
||||
|
||||
mkdir -p /downloads /app/.kaizoku
|
||||
|
||||
run_as_requested_user "$@" || true
|
||||
|
||||
cd /app
|
||||
exec python3 /app/app.py "$@"
|
||||
Reference in New Issue
Block a user