#!/bin/sh -e
# Note:any non-zero return code could break%post script processing
# of _any_ jabber-relative ALT Jabber Policy compatible package, 
# see #14369

CONFIG_FILE=/etc/jabber-alice/jabber-alice.xml
[ -r "$CONFIG_FILE" ] || exit 0

TEMP=`/bin/getopt -n "$0" -o '' -l port,host,password,set-port:,set-host:,set-password: -- "$@"` || exit 0
eval set -- "$TEMP"

TMP_FILE=''

backup_and_mktemp() {
if [ -z "$TMP_FILE" ]; then
	cp -f -- "$CONFIG_FILE" "$CONFIG_FILE.bak"
fi
TMP_FILE=`/bin/mktemp $CONFIG_FILE.XXXXXXX` || exit 0
}

update_if_modified() {
if diff -q "$CONFIG_FILE" "$TMP_FILE" > /dev/null 2>&1; then
	rm -f -- "$TMP_FILE"
else
	mv -f -- "$TMP_FILE" "$CONFIG_FILE"
fi
}


while :; do
    case "$1" in
	--ip)
		xmlstarlet select -t -v '/config/component_connection/host' "$CONFIG_FILE"
		;;
	--port)
		xmlstarlet select -t -v '/config/component_connection/port' "$CONFIG_FILE"
		;;
	--host)
		xmlstarlet select -t -v '/config/component_connection/component' "$CONFIG_FILE"
		;;
	--password)
		xmlstarlet select -t -v '/config/component_connection/secret' "$CONFIG_FILE"
		;;
	--set-port)
		backup_and_mktemp
		xmlstarlet edit -u '/config/component_connection/port' -v "$2" "$CONFIG_FILE" > "$TMP_FILE"
		update_if_modified
		shift
		;;
	--set-host)
		backup_and_mktemp
		xmlstarlet edit -u '/config/component_connection/host' -v "$2" "$CONFIG_FILE" > "$TMP_FILE"
		update_if_modified
		shift
		;;
	--set-password)
		backup_and_mktemp
		xmlstarlet edit -u '/config/component_connection/secret' -v "$2" "$CONFIG_FILE" > "$TMP_FILE"
		update_if_modified
		shift
		;;
	--)
		shift
		break
		;;
	*)
		echo "Invalid command: $1"
		exit 0
    esac
    shift
done

