#!/bin/bash
# Restart the proxies if they are not present
#
# Copyright (C) 2004 Networks Associates Technology Inc. All rights reserved.
# 
#
if [ -f $NETAWSS/.profile.vars ]; then 
    . $NETAWSS/.profile.vars 
else 
    . /var/NAIENV/.profile.vars 
fi 

restart()
{
	logger -t webshield "Proxy ${protocol} is ${STATE} - restarting"
	/usr/sbin/webshield proxy-restart
	echo $CURRENTTIME > /tmp/last_restart
	exit 0
}
restartable_proxy()
{
xsltproc - ${XMLCONFDIR}/system.xml <<-END
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>

<xsl:template match="/">
    <xsl:for-each select="//GlobalSettings[@name='system']/Policy[@name='system_variables']/PolicyStatement/Settings[@name='restart-proxy']/NetObjectList[@name='disk']/NetObject[@type='PROXY']">
        <xsl:choose>
        	<xsl:when test="Proxy/@value='${1}'">
        		<xsl:value-of select="Enabled/@value"/>
		</xsl:when>
        </xsl:choose>
    </xsl:for-each>
    <xsl:text>&#10;</xsl:text>
</xsl:template>

</xsl:stylesheet>
END
}

LASTTIME=
if [ -f /tmp/last_restart ]
then
	LASTTIME=`cat /tmp/last_restart`
fi
for protocol in smtp ftp http pop3 icap
do
	STATE=`grep "^s.${protocol}.state " /tmp/realtime.txt | cut -f2 -d" "`
	if [ "T${STATE}" = "TNOTOK" ]
	then
                RESTARTABLE=`restartable_proxy ${protocol}`
                if [ "T${RESTARTABLE}" = "T1" ]
                then
		    CURRENTTIME=`grep "^i.now " /tmp/realtime.txt | cut -f2 -d" "`
                    if [ "${LASTTIME}" != "${CURRENTTIME}"  ]
    		    then
			restart
			exit 0
	    	    fi
                fi
	fi
done
exit 0
