#!/bin/sh

. ../common/ajax_common

HTMLROOT="/usr/ramdisk/admin/html"


bridge_list()
{
	# id bps_in bps_out tmp1 tmp2 name
	${FLOWEYE} bridge list format=long | awk \
	'BEGIN{
		dot = "";
		printf "[";
	}{
		printf "%s", dot;
		printf "{";
		printf "\"id\":\"%s\",",  $1;
		printf "\"name\":\"%s\"", $6;
		printf "}";
		if ( dot == "" ) dot = ",";
	}END{
		printf "]";
	}'
}


load_sys_menu()
{
	menu="${HTMLROOT}/assert/menu/menu.json"

	if [ "${NTM}" = "1" ]; then
		menu="${HTMLROOT}/App/ntm/assert/menu.json"
	elif [ "${JOS_RELEASE}" = "2" ]; then
		menu="${HTMLROOT}/assert/menu/menu_wb.json"
	fi

	if [ -f "${RAMDISK}/etc/webuser/menu_${PANABIT_USER}.json" ]; then
		menu="${RAMDISK}/etc/webuser/menu_${PANABIT_USER}.json"
	fi

	print_json_file ${menu}
}


load_sys_url()
{
	if [ "${NTM}" = "1" ]; then
		print_json_file "${HTMLROOT}/App/ntm/assert/url.json"
	else
		print_json_file "${HTMLROOT}/assert/menu/url.json"
	fi
}


load_sys_release()
{
	L_end=0
	L_start=0
	forever=0

	#OEM
	if [ -f "${RAMDISK}/etc/panabit.inf" ]; then
		. ${RAMDISK}/etc/panabit.inf
	fi

	# PNţҾȨС3000죬Ϊް桰
	data=`${FLOWEYE} key info`
	if [ $? -eq 0 ]; then
		for nameval in ${data}; do
			eval "L_${nameval}"
		done

		ispn=`echo ${L_oem} | grep "^PN"`
		key_leftdays=`${FLOWEYE} system stat | grep "key_leftdays" | cut -d"=" -f2`
		[ "${ispn}" != "" -a ${key_leftdays} -le 3000 ] && JOS_RELEASE=3
	fi

	level=2
	ufile="${USER_DIR}/`${ESCTOOL} -e ${PANABIT_USER}`"
	[ -f "${ufile}" ] && . ${ufile}

	printf "{"
	printf "\"oem\":\"${OEM}\""
	printf ",\"bridge\":`bridge_list`"
	printf ",\"pa_desc\":\"${PADESC}\""
	printf ",\"release\":${JOS_RELEASE}"
	printf ",\"login_user\":\"${PANABIT_USER}\""
	printf ",\"user_level\":${level}"
	printf ",\"web_ver\":\"${WEB_BUILD_TIME}\""
	printf ",\"license\":\"${L_oem}\""
	printf ",\"key\":\"`${FLOWEYE} key getcookie`\""
	printf ",\"url\":`load_sys_url`"

	if [ "${NTM}" = "1" ]; then #NTM汾
		[ "${PAVER}" = "free" ] && JOS_RELEASE=0
		. ../common/ajax_object_lib
		printf ",\"iptab\":`lib_iptable_list`"
		printf ",\"isp\":`lib_isp_list`"
		printf ",\"ntm\":1"		
	fi

	printf ",\"release\":${JOS_RELEASE}"
	printf "}"
}


load_base_info()
{
	printf "{"
	printf "\"env\":`load_sys_release`"
	printf ",\"menu\":`load_sys_menu`"
	printf "}"

	export CGI_action="fetch_cloud_app"
	sh ajax_app_store >/dev/null 2>&1 &
}


