#!/bin/sh

####################
# Chang Log:
#
# 2013/02/08    Ziming Xu <Ziming.b.Xu@alcatel-lucent.com>
#               crms00417047: confusion about the style of dmurl update
#
# 2013/01/10    Ziming Xu <Ziming.b.Xu@alcatel-lucent.com>
#               PR341502: Reduce Reboot Frequency
#
# 2012/12/14	Ziming Xu <Ziming.b.Xu@alcatel-lucent.com>
#		PR412060: DM URL update using ssh 
#
####################

. /etc/functions

cli="/usr/bin/CLISettings"
main="ENETCFG_DM_URL"
backup="ENETCFG_DM_BACKUP_URL"

Usage()
{
# PR412060 zimingxu+
	echo "DM URL configuration : Get, Set and Unset DM URL parameters";
# PR412060 zimingxu-
	echo "Usage:"
	echo " 		dmurl [main|backup]                get parameters values"
	echo "		dmurl set main|backup <value>      set parameters values"
	echo "		dmurl unset main|backup            unset parameters values"
	echo " 		dmurl [-h|--help|help]             get help"
# PR412060 zimingxu+
	echo "Notice: in DHCP mode if DM is configured in DHCP server, the settings set by dmurl" 
	echo "        will not take effect, otherwise changes takes effect after reboot"
# PR412060 zimingxu-
}

list()
{
# CRMS00417047 zimingxu+
        echo "main url (local): `$cli get LOCAL $main`"
# CRMS00417047 zimingxu-
        echo "main url (current): `$cli get CURRENT $main`"
# CRMS00417047 zimingxu+
        echo "backup url (local): `$cli get LOCAL $backup`"
# CRMS00417047 zimingxu-
        echo "backup url (current): `$cli get CURRENT $backup`"
}

exit_ko()
{
	echo "dmurl KO"
	exit 1
}

exit_ok()
{
	echo "dmurl OK"
	exit 0
}

checkUrl()
{
	parseUrl "$1"
	if [ -z $parseUrl_proto ] || [ -z $parseUrl_server ] || [ -z $parseUrl_path ]; then
		echo "Bad url syntax !"
		echo "Url syntax: <protocol>://<server>[:port]/[path]"
		exit_ko
	fi
}

[ -x $cli ] || { echo "Cannot run $cli"; exit_ko;}
[ $# -ne 0 ] || {  list ; exit_ok;}


if [ "$1" == "help" ] ||  [ "$1" == "--help" ] ||  [ "$1" == "-h" ]
then
		Usage
		exit_ok
else
# PR412060 zimingxu+
[ "$($cli get current ENETCFG_DHCP_MODE)" == "Dynamic" ] && \
	echo "WARNING: current DHCP mode is \"Dynamic\", if DM is configured in \
	      DHCP server changes will not take effect!" >&2
# PR412060 zimingxu-
if [ "$1" == "set" ]
then
	[ $# -eq 3 ] || { echo "Bad command syntax"; Usage; exit_ko;}
	if [ "$2" == "main" ] || [ "$2" == "backup" ] 
	then
		checkUrl $3
# PR341502 zimingxu+
		eval "$cli set LOCAL \$$2 $3 --nopost"
# PR341502 zimingxu-
		result=$?
	else
		echo "Unsupported parameter"
		Usage
		exit_ko
	fi	
else
if [ "$1" == "unset" ]
then
	[ $# -eq 2 ] || { echo "Bad command syntax"; Usage; exit_ko;}
	if [ "$2" == "main" ] || [ "$2" == "backup" ] 
	then
# PR341502 zimingxu+
		eval "$cli unset LOCAL \$$2 --nopost"
# PR341502 zimingxu-
		result=$?
	else
		echo "Unsupported parameter"
		Usage
		exit_ko
	fi	
else
	[ $# -eq 1 ] || { echo "Bad command syntax"; Usage; exit_ko;}
	if [ "$1" == "main" ] || [ "$1" == "backup" ] 
	then
		curr=$(eval "$cli get CURRENT \$$1")
		local=$(eval "$cli get LOCAL \$$1")
# CRMS00417047 zimingxu+
        	echo "$1 url (local): $local"
# CRMS00417047 zimingxu-
        	echo "$1 url (current): $curr"
		exit_ok
	else
		echo "Unsupported parameter"
		Usage
		exit_ko
	fi	
fi
fi
fi

if [ $result -eq 0 ] 
then exit_ok
else exit_ko
fi
