#!/bin/sh

. ../common/ajax_common

if [ "${PALANG}" = "en" ]; then
	LANG001="Error"		#ʧ
	LANG002="Success"	#ɹ
fi


load_logger_stat()
{
	license=`${FLOWEYE} key info | awk \
	'{
		for(i = 1; i <= NF; i++){
			split($i, val, "=");
			if(val[1] == "oem")
				print val[2]
		}
	}'`

	printf "{"
	printf "\"license\":\"${license}\""

	. ../common/ajax_object_lib
	printf ",\"iptab_list\":`lib_iptable_list`"

	${FLOWEYE} logger stat | awk -F "=" \
	'{
		printf ",\"%s\":\"%s\"", $1, $2;
	}'

	printf "}"
}


set_alert_log_svr()
{
	errmsg=`${FLOWEYE} logger config alertip=${CGI_alertip} alertport=${CGI_alertport}`
	
	if [ $? -ne 0 ]; then
		retjson 1 "${LANG001:=ʧ}${errmsg}"
	else
		sync_floweye "logger config alertip=${CGI_alertip} alertport=${CGI_alertport}"
		WEB_LOGGER "ø澯", "alertip=${CGI_alertip} alertport=${CGI_alertport}"
		retjson 0 "${LANG002:=ɹ}"
	fi
}


set_logger_deviceid()
{
	cmdargs="auto_getdevid=${CGI_auto_getdevid} deviceid=${CGI_deviceid} blackip=${CGI_blackip}"
	cmdargs="${cmdargs} fastlog_enable=${CGI_fastlog_enable} flow_logtcpdir=${CGI_flow_logtcpdir}"

	errmsg=`${FLOWEYE} logger config ${cmdargs}`
	
	if [ $? -ne 0 ]; then
		retjson 1 "${LANG001:=ʧ}${errmsg}"
	else
		sync_floweye "logger config ${cmdargs}"
		WEB_LOGGER "öԽPanalog豸ID" "${cmdargs}"
		retjson 0 "${LANG002:=ɹ}"
	fi
}


set_logger_args()
{
	[ "${CGI_logger_ip}" = "" ] && CGI_logger_ip="0.0.0.0"
	[ "${CGI_logger_port}" = "" ] && CGI_logger_port="0"
	[ "${CGI_logger_internal}" = "" ] && CGI_logger_internal="1"

	cfgstr="logger_ip=${CGI_logger_ip} logger_port=${CGI_logger_port} logger_internal=${CGI_logger_internal}"

	errmsg=`${FLOWEYE} logger config ${cfgstr}`

	if [ $? -ne 0 ]; then
		retjson 1 "${LANG001:=ʧ}${errmsg}"
	else
		sync_floweye "logger config ${cfgstr}"
		WEB_LOGGER "־" "logger_ip=${CGI_logger_ip} logger_port=${CGI_logger_port} logger_internal=${CGI_logger_internal}"
		retjson 0 "${LANG002:=ɹ}"
	fi
}


load_logger_event_detail()
{
	# cfgevt evtype desc svrip svrport logtype sentok sentfail dropped written
	${FLOWEYE} logger stat event_detail=1 | awk \
	'BEGIN{
		dot = "";
		printf "[";
	}{
		if ($2 == "url")  $3 = "URL־";
		if ($2 == "flow") $3 = "Ự־";

		col = 1;
		printf "%s", dot;
		printf "{";
		printf "\"cfgevt\":\"%s\",", $(col++);
		printf "\"evtype\":\"%s\",", $(col++);
		printf "\"desc\":\"%s\",", $(col++);
		printf "\"svrip\":\"%s\",", $(col++);
		printf "\"svrport\":\"%s\",", $(col++);
		printf "\"logtype\":\"%s\",", $(col++);
		printf "\"sentok\":\"%s\",", $(col++);
		printf "\"sentfail\":\"%s\",", $(col++);
		printf "\"dropped\":\"%s\",", $(col++);
		printf "\"written\":\"%s\"", $(col++);
		printf "}";
		if(dot == "") dot = ",";
	}END{
		printf "]";
	}'
}


autoset_logger_event()
{
	for evt in `echo ${CGI_event_list} | tr "," " "`
	do
		if [ "${evt}" = "liuliang" ]; then
			cfgstr="logger_ip=${CGI_ip} logger_port=${CGI_port} logger_internal=60 iplog_lognatip=1"
		else
			cfgstr="event=${evt} logtype=${CGI_logmark} logip=${CGI_ip} logport=${CGI_port}"
		fi
		
		[ "${evt}" = "url" ] && cfgstr="${cfgstr} url_once=200 url_exttype=0"

		logintf=`${FLOWEYE} logger stat | grep "flow_logintf"`
		
		[ "${CGI_logmark}" = "syslog" -a "${evt}" = "flow" -a "{CGI_flow_logintf}" = "" ] && cfgstr="${cfgstr} track_httphost=1 flow_lognat=1"
		[ "${CGI_logmark}" = "none" -a "${evt}" = "flow" -a "${CGI_flow_logintf}" = "" ] && cfgstr="${cfgstr} track_httphost=0 flow_lognat=0"
		[ "${evt}" = "alert" ] && cfgstr="alertip=${CGI_ip} alertport=${CGI_port}"

		${FLOWEYE} logger config ${cfgstr}
		sync_floweye "logger config ${cfgstr}"
	done

	WEB_LOGGER "һԽPanalog" "panalog=${CGI_ip}:${CGI_port}"
	retjson 0 "${LANG002:=ɹ}"
}


