#!/bin/sh

. ../common/ajax_common

event_file="/usr/ramdisk/tmp/panabit.event"

if [ "${PALANG}" = "en" ]; then
	LANG001="SSH Servere Off"	#SSHرճɹ
	LANG002="SSH Servere On"	#SSHɹ
	LANG003="No Such FILE"		#ļ
	LANG004="Error"				#ʧ
	LANG005="Del_DUMP_FILE"		#ɾdumpļ
	LANG006="Success"			#ɾɹ
	LANG007="SSH_Server_Off"	#ֶرSSH
	LANG008="SSH_Server_On"		#ֶSSH
fi


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

	boottime=$((${curtime} - ${boottime}))
	bootday=$((${boottime} / 86400))
	dayhour=$((${bootday} * 24))
	boothour=$((${boottime} / 3600))
	boothour=$((${boothour} - ${dayhour}))
	bootsec=$((${boottime} % 3600))
	bootmin=$((${bootsec} / 60))
	bootsec=$((${boottime} % 60))

	sysname=`cat /usr/ramdisk/etc/sysname.inf`

	if [ `uname` = "Linux" ]; then
		err=`ss -l4to | grep ":ssh"`
	else
		err=`sockstat -4l -P tcp | grep ssh`
	fi

	[ "${err}" = "" ] && sshstat="off"
	[ "${err}" != "" ] && sshstat="on"

	crash="no"
	dump_file=`find /var/tmp/ -name "panaos.dump*"`
	[ "${dump_file}" != "" ] && crash="yes"

	note="no"
	[ -f ${event_file} ] && note="yes"

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

	echo -n "{"
	echo -n "\"sysrun\":\"${bootday}d${boothour}h${bootmin}m${bootsec}s\","
	echo -n "\"sshstat\":\"${sshstat}\","
	echo -n "\"crash\":\"${crash}\","
	echo -n "\"note\":\"${note}\","
	printf "\"login_user\":\"${PANABIT_USER}\","
	printf "\"user_level\":\"${level}\","
	echo -n "\"sysname\":\"${sysname}\""
	echo -n "}"
}


logout()
{
	for line in `echo "${HTTP_COOKIE}" | tr ";" " "`
	do
		key=`echo ${line} | cut -d"=" -f1`
		val=`echo ${line} | cut -d"=" -f2`
		pauser=`echo ${key} | grep "pauser_"`
		
		if [ "${pauser}" != "" ]; then
			ckfile="/usr/ramdisk/weblogin/${val}"
			[ -f ${ckfile} ] && rm -f ${ckfile}
		fi
	done

	retjson 0 "OK"
}


sshenable()
{
	os=`uname`
	
	if [ "${os}" = "Linux" ]; then
		if [ "${CGI_stat}" = "off" ]; then
			service sshd stop >/dev/null 2>&1 &
			/etc/init.d/sshd stop >/dev/null 2>&1 &
			WEB_LOGGER "${LANG007:=ֶرSSH}"
			retjson 0 "${LANG001:=SSHرճɹ}"
		else
			service sshd restart >/dev/null 2>&1 &
			/etc/init.d/sshd restart  >/dev/null 2>&1 &
			WEB_LOGGER "${LANG008:=ֶSSH}"
			retjson 0 "${LANG002:=SSHɹ}"
		fi
	elif [ "${os}" = "FreeBSD" ]; then
		if [ "${CGI_stat}" = "off" ]; then
			/etc/rc.d/sshd onestop >/dev/null 2>&1
			WEB_LOGGER "${LANG007:=ֶرSSH}"
			retjson 0 "${LANG001:=SSHرճɹ}"
		else
			/etc/rc.d/sshd onerestart >/dev/null 2>&1
			WEB_LOGGER "${LANG008:=ֶSSH}"
			retjson 0 "${LANG002:=SSHɹ}"
		fi
	fi
}


load_event()
{
	if [ ! -f ${event_file} ]; then
		printf "[]"
		return
	fi
	
	awk \
	'BEGIN{
		dot="";
		printf "[";
	} {
		printf "%s%s", dot, $0;
		if(dot == "") dot=",";
	}END{
		printf "]";
	}' ${event_file}
}


clear_event()
{
	[ -f "${event_file}" ] && rm -rf ${event_file}

	retjson 0 "OK"
}


load_dump_file_list()
{
	ls -lh /var/tmp/panaos.dump* | awk \
	'BEGIN{
		dot = "";
		printf "[";
	}{
		split($9, name, "/");

		printf "%s", dot;
		printf "{";
		printf "\"time\":\"%s %s %s\",", $6, $7, $8;
		printf "\"size\":\"%s\",", $5;
		printf "\"name\":\"%s\"", name[4];
		printf "}";
		if (dot == "") dot = ",";
	}END{
		printf "]";
	}'
}


rmv_dump_file()
{
	[ "${CGI_name}" = "" ] && retjson 1 "NO_FILE"
	
	file_path="/var/tmp/${CGI_name}"
	
	[ ! -f ${file_path} ] && retjson 1 "${LANG003:=ļ}"
	
	errmsg=`rm ${file_path}`
	
	if [ $? -ne 0 ]; then
		retjson 1 "${LANG004:=ʧ}:${errmsg}"
	else
		WEB_LOGGER "${LANG005:=ɾdumpļ}", "name=${CGI_name}"
		retjson 0 "${LANG006:=ɾɹ}"
	fi
}


cat_dump_file()
{
	[ "${CGI_name}" = "" ] && retjson 1 "NO_FILE"
	
	file_path="/var/tmp/${CGI_name}"

	[ ! -f ${file_path} ] && retjson 1 "${LANG003:=ļ}"

	awk \
	'BEGIN{
		dot = "";
		printf "[";
	}{
		printf "%s\"%s\"", dot, $0;
		if ( dot == "" ) dot = ",";
	}END{
		printf "]";
	}' ${file_path} 
}


down_dump_file()
{
	[ "${CGI_name}" = "" ] && retjson 1 "NO_FILE"
	
	file_path="/var/tmp/${CGI_name}"
	mkdir -p ${WEB_DOWNLOAD}
	cp "${file_path}" "${WEB_DOWNLOAD}/${CGI_name}.txt"
	
	retjson 0 "OK" "{\"file_name\":\"${CGI_name}.txt\"}"
}


case "${CGI_action}" in
	"load_sys_runstat")
		print_json_head
		load_sys_runstat
		;;

	"logout")
		logout
		;;
	
	"sshenable")
		action_check
		sshenable
		;;
		
	"load_event")
		print_json_head
		load_event
		;;

	"clear_event")
		action_check
		clear_event
		;;
	
	"load_dump_file_list")
		retjson 0 "OK" "`load_dump_file_list`"
		;;
		
	"rmv_dump_file")
		action_check
		rmv_dump_file
		;;

	"cat_dump_file")
		retjson 0 "OK" "`cat_dump_file`"		
		;;
	
	"down_dump_file")
		action_check
		down_dump_file
		;;

	*)
		retjson 1 "UNKNOW_ACTION"
		;;

esac
