#!/bin/sh

. ../common/ajax_common


action_log_list()
{
	[ "${CGI_time}" = "" ] && CGI_time=`date +"%Y.%m.%d"`

	logfile="${DATAPATH}/web_${CGI_time}.log"

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

	#format: time ip user action args
	sort -rk1 ${logfile} | awk -v keyword=${CGI_keyword} \
	'BEGIN{
		dot="";
		printf "[";
	}{
		if(keyword != "" && $0 !~ keyword) next;

		args = "";
		for(i = 5; i <= NF; i++) {
			gsub("\"", "", $i);
			args = sprintf("%s %s", args, $i);
		}

		printf "%s", dot;
		printf "{";
		printf "\"time\":\"%s\",", $1;
		printf "\"ip\":\"%s\",", $2;
		printf "\"user\":\"%s\",", $3;
		printf "\"action\":\"%s\",", $4;
		printf "\"args\":\"%s\"", args;
		printf "}";
		if(dot=="") dot=",";
	}END{
		printf "]";
	}'
}


alert_log_list()
{
	[ "${CGI_time}" = "" ] && CGI_time=`date +"%Y.%m.%d"`

	logfile="${DATAPATH}/alert_${CGI_time}.log"

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

	#format: time user action args from ip
	sort -rk1 ${logfile} | awk -v keyword=${CGI_keyword} \
	'BEGIN{
		dot="";
		printf "[";
	}{
		if(keyword != "" && $0 !~ keyword) next;

		printf "%s", dot;
		printf "{";
		printf "\"time\":\"%s\",", $1;
		printf "\"user\":\"%s\",", $2;
		printf "\"action\":\"%s\",", $3;
		printf "\"args\":\"%s\",", $4;
		printf "\"ip\":\"%s\"", $6;
		printf "}";
		if(dot=="") dot=",";
	}END{
		printf "]";
	}'
}


list_history_log()
{
	todayfile="${CGI_type}_`date +%Y.%m.%d`.log"
	
	cd ${DATAPATH}
	if [ "${CGI_keyword}" = "" ]; then
		file_list=`find ./* -name "${CGI_type}_*"`
	else
		file_list=`grep -iR "${CGI_keyword}" ./${CGI_type}_* | cut -d":" -f1`
	fi

	printf "["
	for logfile in ${file_list}
	do
		printf "${dot}{"
		ls -l ${logfile} | awk	\
		'{
			printf "\"file_name\":\"%s\",",  substr($9, 3, length($9));
			printf "\"file_size\":\"%s\",", $5;	
		}'

		file_rows=`wc -l ${logfile} | awk '{print $1}'`
		printf "\"file_rows\":\"${file_rows}\""

		printf "}"
		[ "${dot}" = "" ] && dot=","
	done
	printf "]"
}


export_log()
{
	file_path="${DATAPATH}/${CGI_file_name}"

	[ ! -f ${file_path} ] && retjson 1 "FILE_NOT_FOUND!"

	mkdir -p ${WEB_DOWNLOAD}
	cp ${file_path} ${WEB_DOWNLOAD}/${CGI_file_name}

	WEB_LOGGER "ϵͳ־" "file_name=${CGI_file_name}"
	retjson 0 "OK" "{\"file_name\":\"${CGI_file_name}\"}"
}


case "${CGI_action}" in
	"action_log_list")
		retjson 0 "OK" "`action_log_list`"
		;;
	
	"alert_log_list")
		retjson 0 "OK" "`alert_log_list`"
		;;
	
	"list_history_log")
		retjson 0 "OK" "`list_history_log`"
		;;

	"export_log")
		action_check
		export_log
		;;

	*)
		retjson 1 "UNKNOW_ACTION"
		;;
esac
