#!/bin/sh
#This script is created by ssparser automatically. The parser first created by MaoShouyan
printf "Content-type: text/html;charset=gb2312
Cache-Control: no-cache

"
echo -n "";
if [ "${PALANG}" = "en" ] ;then
	LANG_001="PING"
	LANG_002="Start"
	LANG_003="Stop"
	LANG_004="Please select a Virtual Interface"
	LANG_005="Please input a IP address"
	LANG_006="Mgmt Interface"
	LANG_007="Nexthop"
	LANG_008="Port"
	LANG_009="Packets: Sent"
	LANG_010="Received"
	LANG_011="Lost"
	LANG_012="loss"
	LANG_013="Approximate round trip times in milli-seconds:"
	LANG_014="Mininum"
	LANG_015="Maxinum"
	LANG_016="Average"
	LANG_017="Ping type"
fi
myself="`basename $0`"
FLOWEYE="/usr/ramdisk/bin/floweye"

echo -n "
<!DOCTYPE html>
<html>
<head>
    <meta charset=\"gb2312\">
    <title>Ping</title>
    <link rel=\"stylesheet\" href=\"/html/assert/panabit.css\">
	<script src=\"/html/assert/layui.all.js\"></script>
	<script src=\"/html/assert/panabit.js\"></script>
	<style>
	body{background-color:#f2f2f2}
	.layui-fluid{margin: 10px auto; width: 660px; background-color:#FFFFFF;}
	.layui-form{padding:10px}
	.layui-form-mid {padding: 5px 0!important;}
	.paui-nexthop, .paui-port, #submit_stop{display:none}
	.paui-pingok {color: #0000FF}
	.paui-pingerr{color: #FF5722}
	#div_ping_result{height:420px; overflow-y:auto; background-color:#FFFFFF;}
	";
		if [ "${CGI_wan_id}" != "" ]; then
			echo ".paui-method{display:none}"
		fi
	
echo -n "
	</style>
</head>
<body>
	<div class=\"layui-fluid\">
		<div class=\"layui-form\" lay-filter=\"form_ping\" style=\"margin-top:10px\">
			<div class=\"layui-form-item\">
				<div class=\"layui-inline\">
					<div class=\"layui-input-inline\" style=\"width: 180px;\">
						<select name=\"proxy\" id=\"select_proxy\" lay-filter=\"select_proxy\" lay-search>
							<option value=\"0\">${LANG_006:=}</option>
							";
								${FLOWEYE} nat listproxy type=lan | while read type id name theothers
								do
									if [ "${CGI_wan_id}" = "${id}" ]; then
										echo "<option value="l-${id}" selected>${name}</option>"
									else
										echo "<option value="l-${id}">${name}</option>"
									fi
								done
								${FLOWEYE} nat listproxy type=wan | while read type id name theothers
								do
									if [ "${CGI_wan_id}" = "${id}" ]; then
										echo "<option value="w-${id}" selected>${name}</option>"
									else
										echo "<option value="w-${id}">${name}</option>"
									fi
								done
							
echo -n "
						</select>
					</div>
					<div class=\"layui-form-mid paui-method\">${LANG_017:=Ping}</div>
					<div class=\"layui-input-inline paui-method\" style=\"width: 80px;\">
						<select name=\"type\" id=\"select_pingtype\" lay-filter=\"select_pingtype\">
							<option value=\"icmp\">ICMP</option>
							<option value=\"tcp\">TCP</option>
						</select>
					</div>
					<div class=\"layui-form-mid\">IP</div>
					<div class=\"layui-input-inline\" style=\"width: 120px;\">
						<input class=\"layui-input\" type=\"text\" name=\"ip\" value=\"${CGI_ip}\" lay-verify=\"required|isIPaddr\" lay-reqText=\"IPַΪ\" lay-verType=\"tips\">
					</div>
					<div class=\"layui-form-mid paui-port\">${LANG_008:=˿}</div>
					<div class=\"layui-input-inline paui-port\" style=\"width: 50px;\">
						<input class=\"layui-input\" type=\"text\" name=\"port\" value=443 lay-verify=\"required|number\" lay-verType=\"tips\">
					</div>
					<div class=\"layui-form-mid paui-nexthop\">${LANG_007:=һ}</div>
					<div class=\"layui-input-inline paui-nexthop\" style=\"width: 120px;\">
						<input type=\"text\" name=\"nexthop\" id=\"ipt_nexthop\" value=\"${CGI_nexthop}\" lay-verify=\"isIPaddr\" class=\"layui-input\">
					</div>
					<button class=\"layui-btn layui-btn-sm layui-btn-normal\" lay-submit id=\"submit_start\" lay-filter=\"submit_start\">${LANG_002:=ʼ}</button>
					<button class=\"layui-btn layui-btn-sm layui-btn-normal\" lay-submit id=\"submit_stop\" lay-filter=\"submit_stop\">${LANG_003:=ֹͣ}</button>
				</div>
			</div>
			<div class=\"layui-row layui-col-space5\" id=\"div_ping_result\">
			</div>
		</div>
	</div>
</body>
<script>
var \$ = layui.\$,
form = layui.form;
var g_timer = \"\";
var api = \"/cgi-bin/App/ping/ajax_ping\";
var ping_seq = 0;
var ping_total = 0;
var ping_miss = 0;
var ping_pass = 0;
var ping_time_min = 0;
var ping_time_max = 0;
var ping_time_all = 0;
var startPing = function(fdata){
	\$.ajax({
		type:'post'
		,url: api
		,data: fdata
		,async: false
		,success: function(json){
			
			ping_seq++;
			
			if(\$(\"#div_ping_result div\").length > 100)
				\$(\"#div_ping_result div\").eq(0).remove();
			if (json.code != 0) {
				var ret = \$('<div>SEQ=' + ping_seq + \"\" + json.msg + '</div>');
				ret.addClass(\"paui-pingerr\");
				ping_miss++;
			} else {
				if(fdata.type == \"icmp\")
					var ret = \$('<div>Reply form ' + fdata.ip + ' : SEQ= ' + ping_seq + ' TIME= ' + json.data.timer + 'msTTL= ' + json.data.ttl + '</div>');
				else
					var ret = \$('<div>TCP Ping ' + fdata.ip + \":\" + fdata.port + ' : SEQ= ' + ping_seq + ' TIME= ' + json.data.timer + 'ms</div>');
				ret.addClass(\"paui-pingok\");
				if(ping_time_min == 0) ping_time_min = json.data.timer;
				if(json.data.timer < ping_time_min) ping_time_min = json.data.timer;
				if(json.data.timer > ping_time_max) ping_time_max = json.data.timer;
				ping_time_all += json.data.timer;
				ping_pass++;
			}
			ping_total++;
			\$(\"#div_ping_result\").append(ret);
			\$(\"#div_ping_result\").scrollTop(\$(\"#div_ping_result\")[0].scrollHeight);
		}
	});
};
var endPing = function(fdata){
	var pxy = \$(\"#select_proxy\").find(\"option[value=\" + fdata.proxy + \"]\").text();
	var per = ping_miss <= 0 ? \"0\" : Math.round(ping_miss /ping_total * 100);
	var cnt = [ \"${LANG_009:=ݰ: ѷ} = \", ping_total, \"${LANG_010:=ѽ} = \", ping_pass, \"${LANG_011:=ʧ} = \", ping_miss, \" (\", per, \"% ${LANG_012:=ʧ})\" ].join(\"\");
	"; if [ "${PALANG}" = "en" ]; then 
echo -n "
		\$(\"#div_ping_result\").append('<div class=\"paui-pingok\" style=\"margin-top:10px\">Ping statistics for ' + pxy + ' Ping ' + fdata.ip + '</div>');
	"; else 
echo -n "
		\$(\"#div_ping_result\").append('<div class=\"paui-pingok\" style=\"margin-top:10px\">' + pxy + ' Ping ' + fdata.ip + ' ͳϢ:</div>');
	"; fi 
echo -n "
	\$(\"#div_ping_result\").append('<div class=\"paui-pingok\" style=\"margin-left:10px\">'+ cnt + '</div>');
	if(ping_pass != 0){
		var avg = Math.round(ping_time_all / ping_pass);
		var npm = [ \"${LANG_014:=} = \", ping_time_min, \"ms${LANG_015:=} = \", ping_time_max, \"ms${LANG_016:=ƽ} = \", avg, \"ms\"].join(\"\");
		\$(\"#div_ping_result\").append('<div class=\"paui-pingok\">${LANG_013:=г̵Ĺʱ(ԺΪλ)}:</div>');
		\$(\"#div_ping_result\").append('<div class=\"paui-pingok\" style=\"margin-left:10px\">'+ npm + '</div>');
	}
	\$(\"#div_ping_result\").scrollTop(\$(\"#div_ping_result\")[0].scrollHeight);
}
form.render();
form.on('select(select_proxy)', function(obj){
	\$(\".paui-method\").hide();
	\$(\".paui-port\").hide();
	\$(\".paui-nexthop\").hide();
	form.val(\"form_ping\", {\"type\": \"icmp\"});
	if ((obj.value).indexOf(\"l-\") == 0)
		\$(\".paui-nexthop\").show();
	else if(obj.value == \"0\")
		\$(\".paui-method\").show();
});
form.on('select(select_pingtype)', function(obj){
	if(obj.value==\"icmp\")
		\$(\".paui-port\").hide();
	else
		\$(\".paui-port\").show();
});
form.on('submit(submit_start)', function(obj){
	\$(\"#submit_start\").hide();
	\$(\"#submit_stop\").show();
	\$(\"#div_ping_result\").html(\"\");
	ping_seq = 0;
	ping_total = 0;
	ping_miss = 0;
	ping_pass = 0;
	ping_time_min = 0;
	ping_time_max = 0;
	ping_time_all = 0;
	g_timer = setInterval(function(){
		startPing(obj.field);
	}, 1500);
	return false;
});
form.on('submit(submit_stop)', function(obj){
	clearInterval(g_timer);
	\$(\"#submit_start\").show();
	\$(\"#submit_stop\").hide();
	endPing(obj.field);
	return false;
});
"; if [ "${CGI_dopingnow}" = "1" ]; then 
echo -n "
	\$(\"#submit_start\").click();
"; fi 
echo -n "
</script>
</html>
";