load_sys_env()
{
	BUILDREL=""
	BUILDDATE=""
	[ "${CGI_bridge}" = "" ] && CGI_bridge=0

	PAINF="${RAMDISK}/etc/panabit.inf"
	[ -f "${PAINF}" ] && . ${PAINF}
	
	COOKIE=`${FLOWEYE} key getcookie`
	[ "${COOKIE}" = "" ] && COOKIE=`${FLOWEYE} key getcookie2`

	if [ "${PALANG}" = "en" ]; then
		BUILDREL=`echo ${BUILDREL} | sed -r 's/\(.*\)//g'`
	fi

	ippool_max=`${FLOWEYE} ipobj stat | grep "ip_poolsize" | cut -d"=" -f2`
	flowpool_max=`${FLOWEYE} flow stat | grep "pool_size" | cut -d"=" -f2`

	printf "{"
	printf "\"OSVER\":\"`uname`\""
	printf ",\"SYS_TIME\":`date +%s`"
	printf ",\"BUILDDATE\":\"${BUILDDATE}\""
	printf ",\"JOS_RELEASE\":\"${JOS_RELEASE}\""
	printf ",\"BUILDREL\":\"R${ENVER}[${BUILDREL}]\""
	printf ",\"BSDVER\":\"${BSDVER}\""
	printf ",\"L_devid\":\"${COOKIE}\""
	printf ",\"ippool_max\":\"${ippool_max}\""
	printf ",\"flowpool_max\":\"${flowpool_max}\""

	if [ "${NTM}" = "1" ]; then
		/usr/ramdisk/bin/ntmeye ntmkey stat | awk -F "=" '{
			printf ",\"N_%s\":\"%s\"", $1, $2;
		}'
		${FLOWEYE} ntmapp stat | awk -F "=" '{
			printf ",\"%s\":\"%s\"", $1, $2;
		}'
	fi

	${FLOWEYE} key info | awk \
	'{
		for(i=1; i<NF; i++){
			split($i, a, "=");
			printf ",\"L_%s\":\"%s\"", a[1], a[2];
		}
	}'

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

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

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

	curtime=`date +%s`
	
	if [ "`uname`" = "Linux" ]; then
		sysruntime=`cat /proc/stat | grep "^btime" | cut -d' ' -f2`
	else
		sysruntime=`sysctl -n kern.boottime | cut -d',' -f1 | cut -d'=' -f2`
	fi

	printf ",\"sysruntime\":\"$((${curtime} - ${sysruntime}))\""

	printf "}"
}


load_weblog()
{
	logfile="${DATAPATH}/web_${CGI_time}.log"
	
	if [ ! -f ${logfile} ]; then
		printf "[]"
		return
	fi

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


load_disk_list()
{
	df -ikh | awk \
	'BEGIN{
		dot = "";
		printf "[";	
	}{
		if(NR == 1) next;

		printf "%s", dot;
		printf "{";
		printf "\"filesystem\":\"%s\",", $1;
		printf "\"size\":\"%s\",", $2;
		printf "\"used\":\"%s\",", $3;
		printf "\"avail\":\"%s\",", $4;
		printf "\"capacity\":\"%s\",", $5;
		printf "\"iused\":\"%s\",", $6;
		printf "\"ifree\":\"%s\",", $7;
		printf "\"iuser_per\":\"%s\",", $8;
		printf "\"mounted\":\"%s\"", $9;
		printf "}";
		if(dot=="") dot=",";
	}END{
		printf "]";
	}'
}


case "${CGI_action}" in

	"load_sys_env")
		print_json_head
		load_sys_env
		;;

	"load_base_info")
		retjson 0 "OK" "`load_base_info`"
		;;

	"load_weblog")
		retjson 0 "OK" "`load_weblog`"
		;;
	
	"load_sys_release")
		retjson 0 "OK" "`load_sys_release`"
		;;

	"_load_sys_release_")
		load_sys_release
		;;

	"load_disk_list")
		retjson 0 "OK" "`load_disk_list`"
		;;

	*)
		retjson 1 "UNKNOW_ACTION!"
		;;
esac
