#!/bin/sh

. ../common/ajax_common

if [ "${PALANG}" = "en" ]; then
	LANG001="Error"		#ʧ
	LANG002="Success"	#ɹ
	LANG003="Set_Server"		#
	LANG004="Del_Server"		#ɾ
	LANG005="Del_Server"		#ɾ
	LANG006="Set_Server_Group"	#
	LANG007="Del_Server_Group"	#ɾ
	LANG008="Del_Server_Group"	#ɾ
fi


list_server()
{
	[ "${CGI_group}" != "" ] && args="group=${CGI_group}"
	
	printf "["
	${FLOWEYE} server list ${args}
	printf "]"
}


list_svrgroup()
{
	${FLOWEYE} svrgroup list | grep -i "${CGI_keyword}" | awk \
	'BEGIN{
		dot="";
		printf "[";
	}{
		printf "%s{", dot;
		printf "\"id\":%d,", $1;
		printf "\"name\":\"%s\",", $2;
		printf "\"svrcnt\":\"%s\",", $3;
		printf "\"type\":\"%s\",", $4;
		printf "\"flowcnt\":\"%s\",", $5;
		printf "\"missed\":\"%s\",", $6;
		printf "\"bpsin\":\"%s\",", $7;
		printf "\"bpsout\":\"%s\"", $8;
		printf "}";
		if(dot == "") dot=","
	}END{
		printf "]";
	}'
}


get_server()
{
    ${FLOWEYE} server get id=${CGI_id} | awk -F "=" \
	'BEGIN{
		dot = "";
		printf "{";
	}{
		printf "%s", dot;
		printf "\"%s\":\"%s\"", $1, $2;
		if (dot == "") dot = ",";
	}END{
		printf "}";
	}'
}


get_svrgroup()
{
	${FLOWEYE} svrgroup get id=${CGI_id} | awk -F "=" \
	'BEGIN{
		dot = "";
		printf "{";
	}{
		printf "%s", dot;
		printf "\"%s\":\"%s\"", $1, $2;
		if (dot == "") dot = ",";
	}END{
		printf "}";
	}'
}


load_add_server_env()
{
	printf "{"
	printf "\"svrgroup\":`list_svrgroup`"

	if [ "${CGI_id}" != "" ]; then
		printf ",\"server\":`get_server`"
	fi

	printf "}"
}


add_server()
{
	args=""
    action="add"

    [ "${CGI_action}" = "edit_server" ] && action="set id=${CGI_id}"

	args="${action} name=${CGI_name} ip=${CGI_ip} port=${CGI_port} weight=${CGI_weight}"
	[ "${CGI_sgid}" != "" ] && args="${args} group=${CGI_sgid}"
	[ "${CGI_nexthop}" != "" ] && args="${args} nexthop=${CGI_nexthop}"
	args="${args} hctype=${CGI_hctype} hcinternal=${CGI_hcinternal} hcttl=${CGI_hcttl}"

	errmsg=`${FLOWEYE} server ${args}`
	
	if [ $? -ne 0 ]; then
		retjson 1 "${LANG001:=ʧ}${errmsg}"
	else
		sync_floweye "server ${args}"
        WEB_LOGGER "${LANG003:=}" "${args}"
		retjson 0 "${LANG002:=ɹ}"
	fi
}


rmv_server()
{
	errmsg=`${FLOWEYE} server remove id=${CGI_id}`

	if [ $? -ne 0 ]; then
		retjson 1 "${LANG001:=ʧ}${errmsg}"
	else
		sync_floweye "server remove id=${CGI_id}"
        WEB_LOGGER "${LANG004:=ɾ}" "id=${CGI_id}"
		retjson 0 "${LANG002:=ɹ}"
	fi
}


btnremove_server()
{
	for id in `echo ${CGI_items} | tr ";" " "`
	do
		errmsg=`${FLOWEYE} server remove id=${id}`
		[ $? -ne 0 ] && retjson 1 "${LANG001:=ʧ}${errmsg}"
		sync_floweye "server remove id=${id}"
	done

	WEB_LOGGER "${LANG005:=ɾ}" "ids=${CGI_items}"
	retjson 0 "${LANG002:=ɹ}"
}


add_svrgroup()
{
    action="add"

    [ "${CGI_action}" = "edit_svrgroup" ] && action="set id=${CGI_id}"
	errmsg=`${FLOWEYE} svrgroup ${action} id=${CGI_id} name=${CGI_name} type=${CGI_type}`

	if [ $? -ne 0 ]; then
		retjson 1 "${LANG001:=ʧ}${errmsg}"
	else
		sync_floweye "svrgroup ${action} id=${CGI_id} name=${CGI_name} type=${CGI_type}"
        WEB_LOGGER "${LANG006:=}" "${action} id=${CGI_id} name=${CGI_name} type=${CGI_type}"
		retjson 0 "${LANG002:=ɹ}"
	fi
}


rmv_svrgroup()
{
	errmsg=`${FLOWEYE} svrgroup remove id=${CGI_id}`

	if [ $? -ne 0 ]; then
		retjson 1 "${LANG001:=ʧ}${errmsg}"
	else
		sync_floweye "svrgroup remove id=${CGI_id}"
        WEB_LOGGER "$LANG007:=ɾ}" "id=${CGI_id}"
		retjson 0 "${LANG002:=ɹ}"
	fi
}


btnremove_svrgroup()
{
	for id in `echo ${CGI_items} | tr ";" " "`
	do
		errmsg=`${FLOWEYE} svrgroup remove id=${id}`
		[ $? -ne 0 ] && retjson 1 "${LANG001:=ʧ}${errmsg}"
		sync_floweye "svrgroup remove id=${id}"
	done

	WEB_LOGGER "${LANG008:=ɾ}" "ids=${CGI_items}"
	retjson 0 "${LANG002:=ɹ}"
}


case "${CGI_action}" in

	"list_server")
		retjson 0 "OK" "`list_server`"
		;;

	"list_svrgroup")
		retjson 0 "OK" "`list_svrgroup`"
		;;

    "load_add_server_env")
        retjson 0 "OK" "`load_add_server_env`"
        ;;

	"add_server"|"edit_server")
		action_check
		add_server
		;;
	
	"rmv_server")
		action_check
		rmv_server
		;;
    
    "btnremove_server")
        action_check
        btnremove_server
        ;;

	"add_svrgroup"|"edit_svrgroup")
		action_check
		add_svrgroup
		;;
	
	"rmv_svrgroup")
		action_check
		rmv_svrgroup
		;;

    "btnremove_svrgroup")
        action_check
        btnremove_svrgroup
        ;;

	*)
		retjson 1 "UNKNOW_ACTION!"
		;;
esac
