diff options
Diffstat (limited to 'multimedia/minidlna/rc.minidlna')
-rw-r--r-- | multimedia/minidlna/rc.minidlna | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/multimedia/minidlna/rc.minidlna b/multimedia/minidlna/rc.minidlna new file mode 100644 index 0000000000..9cd6898773 --- /dev/null +++ b/multimedia/minidlna/rc.minidlna @@ -0,0 +1,132 @@ +#!/bin/sh +# +# /etc/rc.d/rc.minidlna +# +# start/stop/restart/status of the MiniDLNA server. +# +# To make MiniDLNA start automatically at boot, make this +# file executable: chmod 755 /etc/rc.d/rc.minidlna +# +# Written by Georgi D. Sotirov <gsotirov@gmail.com> +# Based on examples from Internet + +# Bash colors +C_GREEN=$'\e[32;01m' +C_YELLOW=$'\e[33;01m' +C_RED=$'\e[31;01m' +C_NORMAL=$'\e[0m' + +SNAME='MiniDLNA server' +NAME=minidlna +CMD="/usr/sbin/${NAME}d" +CONFILE="/etc/${NAME}.conf" +PIDFILE="/var/run/${NAME}.pid" +CMD_OPTS="-f $CONFILE -P $PIDFILE" + +ok() { + echo "${C_GREEN}Done${C_NORMAL}" +} + +fail() { + echo "${C_RED}Failure${C_NORMAL}" +} + +print_status() { + if [ $? != 0 ]; then + fail + else + ok + fi +} + +start() { + if [ -x $CMD ]; then + if [ ! -e $PIDFILE ]; then + echo -n "Starting $SNAME in $CMD... " + $CMD $CMD_OPTS + print_status + else + echo "Starting $SNAME: Already running with PID $(cat $PIDFILE)!" + fi + fi +} + +stop() { + if [ -e $PIDFILE ]; then + echo -n "Stopping ${SNAME}... " + kill -15 $(cat $PIDFILE) + print_status + else + echo "Stopping ${SNAME}: Not running!" + fi +} + +restart() { + stop + sleep 3 + start +} + +status() { + if [ -e $PIDFILE ]; then + echo "$SNAME running with PID $(cat $PIDFILE)." + else + STAT=$(ps -C $NAME -o pid= | wc -l) + if [ ${STAT} -ge 1 ]; then + echo "$SNAME is running" + else + echo "$SNAME is not running" + fi + fi +} + +db_clean() { + # If DB dir defined explicitly in log (i.e. not commented), then use it + DB_DIR_CONF=$(grep -E '^db_dir=' $CONFILE | awk -F'=' '{ print $2 }') + # else fallback to default + DB_DIR=${DB_DIR_CONF:-/var/cache/$NAME} + WAS_RUNNING=0 + + if [ -e $DB_DIR -a -d $DB_DIR ]; then + # Stop daemon if running + if [ -e $PIDFILE ]; then + WAS_RUNNING=1 + stop + sleep 3 + fi + + echo -n "Cleaning cache in ${DB_DIR}... " + rm -f ${DB_DIR}/files.db + rm -rf ${DB_DIR}art_cache + print_status + + # And restart daemon afterwards + if [ $WAS_RUNNING -ne 0 ]; then + start + fi + else + echo "Error: cache dir $DB_DIR does not exist or not a direcory!" + fi +} + +help() { + echo "$SNAME control" + echo "Usage: $0 start|stop|restart|status|clean" + echo +} + +case "$1" in + 'start') + start ;; + 'stop') + stop ;; + 'restart') + restart ;; + 'status') + status ;; + 'clean') + db_clean ;; + *) + help ;; +esac + |