mirror of
				https://github.com/ElvishArtisan/rivendell.git
				synced 2025-11-04 08:04:12 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			254 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			254 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#! /bin/bash
 | 
						|
##
 | 
						|
##    Rivendell init script for LSB and chkconfig(8) compliant Linux systems.
 | 
						|
##
 | 
						|
##    (C) Copyright 2002-2018 Fred Gleason <fredg@paravelsystems.com>
 | 
						|
##
 | 
						|
##    This program is free software; you can redistribute it and/or modify
 | 
						|
##    it under the terms of version 2 of the GNU General Public License as
 | 
						|
##    published by the Free Software Foundation;
 | 
						|
##
 | 
						|
##    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., 59 Temple Place, Suite 330, 
 | 
						|
##    Boston, MA  02111-1307  USA
 | 
						|
##
 | 
						|
 | 
						|
# chkconfig: 35 65 35
 | 
						|
# description: Rivendell system daemons
 | 
						|
# config: /etc/rc.conf
 | 
						|
 | 
						|
### BEGIN INIT INFO
 | 
						|
# Provides:          rivendell
 | 
						|
# Required-Start:    $remote_fs alsasound
 | 
						|
# Required-Stop:     $remote_fs alsasound
 | 
						|
# Should-Start:      @MYSQL_PKG@
 | 
						|
# Default-Start:     2 3 5
 | 
						|
# Default-Stop:      0 1 6
 | 
						|
# Description:       Start the Rivendell system daemons
 | 
						|
### END INIT INFO
 | 
						|
 | 
						|
 | 
						|
