#!/bin/bash
#
# obserond        Obseron Server startup script
#
# chkconfig: - 85 15
# description: Obseron Server
# processname: obserond
# pidfile: /dev/shm/5586e657-5953-41fd-94cc-e6c17f56dde0-obseron
#
### BEGIN INIT INFO
# Provides: obseron
# Required-Start: $local_fs $remote_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Short-Description: start and stop Obseron
# Description: Obseron Server
### END INIT INFO

# Source function library.
. /etc/rc.d/init.d/functions

prog=obserond
daemonbin=obserond
pidfile="/dev/shm/5586e657-5953-41fd-94cc-e6c17f56dde0-obseron"
# A lock file needs to be created in /var/lock/subsys to make the daemon shut down properly with the system.
lockfile=/var/lock/subsys/obserond
STOP_TIMEOUT=10
LFILE=~obseron/.dvr/license

function licensefromdmi() {
	if [ ! -f /usr/sbin/dmidecode ]; then
		return 2
	fi

	if [ "$(dmidecode -s system-manufacturer)" != "Obseron" ]; then
		return 1
	fi

	pkey=$(dmidecode -t 11 | grep "String 1:" | cut -d : -f 2- | tr -d ' ')
	act=$(dmidecode -t 12 | grep "Option 1:" | cut -d : -f 2- | tr -d ' ')

	if egrep -q '^([A-Z0-9]{4}-){6}' <<< "$pkey" ; then
		if egrep -q '^[A-Z0-9]{30}' <<< "$act" ; then
			echo "obseron $pkey" > "$1"
			echo "obseron_act $act" >> "$1"
			chown obseron:obseron "$1"
		fi
	fi
}

start() {
	if [ ! -f "$LFILE" ] ; then
		licensefromdmi "$LFILE"
	fi

        echo -n $"Starting $prog: "
        daemon --user obseron --pidfile="${pidfile}" $daemonbin -D $OPTIONS
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch "${lockfile}"
        return $RETVAL
}

stop() {
	echo -n $"Stopping $prog: "
	killproc -p "${pidfile}" -d ${STOP_TIMEOUT} $daemonbin
	RETVAL=$?
	echo
	[ $RETVAL = 0 ] && rm -f "${lockfile}" "${pidfile}"
}

reload() {
	false
}

# See how we were called.
case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  status)
        status -p "${pidfile}" $daemonbin
	RETVAL=$?
	;;
  restart)
	stop
	start
	;;
  *)
	echo $"Usage: $0 {start|stop|restart|status}"
	RETVAL=2
esac

exit $RETVAL
