#! /bin/sh
#
# ++Copyright Product++
#
# Copyright (c) 2002 Packet General Networks, Inc. ("PGN").
# All rights reserved.
#
# THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF PGN
# The copyright notice above does not evidence any actual
# or intended publication of such source code.
#
# Please refer to the file COPYRIGHT and the PGN Source Code Product
# License Agreement for the specific terms and conditions.
#
# Packet General Networks, Inc.
# 75 East Loop Road
# Suite 105, Suffolk Hall
# Stony Brook, NY 11790
#
# +1 631 632 3084
# <pgn-info@packetgeneral.com <mailto:pgn-info@packetgeneral.com>>
#
# --Copyright Product--

# serverg: Used to start/stop the service

LICENSE_FILE="/etc/serverg/sg-license.txt"
SERVERG_CONF="/etc/serverg/serverg.conf"

usage()
{
	echo "Usage srvg -c <command>, where command can be:"
	echo "srvg -c backupconfig -v \n"
	echo "srvg -c da-add -f <config-file> -v \n"
	echo "srvg -c da-edit -d <da-id> -v\n"
	echo "srvg -c da-list -v \n"
	echo "srvg -c da-mk-rotate -d <da-id> -v \n"
	echo "srvg -c da-revoke-reassign -d <revoked-da-id> -a <assigned-da-id> -v\n"
	echo "srvg -c keystore-add -i <host-name OR IP> -u <username> -p <password> -d <path-to-store-key> -v\n"
	echo "srvg -c license-add -v\n"
	echo "srvg -c license-update -v\n"
	echo "srvg -c policy-add -f <policy-file> -v \n"
	echo "srvg -c policy-list -d <da-id> -t <key-type (SMK/DMK)> -v\n"
	echo "srvg -c policy-list -a -v\n"
	echo "srvg -c policy-remove -p <policy-name> -d <da-id>  -v\n"
	echo "srvg -c policy-start -p <policy-name> -d <da-id> -v\n"
	echo "srvg -c policy-stop -p <policy-name> -d <da-id> -v\n"
	echo "srvg -c policy-status -d <da-id> -p <policy-name> -t <key-type (SMK/DMK)> -v\n"
	echo "srvg -c policy-status -d <da-id> -a -t <key-type (SMK/DMK)> -v\n"
	echo "srvg -c policy-status -a -v\n"
	echo "srvg -c so-add -f <config-file> -v\n"
	echo "srvg -c sg-status -v\n"
	echo "Pending commands - To be implemented\n"
	echo "srvg -c restoreconfig -v \n"
	echo "srvg -c so-edit -v\n"
	echo "srvg -c da-mk-rotate-reenc -d <da-id> -o <old DA key> -n <new DA key>"
	echo "srvg -c so-mk-rotate -o <old SMK> -n <new SMK>"
	echo "srvg -c policy-update -v "
	
}

check_file()
{
	cfg_file=$1

	# Check if the file is readable 
	if [ -f $cfg_file ]; then
		ret=0	
	else
		echo "Error: Config file $cfg_file does not exist"
		ret=1	
	fi

	return $ret
}

append_mk()
{
	cp $2 $temp_cfg_file
	if [ $? -eq 1 ]; then
		return 1
	fi

	if [ "$3" != "" ]; then
		echo "$1=$3" >> $temp_cfg_file
	fi

	return 0	
}

append_temp_config()
{

	if [ "$2" != "" ]; then
		echo "$1=$2" >> $temp_cfg_file
	fi

	return 0	
}

# main code 
PATH=/sbin:/bin:/usr/sbin:/usr/bin:$PATH
export PATH
IFS='
'

# Only root can run this
id | grep "uid=0(" >/dev/null
if [ $? != "0" ]; then
        uname -a | grep -i CYGWIN >/dev/null
        if [ $? != "0" ]; then
                echo "Error: The Server-GENERAL script must be run as sudo";
                echo "";
                exit 1;
        fi
fi