function StartDaemons {
 | 
						|
  rdcleandirs
 | 
						|
  if test $GPIO_START = yes ; then
 | 
						|
    if test -x /etc/init.d/gpio ; then
 | 
						|
      /etc/init.d/gpio status > /dev/null
 | 
						|
      if test $? -eq 3 ; then
 | 
						|
        /etc/init.d/gpio start
 | 
						|
      fi
 | 
						|
    fi
 | 
						|
  fi
 | 
						|
  if test $HPI_START = yes ; then
 | 
						|
    if test -x /etc/init.d/asihpi ; then
 | 
						|
      /etc/init.d/asihpi status > /dev/null
 | 
						|
      if test $? -eq 3 ; then
 | 
						|
        /etc/init.d/asihpi start
 | 
						|
	sleep 2
 | 
						|
      fi
 | 
						|
    fi
 | 
						|
  fi
 | 
						|
  if test $LIVEWIRE_START = yes ; then
 | 
						|
    if test -x /etc/init.d/axiad ; then
 | 
						|
      /etc/init.d/axiad status > /dev/null
 | 
						|
      if test $? -eq 3 ; then
 | 
						|
        /etc/init.d/axiad start
 | 
						|
      fi
 | 
						|
    fi
 | 
						|
  fi
 | 
						|
  $JACK_COMMAND > /dev/null 2> /dev/null &
 | 
						|
  echo -n $! > /var/run/rivendell/jackd.pid
 | 
						|
  ipcrm -M 0x5005 2> /dev/null
 | 
						|
  @LOCAL_PREFIX@/bin/caed 2> /dev/null
 | 
						|
  sleep 1
 | 
						|
  if test -x @LOCAL_PREFIX@/bin/ripcd ; then
 | 
						|
    @LOCAL_PREFIX@/bin/ripcd 2> /dev/null
 | 
						|
    sleep 1
 | 
						|
  fi
 | 
						|
  if test -x @LOCAL_PREFIX@/bin/rdcatchd ; then
 | 
						|
    @LOCAL_PREFIX@/bin/rdcatchd 2> /dev/null
 | 
						|
  fi
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
function StopDaemons {
 | 
						|
  killall rdimport > /dev/null 2> /dev/null
 | 
						|
  killall rdvairplayd > /dev/null 2> /dev/null
 | 
						|
  if [ -f /var/run/rivendell/rdcatchd.pid ] ; then
 | 
						|
    kill `cat /var/run/rivendell/rdcatchd.pid` > /dev/null 2> /dev/null
 | 
						|
  fi
 | 
						|
  if [ -f /var/run/rivendell/ripcd.pid ] ; then
 | 
						|
    kill `cat /var/run/rivendell/ripcd.pid` > /dev/null 2> /dev/null
 | 
						|
  fi
 | 
						|
  if [ -f /var/run/rivendell/caed.pid ] ; then
 | 
						|
    kill `cat /var/run/rivendell/caed.pid` > /dev/null 2> /dev/null
 | 
						|
  fi
 | 
						|
  if [ -n "$JACK_COMMAND" ] ; then
 | 
						|
#
 | 
						|
# FIXME
 | 
						|
#  Why are three kill(1) invocations necessary to stop jackd(1)?
 | 
						|
#
 | 
						|
    if [ -f /var/run/rivendell/jackd.pid ] ; then
 | 
						|
      kill `cat /var/run/rivendell/jackd.pid` > /dev/null 2> /dev/null
 | 
						|
      kill `cat /var/run/rivendell/jackd.pid` > /dev/null 2> /dev/null
 | 
						|
      kill `cat /var/run/rivendell/jackd.pid` > /dev/null 2> /dev/null
 | 
						|
      rm -f /var/run/rivendell/jackd.pid
 | 
						|
    fi
 | 
						|
  fi
 | 
						|
  sleep 2
 | 
						|
  rdcleandirs
 | 
						|
}
 | 
						|
 | 
						|
# Set path for script functions
 | 
						|
export PATH=$PATH:/usr/local/bin:/usr/local/sbin
 | 
						|
 | 
						|
#
 | 
						|
# If the LSB Init functions exist, use them, otherwise roll our own
 | 
						|
#
 | 
						|
if test -f /lib/lsb/init-functions ; then
 | 
						|
  . /lib/lsb/init-functions
 | 
						|
else
 | 
						|
  function log_success_msg() {
 | 
						|
    echo "$1 ... done."
 | 
						|
  }
 | 
						|
  function log_failure_msg() {
 | 
						|
    echo "$1 ... done."
 | 
						|
  }
 | 
						|
fi
 | 
						|
 | 
						|
# Default sysconfig values
 | 
						|
GPIO_START="no"
 | 
						|
HPI_START="no"
 | 
						|
LIVEWIRE_START="no"
 | 
						|
JACK_START="no"
 | 
						|
JACK_SAMPLE_RATE="48000"
 | 
						|
JACK_ALSA_DEVICE="hw:0"
 | 
						|
JACK_USE_REALTIME="no"
 | 
						|
 | 
						|
# Override defaults, if we have the sysconfig file
 | 
						|
test -f /etc/sysconfig/rivendell && . /etc/sysconfig/rivendell
 | 
						|
 | 
						|
# Build a jackd command line
 | 
						|
if [ $JACK_START = yes ] ; then
 | 
						|
  if [ $JACK_USE_REALTIME = yes ] ; then
 | 
						|
    JACK_COMMAND="jackd -R"
 | 
						|
  else
 | 
						|
    JACK_COMMAND="jackd"
 | 
						|
  fi
 | 
						|
  JACK_COMMAND="$JACK_COMMAND -d alsa -d $JACK_ALSA_DEVICE -r $JACK_SAMPLE_RATE"
 | 
						|
fi
 | 
						|
 | 
						|
# Check for missing binaries
 | 
						|
if [ ! -x @LOCAL_PREFIX@/bin/caed ] ; then
 | 
						|
  echo "caed not installed"
 | 
						|
  exit 5
 | 
						|
fi
 | 
						|
#if [ ! -x @LOCAL_PREFIX@/bin/ripcd ] ; then
 | 
						|
#  echo "ripcd not installed"
 | 
						|
#  exit 5
 | 
						|
#fi
 | 
						|
#if [ ! -x @LOCAL_PREFIX@/bin/rdcatchd ] ; then
 | 
						|
#  echo "rdcatchd not installed"
 | 
						|
#  exit 5
 | 
						|
#fi
 | 
						|
 | 
						|
# Check for existence of needed config file and read it
 | 
						|
if [ ! -r /etc/rd.conf ] ; then
 | 
						|
  echo "Missing /etc/rd.conf"
 | 
						|
  exit 6
 | 
						|
fi
 | 
						|
 | 
						|
# Check for existence of PID file directory and create it if necessary.
 | 
						|
if [ ! -d /var/run/rivendell ] ; then
 | 
						|
    mkdir -p /var/run/rivendell
 | 
						|
fi
 | 
						|
if [ ! -d /var/run/rivendell ] ; then
 | 
						|
    echo "Missing /var/run/rivendell directory"
 | 
						|
    exit 6
 | 
						|
fi
 | 
						|
 | 
						|
case "$1" in
 | 
						|
    start)
 | 
						|
	$0 silent-status
 | 
						|
	if test $? -eq 3 ; then
 | 
						|
	    StartDaemons
 | 
						|
	fi
 | 
						|
	$0 silent-status
 | 
						|
	if test $? -eq 0 ; then
 | 
						|
	    log_success_msg "Starting Rivendell system daemons"
 | 
						|
	    exit 0
 | 
						|
	else
 | 
						|
	    log_failure_msg "Starting Rivendell system daemons"
 | 
						|
	    exit 1
 | 
						|
	fi
 | 
						|
	;;
 | 
						|
    stop)
 | 
						|
	StopDaemons
 | 
						|
	$0 silent-status
 | 
						|
	if test $? -eq 0 ; then
 | 
						|
	    log_failure_msg "Stopping Rivendell system daemons"
 | 
						|
	    exit 1
 | 
						|
	else
 | 
						|
	    log_success_msg "Stopping Rivendell system daemons"
 | 
						|
	    exit 0
 | 
						|
	fi
 | 
						|
	;;
 | 
						|
    restart)
 | 
						|
	$0 silent-status
 | 
						|
	if test $? -eq 0 ; then
 | 
						|
	    $0 stop
 | 
						|
	fi
 | 
						|
	$0 silent-status
 | 
						|
	if test $? -eq 0 ; then
 | 
						|
	    exit 1
 | 
						|
	fi
 | 
						|
	$0 start
 | 
						|
	$0 silent-status
 | 
						|
	if test $? -eq 0 ; then
 | 
						|
	    exit 0
 | 
						|
	fi
 | 
						|
	exit 1
 | 
						|
	;;
 | 
						|
    force-reload)
 | 
						|
	$0 restart
 | 
						|
	;;
 | 
						|
    status)
 | 
						|
	$0 silent-status
 | 
						|
	EXIT_CODE=$?
 | 
						|
	if test $EXIT_CODE -eq 0 ; then
 | 
						|
	    echo "Rivendell system daemons running."
 | 
						|
	else 
 | 
						|
	    echo "Rivendell system daemons stopped."
 | 
						|
	fi
 | 
						|
	exit $EXIT_CODE
 | 
						|
	;;
 | 
						|
    silent-status)
 | 
						|
	if test -f /var/run/rivendell/caed.pid ; then
 | 
						|
	    if test -d /proc/`cat /var/run/rivendell/caed.pid` ; then
 | 
						|
		if test ! -x @LOCAL_PREFIX@/bin/ripcd ; then
 | 
						|
		    exit 0
 | 
						|
		fi
 | 
						|
		if test -f /var/run/rivendell/ripcd.pid ; then
 | 
						|
		    if test -d /proc/`cat /var/run/rivendell/ripcd.pid` ; then
 | 
						|
			if test -f /var/run/rivendell/rdcatchd.pid ; then
 | 
						|
			    if test -d /proc/`cat /var/run/rivendell/rdcatchd.pid` ; then
 | 
						|
				exit 0
 | 
						|
			    fi
 | 
						|
			fi
 | 
						|
		    fi
 | 
						|
		fi
 | 
						|
	    fi
 | 
						|
	fi
 | 
						|
	exit 3
 | 
						|
	;;
 | 
						|
    *)
 | 
						|
	echo "Usage: $0 {start|stop|restart|force-reload|status}"
 | 
						|
	exit 1
 | 
						|
	;;
 | 
						|
esac
 |