#!binsh # # MiniDLNA initscript # # Based on the mediatomb debian package. # Original authors Tor Krill tor@excito.com # Leonhard Wimmer leo@mediatomb.cc # Andres Mejia mcitadel@gmail.com # # Modified by BenoÎt Knecht benoit.knecht@fsfe.org # ### BEGIN INIT INFO # Provides minidlna # Required-Start $network $local_fs $remote_fs # Required-Stop $network $local_fs $remote_fs # Should-Start $all # Should-Stop $all # Default-Start 2 3 4 5 # Default-Stop 0 1 6 # Short-Description Start minidlna at boot time # Description Manage the minidlna daemon, a DLNAUPnP-AV media server. ### END INIT INFO unset USER # PATH should only include usr if it runs after the mountnfs.sh script PATH=sbinusrsbinbinusrbin DESC=DLNAUPnP-AV media server NAME=minidlna DAEMON=usrbinminidlna PIDDIR=run$NAME PIDFILE=$PIDDIR$NAME.pid SCRIPTNAME=etcinit.d$NAME DEFAULT=etcdefault$NAME # Exit if the package is not installed [ -x $DAEMON ] exit 0 # Read configuration variable file if it is present [ -r $DEFAULT ] && . $DEFAULT # Load the VERBOSE setting and other rcS variables . libinitvars.sh # Define LSB log_ functions. # Depend on lsb-base (= 3.0-6) to ensure that this file is present. . liblsbinit-functions # Do not start the daemon if NO_START is enabled in DEFAULT if [ $START_DAEMON != yes ] && [ $1 != stop ]; then log_warning_msg $NAME Not starting $DESC. log_warning_msg $NAME Disabled in $DEFAULT. exit 0 fi # Set the default configuration file if [ -z $CONFIGFILE ]; then CONFIGFILE=etcminidlna.conf fi # Set the default log file if [ -z $LOGFILE ]; then LOGFILE=varlogminidlna.log fi # Run as `minidlna' if USER is not specified or is `root' if [ -z $USER ]; then USER=minidlna fi # If no group is specified, use USER if [ -z $GROUP ]; then GROUP=$USER fi DAEMON_ARGS=-f $CONFIGFILE -P $PIDFILE $DAEMON_OPTS # # Function that starts the daemonservice # do_start() { # Return # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started touch $LOGFILE && chown $USER$GROUP $LOGFILE return 2 if [ ! -d $PIDDIR ]; then mkdir $PIDDIR return 2 fi chown $USER$GROUP $PIDDIR return 2 start-stop-daemon --start --quiet --pidfile $PIDFILE --chuid $USER$GROUP --exec $DAEMON --test devnull return 1 start-stop-daemon --start --quiet --pidfile $PIDFILE --chuid $USER$GROUP --exec $DAEMON -- $DAEMON_ARGS return 2 } # # Function that stops the daemonservice # do_stop() { # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred start-stop-daemon --stop --quiet --retry=TERM30KILL5 --pidfile $PIDFILE --name $NAME RETVAL=$ [ $RETVAL = 2 ] && return 2 # Wait for children to finish too if this is a daemon that forks # and if the daemon is only ever run from this initscript. start-stop-daemon --stop --quiet --oknodo --retry=030KILL5 --exec $DAEMON [ $ = 2 ] && return 2 # Many daemons don't delete their pidfiles when they exit. rm -rf $PIDDIR return $RETVAL } case $1 in start) [ $VERBOSE != no ] && log_daemon_msg Starting $DESC $NAME do_start case $ in 01) [ $VERBOSE != no ] && log_end_msg 0 ;; 2) [ $VERBOSE != no ] && log_end_msg 1 ;; esac ;; stop) [ $VERBOSE != no ] && log_daemon_msg Stopping $DESC $NAME do_stop case $ in 01) [ $VERBOSE != no ] && log_end_msg 0 ;; 2) [ $VERBOSE != no ] && log_end_msg 1 ;; esac ;; status) status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 exit $ ;; restartforce-reload) log_daemon_msg Restarting $DESC $NAME do_stop case $ in 01) if [ $1 = force-reload ]; then # Rescan the collection DAEMON_ARGS=$DAEMON_ARGS -R fi do_start case $ in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running ) log_end_msg 1 ;; # Failed to start esac ;; ) # Failed to stop log_end_msg 1 ;; esac ;; ) echo Usage $SCRIPTNAME {startstopstatusrestartforce-reload} &2 exit 3 ;; esac