#!/bin/sh

. ../common/ajax_common

if [ "${PALANG}" = "en" ]; then
	LANG001="WEB_EXEC_CMD"	#дִ
fi


runcmd()
{
	export PATH="${PATH}:/usr/ramdisk/bin"
	
	awk -v str="${CGI_cmd}" \
	'BEGIN{
		deny="`;&$()";
		for(i = 1; i <= length(str); i++){
			char = substr(str, i, 1);

			for(x = 1; x < length(deny)+1; x++){
				r = substr(deny, x, 1);
				if(char == r) exit 1;
			}
		}
	}'

	[ $? -ne 0 ] && retjson 1 "INV_CMD!"

	eval_cmd=`echo "${CGI_cmd}" | awk -F "|" \
	'BEGIN{
		hold_cmd[1] = "ps";
		hold_cmd[2] = "top";
		hold_cmd[3] = "floweye";
		hold_cmd[4] = "cut";
		hold_cmd[5] = "grep";
		hold_cmd[6] = "wc";
		hold_cmd[7] = "sort";
		hold_cmd[8] = "netstat";
		hold_cmd[9] = "ipcs";
		hold_cmd[10] = "dmesg";
		hold_cmd[11] = "zpool";
		hold_cmd[12] = "ikectl";
		hold_cmd[13] = "ntmeye";
	}{
		num=1;
		for(i=1; i<=NF; i++){
			for(x=1; x<=length(hold_cmd); x++){
				cmpstr = substr($i, 1, length(hold_cmd[x]));
				if(cmpstr == hold_cmd[x])
					eval_cmd[num++] = $i;
			}
		}
	}END{
		for(i=1; i<=length(eval_cmd); i++) {
			if(i!=1)
				printf "| %s", eval_cmd[i];
			else
				printf "%s", eval_cmd[i];
		}
	}'`

	[ "${CGI_cmd}" = "" ] && retjson 1 "INV_CMD!"

	print_json_head
	eval ${eval_cmd}

	WEB_LOGGER "${LANG001:=дִ}" "cmd=${eval_cmd}"
}


case "${CGI_action}" in
	"runcmd")
		action_check
		runcmd
		;;		
esac
