#!/bin/bash
# $Header: /cvs/WebShield/wsrc/files/mgmt/xmlconv.d/e02v26changes,v 1.7 2004/06/22 14:19:57 bwhittak Exp $
#
# Copyright (C) 2004 Networks Associates Technology Inc. All rights reserved.
#
# Apply WebShield.xml format changes 2.5 -> 2.6
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
shopt -s nullglob

# we only do files with VersionWebshield v1.0 (e500 v2.0 and e250 v2.1) and 2.5
[[ -n $OLDWSXVER && $OLDWSXVER != *'v1.0'?( *) && $OLDWSXVER != *'v2.5' ]] && exit

# load up the XWTrans element specifiers
. shvars-xmlconf

csed=''	# initialise

# get old DNS server from first (probably only) file
oldserv=$(GetXMLvalue "$1" "$wsNSERVER")

# sed script to take out old IPNameServer property and add LOCAL$DNS list
[[ -z $oldserv || $oldserv == 'not found' ]] ||
csed=$csed'
/<Property [^>]*\<cname="IPNameServer"/'"s/>$oldserv</></"'
/<NetItems>/,/\(<\/NetItems>\|\<name="LOCAL$DNS"\)/{
    s%</NetItems>%<NetObjectList name="LOCAL$DNS"><NetObject NetObjectType="NETWORK" type="Network"><ObjectAddress>'"$oldserv"'</ObjectAddress></NetObject></NetObjectList>&%
}
'

# sed script to clear TransparentPort settings
csed=$csed'
s/\(<Property [^>]*\<cname="TransparentPort"[^>]*\)>[0-9]*</\1></'

# get transparency settings
txstate=$(GetXMLvalue "$1" "$wsTXstate")
txmode=$(GetXMLvalue "$1" "$wsTXmode")

# sed script to set TransparencyMode on if required
[[ "$txstate" == @(on|yes) && "$txmode" == @(|'not found') ]] &&
csed=$csed'
/\<name="transparency"/,/<\/Service/{
/cname="TransparencyMode"/d
/\([[:space:]]*\)<Property [^>]*\<cname="State"/s%%\1<Property cname="TransparencyMode" wsn="transparency-mode">on</Property>\
&%
}
'

# sed script to turn on transparent-{in,out}bound for csmap if required
[[ "$txstate" == @(on|yes) ]] &&
csed=$csed'
/\<name="smap"/,/<\/Service/{
/\<cname="Transparent\(In\|Out\)Bound"/s/>off</>on</
}
'

# sed script to change defaults for ftp-gw
csed=$csed'
/\<name="ftp-gw"/,/<\/Service/{
/cname="MaxScanMemory"/s/>4000</>500</
/cname="DefaultMaxConnections"/s/>[0-9]*</>25</
/cname="DefaultMaxScanMemory"/s/>[0-9]*</>500</
/cname="L1MaxScanMemory"/s/>[0-9]*</>500</
}
'

# sed script to switch to load sharing
csed=$csed'
/\<name="\(in\|out\)bound-traffic"/,/<\/Service/{
/cname="AgentType"/s/>local</>ls</
}
'

# do the sed script for all the files
[[ -z "$csed" ]] && exit	# nothing to do
for f; do
    sed "$csed" "$f" > "$f.new" && cp "$f.new" "$f"
    rm -f "$f.new"
done
