#!/bin/sh

# Questo e'un esempio di servizio
# Per molti demoni basta soltanto cambiare questa parte iniziale
# sostituendo i giusti valori alle variabili SERVICE_* che vedi
# qui sotto,


# Settings
SERVICE_NAME="inetd"
SERVICE_DESCRIPTION="The console mouse daemon"
SERVICE_BIN=$SERVICE_NAME
SERVICE_PREREQ=""
SERVICE_CONFIG="$SERVICE_NAME"
SERVICE_SETUP="/usr/local/lib/agx-userprofiles/$SERVICE_NAME.sh"

# Include some usefull stuffs
. /etc/init.d/service-manager.inc

# ================================================================

start() {
  # Checks
  service_check_exec	"$SERVICE_BIN"		"$SERVICE_NAME"
  service_check_prereq 	"$SERVICE_PREREQ"	"$SERVICE_NAME"
  service_check_config	"$SERVICE_CONFIG"	"$SERVICE_SETUP"
  service_check_running	"$SERVICE_NAME"		"$SERVICE_BIN"
  service_check_profile
  # Starts
  echoc GREEN -n "Avvio del servizio $SERVICE_NAME"
  service_start_nodaemon $SERVICE_BIN
  REPLY=$?
  # Set the lock file
  if [ $REPLY -eq 0 ]; then
    > "$SUBSYS/$SERVICE_NAME"
    echo
  else
    echoc RED "errore durante l'avvio del servizio '$SERVICE_NAME' "
  fi
}



stop() {
  # Checks
  #service_check_exec		"$SERVICE_BIN"		"$SERVICE_NAME"
  service_check_not_running	"$SERVICE_NAME"		"$SERVICE_BIN"
  #service_check_config 	"$SERVICE_CONFIG"	"$SERVICE_SETUP"
  # Stops
  echoc GREEN -n "Arresto del servizio $SERVICE_NAME"
  service_stop $SERVICE_BIN
  #service_stopall $SERVICE_BIN
  REPLY=$?
  # Remove Lock
  if [ $REPLY -eq 0 ]; then
    rm -f "$SUBSYS/$SERVICE_NAME"
    echo
  else
    echoc RED "problema durante l'arresto del servizio '$SERVICE_NAME' "
  fi
}



restart() {
  echoc CYAN "Riavvio del servizio $SERVICE_NAME "
  # E' necessario arrestare il servizio usando service, altrimenti il
  # programma esce con errore 61 se il servizio non sta gia' girando
  service  "$SERVICE_NAME"  stop  relaxed
  initialize
  start
}



reload() {
  # Checks
  service_check_not_running  "$SERVICE_NAME"  "$SERVICE_BIN"
  # Reload
  echoc GREEN -n "Reloading del servizio $SERVICE_NAME "
  service_sighup $SERVICE_BIN
  REPLY=$?
  # Results
  if [ $REPLY -eq 0 ]; then
    echo
  else
    echoc RED "problema durante il reloading del servizio '$SERVICE_NAME' "
  fi
}



configure() {
  service_configure  "$SERVICE_CONFIG"  "$SERVICE_SETUP"
}



query() {
  service_query  "$SERVICE_NAME"  "$SERVICE_BIN"  "$SERVICE_CONFIG"
}



enable() {
  service_enable  "$SERVICE_CONFIG"
}



disable() {
  service_disable  "$SERVICE_CONFIG"
}



reset() {
  service_reset  "$SERVICE_CONFIG"
}



initialize(){
  #TODO: Deve caricare i parametri qui ???
  if [ "$RUNME" = "" ]; then
    echoc PURPLE "initialize: caricamento dei parametri di configurazione"
    service_check_config	"$SERVICE_CONFIG"	"$SERVICE_SETUP"
  fi
  # Adjust mouse link ( you could use a different mouse between profiles)
  echoc PURPLE "initialize: ... sto preparando un pranzetto con i fiocchi :-)"
  #rm -f /dev/mouse
  #ln -sf $MOUSE_DEVICE /dev/mouse
}

# ==============================================================

# Check if relaxed is specified
RELAXED=0
[ "$2" = "relaxed" ] && RELAXED=1

# Check
case "$1" in
  start)		start	;;
  stop)			stop	;;
  restart)		restart ;;
  reload|force-reload)	
	#Se il servizio non supporta il reload tramide il segnale -HUP
	#allora uncommenta 'restart' e commenta reload
	#restart
	reload	
	;;
  query|status|probe)	query   ;;
  enable)		enable  ;;
  disable|lock)		disable ;;
  reset)		reset	;;
  init)			initialize ;;
  configure)
    # Backward compatibility
    case "$2" in
      auto*)		enable  ;;
      manu*)		reset	;;
      none|never|lock*)	disable ;;
      *)		configure ;;
    esac
    ;;
  *)
    if [ "$1" = "" ]; then
      service_usage
    else
      echoc RED  "Parametro/i sballati [$@]"
      echoc CYAN "Suggerimento 'RTFM: Leggi quel cavolo di manuale !'"
      sleep 2
      exit 1
    fi
    ;;
esac
exit 0
