#!/bin/bash
#
# Copyright (C) 2004 Networks Associates Technology Inc. All rights reserved.
#
# Startup script for Appliance Logging
#

if [ -f $NETAWSS/.profile.vars ]; then 
 . $NETAWSS/.profile.vars 
else 
 . /var/NAIENV/.profile.vars
fi
PATH=$wsPATH:$PATH
RET=0

email_config_file_initialised()
{
	xsltproc --xinclude - /config/wsxmlconf/channels.xml <<-END
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
    <xsl:value-of select="//Channel[@name='email']//Sender/@email"/>
</xsl:template>
</xsl:stylesheet>
END
}
write_email_sender_name()
{
	SENDER_LOCAL=postmaster
	SENDER_DOMAIN=`hostname --fqdn`	
	log_config_file="/config/wsxmlconf/channels.xml"
	tmp_rep="${LOGGING_DIR}/rep.xml.tmp"
	echo "<ReplaceXml>" > ${tmp_rep}
	echo -n "<Value xpath=\"//Channel[@name='email']//Sender/@email\" value='" >> ${tmp_rep}
	echo -n "${SENDER_LOCAL}@${SENDER_DOMAIN}" >> ${tmp_rep}
	echo -n "'/>" >> ${tmp_rep}
	echo "</ReplaceXml>" >> ${tmp_rep}
	/opt/NETAwss/mgmt/xml-replace ${tmp_rep} ${log_config_file} ${log_config_file}.tmp
	if [ $? -eq 0 ] ; then
		mv ${log_config_file}.tmp ${log_config_file}
		chown root.apache ${log_config_file}
		chmod 664 ${log_config_file}
	fi
	rm -f ${tmp_rep}
}

initialise_email_channel()
{
	LOGGING_DIR=/deferred/logging
	mkdir ${LOGGING_DIR} > /dev/null 2>&1
	chown uucp:uucp ${LOGGING_DIR} > /dev/null 2>&1
        email=$(email_config_file_initialised) && [[ -n $email ]] ||
           write_email_sender_name

}
initialise_log_channel()
{
	LOGGING_DIR=/logs/xmlchannel
	mkdir ${LOGGING_DIR} > /dev/null 2>&1
	chown uucp:uucp ${LOGGING_DIR} > /dev/null 2>&1
}

initialise_channels()
{
	initialise_email_channel
	initialise_log_channel
}

start()
{
    # check if the evthandler is already running and kill any already running instances.
    netstat -lp | grep 9143 >/dev/null 2>&1
    if [ $? = 0 ]
    then
      killall -q -KILL evthandler
      killall -q -KILL evthandler
    fi

    # Start logging subsystem
    initialise_channels

    START=`/usr/bin/sudo -u uucp /usr/sbin/webshield evthandler 2>&1`
    RETCODE=$?
    if [ $RETCODE != 0 ]
    then
	logger -t ws-appliance "logging:Cannot start evthandler error $RETCODE : $START"
	RET=1
    fi

    return 0
}

stop()
{
	/usr/sbin/webshield ws-flush
	killall -q -TERM evthandler
}

reload()
{
	/usr/sbin/webshield ws-flush
#	killall -q -HUP evthandler || restart
	restart
}

restart()
{
   $0 stop
   sleep 5
   $0 start
}

flush()
{
	/usr/sbin/webshield ws-flush
	killall -q -USR1 evthandler
}

logger -t evthandler -p local5.info "$1"

# See how we were called.
case "$1" in
  start)
        start
	;;
  stop)
        stop
	;;
  flush)
	flush
	;;
  reload)
	reload
	;;
  restart)
	restart
	;;
  *)
	echo "Usage: $0 {start|stop|restart|reload}"
	exit 1
esac

exit $RET
