#!/bin/bash
# $Header: /cvs/WebShield/wsrc/files/mgmt/remove_extra_dat,v 1.3 2004/05/14 11:07:54 bwhittak Exp $
#
# Copyright (C) 2004 Networks Associates Technology Inc. All rights reserved.
#
# Called by the UI to remove any extra.dat file currently in use.
#
if [ -f $NETAWSS/.profile.vars ]; then
    . $NETAWSS/.profile.vars
else
    . /var/NAIENV/.profile.vars
fi
[[ "$PATH" == "$wsPATH":* || -z "$wsPATH" ]] || PATH=$wsPATH:$PATH

shopt -s extglob

# what do I call myself?
declare -r me=${0##*/}
declare -r cmdline="$me $*"

# constants
declare -r inst="$me.$(date -u '+%Y%m%d%H%M%S').$$"
declare -r tmp=/tmp/$inst	# temporary directory

# event codes
declare -r PROGevent=UPDATE_PROGRESS
declare -r CHNGevent=AV_UPDATE_CHANGE
declare -r NOCHevent=AV_UPDATE_NOCHANGE
declare -r FAILevent=AV_UPDATE_FAIL
declare -r INTRevent=AV_UPDATE_INTR

# functions

Event()		# report an event
{
    evrep -n $me -i AUDIT_ID -v $inst "$@" \
	${WS_SESSION:+-i UI_SESSION_ID -v "$WS_SESSION"} \
	${WS_USER_ID:+-i USER_NAME -v "$WS_USER_ID"} \
	${WS_SOURCE_IP:+-i SOURCE_IP -v "$WS_SOURCE_IP"} \
	${extra_id:+-i EXTRA_DAT_ID -v "$extra_id"}
}

# Remove extra.dat
Event -e $PROGevent::UpdateLocal -i COMMANDLINE -v "$cmdline"
if [[ ! -e "$DATDIR/extra.dat" ]]; then
    Event -e $NOCHevent::UpdateNoChange
    exit 0
fi

extra_id=$(olympusver -x)	# identify the extra.dat

ts=$(date +%Y-%m-%d_%T%Z)
out=$(wsmount 2>&1 <<-END
	[[ -d "$DATDIR/backup" ]] || mkdir -p "$DATDIR/backup"
	mv -f "$DATDIR/extra.dat" "$DATDIR/backup/extra.dat.$ts"
	rm -rf "$DATDIR/extra.dat"
END
)
if [[ $? -ne 0 ]]; then
    Event -e $FAILevent::SystemCommandError -i SYSTEM_ERROR_TEXT -v "$out"
    exit 1
fi

# Go home
proxy-restart </dev/null >/dev/null 2>&1 &
Event -e $CHNGevent::RemoveExtraDat
exit 0
