62 lines
1.7 KiB
Bash
62 lines
1.7 KiB
Bash
|
#!/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 "$@"
|