load_logger_session()
{
	${FLOWEYE} logger stat event=flow | awk -F "=" \
	'BEGIN{
		dot = "";
		printf "{";
	}{
		printf "%s\"%s\":\"%s\"", dot, $1, $2;
		if(dot == "") dot = ",";
	}END{
		printf "}";
	}'
}


set_logger_session()
{
	cfgstr="event=flow"
	cfgstr="${cfgstr} logtype=${CGI_logtype} logip=${CGI_logip} logport=${CGI_logport}"
	cfgstr="${cfgstr} flow_logintf=${CGI_flow_logintf}"

	${FLOWEYE} logger config flow_logtcpdir=${CGI_flow_logtcpdir}
	errmsg=`${FLOWEYE} logger config ${cfgstr}`

	if [ $? -ne 0 ]; then
		retjson 1 "${LANG001:=ʧ}${errmsg}"
	else
		sync_floweye "logger config ${cfgstr}"
		WEB_LOGGER "ûỰ־" "logip=${CGI_logip} logtype=${CGI_logtype}"
		retjson 0 "${LANG002:=ɹ}"
	fi
}


load_logger_url()
{
	printf "{\"extfile\":["

	${FLOWEYE} urlfilter listext | awk \
	'BEGIN{
		dot = "";
	}{
		printf "%s", dot;
		printf "{";
		printf "\"id\":\"%s\",", $1;
		printf "\"name\":\"%s\"", $2;
		printf "}";
		if (dot == "") dot = ",";
	}'

	printf "],\"logger_url\":{"

	${FLOWEYE} logger stat event=url | awk -F "=" \
	'BEGIN{
		dot = "";
	}{
		printf "%s\"%s\":\"%s\"", dot, $1, $2;
		if (dot == "") dot = ",";
	}'

	printf "}}"
}


set_logger_url()
{
	cfgstr="event=url"
	cfgstr="${cfgstr} logtype=${CGI_logtype} logip=${CGI_logip} logport=${CGI_logport} url_exttype=${CGI_url_exttype}"

	errmsg=`${FLOWEYE} logger config ${cfgstr}`

	if [ $? -ne 0 ]; then
		retjson 1 "${LANG001:=ʧ}${errmsg}"
	else
		sync_floweye "logger config ${cfgstr}"
		WEB_LOGGER "URL־" "logip=${CGI_logip} logport=${CGI_logport} logtype=${CGI_logtype}"
		retjson 0 "${LANG002:=ɹ}"
	fi
}


set_logger_event()
{
	cfgstr="event=${CGI_evtype} logtype=${CGI_logtype} logip=${CGI_svrip} logport=${CGI_svrport}"
	errmsg=`${FLOWEYE} logger config ${cfgstr}`

	if [ $? -ne 0 ]; then
		retjson 1 "${LANG001:=ʧ}${errmsg}"
	else
		sync_floweye "logger config ${cfgstr}"
		WEB_LOGGER "URL־" " logip=${CGI_svrip} logport=${CGI_svrport}"
		retjson 0 "${LANG002:=ɹ}"
	fi
}


clear_logger_data()
{
	killall ipe_datamon >/dev/null 2>&1
	killall ipe_datamon >/dev/null 2>&1

	rm -rf ${DATAPATH}/panabit.rrd
	rm -rf ${DATAPATH}/panabit.raz
	sync

	echo "start_datamon yes" >> ${EVENTFILE}

	WEB_LOGGER "־"
	retjson 0 "${LANG002:=ɹ}"
}


load_actlog_config()
{
	actlog_conf="${PGETC}/web/actlog.conf"

	if [ ! -f ${actlog_conf} ]; then
		printf "{}"
		return
	fi

	awk -F"=" \
	'BEGIN{
		dot = "";
		printf "{";
	}{
		printf "%s\"%s\":\"%s\"", dot, $1, $2;
		if(dot == "") dot = ",";
	}END{
		printf "}";
	}' ${actlog_conf}
}


set_actlog_config()
{
	actlog_conf="${PGETC}/web/actlog.conf"

	mkdir -p ${PGETC}/web/

	echo "actlog_enable=${CGI_actlog_enable}" > ${actlog_conf}
	echo "actlog_ip=${CGI_actlog_ip}" >> ${actlog_conf}
	echo "actlog_port=${CGI_actlog_port}" >> ${actlog_conf}

	WEB_LOGGER "ò־" "enable=${CGI_enable} ip=${CGI_ip} port=${CGI_port}"
	retjson 0 "ɹ"
}


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

	"set_alert_log_svr")
		action_check
		set_alert_log_svr
		;;

	"set_logger_deviceid")
		action_check
		set_logger_deviceid
		;;

	"set_logger_args")
		action_check
		set_logger_args
		;;

	"load_logger_event_detail")
		retjson 0 "OK" "`load_logger_event_detail`"
		;;

	"autoset_logger_event")
		action_check
		autoset_logger_event
		;;

	"load_logger_session")
		retjson 0 "OK" "`load_logger_session`"
		;;
	
	"set_logger_session")
		action_check
		set_logger_session
		;;

	"load_logger_url")
		retjson 0 "OK" "`load_logger_url`"
		;;

	"set_logger_url")
		action_check
		set_logger_url
		;;

	"set_logger_event")
		action_check
		set_logger_event
		;;

	"clear_logger_data")
		admin_check
		clear_logger_data
		;;

	"load_actlog_config")
		retjson 0 "OK" "`load_actlog_config`"
		;;

	"set_actlog_config")
		action_check
		set_actlog_config
		;;

	*)
		retjson 1 "UNKNOW_ACTION"
		;;
esac
