diff --git a/contrib/init.d/Makefile.am b/contrib/init.d/Makefile.am index 44058bcc..a2e2f796 100644 --- a/contrib/init.d/Makefile.am +++ b/contrib/init.d/Makefile.am @@ -1,13 +1,13 @@ -EXTRA_DIST=mt-daapd-fedora.templ mt-daapd-gentoo.templ mtdaapd-bsd.templ +EXTRA_DIST=mt-daapd-fedora.templ mt-daapd-suse.templ mtdaapd-bsd.templ -BUILT_SOURCES = mt-daapd-fedora mt-daapd-gentoo mtdaapd-bsd +BUILT_SOURCES = mt-daapd-fedora mt-daapd-suse mtdaapd-bsd mt-daapd-fedora: mt-daapd-fedora.templ ../../config.h sed -e s,[@]prefix[@],$(prefix),g mt-daapd-fedora.templ >$@; \ chmod +x $@ -mt-daapd-gentoo: mt-daapd-gentoo.templ ../../config.h - sed -e s,[@]prefix[@],$(prefix),g mt-daapd-gentoo.templ >$@; \ +mt-daapd-suse: mt-daapd-suse.templ ../../config.h + sed -e s,[@]prefix[@],$(prefix),g mt-daapd-suse.templ >$@; \ chmod +x $@ mtdaapd-bsd: mtdaapd-bsd.templ ../../config.h diff --git a/contrib/init.d/mt-daapd-gentoo.templ b/contrib/init.d/mt-daapd-gentoo.templ deleted file mode 100755 index 56a94bd4..00000000 --- a/contrib/init.d/mt-daapd-gentoo.templ +++ /dev/null @@ -1,38 +0,0 @@ -#!/sbin/runscript -# -# description: mt-daapd is a multi-threaded DAAP server for iTunes -# processname: mt-daapd -# Init script to start/stop mt-daapd for Gentoo Linux 2004.2 -# -# This file needs to be in your /etc/init.d directory. -# To start mt-daapd, type "/etc/init.d/mt-daapd start" -# To stop it, type "/etc/init.d/mt-daapd stop" -# To start it automagically, type "rc-update add mt-daapd default" -# -# -# rob@robnunn.com (31st July 2004) - -depend() { - # not much point having the daemon without a network - need net - # and if this goes according to plan, we provide daap - provide daap -} - -# start the mt-daapd daemon. All fairly self-explanatory. -# lock files aren't necessary (as far as i can tell) since gentoo -# won't let us run multiple copies. -start() { - ebegin "Starting mt-daapd DAAP server" - start-stop-daemon --start --quiet --exec @prefix@/sbin/mt-daapd - eend $? -} - -# stop the daemon -stop() { - ebegin "Stopping mt-daapd DAAP server" -# start-stop-daemon --stop --quiet --exec @prefix@/sbin/mt-daapd -# I dunno if this works... try it: - start-stop-daemon --stop --quiet --pidfile /var/run/mt-daapd.pid --signal 2 - eend $? -} diff --git a/contrib/init.d/mt-daapd-suse.templ b/contrib/init.d/mt-daapd-suse.templ new file mode 100755 index 00000000..0f25158a --- /dev/null +++ b/contrib/init.d/mt-daapd-suse.templ @@ -0,0 +1,216 @@ +# Copyright (c) 1995-2004 SUSE Linux AG, Nuernberg, Germany. +# All rights reserved. +# +# Author: Dylan Muir +# +# /etc/init.d/mt-daapd +# and its symbolic link +# /usr/sbin/mt-daapd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# +# LSB compatible service control script; see http://www.linuxbase.org/spec/ +# +# Note: This template uses functions rc_XXX defined in /etc/rc.status on +# UnitedLinux (UL) based Linux distributions. If you want to base your +# script on this template and ensure that it works on non UL based LSB +# compliant Linux distributions, you either have to provide the rc.status +# functions from UL or change the script to work without them. +# +### BEGIN INIT INFO +# Provides: daap +# Required-Start: $portmap $local_fs $remote_fs rendezvous +# Should-Start: +# Required-Stop: $portmap $local_fs $remote_fs rendezvous +# Should-Stop: +# Default-Start: 3 5 +# Default-Stop: 0 1 2 6 +# Short-Description: mt-daapd daemon providing DAAP serving +# Description: mt-daapd allows iTunes-compatible clients +# to connect, serves streams and allows download of files. +# Also provides a web configuration interface on the DAAP port. +### END INIT INFO + +# Check for missing binaries (stale symlinks should not happen) +# Note: Special treatment of stop for LSB conformance +MT_DAAPD_BIN=@prefix@/sbin/mt-daapd +test -x $MT_DAAPD_BIN || { echo "$MT_DAAPD_BIN not installed"; + if [ "$1" = "stop" ]; then exit 0; + else exit 5; fi; } + +# Check for existence of needed config file and read it +MT_DAAPD_CONFIG=@prefix@/etc/mt-daapd.conf +test -r $MT_DAAPD_CONFIG || { echo "$MT_DAAPD_CONFIG does not exist"; + if [ "$1" = "stop" ]; then exit 0; + else exit 6; fi; } + +# Directory to wait for +MUSIC_WATCH_DIR=/media/MUSIC/music-root + +# Debug level +MT_DAAPD_DEBUG_LEVEL=1 + +# Shell functions sourced from /etc/rc.status: +# rc_check check and set local and overall rc status +# rc_status check and set local and overall rc status +# rc_status -v be verbose in local rc status and clear it afterwards +# rc_status -v -r ditto and clear both the local and overall rc status +# rc_status -s display "skipped" and exit with status 3 +# rc_status -u display "unused" and exit with status 3 +# rc_failed set local and overall rc status to failed +# rc_failed set local and overall rc status to +# rc_reset clear both the local and overall rc status +# rc_exit exit appropriate to overall rc status +# rc_active checks whether a service is activated by symlinks +. /etc/rc.status + +# Reset status of this service +rc_reset + +# Return values acc. to LSB for all commands but status: +# 0 - success +# 1 - generic or unspecified error +# 2 - invalid or excess argument(s) +# 3 - unimplemented feature (e.g. "reload") +# 4 - user had insufficient privileges +# 5 - program is not installed +# 6 - program is not configured +# 7 - program is not running +# 8--199 - reserved (8--99 LSB, 100--149 distrib, 150--199 appl) +# +# Note that starting an already running service, stopping +# or restarting a not-running service as well as the restart +# with force-reload (in case signaling is not supported) are +# considered a success. + +case "$1" in + start) + echo -n "Starting mt-daapd " + ## Recycle log file + mv /var/log/mt-daapd.log /var/log/mt-daapd.0.log + + ## Wait for the music cache to appear + while [ ! -e $MUSIC_WATCH_DIR ] + do + echo "mt-daapd: Waiting for music directory to appear..." + sleep 1 + done + + ## Start daemon with startproc(8). If this fails + ## the return value is set appropriately by startproc. + /sbin/startproc $MT_DAAPD_BIN -c $MT_DAAPD_CONFIG -d $MT_DAAPD_DEBUG_LEVEL + + # Remember status and be verbose + rc_status -v + ;; + stop) + echo -n "Shutting down mt-daapd " + ## Stop daemon with killproc(8) and if this fails + ## killproc sets the return value according to LSB. + + killall -INT $MT_DAAPD_BIN + + # Remember status and be verbose + rc_status -v + ;; + try-restart|condrestart) + ## Do a restart only if the service was active before. + ## Note: try-restart is now part of LSB (as of 1.9). + ## RH has a similar command named condrestart. + if test "$1" = "condrestart"; then + echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}" + fi + $0 status + if test $? = 0; then + $0 restart + else + rc_reset # Not running is not a failure. + fi + # Remember status and be quiet + rc_status + ;; + restart) + ## Stop the service and regardless of whether it was + ## running or not, start it again. + $0 stop + sleep 3 + $0 start + + # Remember status and be quiet + rc_status + ;; + force-reload) + ## Signal the daemon to reload its config. Most daemons + ## do this on signal 1 (SIGHUP). + ## If it does not support it, restart the service if it + ## is running. + + echo -n "Reload service mt-daapd " + ## if it supports it: + #/sbin/killproc -HUP $MT_DAAPD_BIN + #touch /var/run/mt-daapd.pid + #rc_status -v + + ## Otherwise: + $0 try-restart + rc_status + ;; + reload) + ## Like force-reload, but if daemon does not support + ## signaling, do nothing (!) + + # If it supports signaling: + echo -n "Reload service mt-daapd " + #/sbin/killproc -HUP $MT_DAAPD_BIN + #touch /var/run/mt_daapd.pid + #rc_status -v + + ## Otherwise if it does not support reload: + rc_failed 3 + rc_status -v + ;; + status) + echo -n "Checking for service mt-daapd " + ## Check status with checkproc(8), if process is running + ## checkproc will return with exit status 0. + + # Return value is slightly different for the status command: + # 0 - service up and running + # 1 - service dead, but /var/run/ pid file exists + # 2 - service dead, but /var/lock/ lock file exists + # 3 - service not running (unused) + # 4 - service status unknown :-( + # 5--199 reserved (5--99 LSB, 100--149 distro, 150--199 appl.) + + # NOTE: checkproc returns LSB compliant status values. + /sbin/checkproc $MT_DAAPD_BIN + # NOTE: rc_status knows that we called this init script with + # "status" option and adapts its messages accordingly. + rc_status -v + ;; + probe) + ## Optional: Probe for the necessity of a reload, print out the + ## argument to this init script which is required for a reload. + ## Note: probe is not (yet) part of LSB (as of 1.9) + + test /etc/mt-daapd.conf -nt /var/run/mt-daapd.pid && echo reload + ;; + *) + echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}" + exit 1 + ;; +esac +rc_exit \ No newline at end of file