#!/bin/sh
# chkconfig: 2345 61 39
### BEGIN INIT INFO
# Provides:          samba4
# Required-Start:    $network
# Required-Stop:     $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start samba4 at boot time
# Description:       Enable service provided by samba4.
# X-Start-Before:    
# X-Stop-After:      
# X-Timesys-Start-Number:  61
# X-Timesys-Stop-Number:  39
### END INIT INFO


LOGDIR=/var/log/samba
SMBD_DAEMON=smbd
NMBD_DAEMON=nmbd

stop_service() {
    for d in ${SMBD_DAEMON} ${NMBD_DAEMON}; do
      PIDFILE=/var/run/${d}.pid
      if [  -r $PIDFILE  -a  ! -z ${PIDFILE}  ]; then
	      PID=`cat ${PIDFILE}`
      fi
      if [  ${PID:=0} -gt 1 -a  ! "X$PID" = "X "  ]; then
        printf "Starting $d: "
	      kill ${PID}
        rc=$?
        if [ $rc -ne 0 ]; then
          echo "[FAIL]"
        else
          echo "[OK]"
          rm -f $PIDFILE
        fi
      else
	      echo "Unable to read $d PID file"
      fi
    done
}

start_service() {

    if [ ! -d $LOGDIR ]; then
      mkdir -p $LOGDIR
    fi

    for d in ${SMBD_DAEMON} ${NMBD_DAEMON}; do
      PIDFILE=/var/run/${d}.pid
      if [ -f $PIDFILE ]; then
        PIDDIR=/proc/$(cat $PIDFILE)
        if [ -d ${PIDDIR} -a -n "$(readlink -f ${PIDDIR}/exe 2>/dev/null)" ]; then
        	echo "$d already started; not starting."
        	return
        else
        	echo "Removing stale PID file $PIDFILE."
        	rm -f $PIDFILE
        fi
      fi
    done

    for d in ${SMBD_DAEMON} ${NMBD_DAEMON}; do
      printf "Starting $d: "         ; $d
      rc=$?
      if [ $rc -ne 0 ]; then
        echo "[FAIL]"
	      echo "$0: Error ${rc} starting ${d}... bailing."
	      exit $rc
      fi
      echo "[ OK ]"
    done
}

case $1 in

'start')
    start_service
    ;;

'stop')
    stop_service
    ;;

'restart')
    stop_service
    start_service
    ;;

*)
    echo "Usage: $0 [start|stop|restart]"
    ;;
esac
