#!/bin/sh

. ../common/ajax_common

if [ "${PALANG}" = "en" ]; then
	LANG001="Error"					#MACעʧ
	LANG002="Set_MAC_Note"			#MACע
	LANG003="Error"					#IPעʧ
	LANG004="SET_IP_Note"			#IPע
	LANG005="Success"				#ɹ
	LANG006="Error"					#MACעʧ
	LANG007="SET_IP/MAC_Note"		#IP/MACע
	LANG008="Error"					#ʧ
	LANG009="DELETE_IP/MAC_Note"	#ɾIP/MACע
	LANG010="DELETE_IP/MAC_Note"	#ɾIP/MACע
	LANG011="num"					#ɾ
	LANG012="file_err"				#ļݸʽ
	LANG013="Import_IP/MAC_Note"	#IP/MACע
	LANG014="num"					#
	LANG015="Import Success"		#
	LANG016="ok"					#ɹ
	LANG017="fail"					#ʧ
fi


load_macdesc_list()
{
	${FLOWEYE} macdesc list | grep -i "${CGI_keyword}" | awk \
	'BEGIN{
		dot = "";
		printf "[";
	}{
		col = 1;
		printf "%s", dot;
		printf "{";
		printf "\"obj\":\"%s\",", $(col++);
		printf "\"pid\":\"%s\",", $(col++);
		printf "\"pname\":\"%s\",", $(col++);
		printf "\"desc\":\"%s\"", $(col++);
		printf "}";
		if(dot == "") dot = ",";
	}END{
		printf "]";
	}'
}


get_ipdesc_info()
{
	for val in `${FLOWEYE} macdesc get m=${CGI_mac} detail=1`
	do
		[ "${val}" = "NEXIST" ] && break
		eval "mac_${val}"
	done

	for val in `${FLOWEYE} macdesc get m=${CGI_ip} detail=1`
	do
		[ "${val}" = "NEXIST" ] && break
		eval "ip_${val}"
	done

	printf "{"
	printf "\"mac_pid\":\"${mac_pid}\","
	printf "\"mac_note\":\"${mac_desc}\","
	printf "\"ip_pid\":\"${ip_pid}\","
	printf "\"ip_note\":\"${ip_desc}\""
	printf "}"
}


load_edit_env()
{
	. ../common/ajax_object_lib

	printf "{"
	printf "\"desc\":`get_ipdesc_info`"
	printf ",\"ippool\":`lib_ippool_list`"

	printf "}"
}


# Topûеı༭
set_ipobj_note()
{
	if [ "${CGI_mac}" != "" ]; then
		[ "${CGI_mac_note}" = "" ] && CGI_mac_note="NULL"
		errmsg=`${FLOWEYE} macdesc set m=${CGI_mac} d=${CGI_mac_note} pid=${CGI_mac_pid}`
		[ $? -ne 0 ] && retjson 1 "${LANG001:=MACעʧ}:${errmsg}"
		WEB_LOGGER "${LANG002:=MACע}" "mac=${CGI_mac} note=${CGI_mac_note}"
	fi

	if [ "${CGI_ip}" != "" ]; then
		[ "${CGI_ip_note}" = "" ] && CGI_ip_note="NULL"
		errmsg=`${FLOWEYE} macdesc set m=${CGI_ip} d=${CGI_ip_note} pid=${CGI_ip_pid}`
		[ $? -ne 0 ] && retjson 1 "${LANG003:=IPעʧ}:${errmsg}"
		WEB_LOGGER "${LANG004:=IPע}" "mac=${CGI_ip} note=${CGI_ip_note}"
	fi

	retjson 0 "${LANG005:=ɹ}"
}


# MACбеı༭
edit_ipobj_note()
{
	[ "${CGI_mac_note}" = "" ] && CGI_mac_note="NULL"
	errmsg=`${FLOWEYE} macdesc set m=${CGI_obj} d=${CGI_note} pid=${CGI_pid}`

	if [ $? -ne 0 ]; then
		retjson 1 "${LANG006:=MACעʧ}:${errmsg}"
	else
		WEB_LOGGER "${LANG007:=IP/MACע}" "obj=${CGI_obj} d=${CGI_note} pid=${CGI_pid}"
		retjson 0 "${LANG005:=ɹ}"
	fi
}


rmv_ipobj_note()
{
	errmsg=`${FLOWEYE} macdesc set m=${CGI_obj} d=NULL pid=`

	if [ $? -ne 0 ]; then
		retjson 1 "${LANG008:=ʧ}:${errmsg}"
	else
		WEB_LOGGER "${LANG009:=ɾIP/MACע}" "obj=${CGI_obj}"
		retjson 0 "${LANG005:=ɹ}"
	fi
}


btnremove_ipmac_note()
{
	num=0

	for obj in `echo ${CGI_items} | tr ";" " "`
	do
		errmsg=`${FLOWEYE} macdesc set m=${obj} d=NULL pid=`
		[ $? -ne 0 ] && retjson 1 "${errmsg}"
		num=$((${num} + 1))
	done

	WEB_LOGGER "${LANG010:=ɾIP/MACע}" "${LANG011:=ɾ}=${num}"
	retjson 0 "${LANG005:=ɹ}"
}


export_ipnote()
{
	file_name="ipmacdesc.conf"
	file_path="${WEB_DOWNLOAD}/${file_name}"
	
	mkdir -p ${WEB_DOWNLOAD}

	${FLOWEYE} macdesc list  > ${file_path}

	retjson 0 "OK" "{\"file_name\":\"${file_name}\"}"
}


import_ipnote()
{
	cols=`awk '{print NF}' ${CGI_file} | grep -v "4"`

	[ "${cols}" != "" ] && retjson 1 "${LANG012:=ļݸʽ}"

	ok=0
	err=0

    ttfile="${TMPDIR}/`date +%s`.$$"
    cat ${CGI_file} | tr -ds '\r' '' > ${ttfile}

	while read obj pid pname desc
	do
		errmsg=`${FLOWEYE} macdesc set m=${obj} d=${desc} pid=${pid}`

		if [ $? -ne 0 ]; then
			err=$(($err+1))
		else
			ok=$(($ok+1))
		fi
	done << EOF
`cat ${ttfile}`
EOF

    rm -rf "${CGI_file}"
    rm -rf "${ttfile}"

	WEB_LOGGER "${LANG013:=IP/MACע}" "${LANG014:=}=${ok}"
	retjson 0 "${LANG015:=}${LANG016:=ɹ}:${ok},${LANG017:=ʧ}:${err}"
}


case "${CGI_action}" in
	"load_macdesc_list")
		retjson 0 "OK" "`load_macdesc_list`"
		;;

	"load_edit_env")
		retjson 0 "OK" "`load_edit_env`"
		;;

	"set_ipobj_note")
		action_check
		set_ipobj_note
		;;

	"edit_ipobj_note")
		action_check
		edit_ipobj_note
		;;

	"rmv_ipobj_note")
		action_check
		rmv_ipobj_note
		;;

	"btnremove_ipmac_note")
		action_check
		btnremove_ipmac_note
		;;

	"export_ipnote")
		action_check
		export_ipnote
		;;

	"import_ipnote")
		action_check
		import_ipnote
		;;

	*)
		retjson 1 "UNKNOW_ACTION"
		;;
esac
