#!/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()
{
    [ "${CGI_page}" = "" ] && CGI_page=1
    [ "${CGI_limit}" = "" ] && CGI_limit=100

	end=$(( ${CGI_page} * ${CGI_limit} ))
	start=$(( ${end} - ${CGI_limit} ))

	${FLOWEYE} macdesc list | grep -i "${CGI_keyword}" | 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 "\"obj\":\"%s\",", $(col++);
		printf "\"pid\":\"%s\",", $(col++);
		printf "\"pname\":\"%s\",", $(col++);
		printf "\"desc\":\"%s\"", $(col++);
		printf "}";
		if(dot == "") dot = ",";
	}END{
        printf "],\"total\":%s}", row;
	}'
}


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}"

		[ "${NTM}" = "1" ] && ${NTMEYE} macdesc2 set m=${CGI_mac} d=${CGI_mac_note} pid=${CGI_mac_pid}
		sync_floweye "macdesc set m=${CGI_mac} d=${CGI_mac_note} pid=${CGI_mac_pid}"
		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}"

		[ "${NTM}" = "1" ] && ${NTMEYE} macdesc2 set m=${CGI_ip} d=${CGI_ip_note} pid=${CGI_ip_pid}
		sync_floweye "macdesc set m=${CGI_ip} d=${CGI_ip_note} pid=${CGI_ip_pid}"
		WEB_LOGGER "${LANG004:=IPע}" "mac=${CGI_ip} note=${CGI_ip_note}"
	fi

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


# MACбеı༭
edit_ipobj_note()
{
	[ "${CGI_obj}" = "" ] && retjson 1 "NO_OBJECT"
	[ "${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
		[ "${NTM}" = "1" ] && ${NTMEYE} macdesc2 set m=${CGI_obj} d=${CGI_note} pid=${CGI_pid}
		sync_floweye "macdesc set m=${CGI_obj} d=${CGI_note} pid=${CGI_pid}"
		WEB_LOGGER "${LANG007:=IP/MACע}" "obj=${CGI_obj} d=${CGI_note} pid=${CGI_pid}"
		retjson 0 "${LANG005:=ɹ}"
	fi
}


btnedit_ipobj_note()
{
	num=0

	for item in `echo ${CGI_items} | tr ";" " "`
	do
		obj=`echo ${item} | cut -d"," -f1`
		desc=`echo ${item} | cut -d"," -f2`

		errmsg=`${FLOWEYE} macdesc set m=${obj} d=${desc} pid=${CGI_pid}`
		[ $? -ne 0 ] && retjson 1 "${errmsg}"

		[ "${NTM}" = "1" ] && ${NTMEYE} macdesc2 set m=${obj} d=${desc} pid=${CGI_pid}
		sync_floweye "macdesc set m=${obj} d=${desc} pid=${CGI_pid}"
		num=$((${num} + 1))
	done

	WEB_LOGGER "${LANG007:=IP/MACע}" "Nums=${num}"
	retjson 0 "${LANG005:=ɹ}"
}


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

	if [ $? -ne 0 ]; then
		retjson 1 "${LANG008:=ʧ}:${errmsg}"
	else
		[ "${NTM}" = "1" ] && ${NTMEYE} macdesc2 set m=${CGI_obj} d=NULL pid=
		sync_floweye "macdesc set m=${CGI_obj} d=NULL pid="
		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}"

		[ "${NTM}" = "1" ] && ${NTMEYE} macdesc2 set m=${obj} d=NULL pid=
		sync_floweye "macdesc set m=${obj} d=NULL pid="
		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
			[ "${NTM}" = "1" ] && ${NTMEYE} macdesc2 set m=${obj} d=${desc} pid=${pid}
			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
		;;

	"btnedit_ipobj_note")
		action_check
		btnedit_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
