#!/bin/sh

. ../common/ajax_common

if [ "${PALANG}" = "en" ]; then
	LANG001="Success"		#ɹ
	LANG002="Add_IP_Note"	#IPע
	LANG003="Fail"			#ʧ
fi


ipdesc_list()
{
	${FLOWEYE} macdesc list | awk \
	'BEGIN{
		dot="";
		printf "{";
	}{
		if (index($1, ".") < 1 ) next;

		printf "%s", dot;
		printf "\"%s\":\"%s\"", $1, $4;
		if(dot=="") dot=",";
	}END{
		printf "}";
	}'
}


ipdesc_set()
{
	[ "${CGI_ip}" = "" ] && retjson 1 "NO_IP"
	[ "${CGI_desc}" = "" ] && CGI_desc="NULL"
	
	errmsg=`${FLOWEYE} macdesc set m=${CGI_ip} d=${CGI_desc}`

	if [ $? -ne 0 ]; then
		retjson 1 "${LANG003:=ʧ}:${errmsg}"
	else
		WEB_LOGGER "${LANG002:=IPע}" "IP=${CGI_ip}"
		retjson 0 "${LANG001:=ɹ}"
	fi
}


ipflow_list()
{
	[ "${CGI_type}" = "" ] && CGI_type="inner"
	[ "${CGI_appname}" != "" -a "${CGI_appname}" != "any" ] && args="app=${CGI_appname}"
	[ "${CGI_ipv6}" != "" ] && args="${args} ipv6=${CGI_ipv6}"

	[ "${CGI_limit}" = "" ] && CGI_limit=100
	[ "${CGI_page}"  = "" ] && CGI_page=1
	
	end=$(( ${CGI_page} * ${CGI_limit} ))
	start=$(( ${end} - ${CGI_limit} ))

	${FLOWEYE} flow ipsort type=${CGI_type} ${args} | awk \
	-v start=${start} -v end=${end} \
	'BEGIN{
		row = 0;
		dot = "";
		printf "{\"data\":[";
	}{
		row++;
		if( row > end  || row < start ) next;

		col = 1;
		printf "%s", dot;
		printf "{";
		printf "\"ip\":\"%s\",", $1;
		printf "\"flow\":\"%s\"", $2;
		printf "}";

		if(dot == "") dot = ",";
	}END{
		printf "],\"total\":\"%s\"}", row;
	}'
}


flow_list()
{
	printf "{"
	printf "\"desc\":`ipdesc_list`,"
	printf "\"flow\":`ipflow_list`"
	printf "}"
}


flow_session_list()
{
	${FLOWEYE} flow listsesip | grep -i "${CGI_keyword}" | awk \
	'BEGIN{
		dot = "";
		printf "[";
	}{
		printf "%s{", dot;
		printf "\"src\":\"%s\",", $1;
		printf "\"dst\":\"%s\",", $2;
		printf "\"num\":%s", $3;
		printf "}";
		if(dot == "") dot = ",";
	}END{
		printf "]";
	}'
}


case "${CGI_action}" in
	"flow_list")
		print_json_head
		flow_list
		;;

	"ipdesc_set")
		action_check
		ipdesc_set
		;;

	"flow_session_list")
		retjson 0 "OK" "`flow_session_list`"
		;;

	*)
		retjson 1 "UNKNOW_ACTION"
		;;
esac
