/*<!DOCTYPE>声明位于文档中的最前面的位置,处于<html>之前,此标签可告知浏览器文档使用哪种HTML或XHTML规范
以下的这个标记语言,声明了文档的根元素是html,它在公共标识符被定义为"-//W3C//DTD XHTML 1.0 Transitional//EN"的DTD中进行了定义,如果找不到,
浏览器将使用公共标示符后面的URL作为寻找DTD的位置*/
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
/*xmlns即xml namespace,xmlns是用来定义xml namespace 属性的。 xmlns属性在XHTML中是必须的,不过即使你的XHTML文档没有使用此属性,W3C的验证期也不会报错。因为
"xmlns=http://www.w3.org/1999/xhtml" 是一个固定值,所以,即使你没有包含它,此值也会被添加到<html>标签中*/
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
/*实际作用就是你第一次访问网页的时候计算机会自动缓存该网页的内容,如果你第二次访问相同的url,浏览器就会直接把原来的缓存调出来,即使你新的网站更新了
,显示出来的还是早先那个版本,因此,如果你设置no-catch的话,本地就不会缓存了,即每次请求的都是最新的版本*/
<meta http-equiv="Pragma" content="no-cache">
/*meta是html中的元标签,其中包含对应html的相关信息,客户端浏览器或服务器的程序会根据这些信息进行处理
http-equiv是这个网页表现内容用的,设定页面使用的字符集,用以说明主页制作所使用的文字以及语言,
浏览器会根据此来调用相应的字符集显示page内容
contect<内容类型>:这个我网页的格式是文本的,charset(编码):这个网页的编码是UTF-8,
需要注意的是这个网页内容的编码,而不是文件本身的*/
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
/*浏览器会以特殊的方式来使用标题,并且通常把它们放置在浏览器窗口的标题栏或状态栏上。同样,当把文档加入
用户的连接列表或收藏夹或书签列表,标题将成为该文档链接的默认名称*/
<title> OCN-OUTDOOR - 管理IP设置 </title>
/*<script>这个标记有个属性叫type,type="text/javascript",表示插入<script></script>其内部的代码为javascript语句
src="images/iepngfix_tilebg.js"表示该网页中插入了一个JS脚本文件*/
<script type="text/javascript" src="images/iepngfix_tilebg.js"></script>
/*<style type="text/css"></style>表示这是样式表,在中间放入CSS内容
type是他的类型属性,text/css是它的值,它们是告诉浏览器这里面的文本内容(text)要当层叠样式表来解析,不能当做其他来解析
该代码意思是给img,div,input添加一个样式,当然这个样式是一个行为样式,让其连接到一个应用程序上来,这个应用程序就是images/iepngfix.htc*/
<style type="text/css">img, div, input { behavior: url("images/iepngfix.htc") } </style>
/*调用一个外部的CSS样式文件,它是通过<link>标签调用的,rel="stylesheet"表示调用的是一种样式, href="theme/cvnchina/style.css"
表示外部文件样式的路径,type="text/css"具体说明调用样式的文件类型为CSS样式*/
<link rel="stylesheet" href="theme/cvnchina/style.css" type="text/css">
/*language=javascript用来告诉浏览器这是用Javascript编写的程序,需要调用相应的解释程序进行解释
(W3C已经建议使用新的标准:<script type="txet/javascript">)) , src=script/env.js语句是将src=script/env.js加载进来*/
<script language=javascript src=src=script/env.js></script>
<script language=javascript src=script/utils.js></script>
<script language=javascript src=script/valid.js></script>
<script language=javascript src=theme/cvnchina/main.js></script>
<script language=javascript>
//定义数组
var env=new Array();var webVars = new Array( '5500', '0', '0');
env['vendor.name'] = 'Shanghai Cloud Vision Networks Co., Ltd.';
env['vendor.link'] = 'http://www.cvnchina.com';
env['vendor.copyright'] = '2013-2020';
env['vendor.id'] = 'cvnchina';
env['vendor.logo'] = 'default';
env['sys.theme'] = 'cvnchina';
env['sys.lang'] = 'cn';
env['sys.model'] = 'OCN-OUTDOOR';
env['sys.name'] = 'EOC System';
env['sys.version'] = 'R1.0.5';
env['sys.type'] = 'eoc';
env['sys.mib'] = 'nscrtv-hc';
env['sys.ip'] = '192.168.0.100';
env['sys.user'] = 'admin';
env['sys.time'] = '946685404';
env['sys.linkup'] = '0';
env['sys.linkoff'] = '0';
env['sys.busy'] = '0';
env['sys.ipc'] = '0';
env['sys.vlan'] = '0';
env['sys.unsaved'] = webVars[1];
env['sys.feature'] = 'vlanpool;mme_drop_ports;slave_access_mgmt;bcmp;';
env['web.page'] = current_page();env['sys.parent_name'] = '';
pageRedirectCheck(env);
</script>
<!-- end header -->
<script language=JavaScript>
var webVars = new Array( '5500', '0', '0');
var sysip = new Array('CVN;00:E0:4C:86:70:01;static','ok;192.168.1.248;255.255.255.0;192.168.1.1','stop;0.0.0.0;0.0.0.0;0.0.0.0;0;');
/*
var webVars = new Array( 'EPN104', '0', '0');
var sysip = new Array('CVN;00:E0:4C:86:70:01;dhcp','ok;192.168.0.100;255.255.255.0;192.168.0.1','ok;192.168.1.21;255.255.255.0;192.168.1.1;60;bad'
);*/
function get_ip_proto()
{
if (sysip.length > 0){
var vs = sysip[0].split(';');
if (vs.length > 2) return vs[2];
}
return 'static';
}
function get_hostname()
{
if (sysip.length > 0){
var vs = sysip[0].split(';');
if (vs.length > 0) return vs[0];
}
return 'N/A';
}
function get_dhcp_status()
{
if (sysip.length > 2){
var vs = sysip[2].split(';');
if (vs.length > 0) {
if (vs[0] == 'stop') return "停止";
if (vs[0] == 'doing') return "正在获取...";
if (vs[0] == 'failed') return "获取失败";
if (vs[0] == 'ok') return "成功";
}
}
return 'N/A';
}
function get_dhcp_lease()
{
if (sysip.length > 2){
var vs = sysip[2].split(';');
if (vs.length > 4) return vs[4];
}
return 'N/A';
}
function get_ip(type)
{
var item = (type == 'static') ? 1 : 2;
if (sysip.length > item){
var vs = sysip[item].split(';');
if (vs.length > 1) return vs[1];
}
return '0.0.0.0';
}
function get_nm(type)
{
var item = (type == 'static') ? 1 : 2;
if (sysip.length > item){
var vs = sysip[item].split(';');
if (vs.length > 2) return vs[2];
}
return '0.0.0.0';
}
function get_gw(type)
{
var item = (type == 'static') ? 1 : 2;
if (sysip.length > item){
var vs = sysip[item].split(';');
if (vs.length > 3) return vs[3];
}
return '0.0.0.0';
}
function get_dns(type, i)
{
var item = (type == 'static') ? 1 : 2;
if (sysip.length > item){
var vs = sysip[item].split(';');
if (vs.length > (4 + i)) return vs[4 + i];
}
return '0.0.0.0';
}
function ip_set(form_in, val)
{
form_in[0].value = val.split('.')[0];
form_in[1].value = val.split('.')[1];
form_in[2].value = val.split('.')[2];
form_in[3].value = val.split('.')[3];
}
function ip_get(form_in)
{
return form_in[0].value + '.' + form_in[1].value + '.' + form_in[2].value + '.' + form_in[3].value;
}
function dhcp_renew()
{
}
function dhcp_release()
{
}
function valid_ip_items(IP)
{
if (IP.length != 4) return false;
var re = /^\d*$/;
for (var i = 0; i < 4; i ++){
if (!re.test(IP[i].value)){
return false;
}
}
return true;
}
function f2ip(IP)
{
return IP[0].value + '.' + IP[1].value + '.' + IP[2].value + '.' + IP[3].value;
}
function valid_netmask(nm)//检测掩码是否是连续的1,不能出现01
{
var tempSubMsk = new Array(0,0,0,0);
var sum=0;
/*
var re = /(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)/;
if (!re.test(f2ip(nm)))
{
return false;
}*/
tempSubMsk[0] = parseInt(nm[3].value, 10);
tempSubMsk[1] = parseInt(nm[2].value, 10);
tempSubMsk[2] = parseInt(nm[1].value, 10);
tempSubMsk[3] = parseInt(nm[0].value, 10);
sum=tempSubMsk[3]<<24|tempSubMsk[2]<<16|tempSubMsk[1]<<8|tempSubMsk[0];
if(sum==0)
{
return false;
}
while((sum&0x80000000)!=0)
{
sum=sum<<1;
}
if(sum!=0)
{
return false;
}
/*
for(var i=31; i>=0; i--)
{
if((tempSubMsk[parseInt(i/8,10)]&(1<<(parseInt(i%8,10)))) != 0)
{
tempSubMsk[parseInt(i/8,10)] = tempSubMsk[parseInt(i/8,10)]-(1<<(i%8));
}
else
{
break;
}
}
if(i>=0)
{
if((tempSubMsk[0]!=0)||(tempSubMsk[1]!=0)||(tempSubMsk[2]!=0)||(tempSubMsk[3]!=0))
{
return false;
}
}
else
{
return false;
}
*/
return true;
}
function valid_netmask_ip(nm,ip)
{
var tempSubMsk = new Array(0,0,0,0);
var tempip = new Array(0,0,0,0);
var num=0;
var num1=0,num2=0;
tempSubMsk[0] = parseInt(nm[3].value, 10);
tempSubMsk[1] = parseInt(nm[2].value, 10);
tempSubMsk[2] = parseInt(nm[1].value, 10);
tempSubMsk[3] = parseInt(nm[0].value, 10);
tempip[0] = parseInt(ip[3].value, 10);
tempip[1] = parseInt(ip[2].value, 10);
tempip[2] = parseInt(ip[1].value, 10);
tempip[3] = parseInt(ip[0].value, 10);
for(var i=31; i>=0; i--)//计算掩码有多少个0
{
if((tempSubMsk[parseInt(i/8,10)]&(1<<(parseInt(i%8,10)))) != 0)
{
num=i;
}
else
break;
}
if(num==0) return false;
for(var i=num; i>0; i--)//主机号全1
{
if((tempip[parseInt((i-1)/8,10)]&(1<<(parseInt((i-1)%8,10)))) != 0)//检测num位IP是否全1
{
num1=num1+1;
}
else
break;
}
if(num==num1) return false;
for(var i=num; i>0; i--)//主机号全0
{
if((tempip[parseInt((i-1)/8,10)]&(1<<(parseInt((i-1)%8,10)))) == 0)//检测num位IP是否全0
{
num2=num2+1;
}
else
break;
}
if(num==num2) return false;
return true;
}
function valid_ip(ip)
{
var ips = ip.split('.');
for (var i = 0; i < 4; i ++){
if(ips[i] == "")return false;
if (parseInt(ips[i]) > 255) return false;
}
if (parseInt(ips[3]) == 255) return false;
var a0 = parseInt(ips[0]);
if ((a0 == 0) || (a0 == 127) || (a0 > 223)){
return false;
}
return true;
}
function valid_ip_or_zero(ip)
{
var zero = 1;
var ips = ip.split('.');
for (var i = 0; i < 4; i ++){
if (parseInt(ips[i]) > 255) return false;
if (parseInt(ips[i]) != 0 ){
zero = 0;
}
}
if (zero) return true;
var a0 = parseInt(ips[0]);
if ((a0 == 0) || (a0 == 127) || (a0 > 223)){
return false;
}
return true;
}
function valid_gateway(ip, nm, gw)//同网段
{
if (!valid_ip_or_zero(gw)){
return false;
}
var ips = ip.split('.');
var nms = nm.split('.');
var gws = gw.split('.');
if( (parseInt(ips[0],10) & parseInt(nms[0],10))==(parseInt(gws[0],10) & parseInt(nms[0],10)) &&
(parseInt(ips[1],10) & parseInt(nms[1],10))==(parseInt(gws[1],10) & parseInt(nms[1],10)) &&
(parseInt(ips[2],10) & parseInt(nms[2],10))==(parseInt(gws[2],10) & parseInt(nms[2],10)) &&
(parseInt(ips[3],10) & parseInt(nms[3],10))==(parseInt(gws[3],10) & parseInt(nms[3],10)) )
{
return true;
}
else
return false;
}
function ip_proto_on_change()
{
var f = document.forms[0];
var str = '';
if(f.PROTO.value == 'static') {
str += '<table width=100% cellpadding=5 cellspacing=0>';
str += '<tr>';
str += '<td class="tb_title"> IP地址:</td>';
str += '<td class="tb_content"><input name=IP size=3 maxlength=3>. ';
str += '<input name=IP size=3 maxlength=3>. <input name=IP size=3 maxlength=3>. <input name=IP size=3 maxlength=3>';
str += '</td></tr><tr>';
str += '<td class="tb_title"> 子网掩码:</td>';
str += '<td class="tb_content"><input name=NM size=3 maxlength=3>. <input ';
str += 'name=NM size=3 maxlength=3>. <input name=NM size=3 ';
str += 'maxlength=3>. <input name=NM size=3 maxlength=3></td>';
str += '</tr><tr><td class="tb_title">默认网关:</td>';
str += '<td class="tb_content"><input name=GW size=3 maxlength=3>. <input ';
str += 'name=GW size=3 maxlength=3>. <input name=GW size=3 ';
str += 'maxlength=3>. <input name=GW size=3 maxlength=3></td></tr>';
str += '</table>';
document.getElementById('static_ip').innerHTML = str;
ip_set(f.IP, get_ip('static'));
ip_set(f.NM, get_nm('static'));
ip_set(f.GW, get_gw('static'));
// ip_set(f.DNS1, get_dns('static', 0));
// ip_set(f.DNS2, get_dns('static', 1));
}
else {
str += '<table width=100% cellpadding=5 cellspacing=0>';
str += '<tr>';
str += '<td class="tb_title">DHCP 状态:</td>';
str += '<td class="tb_content">' + get_dhcp_status() + '</td>';
str += '<td class="tb_message" width=35% ><input name="dhr" type=button value="Update" οnclick=apply_all("renew");>';
str += ' <input name="dhr" type=button value="Release" οnclick=apply_all("none"); disabled=true></td>';
str += '</tr>';
str += '<tr><td class="tb_title">IP地址:</td>';
str += '<td class="tb_content" colspan=2>' + get_ip('dhcp');
str += '</td></tr><tr>';
str += '<td class="tb_title">子网掩码:</td>';
str += '<td class="tb_content" colspan=2>' + get_nm('dhcp');
str += '</td></tr>';
str += '<tr><td class="tb_title">默认网关:</td>';
str += '<td class="tb_content" colspan=2>' + get_gw('dhcp');;
str += '</td></tr>';
str += '<tr><td class="tb_title">租约周期:</td>';
str += '<td class="tb_content" colspan=2>' + get_dhcp_lease(); + ' 秒';
str += '</td></tr>';
str += '</table>';
document.getElementById('static_ip').innerHTML = str;
ip_set(f.DNS1, get_dns('dhcp', 0));
ip_set(f.DNS2, get_dns('dhcp', 1));
}
}
function init()
{
var f=document.forms[0];
f.PROTO.value = get_ip_proto();
f.HN.value = get_hostname();
ip_proto_on_change();
}
function check_all_input()
{
var f = document.forms[0];
/*Begin add by huangmingjian 2012/09/25 for EPN104QID0058*/
var ret = valid_host(f.HN.value);
if((ret == -1) || (ret == -2))
{
if(ret == -1)
{
alert("主机名错误,主机名必须以字母开始!");
}
/*Begin add by huangmingjian 2012/10/11 for EPN104QID0070*/
if(ret == -2)
{
alert("主机名错误,请不要在主机名中包含非法字符:中文、空格及 ; | ' ( ) ` ~ & < > \\");
}
/*Begin add by huangmingjian 2012/10/11 for EPN104QID0070*/
return false;
}
if(f.PROTO.value == 'static') {
if (!valid_ip_items(f.IP) || !valid_ip(f2ip(f.IP))){
alert("IP地址错误,请重新输入!");
return false;
}
if (!valid_ip_items(f.NM) || !valid_netmask(f.NM) ){
alert("子网掩码错误,请重新输入!");
return false;
}
if (!valid_ip_items(f.IP) || !valid_netmask_ip(f.NM, f.IP) ){
alert("无效IP地址与掩码组合!");
return false;
}
if(f2ip(f.IP)== f2ip(f.GW))
{
alert("网关不能与IP一样,请重新输入!");
return false;
}
if (!valid_ip_items(f.GW) || !valid_gateway(f2ip(f.IP), f2ip(f.NM), f2ip(f.GW)) || !valid_netmask_ip(f.NM, f.GW) ){
alert("网关错误,请重新输入!");
return false;
}
}
/*
if (!valid_ip_items(f.DNS1) || !valid_ip_or_zero(f2ip(f.DNS1))){
alert("错误域名服务器地址,请重新输入!");
return false;
}
if (!valid_ip_items(f.DNS2) || !valid_ip_or_zero(f2ip(f.DNS2))){
alert("错误备用域名服务器地址,请重新输入!");
return false;
}
*/
/*End add by huangmingjian 2012/09/25 for EPN104QID0058*/
return true;
}
var newip = 0;
var FreshValue=0;
function gotonewpage()
{
clearInterval(FreshValue);
//GURL('http://' + newip + '/login.asp');
window.location.href='http://' + newip + '/login.asp';
}
function apply_all(dhcp_action)
{
var nextpage, proto ;
var f=document.forms[0];
if (!check_all_input())return;
if (f.PROTO.value != get_ip_proto()){
if (f.PROTO.value == 'static'){
newip = ip_get(f.IP);
}else {
dhcp_action = "renew";
//newip = get_ip('static');
}
}else if (f.PROTO.value == 'static'){
if ((ip_get(f.IP) != get_ip('static')) || (ip_get(f.NM) != get_nm('static'))){
newip = ip_get(f.IP);
}
}
// set all config
diffCfg("PROTO", "ip_proto", f.PROTO.value);
diffCfg("HN", "hostname", f.HN.value);
if (f.PROTO.value == 'static'){
diffCfg("IP", "sys_ip", ip_get(f.IP));
diffCfg("NM", "sys_nm", ip_get(f.NM));
diffCfg("GW", "sys_gw", ip_get(f.GW));
}else {
diffCfg("IP", "sys_ip", "0.0.0.0");
diffCfg("NM", "sys_nm", "0.0.0.0");
diffCfg("GW", "sys_gw", "0.0.0.0");
}
// diffCfg("DNS1", "sys_dns", ip_get(f.DNS1));
// diffCfg("DNS2", "sys_dns", ip_get(f.DNS2));
diffCfg("DHCP0", "dhcp_action", dhcp_action);
nextpage = newip ? 'http://' + newip + '/index.asp' : 'system_man_ip.asp';
subForm(f,'goform/command','SYS_MANIP', nextpage);
if(newip)
{
FreshValue = setInterval("gotonewpage()",200);
}
}
</script>
</head>
/*打开网页时加载javascript编写的函数init()*/
<body οnlοad=init()>
/*οnsubmit="return false;"防止表单自动提交,method=post 当前的数据用post方法传递*/
<form name=system_man_ip action=goform/command method=post οnsubmit="return false;">
/*width=100%表示这个表格撑到它所在容器的100%,将表格的边距设为5:cellpadding=5,将表格的间距设为0:cellspacing=0*/
<table width=100% cellpadding=5 cellspacing=0>
/*colspan=2:colspan是这个列跨度为两列的位置,引用一个对象tb_head*/
<tr ><td colspan=2 class="tb_head" >管理IP设置</td> </tr>
<tr>
<td class=tb_title>IP模式:</td>
<td class=tb_content>
/*规定下拉菜单的名称为PROTO,onchange事件是在客户端改变输入控件的值会发出的一个事件*/
<select name="PROTO" οnchange="ip_proto_on_change();">
<option value='static'>静态设置</option>
<option value='dhcp'>从DHCP服务器获取</option>
</select>
</td>
</tr>
<tr>
/*class属性指示元素属于何种样式的类*/
<td class=tb_title>主机名:</td>
/*元素的名称为HN,框的长度为31,最大输入字符数为31*/
<td class=tb_content><input name=HN size=31 maxlength=31></td>
</tr>
</table>
/*这句话写在这里是什么意思*/
<div id="static_ip"></div>
<!--
<table width=100% border=0 align=center cellpadding=5 cellspacing=1 bgcolor="#FFFFFF">
<tr>
<td class=tb_title>域名服务器</td>
<td class=tb_content><input name=DNS1 size=3 maxlength=3>. <input
name=DNS1 size=3 maxlength=3>. <input name=DNS1 size=3
maxlength=3>. <input name=DNS1 size=3 maxlength=3></td>
</tr>
<tr>
<td class=tb_title>备用域名服务器</td>
<td class=tb_content><input name=DNS2 size=3 maxlength=3>. <input
name=DNS2 size=3 maxlength=3>. <input name=DNS2 size=3
maxlength=3>. <input name=DNS2 size=3 maxlength=3></td>
</tr>
</table>
-->
</td>
</tr>
</table>
<p align=left>
<input class="button" type=button value="确 认" οnclick=apply_all("none") >
<input class="button" type=button value="取 消" οnclick=init() >
</p>
</form>
</body>
</html>
system_man_ip.asp文件的分析
最新推荐文章于 2023-03-14 10:26:28 发布