# Create a Temp File for Config 
temp_cfg_file=`mktemp`
smk=""
dmk=""
out_file=""
verbose="quiet"
getopts ":c:" opt;
        case $opt in
        c)
                cmd=$OPTARG
                ;;
        \?)
                usage
                exit 1
                ;;
        :)
                usage
                exit 1
                ;;
        esac

case "$cmd" in
	license-add)
		if [ $# -lt 3 ]; then
			echo "Usage: srvg -c license-add -v OR"
			echo "Usage : srvg -c license-add -k <License key>"
			exit 1;
		fi
		while getopts "vk:h" opt; do
			case $opt in
			k)
				lkey=$OPTARG
				;;
			v)
				verbose="verbose"
				;;
			:)
				usage
				exit 1
	      			;;
			esac
		done
		if [ -f $SERVERG_CONF ];
		then
		cat $SERVERG_CONF | grep "license=" >/dev/null
			if [ $? -eq 0 ]; then
				echo "Error: This machine is already licensed."
				echo "Command: license-add Failed."
				exit 1
			
			fi
		fi

		if [ "$verbose" = "quiet"  -a $# -lt 4 ]; then 
			echo "Usage: srvg -c license-add -v OR"
			echo "Usage : srvg -c license-add -k <License key>"
			exit 1;
		fi

		# show the license agreement
		answer="n"
		cat $LICENSE_FILE | more

		i=1

		while [ $i -le 3 ]; do
		        read -p "ACCEPT License Agreement? [NO/YES] (default NO)" yn
		        case $yn in
                	Yes | YES | yes ) 
					answer="y" 
                        		break;;
	                No | NO | no ) 
					answer="n" 
					break;;
                	* ) echo "Please answer yes or no.";;

	        	esac
			i=`expr $i + 1`
		done

		if [ "$answer" = "n" ]; then 
			echo "License Not Added"
			echo "Program Exiting"
			exit 1
		fi

		serverg license-add $verbose $lkey 
		;;

	license-update)
		if [ $# -lt 3 ]; then
			echo "Usage : srvg -c license-update -k <License key> -s <SO key> OR"
			echo "srvg -c license-update -v"
			exit 1;
		fi
		while getopts "vhk:s:" opt; do
			case $opt in
			k)
				lkey=$OPTARG
				;;
			s)
				smk=$OPTARG
				;;
			v)
				verbose="verbose"
				;;
			\?)
				echo "Invalid $OPTARG" >&2
				usage
				exit 1
				;;
			:)
				usage
				exit 1
	      			;;
			esac
		done

		if [ "$verbose" = "quiet"  -a $# -lt 6 ]; then 
			echo "Usage : srvg -c license-update -k <License key> -s <SO key> OR"
			echo "srvg -c license-update -v"
			exit 1;
		fi

		serverg license-update $verbose $lkey $smk
		;;

	so-add)
		if [ $# -lt 5 ]; then
			echo "Usage : srvg -c so-add -f <config-file> -k <SO key> OR"
			echo "srvg -c so-add -f <config-file> -v"
			exit 1;
		fi
		while getopts "vhf:k:" opt; do
			case $opt in
			f)
			 	config_file=$OPTARG 
				;;
			k)
				smk=$OPTARG
				;;
			v)
				verbose="verbose"
				;;
			\?)
				echo "Invalid $OPTARG" >&2
				usage
				exit 1
			 	;;
     			:)
				usage
				exit 1
	      			;;
			esac
		done

		if [ "$verbose" = "quiet"  -a $# -lt 6 ]; then 
			echo "Usage : srvg -c so-add -f <config-file> -k <SO key> OR"
			echo "srvg -c so-add -f <config-file> -v"
			exit 1;
		fi
		check_file $config_file
		if [ $? -eq 1 ]; then
			exit 1
		fi

		append_mk "so_mk" $config_file $smk
		if [ $? -eq 1 ]; then
			exit 1
		fi

		# Call Serverg 
		serverg so-add $verbose $temp_cfg_file 
		;;
	
	da-add)
		if [ $# -lt 5 ]; then
			echo "Usage srvg -c da-add -f <config-file> -d <DA key> -s <SO key> OR "
			echo "Usage srvg -c da-add -f <config-file> -v "
			exit 1;
		fi
		while getopts "vhf:d:s:" opt; do
			case $opt in
			f)
			 	config_file=$OPTARG 
				;;
			d)
				dmk=$OPTARG
				;;
			s)
				smk=$OPTARG
				;;
			v)
				verbose="verbose"
				;;
			\?)
				echo "Invalid $OPTARG" >&2
				usage
				exit 1
			 	;;
     			:)
				usage
				exit 1
	      			;;
			esac
		done

		if [ "$verbose" = "quiet"  -a $# -lt 8 ]; then 
			echo "Usage : srvg -c da-add -f <config-file> -d <DA key> -s <SO key> OR "
			echo "srvg -c da-add -f <config-file> -v "
			exit 1;
		fi

		check_file $config_file
		if [ $? -eq 1 ]; then
			exit 1
		fi

		append_mk "da_mk" $config_file $dmk
		if [ $? -eq 1 ]; then
			exit 1
		fi

		# Call Serverg 
		serverg da-add $verbose $temp_cfg_file $smk
		;;
	da-edit)
		if [ $# -lt 5 ]; then
			echo "Usage  : srvg -c da-edit -d <da-id> -k <DA key> -f <DA fname> -l <DA lname> -e <email-id> -t <Phone no> OR"
			echo "srvg -c da-edit -d <da-id> -v"
			exit 1;
		fi
		while getopts "vhd:k:f:l:e:t:" opt; do
			case $opt in
			d)
			 	da_id=$OPTARG 
				;;
			k)
				dmk=$OPTARG
				;;
			f)
				fname=$OPTARG
				;;
			l)
				lname=$OPTARG
				;;
			e)
				email=$OPTARG
				;;
			t)
				phone=$OPTARG
				;;
			
			v)
				verbose="verbose"
				;;
			\?)
				echo "Invalid $OPTARG" >&2
				usage
				exit 1
			 	;;
     			:)
				usage
				exit 1
	      			;;
			esac
		done

		if [ "$verbose" = "quiet"  -a $# -lt 8 ]; then 
			echo "Usage  : srvg -c da-edit -d <da-id> -k <DA key> -f <DA fname> -l <DA lname> -e <email-id> -t <Phone no> OR"
			echo "srvg -c da-edit -d <da-id> -v"
			exit 1;
		fi

		if [ "$verbose" = "quiet" ]; then
			append_temp_config "da_id" $da_id
			append_temp_config "da_fname" $fname
			append_temp_config "da_lname" $lname
			append_temp_config "da_email" $email
			append_temp_config "da_phone" $phone
			append_temp_config "da_mk" $dmk
			serverg da-edit $verbose $da_id $temp_cfg_file $dmk
		else
			serverg da-edit $verbose $da_id 
		fi
		;;

	da-list)
		if [ $# -lt 3 ]; then
			echo "Usage : srvg -c da-list -k <SO key> -o <output-fname> OR"
			echo "srvg -c da-list -v"
			exit 1;
		fi
		while getopts "vhk:o:" opt; do
			case $opt in
			k)
				smk=$OPTARG
				;;
			o)
				out_file=$OPTARG
				;;

			v)
				verbose="verbose"
				;;
			\?)
				echo "Invalid $OPTARG" >&2
				usage
				exit 1
			 	;;
     			:)
				usage
				exit 1
	      			;;
			esac
		done

		if [ "$verbose" = "quiet"  -a $# -lt 6 ]; then 
			echo "Usage : srvg -c da-list -k <SO key> -o <output-fname> OR"
			echo "srvg -c da-list -v"
			exit 1;
		fi
		# Call Serverg 
		serverg da-list $verbose $smk $out_file
		;;

	policy-add)
		if [ $# -lt 5 ]; then
			echo "Usage : srvg -c policy-add -f <policy-file> -d <DA key> OR"
			echo "srvg -c policy-add -f <policy-file> -v"
			exit 1;
		fi
		while getopts "vhf:d:" opt; do
			case $opt in
			f)
			 	config_file=$OPTARG 
				;;
			d)
				dmk=$OPTARG
				;;
			v)
				verbose="verbose"
				;;
			\?)
				echo "Invalid $OPTARG" >&2
				usage
				exit 1
			 	;;
     			:)
				usage
				exit 1
	      			;;
			esac
		done

		if [ "$verbose" = "quiet"  -a $# -lt 6 ]; then 
			echo "Usage : srvg -c policy-add -f <policy-file> -d <DA key> OR"
			echo "srvg -c policy-add -f <policy-file> -v"
			exit 1;
		fi
		check_file $config_file
		if [ $? -eq 1 ]; then
			exit 1
		fi

		append_mk "da_mk" $config_file $dmk
		if [ $? -eq 1 ]; then
			exit 1
		fi

		# Call Serverg 
		serverg configure $verbose $temp_cfg_file
		;;

	policy-remove)
		if [ $# -lt 7 ]; then
			echo "Usage : srvg -c policy-remove -p <policy-name> -d <da-id> -k <DA key> OR "
			echo "srvg -c policy-remove -p <policy-name> -d <da-id> -v "
			exit 1;
		fi
		while getopts "vhp:d:k:" opt; do
			case $opt in
			p)
			 	policy_name=$OPTARG 
				;;
			d)
				da_id=$OPTARG
				;;
			k)
				dmk=$OPTARG
				;;
			v)
				verbose="verbose"
				;;
			\?)
				echo "Invalid $OPTARG" >&2
				usage
				exit 1
			 	;;
     			:)
				usage
				exit 1
	      			;;
			esac
		done

		if [ "$verbose" = "quiet"  -a $# -lt 8 ]; then 
			echo "Usage : srvg -c policy-remove -p <policy-name> -d <da-id> -k <DA key> OR "
			echo "srvg -c policy-remove -p <policy-name> -d <da-id> -v "
			exit 1;
		fi
		# Call Serverg 
		serverg unconfigure $verbose $policy_name $da_id $dmk
		;;

	policy-start)
		if [ $# -lt 7 ]; then
			echo "Usage : srvg -c policy-start -p <policy-name> -d <da-id> -k <DA key> OR "
			echo "srvg -c policy-start -p <policy-name> -d <da-id> -v "
			exit 1;
		fi
		while getopts "vhp:d:k:" opt; do
			case $opt in
			p)
			 	policy_name=$OPTARG 
				;;
			d)
				da_id=$OPTARG
				;;
			k)
				dmk=$OPTARG
				;;
			v)
				verbose="verbose"
				;;
			\?)
				echo "Invalid $OPTARG" >&2
				usage
				exit 1
			 	;;
     			:)
				usage
				exit 1
	      			;;
			esac
		done

		if [ "$verbose" = "quiet"  -a $# -lt 8 ]; then 
			echo "Usage : srvg -c policy-start -p <policy-name> -d <da-id> -k <DA key> OR "
			echo "srvg -c policy-start -p <policy-name> -d <da-id> -v "
			exit 1;
		fi
		# Call Serverg 
		serverg start $verbose $policy_name $da_id $dmk
		;;

	policy-stop)
		if [ $# -lt 7 ]; then
			echo "Usage : srvg -c policy-stop -p <policy-name> -d <da-id> -k <DA key> OR "
			echo "srvg -c policy-stop -p <policy-name> -d <da-id> -v "
			exit 1;
		fi
		while getopts "vhp:d:k:" opt; do
			case $opt in
			p)
			 	policy_name=$OPTARG 
				;;
			v)
				verbose="verbose"
				;;
			d)
				da_id=$OPTARG
				;;
			k)
				dmk=$OPTARG
				;;
			\?)
				echo "Invalid $OPTARG" >&2
				usage
				exit 1
			 	;;
     			:)
				usage
				exit 1
	      			;;
			esac
		done

		if [ "$verbose" = "quiet"  -a $# -lt 8 ]; then 
			echo "Usage : srvg -c profil-stop -p <policy-name> -d <da-id> -k <DA key> OR "
			echo "srvg -c policy-stop -p <policy-name> -d <da-id> -v "
			exit 1;
		fi
		# Call Serverg 
		serverg stop $verbose $policy_name $da_id $dmk
		;;

	da-mk-rotate)
		if [ $# -lt 5 ]; then
			echo "Usage  : srvg -c da-mk-rotate -d <da-id> -o <old DA key> -n <new DA key> OR"
			echo "srvg -c da-mk-rotate -d <da-id> -v"
			exit 1;
		fi
		while getopts "vhd:o:n:" opt; do
			case $opt in
			d)
			 	da_name=$OPTARG 
				;;
			o)
				old_dmk=$OPTARG
				;;
			n)
				new_dmk=$OPTARG
				;;
			v)
				verbose="verbose"
				;;
			\?)
				echo "Invalid $OPTARG" >&2
				usage
				exit 1
			 	;;
     			:)
				usage
				exit 1
	      			;;
			esac
		done

		if [ "$verbose" = "quiet"  -a $# -lt 8 ]; then 
			echo "Usage  : srvg -c da-mk-rotate -d <da-id> -o <old DA key> -n <new DA key> OR"
			echo "srvg -c da-mk-rotate -d <da-id> -v"
			exit 1;
		fi
		# Call Serverg 
		serverg da-mk-rotate $verbose $da_name $old_dmk $new_dmk
		;;

	da-revoke-reassign)
		if [ $# -lt 7 ]; then
			echo "Usage  : srvg -c da-revoke-reassign -d <revoked-da-id> -a <assigned-da-id> -s <SO key> OR"
			echo "srvg -c da-revoke-reassign -d <revoked-da-id> -a <assigned-da-id> -v"
			exit 1;
		fi
		while getopts "vhd:a:s:" opt; do
			case $opt in
			d)
			 	old_da_name=$OPTARG 
				;;
			a)
				new_da_name=$OPTARG
				;;
			s)
				smk=$OPTARG
				;;
			v)
				verbose="verbose"
				;;
			\?)
				echo "Invalid $OPTARG" >&2
				usage
				exit 1
			 	;;
     			:)
				usage
				exit 1
	      			;;
			esac
		done

		if [ "$verbose" = "quiet"  -a $# -lt 8 ]; then 
			echo "Usage  : srvg -c da-revoke-reassign -d <revoked-da-id> -a <assigned-da-id> -s <SO key> OR"
			echo "srvg -c da-revoke-reassign -d <revoked-da-id> -a <assigned-da-id> -v"
			exit 1;
		fi
		# Call Serverg 
		serverg da-revoke-reassign $verbose $old_da_name $new_da_name $smk
		;;

	policy-status)
		policy_name=""
		status_all="one"
		if [ $# -lt 4 ]; then
			echo "Usage : srvg -c policy-status -d <da-id>  -p <policy-name> -k <key> -t <key-type> (SMK/DMK) -o <output-fname> OR"
			echo "srvg -c policy-status -d <da-id>  -a -k <key> -t <key-type> (SMK/DMK) -o <output-fname> OR"
			echo "srvg -c policy-status -d <da-id> -p <policy-name> -t <key-type>(SMK/DMK) -v"
			echo "srvg -c policy-status -d <da-id> -a -t <key-type>(SMK/DMK) -v"
			echo "srvg -c policy-status -a -v OR"
			echo "srvg -c policy-status -a -k <SMK> -o <output-fname>"
			exit 1;
		fi
		while getopts "vhad:k:p:o:t:" opt; do
			case $opt in
			d)
			 	da_name=$OPTARG 
				;;
			k)
				dmk=$OPTARG
				;;
			p)
			 	policy_name=$OPTARG 
				;;
			a)
			 	status_all="all" 
				;;
			o)
				out_file=$OPTARG
				;;
			t)
				key_type=$OPTARG
				;;
			v)
				verbose="verbose"
				;;
			\?)
				echo "Invalid $OPTARG" >&2
				usage
				exit 1
			 	;;
     			:)
				usage
				exit 1
	      			;;
			esac
		done

		if [ "$da_name" != "" -a "$status_all" != "all" -a "$key_type" != "SMK" -a "$key_type" != "DMK" ]; then
			echo "key-type can be either SMK or DMK"
			echo "Usage : srvg -c policy-status -d <da-id>  -p <policy-name> -k <key> -t <key-type> (SMK/DMK) -o <output-fname> OR"
			echo "srvg -c policy-status -d <da-id>  -a -k <key> -t <key-type> (SMK/DMK) -o <output-fname> OR"
			echo "srvg -c policy-status -d <da-id> -p <policy-name> -t <key-type>(SMK/DMK) -v OR"
			echo "srvg -c policy-status -d <da-id> -a -t <key-type>(SMK/DMK) -v OR"
			echo "srvg -c policy-status -a -v OR"
			echo "srvg -c policy-status -a -k <SMK> -o <output-fname>"
			exit 1;
		fi

		if [ "$policy_name" = "" -a "$status_all" = "one" ]; then
			echo "Neither policy name nor '-a' specified"
			echo "Usage : srvg -c policy-status -d <da-id>  -p <policy-name> -k <key> -t <key-type> (SMK/DMK) -o <output-fname> OR"
			echo "srvg -c policy-status -d <da-id>  -a -k <key> -t <key-type> (SMK/DMK) -o <output-fname> OR"
			echo "srvg -c policy-status -d <da-id> -p <policy-name> -t <key-type>(SMK/DMK) -v OR"
			echo "srvg -c policy-status -d <da-id> -a -t <key-type>(SMK/DMK) -v OR"
			echo "srvg -c policy-status -a -v OR"
			echo "srvg -c policy-status -a -k <SMK> -o <output-fname>"
			exit 1;
		fi

		if [ "$policy_name" != "" -a "$status_all" = "all" ]; then
			echo "Both policy name and '-a' specified"
			echo "Usage : srvg -c policy-status -d <da-id>  -p <policy-name> -k <key> -t <key-type> (SMK/DMK) -o <output-fname> OR"
			echo "srvg -c policy-status -d <da-id>  -a -k <key> -t <key-type> (SMK/DMK) -o <output-fname> OR"
			echo "srvg -c policy-status -d <da-id> -p <policy-name> -t <key-type>(SMK/DMK) -v OR"
			echo "srvg -c policy-status -d <da-id> -a -t <key-type>(SMK/DMK) -v OR"
			echo "srvg -c policy-status -a -v OR"
			echo "srvg -c policy-status -a -k <SMK> -o <output-fname>"
			exit 1;
		fi

		if [ "$da_name" != "" -a "$verbose" = "quiet"  -a $# -lt 11 ]; then 
			echo "Usage : srvg -c policy-status -d <da-id>  -p <policy-name> -k <key> -t <key-type> (SMK/DMK) -o <output-fname> OR"
			echo "srvg -c policy-status -d <da-id>  -a -k <key> -t <key-type> (SMK/DMK) -o <output-fname> OR"
			echo "srvg -c policy-status -d <da-id> -p <policy-name> -t <key-type>(SMK/DMK) -v OR"
			echo "srvg -c policy-status -d <da-id> -a -t <key-type>(SMK/DMK) -v OR"
			echo "srvg -c policy-status -a -v OR"
			echo "srvg -c policy-status -a -k <SMK> -o <output-fname>"
			exit 1;
		fi

		# Call Serverg 
		if [ "$status_all" = "one" ]; then
			serverg da-policy-status $verbose $da_name $policy_name $key_type $dmk $out_file
		elif [ "$status_all" = "all" -a  "$da_name" != "" ]; then
			serverg da-profiles-status-all $verbose $da_name $key_type $dmk $out_file
		else 
			serverg profiles-status-all $verbose $dmk $out_file
		fi
		;;
	policy-list)
		all="one"
		if [ $# -lt 4 ]; then
			echo "Usage : srvg -c policy-list -d <da-id> -k <key> -t <key-type> (SMK/DMK) -o <output-fname> OR"
			echo "srvg -c policy-list -d <da-id> -t <key-type (SMK/DMK)> -v OR"
			echo "srvg -c policy-list -a -v OR"
			echo "srvg -c policy-list -a -k <SMK> -o <output-fname>"
			exit 1;
		fi
		while getopts "avhd:k:o:t:" opt; do
			case $opt in
			d)
			 	da_name=$OPTARG 
				;;
			t)
				key_type=$OPTARG
				;;
			k)
				dmk=$OPTARG
				;;
			o)
				out_file=$OPTARG
				;;
			v)
				verbose="verbose"
				;;
			a)	
				all="all"
				;;
			\?)
				echo "Invalid $OPTARG" >&2
				usage
				exit 1
			 	;;
     			:)
				usage
				exit 1
	      			;;
			esac
		done

		if [ "$all" = "all" ]; then
			if [ "$verbose" = "quiet" ]; then 
				if [ $# -ne 7 ]; then
					echo "srvg -c policy-list -a -v OR"
					echo "srvg -c policy-list -a -k <SMK> -o <output-fname>"
					exit 1
				fi
			else
				if [ $# -ne 4 ]; then
					echo "srvg -c policy-list -a -v OR"
					echo "srvg -c policy-list -a -k <SMK> -o <output-fname>"
					exit 1
				fi

			fi 
				
		fi

		if [ "$all" = "one" -a "$key_type" != "SMK" -a "$key_type" != "DMK" ]; then
			echo "key-type can be either SMK or DMK"
			echo "Usage : srvg -c policy-list -d <da-id> -k <DA key> -t <key-type (SMK/DMK)> -o <output-fname> OR"
			echo "srvg -c policy-list -d <da-id> -t <key-type (SMK/DMK)> -v OR"
			echo "srvg -c policy-list -a -v OR"
			echo "srvg -c policy-list -a -k <SMK> -o <output-fname>"
			exit 1;
		fi

		if [ "$all" = "one" -a "$verbose" = "quiet"  -a $# -lt 10 ]; then 
			echo "Usage : srvg -c policy-list -d <da-id> -k <DA key> -t <key-type (SMK/DMK)> -o <output-fname> OR"
			echo "srvg -c policy-list -d <da-id> -t <key-type (SMK/DMK)> -v OR"
			echo "srvg -c policy-list -a -v OR"
			echo "srvg -c policy-list -a -k <SMK> -o <output-fname>"
			exit 1;
		fi
		# Call Serverg 
		if [ "$all" = "one" ]; then
			serverg profiles-list $verbose $da_name $key_type $dmk $out_file
		else
			serverg profiles-list-all $verbose $dmk $out_file
		fi
		;;
	keystore-add)
		echo "Your cloud based keystore has already been added. Command not permitted."
		exit 1;
		if [ $# -lt 11 ]; then
			echo "Usage: srvg -c keystore-add -i <host-name OR IP> -u <username> -p <password> -d <path-to-store-key> -k <SO Key>" OR
			echo "srvg -c keystore-add -i <host-name OR IP> -u <username> -p <password> -d <path-to-store-key> -v"
			exit 1;
		fi
		while getopts "vhi:u:p:d:k:" opt; do
			case $opt in
			i)
				hname=$OPTARG
				;;
			u)
			 	uname=$OPTARG 
				;;
			p)
				passwd=$OPTARG
				;;
			d)	
				path=$OPTARG
				;;
			k)
				smk=$OPTARG
				;;
			v)
				verbose="verbose"
				;;
			\?)
				echo "Invalid $OPTARG" >&2
				usage
				exit 1
			 	;;
     			:)
				usage
				exit 1
	      			;;
			esac
		done

		if [ "$verbose" = "quiet"  -a $# -lt 12 ]; then 
			echo "srvg -c keystore-add -i <host-name OR IP> -u <username> -p <password> -d <path-to-store-key> -k <SO Key>" OR
			echo "Usage: srvg -c keystore-add -i <host-name OR IP> -u <username> -p <password> -d <path-to-store-key> -v"
			exit 1;
		fi
		# Call Serverg 
		serverg keystore-add $verbose $hname $uname $passwd $path $smk
		;;
	sg-status)
		if [ $# -lt 3 ]; then
			echo "Usage : srvg -c sg-status -s <SO key> -o <output-fname> <OR"
			echo "srvg -c sg-status -v"
			exit 1;
		fi
		while getopts "vho:s:" opt; do
			case $opt in
			s)
				smk=$OPTARG
				;;
			v)
				verbose="verbose"
				;;
			o)
				out_file=$OPTARG
				;;
			\?)
				echo "Invalid $OPTARG" >&2
				usage
				exit 1
				;;
			:)
				usage
				exit 1
	      			;;
			esac
		done

		if [ "$verbose" = "quiet"  -a $# -lt 6 ]; then 
			echo "Usage : srvg -c sg-status -s <SO key> -o <output-fname> <OR"
			echo "srvg -c sg-status -v"
			exit 1;
		fi

		serverg sg-status $verbose $smk $out_file
		;;
	backupconfig)
		if [ $# -lt 3 ]; then
			echo "Usage : srvg -c backupconfig -k <SMK> OR"
			echo "srvg -c backupconfig -v OR"
			exit 1;
		fi
		while getopts "vhk:" opt; do
			case $opt in
			k)
				smk=$OPTARG
				;;
			v)
				verbose="verbose"
				;;
			\?)
				echo "Invalid $OPTARG" >&2
				usage
				exit 1
			 	;;
     			:)
				usage
				exit 1
	      			;;
			esac
		done
		
		if [ "$verbose" = "quiet"  -a $# -lt 4 ]; then 
			echo "Usage : srvg -c backupconfig -k <SMK> OR"
			echo "srvg -c backupconfig -v OR"
			exit 1;
		fi
	
		serverg backupconfig $verbose $smk	
		;;
	restoreconfig)
		echo "Command not implemented yet" >&2
		exit 1
		if [ $# -lt 3 ]; then
			echo "Usage : srvg -c restoreconfig -k <SMK> OR"
			echo "srvg -c restoreconfig -v OR"
			exit 1;
		fi
		while getopts "vhk:" opt; do
			case $opt in
			k)
				smk=$OPTARG
				;;
			v)
				verbose="verbose"
				;;
			\?)
				echo "Invalid $OPTARG" >&2
				usage
				exit 1
			 	;;
     			:)
				usage
				exit 1
	      			;;
			esac
		done
		
		if [ "$verbose" = "quiet"  -a $# -lt 4 ]; then 
			echo "Usage : srvg -c restoreconfig -k <SMK> OR"
			echo "srvg -c restoreconfig -v OR"
			exit 1;
		fi
	
		serverg restoreconfig $verbose $smk	
		;;

	so-edit)
		echo "Command not implemented yet" >&2
		exit 1
		;;

	so-mk-rotate)
		echo "Command not implemented yet" >&2
		exit 1
		;;
	da-mk-rotate-reenc)
		echo "Command not implemented yet" >&2
		exit 1
		;;
	*)
		echo "Wrong command"
		usage
		exit 1
		;;

esac

if [ $? -eq 0 ]; then
	rm -rf $temp_cfg_file
	exit 0
else
	rm -rf $temp_cfg_file
	exit 1
fi
#	rm -rf $temp_cfg_file

