tinynas/minidlna/entrypoint.sh

62 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# Bash strict mode
set -euo pipefail
IFS=$'\n\t'
# DEBUG
[ -z "${DEBUG:-}" ] || set -x
# VARs
export TZ="${TZ:-}"
export PUID="${PUID:-100}"
export PGID="${PGID:-101}"
export PIDFILE='/minidlna/minidlna.pid'
export FORCE_SCAN="${FORCE_SCAN:-false}"
export FORCE_REBUILD="${FORCE_REBUILD:-false}"
# Remove old pid if it exists
[ -f "$PIDFILE" ] && rm -f "$PIDFILE"
echo '=== Set user and group identifier'
groupmod --non-unique --gid "$PGID" minidlna
usermod --non-unique --uid "$PUID" minidlna
if [[ -n "$TZ" ]]; then
echo '=== Set timezone'
setup-timezone -z "$TZ"
fi
echo '=== Set standard configuration'
export MINIDLNA_DB_DIR="${MINIDLNA_DB_DIR:-/minidlna/cache}"
export MINIDLNA_LOG_DIR="${MINIDLNA_LOG_DIR:-/minidlna}"
export MINIDLNA_INOTIFY="${MINIDLNA_INOTIFY:-yes}"
echo '=== Set configuration from environment variables'
: > /etc/minidlna.conf
for VAR in $(env); do
if [[ "$VAR" =~ ^MINIDLNA_ ]]; then
if [[ "$VAR" =~ ^MINIDLNA_MEDIA_DIR ]]; then
minidlna_name='media_dir'
else
minidlna_name=$(echo "$VAR" | sed -r "s/MINIDLNA_(.*)=.*/\\1/g" | tr '[:upper:]' '[:lower:]')
fi
minidlna_value=$(echo "$VAR" | sed -r "s/.*=(.*)/\\1/g")
echo "${minidlna_name}=${minidlna_value}" >> /etc/minidlna.conf
fi
done
echo '=== Set permissions'
mkdir -p /minidlna/ "${MINIDLNA_DB_DIR}" "${MINIDLNA_LOG_DIR}"
chown -R "${PUID}:${PGID}" /minidlna/ "${MINIDLNA_DB_DIR}" "${MINIDLNA_LOG_DIR}"
echo '=== Generate scan/rebuild flags'
if [[ "$FORCE_SCAN" == true ]]; then
set -- -r "$@"
fi
if [[ "$FORCE_REBUILD" == true ]]; then
set -- -R "$@"
fi
echo '=== Start daemon'
exec su-exec minidlna /usr/sbin/minidlnad -P "$PIDFILE" -S "$@"