#!/bin/sh

. ../common/ajax_common


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

	printf "["

	for times in `echo ${CGI_time} | tr "," " "`
	do
		logfile="${DATAPATH}/web_${times}.log"
		[ ! -f ${logfile} ] && continue

		#format: time ip user action args
		awk -v dot="${dot}" -v keyword=${CGI_keyword} \
		'{
			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 = ",";
		}' ${logfile}

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

	printf "]"
}


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

	printf "["

	for times in `echo ${CGI_time} | tr "," " "`
	do
		logfile="${DATAPATH}/alert_${times}.log"
		[ ! -f ${logfile} ] && continue

		#format: time ip user action args
		awk -v dot="${dot}" -v keyword=${CGI_keyword} \
		'{
			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=",";
		}' ${logfile}

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

	printf "]"
}


upgrade_log_list()
{
	grep "ϵͳ" /log/web_* | cut -d":" -f2- | sort -nrk1  | awk \
	'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 "]";
	}'
}


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 -i -m 1 "${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()
{
	mkdir -p ${WEB_DOWNLOAD}

	if [ "${CGI_file_name}" != "" ] ;then
		export_filename=${CGI_file_name}
		file_path="${DATAPATH}/${CGI_file_name}"
		[ ! -f "${file_path}" ] && retjson 1 "FILE_NOT_FOUND"
		[ `dirname ${file_path}` != "${DATAPATH}" ] && retjson 1 "INV_FILE"
		cp ${file_path} ${WEB_DOWNLOAD}
	else
		export_filename="${CGI_type}_`date +%s`.log"
		export_filepath="${WEB_DOWNLOAD}/${export_filename}"
		[ -f ${export_filepath} ] && rm -rf ${export_filepath}

		for times in `echo ${CGI_time} | tr "," " "`
		do
			file_path="${DATAPATH}/${CGI_type}_${times}.log"
			[ ! -f ${file_path} ] && continue

			cat ${file_path} >> ${export_filepath}
		done
	fi

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


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

	"list_history_log")
		retjson 0 "OK" "`list_history_log`"
		;;

	"export_log")
		action_check
		export_log
		;;

	*)
		retjson 1 "UNKNOW_ACTION"
		;;
esac
