HTTP/1.1 200 OK
Server: WebServer
Date: Thu, 21 Nov 2024 08:53:59 GMT
Transfer-Encoding: chunked
Connection: close
fef
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link rel="shortcut icon" href="/favicon.ico" >
<link rel="stylesheet" href="/css/general.css" type="text/css">
<meta http-equiv="Content-Type" content="no-cache">
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>D-LINK SYSTEMS, INC. | WIRELESS ROUTER | HOME</title>
<script>var salt = "00489606";</script>
<script type="text/javascript" charset="utf-8" src="./js/comm.js"></script>
<script type="text/javascript" charset="utf-8" src="./js/libajax.js"></script>
<script type="text/javascript" charset="utf-8" src="./js/postxml.js"></script>
<script type="text/javascript" charset="utf-8" src="./js/hmac_md5.js"></script>
<script type="text/javascript">
var OBJ = COMM_GetObj;
var XG = function(n){return PXML.doc.Get(n);};
var XS = function(n,v){return PXML.doc.Set(n,v);};
var XD = function(n){return PXML.doc.Del(n);};
var XA = function(n,v){return PXML.doc.Add(n,v);};
var GPBT= function(r,e,t,v,c){return PXML.doc.GetPathByTarget(r,e,t,v,c);};
var S2I = function(str) {return isNaN(str)?0:parseInt(str, 10);}
function TEMP_IsDigit(no)
{
if (no==""||no==null)
return false;
if (no.toString()!=parseInt(no, 10).toString())
return false;
return true;
}
function TEMP_CheckNetworkAddr(ipaddr, lanip, lanmask)
{
if (lanip)
{
var network = lanip;
var mask = lanmask;
}
else
{
var network = "192.168.2.1";
var mask = "24";
}
var vals = ipaddr.split(".");
if (vals.length!=4)
return false;
for (var i=0; i<4; i++)
if (!TEMP_IsDigit(vals[i]) || vals[i]>255) return false;
if (COMM_IPv4NETWORK(ipaddr, mask)!=COMM_IPv4NETWORK(network, mask))
return false;
return true;
}
function TEMP_RulesCount(path, id)
{
var max = parseInt(XG(path+"/max"), 10);
var cnt = parseInt(XG(path+"/count"), 10);
var rmd = max - cnt;
OBJ(id).innerHTML = rmd;
}
function Body() {}
Body.prototype =
{
ShowLogin: function()
{
OBJ("loginpwd").value = "";
OBJ("captcha").value = "";
if (this.enCaptcha)
{
OBJ("GAC").style.display = "inline";
OBJ("noGAC").style.display = "none";
this.RefreshCaptcha();
}
else
{
OBJ("noGAC").style.display = "inline";
OBJ("GAC").style.display = "none";
}
OBJ("menu").style.display = "none";
OBJ("content").style.display= "none";
OBJ("mbox").style.display = "none";
OBJ("login").style.display = "block";
if (OBJ("loginusr").tagName.toLowerCase()=="input")
{
var username = "Admin";
OBJ("loginusr").value = username;
OBJ("loginpwd").focus();
}
else
{
OBJ("loginpwd").focus();
}
},
ShowContent: function()
{
OBJ("login").style.display = "none";
OBJ("mbox").style.display = "none";
OBJ("menu").style.display = "block";
OBJ("content").style.display= "block";
},
ShowMessage: function(banner, msgArray)
{
var str = '<h1>'+banner+'</h1>';
for (var i=0; i<msgArray.length; i++)
{
str += '<div class="emptyline"></div>';
str += '<div class="centerline">'+msgArray[i]+'</div>';
}
str += '<div class="emptyline"></div>';
OBJ("message").innerHTML = str;
OBJ("login").style.display = "none";
OBJ("menu").style.display = "none";
OBJ("content").style.display= "none";
OBJ("mbox").style.display = "block";
},
rtnURL: null,
seconds: null,
timerId: null,
timerId_rtn: null,
Countdown: function()
{
this.seconds--;
OBJ("timer").innerHTML = this.seconds;
if (this.seconds < 1)
{
clearTimeout(this.timerId);
if(!this.rtnURL) this.GotResult();
}
else
{
this.timerId = setTimeout('BODY.Countdown()',1000);
if(this.rtnURL && this.seconds==30) this.GotResult();
}
},
GotResult: function()
{
if (this.rtnURL) this.ReturnCheck();
else this.ShowContent();
},
ReturnCheck: function()
{
BODY.timerId_rtn = setTimeout('BODY.ReturnCheck()',5000);
var ajaxObj = GetAjaxObj
1000
("ReturnCheck");
ajaxObj.createRequest();
ajaxObj.onCallback = function (xml)
{
ajaxObj.release();
if(xml.Get("/status/result")=="OK" || xml.Get("/status/result")=="Authenication fail")
{
clearTimeout(BODY.timerId);
clearTimeout(BODY.timerId_rtn);
self.location.href = BODY.rtnURL;
}
}
ajaxObj.setHeader("Content-Type", "application/x-www-form-urlencoded");
ajaxObj.sendRequest("check_stats.php", "CHECK_NODE=");
},
ShowCountdown: function(banner, msgArray, sec, url)
{
this.rtnURL = url;
this.seconds = sec;
if(this.rtnURL)
{
this.seconds = this.seconds + 30;
//Solve the problem the countdown page would be uncorrected if the logout time is small than the countdown time.
AUTH.TimeoutCallback = null;
AUTH.UpdateTimeout();
}
var str = '<h1>'+banner+'</h1>';
for (var i=0; i<msgArray.length; i++)
{
str += '<div class="emptyline"></div>';
str += '<div class="centerline">'+msgArray[i]+'</div>';
}
str += '<div class="emptyline"></div>';
str += '<div class="centerline">等候時間 : ';
str += '<span id="timer" style="color:red;"></span>';
str += ' 秒</div>';
str += '<div class="emptyline"></div>';
OBJ("message").innerHTML = str;
OBJ("login").style.display = "none";
OBJ("menu").style.display = "none";
OBJ("content").style.display= "none";
OBJ("mbox").style.display = "block";
this.Countdown();
},
ShowAlert: function(msg)
{
alert(msg);
},
DisableCfgElements: function(type)
{
for (var i = 0; i < document.forms.length; i+=1)
{
var frmObj = document.forms[i];
for (var idx = 0; idx < frmObj.elements.length; idx+=1)
{
if (frmObj.elements[idx].getAttribute("usrmode")=="enable") continue;
frmObj.elements[idx].disabled = type;
}
}
},
//////////////////////////////////////////////////
LoginCallback: null,
//////////////////////////////////////////////////
enCaptcha: COMM_ToBOOL(0) || COMM_ToBOOL(),
RefreshCaptcha: function()
{
var self = this;
var obj = OBJ("auth_img");
obj.innerHTML = "<font color=red>(請稍候 ...)</font>";
AUTH.Captcha(function(xml)
{
switch (xml.Get("/captcha/result"))
{
case "OK":
self.captcha = xml.Get("/captcha/message");
obj.innerHTML = "<img src="+self.captcha+"?"+COMM_RandomStr(6)+" />";
break;
case "FAIL":
obj.innerHTML = "路由器忙碌中,請稍候再試!";
break;
default:
obj.innerHTML = "Internel error ("+xml.Get("/captcha/result")+")";
break;
}
});
},
LoginSubmit: function()
{
var self = this;
if (OBJ("loginusr").value=="")
{
this.ShowAlert("請輸入使用者名稱。")
OBJ("loginusr").focus();
return false;
}
else if (this.enCaptcha&&OBJ("captcha").value=="")
{
this.ShowAlert("請輸入圖形驗證碼。");
OBJ("captcha").focus();
return false;
}
AUTH.Login_Hash(
function(json)
{
var JsonData = eval('(' + json + ')');
if(JsonData.status=="ok")
{
if(typeof(JsonData.AUTHORIZED_GROUP)=="undefined") AUTH.AuthorizedGroup = 0;
else AUTH.AuthorizedGroup = parseInt(JsonData.AUTHORIZED_GROUP, 10);
AUTH.UpdateTimeout();
if (self.LoginCallback) self.LoginCallback();
location.reload(true);//reload the page.
}
else if(JsonData.status=="fail")
{
var msgArray =
[
'使用者名稱或密碼不正確。',
'<input id="relogin" type="button" value="再次登入" onClick="BODY.ShowLogin();" />'
];
self.ShowMessage('登入失敗', msgArray);
OBJ("relogin").focus();
}
else if(JsonData.RESULT=="FAIL")
{
switch (JsonData.REASON)
{
case "AUTH_FAIL":
var msgArray =
[
"使用者名稱或密碼不正確。",
"<input id='relogin' type='button' value='再次登入' onClick='BODY.ShowLogin();' />"
];
self.ShowMessage("登入失敗", msgArray);
OBJ("relogin").focus();
break;
case "ERR_CREAT
1000
E_SESSDATA":
var msgArray =
[
"無法建立連線資料,請重新啟動後再試一次",
"<input id='relogin' type='button' value='再次登入' onClick='BODY.ShowLogin();' />"
];
self.ShowMessage("登入失敗", msgArray);
OBJ("relogin").focus();
break;
case "ERR_SESSFULL":
var msgArray =
[
"已連接的連線數太多,請稍候再試。",
"<input id='relogin' type='button' value='再次登入' onClick='BODY.ShowLogin();' />"
];
self.ShowMessage("登入失敗", msgArray);
OBJ("relogin").focus();
break;
case "ERR_CAPTCHA":
var msgArray =
[
"圖形驗證不正確",
"<input id='relogin' type='button' value='再次登入' onClick='BODY.ShowLogin();' />"
];
self.ShowMessage("登入失敗", msgArray);
OBJ("relogin").focus();
self.enCaptcha = true;
break;
default:
self.ShowAlert("Internal error, "+JsonData.REASON);
break;
}
}
else
{
self.ShowAlert('系統沒有回應,請再登入一次。');
OBJ("relogin").focus();
}
},
OBJ("loginusr").value,
OBJ("loginpwd").value,
OBJ("captcha").value.toUpperCase()
);
},
Login: function(callback)
{
if (callback) this.LoginCallback = callback;
if (AUTH.AuthorizedGroup >= 0) { AUTH.UpdateTimeout(); return true; }
return false;
},
Logout: function()
{
AUTH.Logout(function(){AUTH.TimeoutCallback();});
},
Reboot: function()
{
if (!confirm("您要重新啟動路由器嗎?")) return;
self.location.href = "./reboot.php";
},
//////////////////////////////////////////////////
GetCFG: function()
{
var self = this;
if (!this.Login(function(){self.GetCFG();})) return;
if (AUTH.AuthorizedGroup >= 100) this.DisableCfgElements(true);
if (PAGE&&PAGE.services!=null)
{
COMM_GetCFG(
false,
PAGE.services,
function(xml) {
PAGE.InitValue(xml);
PAGE.Synchronize();
COMM_DirtyCheckSetup();
if (AUTH.AuthorizedGroup >= 100) BODY.DisableCfgElements(true);
}
);
}
return;
},
OnSubmit: function()
{
if (PAGE === null) return;
PAGE.Synchronize();
var dirty = COMM_IsDirty(false);
if (!dirty && PAGE.IsDirty) dirty = PAGE.IsDirty();
if (!dirty)
{
/* var msgArray =
[
'設定沒有改變!',
'<input id="nochg" type="button" value="繼續" onClick="BODY.ShowContent();" />'
];
this.ShowMessage('沒有變更', msgArray);
OBJ("menu").style.display = "none";
OBJ("content").style.display= "none";
OBJ("mbox").style.display = "block";
OBJ("nochg").focus();
return;*/
window.location.href = "bsc_internet.php";
}
var xml = PAGE.PreSubmit();
if (xml === null) return;
if('bsc_internet' != 'bsc_sms_send')
{
var msgArray =
[
'設定已儲存並生效。',
'請稍候 ...'
];
}
else
{
var msgArray = ['傳送訊息中,請稍候…'];
}
if(PAGE.ShowSavingMessage) PAGE.ShowSavingMessage();
else this.ShowMessage('儲存中', msgArray);
AUTH.UpdateTimeout();
var self = this;
PXML.UpdatePostXML(xml);
PXML.Post(function(code, result){self.SubmitCallback(code,result);});
},
SubmitCallback: function(code, result)
{
if (PAGE.OnSubmitCallback(code, result)) return;
this.ShowContent();
switch (code)
{
case "OK":
this.OnReload();
break;
case "BUSY":
this.ShowAlert("有其他使用者正在設定此路由器,請稍候再登入。");
break;
case "HEDWIG":
this.ShowAlert(result.Get("/hedwig/message"));
if (PAGE.CursorFocus) PAGE.CursorFocus(result.Get("/hedwig/node"));
break;
case "PIGWIDGEON":
if (result.Get("/pigwidgeon/message")=="no power")
{
BODY.NoPower();
}
else
{
this.ShowAlert(result.Get("/pigwidgeon/mes
1000
sage"));
}
break;
}
},
NoPower: function()
{
BODY.ShowAlert("您的連線已逾時,請重新登入。");
AUTH.Logout();
BODY.ShowLogin();
},
OnReload: function()
{
if(PAGE)
{
if(PAGE.OnReload) PAGE.OnReload();
else PAGE.OnLoad();
}
this.GetCFG();
},
//////////////////////////////////////////////////
OnLoad: function()
{
var self = this;
if (AUTH.AuthorizedGroup < 0) { this.ShowLogin(); return; }
else this.ShowContent();
AUTH.TimeoutCallback = function()
{
var msgArray =
[
'您已成功登出。',
'<input id="tologin" type="button" value="返回到登入頁面" onClick="BODY.ShowLogin();" />'
];
self.ShowMessage('登出', msgArray);
self.DisableCfgElements(false);
if (PAGE) PAGE.OnLoad();
OBJ("tologin").focus();
};
if (PAGE) PAGE.OnLoad();
this.GetCFG();
},
OnUnload: function() { if (PAGE) PAGE.OnUnload(); OnunloadAJAX(); },
OnKeydown: function(e)
{
switch (COMM_Event2Key(e))
{
case 13: this.LoginSubmit();
default: return;
}
},
InjectTable: function(tblID, uid, data, type)
{
var rows = OBJ(tblID).getElementsByTagName("tr");
var tagTR = null;
var tagTD = null;
var i;
var str;
var found = false;
/* Search the rule by UID. */
for (i=0; !found && i<rows.length; i++) if (rows[i].id == uid) found = true;
if (found)
{
for (i=0; i<data.length; i++)
{
tagTD = OBJ(uid+"_"+i);
switch (type[i])
{
case "checkbox":
str = "<input type='checkbox'";
str += " id="+uid+"_check_"+i;
if (COMM_ToBOOL(data[i])) str += " checked";
str += " disabled>";
tagTD.innerHTML = str;
break;
case "text":
str = data[i];
if(typeof(tagTD.innerText) !== "undefined") tagTD.innerText = str;
else if(typeof(tagTD.textContent) !== "undefined") tagTD.textContent = str;
else tagTD.innerHTML = str;
break;
default:
str = data[i];
tagTD.innerHTML = str;
break;
}
}
return;
}
/* Add a new row for this entry */
tagTR = OBJ(tblID).insertRow(rows.length);
tagTR.id = uid;
/* save the rule in the table */
for (i=0; i<data.length; i++)
{
tagTD = tagTR.insertCell(i);
tagTD.id = uid+"_"+i;
tagTD.className = "content";
switch (type[i])
{
case "checkbox":
str = "<input type='checkbox'";
str += " id="+uid+"_check_"+i;
if (COMM_ToBOOL(data[i])) str += " checked";
str += " disabled>";
tagTD.innerHTML = str;
break;
case "text":
str = data[i];
if(typeof(tagTD.innerText) !== "undefined") tagTD.innerText = str;
else if(typeof(tagTD.textContent) !== "undefined") tagTD.textContent = str;
else tagTD.innerHTML = str;
break;
default:
str = data[i];
tagTD.innerHTML = str;
break;
}
}
},
CleanTable: function(tblID)
{
table = OBJ(tblID);
var rows = table.getElementsByTagName("tr");
while (rows.length > 1) table.deleteRow(rows.length - 1);
}
};
/**************************************************************************/
var AUTH = new Authenticate(-1, 180);
var PXML = new PostXML();
var BODY = new Body();
var PAGE = null;
if (navigator.cookieEnabled) document.cookie = "uid="+COMM_RandomStr(10)+"; path=/";
</script>
</head>
<body class="mainbg" onload="BODY.OnLoad();" onunload="BODY.OnUnload();">
<div class="maincontainer">
<div class="headercontainer">
<span class="product">產品頁面 : <a href="http://support.dlink.com" target="_blank">DIR-818LW</a></span>
<span class="version">韌體版本 : 1.04</span>
<span class="hwversion">硬體版本 : <span class="value" style="text-transform:uppercase;">A1</span></span>
</div>
<div class="bannercontainer">
<span class="bannerhead"><a href="http://www.dlink.com"><img src="/pic/head_01.gif" width="162" height="92"></a></span>
<span class=
{
"@category" : "datascan",
"@timestamp" : "2024-11-21T08:55:08.000Z",
"app" : {
"extract" : {
"domain" : [
"dlink.com",
"w3.org"
],
"file" : [
"check_stats.php",
"bsc_internet.php",
"reboot.php"
],
"hostname" : [
"support.dlink.com",
"www.dlink.com",
"www.w3.org"
],
"ip" : [
"192.168.2.1"
],
"url" : [
"http://support.dlink.com",
"http://www.dlink.com",
"http://www.w3.org/TR/html4/loose.dtd"
]
},
"http" : {
"bodymd5" : "a82c67e2e7d461d4bd0a4c4b66748f06",
"bodymmh3" : 833803476,
"headermd5" : "81e18d58624f76e2617a6678bd934bb0",
"headermmh3" : 1502388248,
"title" : "D-LINK SYSTEMS, INC. | WIRELESS ROUTER | HOME"
},
"length" : 16384
},
"asn" : "AS4780",
"city" : "Taipei",
"country" : "TW",
"cpe" : "<enterprise field>: cpe",
"cpecount" : "<enterprise field>: cpecount",
"data" : "HTTP/1.1 200 OK\r\nServer: WebServer\r\nDate: Thu, 21 Nov 2024 08:53:59 GMT\r\nTransfer-Encoding: chunked\r\nConnection: close\r\n\r\nfef\r\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t<link rel=\"shortcut icon\" href=\"/favicon.ico\" >\t\n\t<link rel=\"stylesheet\" href=\"/css/general.css\" type=\"text/css\">\n\t<meta http-equiv=\"Content-Type\" content=\"no-cache\">\n\t<meta http-equiv=\"Pragma\" content=\"no-cache\" />\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\t<title>D-LINK SYSTEMS, INC. | WIRELESS ROUTER | HOME</title>\t\t\n\t<script>var salt = \"00489606\";</script>\t\t\n\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"./js/comm.js\"></script>\n\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"./js/libajax.js\"></script>\n\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"./js/postxml.js\"></script>\n\t<script type=\"text/javascript\" charset=\"utf-8\" src=\"./js/hmac_md5.js\"></script>\n\n\t<script type=\"text/javascript\">\n\tvar OBJ\t= COMM_GetObj;\n\tvar XG\t= function(n){return PXML.doc.Get(n);};\n\tvar XS\t= function(n,v){return PXML.doc.Set(n,v);};\n\tvar XD\t= function(n){return PXML.doc.Del(n);};\n\tvar XA\t= function(n,v){return PXML.doc.Add(n,v);};\n\tvar GPBT= function(r,e,t,v,c){return PXML.doc.GetPathByTarget(r,e,t,v,c);};\n\tvar S2I\t= function(str) {return isNaN(str)?0:parseInt(str, 10);}\n\n\tfunction TEMP_IsDigit(no)\n\t{\n\t\tif (no==\"\"||no==null)\n\t\t\treturn false;\n\t\tif (no.toString()!=parseInt(no, 10).toString())\n\t\t\treturn false;\n\n\t return true;\n\t}\n\tfunction TEMP_CheckNetworkAddr(ipaddr, lanip, lanmask)\n\t{\n\t\tif (lanip)\n\t\t{\n\t\t\tvar network = lanip;\n\t\t\tvar mask = lanmask;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar network = \"192.168.2.1\";\n\t\t\tvar mask = \"24\";\n\t\t}\n\t\tvar vals = ipaddr.split(\".\");\n\n\t\tif (vals.length!=4)\n\t\t\treturn false;\n\n\t\tfor (var i=0; i<4; i++)\n\t\t\tif (!TEMP_IsDigit(vals[i]) || vals[i]>255)\treturn false;\n\n\t\tif (COMM_IPv4NETWORK(ipaddr, mask)!=COMM_IPv4NETWORK(network, mask))\n\t\t\treturn false;\n\n\t\treturn true;\n\t}\n\tfunction TEMP_RulesCount(path, id)\n\t{\n\t\tvar max = parseInt(XG(path+\"/max\"), 10);\n\t\tvar cnt = parseInt(XG(path+\"/count\"), 10);\n\t\tvar rmd = max - cnt;\n\t\tOBJ(id).innerHTML = rmd;\n\t}\n\n\tfunction Body() {}\n\tBody.prototype =\n\t{\n\t\tShowLogin: function()\n\t\t{\n\t\t\tOBJ(\"loginpwd\").value\t= \"\";\n\t\t\tOBJ(\"captcha\").value\t= \"\";\n\n\t\t\tif (this.enCaptcha)\n\t\t\t{\n\t\t\t\tOBJ(\"GAC\").style.display\t= \"inline\";\n\t\t\t\tOBJ(\"noGAC\").style.display\t= \"none\";\n\t\t\t\tthis.RefreshCaptcha();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tOBJ(\"noGAC\").style.display\t= \"inline\";\n\t\t\t\tOBJ(\"GAC\").style.display\t= \"none\";\n\t\t\t}\n\t\t\tOBJ(\"menu\").style.display\t= \"none\";\n\t\t\tOBJ(\"content\").style.display= \"none\";\n\t\t\tOBJ(\"mbox\").style.display\t= \"none\";\n\t\t\tOBJ(\"login\").style.display\t= \"block\";\n\t\t\tif (OBJ(\"loginusr\").tagName.toLowerCase()==\"input\")\n\t\t\t{\n\t\t\t\tvar username = \"Admin\";\n\t\t\t\tOBJ(\"loginusr\").value = username;\n\t\t\t\tOBJ(\"loginpwd\").focus();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tOBJ(\"loginpwd\").focus();\n\t\t\t}\n\t\t},\n\t\tShowContent: function()\n\t\t{\n\t\t\tOBJ(\"login\").style.display\t= \"none\";\n\t\t\tOBJ(\"mbox\").style.display\t= \"none\";\n\t\t\tOBJ(\"menu\").style.display\t= \"block\";\n\t\t\tOBJ(\"content\").style.display= \"block\";\n\t\t},\n\t\tShowMessage: function(banner, msgArray)\n\t\t{\n\t\t\tvar str = '<h1>'+banner+'</h1>';\n\t\t\tfor (var i=0; i<msgArray.length; i++)\n\t\t\t{\n\t\t\t\tstr += '<div class=\"emptyline\"></div>';\n\t\t\t\tstr += '<div class=\"centerline\">'+msgArray[i]+'</div>';\n\t\t\t}\n\t\t\tstr += '<div class=\"emptyline\"></div>';\n\t\t\tOBJ(\"message\").innerHTML = str;\n\t\t\tOBJ(\"login\").style.display\t= \"none\";\n\t\t\tOBJ(\"menu\").style.display\t= \"none\";\n\t\t\tOBJ(\"content\").style.display= \"none\";\n\t\t\tOBJ(\"mbox\").style.display\t= \"block\";\n\t\t},\n\t\trtnURL: null,\n\t\tseconds: null,\n\t\ttimerId: null,\n\t\ttimerId_rtn: null,\n\t\tCountdown: function()\n\t\t{\n\t\t\tthis.seconds--;\n\t\t\tOBJ(\"timer\").innerHTML = this.seconds;\n\t\t\tif (this.seconds < 1)\n\t\t\t{ \n\t\t\t\tclearTimeout(this.timerId);\n\t\t\t\tif(!this.rtnURL) this.GotResult();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.timerId = setTimeout('BODY.Countdown()',1000);\n\t\t\t\tif(this.rtnURL && this.seconds==30) this.GotResult();\n\t\t\t}\n\t\t},\n\t\tGotResult: function()\n\t\t{\n\t\t\tif (this.rtnURL)\tthis.ReturnCheck();\n\t\t\telse\t\t\t\tthis.ShowContent();\n\t\t},\n\t\tReturnCheck: function()\n\t\t{\n\t\t\tBODY.timerId_rtn = setTimeout('BODY.ReturnCheck()',5000);\n\t\t\tvar ajaxObj = GetAjaxObj\r\n1000\r\n(\"ReturnCheck\");\n\t\t\tajaxObj.createRequest();\n\t\t\tajaxObj.onCallback = function (xml)\n\t\t\t{\n\t\t\t\tajaxObj.release();\n\t\t\t\tif(xml.Get(\"/status/result\")==\"OK\" || xml.Get(\"/status/result\")==\"Authenication fail\") \n\t\t\t\t{\n\t\t\t\t\tclearTimeout(BODY.timerId);\n\t\t\t\t\tclearTimeout(BODY.timerId_rtn);\n\t\t\t\t\tself.location.href = BODY.rtnURL;\n\t\t\t\t}\n\t\t\t}\n\t\t\tajaxObj.setHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n\t\t\tajaxObj.sendRequest(\"check_stats.php\", \"CHECK_NODE=\");\n\t\t},\t\t\n\t\tShowCountdown: function(banner, msgArray, sec, url)\n\t\t{\n\t\t\tthis.rtnURL = url;\n\t\t\tthis.seconds = sec;\n\t\t\tif(this.rtnURL) \n\t\t\t{\n\t\t\t\tthis.seconds = this.seconds + 30;\n\t\t\t\t//Solve the problem the countdown page would be uncorrected if the logout time is small than the countdown time.\n\t\t\t\tAUTH.TimeoutCallback = null;\n\t\t\t\tAUTH.UpdateTimeout();\n\t\t\t}\n\t\t\tvar str = '<h1>'+banner+'</h1>';\n\t\t\tfor (var i=0; i<msgArray.length; i++)\n\t\t\t{\n\t\t\t\tstr += '<div class=\"emptyline\"></div>';\n\t\t\t\tstr += '<div class=\"centerline\">'+msgArray[i]+'</div>';\n\t\t\t}\n\t\t\tstr += '<div class=\"emptyline\"></div>';\n\t\t\tstr += '<div class=\"centerline\">\u7b49\u5019\u6642\u9593 : ';\n\t\t\tstr += '<span id=\"timer\" style=\"color:red;\"></span>';\n\t\t\tstr += ' \u79d2</div>';\t\t\t\t\n\t\t\tstr += '<div class=\"emptyline\"></div>';\n\t\t\tOBJ(\"message\").innerHTML\t= str;\n\t\t\tOBJ(\"login\").style.display\t= \"none\";\n\t\t\tOBJ(\"menu\").style.display\t= \"none\";\n\t\t\tOBJ(\"content\").style.display= \"none\";\n\t\t\tOBJ(\"mbox\").style.display\t= \"block\";\n\t\t\tthis.Countdown();\n\t\t},\n\t\tShowAlert: function(msg)\n\t\t{\n\t\t\talert(msg);\n\t\t},\n\t\tDisableCfgElements: function(type)\n\t\t{\n\t\t\tfor (var i = 0; i < document.forms.length; i+=1)\n\t\t {\n\t\t\t\tvar frmObj = document.forms[i];\n\t\t\t\tfor (var idx = 0; idx < frmObj.elements.length; idx+=1)\n\t\t\t\t{\n\t\t\t\t\tif (frmObj.elements[idx].getAttribute(\"usrmode\")==\"enable\") continue;\n\t\t\t\t\tfrmObj.elements[idx].disabled = type;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t//////////////////////////////////////////////////\n\t\tLoginCallback: null,\n\t\t//////////////////////////////////////////////////\n\t\tenCaptcha: COMM_ToBOOL(0) || COMM_ToBOOL(),\n\t\tRefreshCaptcha: function()\n\t\t{\n\t\t\tvar self = this;\n\t\t\tvar obj = OBJ(\"auth_img\");\n\t\t\tobj.innerHTML = \"<font color=red>(\u8acb\u7a0d\u5019 ...)</font>\";\n\t\t\tAUTH.Captcha(function(xml)\n\t\t\t{\n\t\t\t\tswitch (xml.Get(\"/captcha/result\"))\n\t\t\t\t{\n\t\t\t\tcase \"OK\":\n\t\t\t\t\tself.captcha = xml.Get(\"/captcha/message\");\n\t\t\t\t\tobj.innerHTML = \"<img src=\"+self.captcha+\"?\"+COMM_RandomStr(6)+\" />\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"FAIL\":\n\t\t\t\t\tobj.innerHTML = \"\u8def\u7531\u5668\u5fd9\u788c\u4e2d\uff0c\u8acb\u7a0d\u5019\u518d\u8a66!\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tobj.innerHTML = \"Internel error (\"+xml.Get(\"/captcha/result\")+\")\";\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tLoginSubmit: function()\n\t\t{\n\t\t\tvar self = this;\n\t\t\tif (OBJ(\"loginusr\").value==\"\")\n\t\t\t{\n\t\t\t\tthis.ShowAlert(\"\u8acb\u8f38\u5165\u4f7f\u7528\u8005\u540d\u7a31\u3002\")\n\t\t\t\tOBJ(\"loginusr\").focus();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\telse if (this.enCaptcha&&OBJ(\"captcha\").value==\"\")\n\t\t\t{\n\t\t\t\tthis.ShowAlert(\"\u8acb\u8f38\u5165\u5716\u5f62\u9a57\u8b49\u78bc\u3002\");\n\t\t\t\tOBJ(\"captcha\").focus();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tAUTH.Login_Hash(\n\t\t\t\tfunction(json)\n\t\t\t\t{\n\t\t\t\t\tvar JsonData = eval('(' + json + ')');\n\t\t\t\t\tif(JsonData.status==\"ok\")\n\t\t\t\t\t{\n\t\t\t\t\t\tif(typeof(JsonData.AUTHORIZED_GROUP)==\"undefined\") AUTH.AuthorizedGroup = 0;\n\t\t\t\t\t\telse AUTH.AuthorizedGroup = parseInt(JsonData.AUTHORIZED_GROUP, 10);\n\t\t\t\t\t\tAUTH.UpdateTimeout();\n\t\t\t\t\t\tif (self.LoginCallback) self.LoginCallback();\n\t\t\t\t\t\tlocation.reload(true);//reload the page.\n\t\t\t\t\t}\n\t\t\t\t\telse if(JsonData.status==\"fail\")\n\t\t\t\t\t{\n\t\t\t\t\t\tvar msgArray =\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t'\u4f7f\u7528\u8005\u540d\u7a31\u6216\u5bc6\u78bc\u4e0d\u6b63\u78ba\u3002',\n\t\t\t\t\t\t\t'<input id=\"relogin\" type=\"button\" value=\"\u518d\u6b21\u767b\u5165\" onClick=\"BODY.ShowLogin();\" />'\n\t\t\t\t\t\t];\n\t\t\t\t\t\tself.ShowMessage('\u767b\u5165\u5931\u6557', msgArray);\n\t\t\t\t\t\tOBJ(\"relogin\").focus();\n\t\t\t\t\t}\n\t\t\t\t\telse if(JsonData.RESULT==\"FAIL\")\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (JsonData.REASON)\n\t\t\t\t\t\t{\n\t\t\t\t\t\tcase \"AUTH_FAIL\":\n\t\t\t\t\t\t\tvar msgArray =\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\"\u4f7f\u7528\u8005\u540d\u7a31\u6216\u5bc6\u78bc\u4e0d\u6b63\u78ba\u3002\",\n\t\t\t\t\t\t\t\t\"<input id='relogin' type='button' value='\u518d\u6b21\u767b\u5165' onClick='BODY.ShowLogin();' />\"\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\tself.ShowMessage(\"\u767b\u5165\u5931\u6557\", msgArray);\n\t\t\t\t\t\t\tOBJ(\"relogin\").focus();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"ERR_CREAT\r\n1000\r\nE_SESSDATA\":\n\t\t\t\t\t\tvar msgArray =\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\"\u7121\u6cd5\u5efa\u7acb\u9023\u7dda\u8cc7\u6599\uff0c\u8acb\u91cd\u65b0\u555f\u52d5\u5f8c\u518d\u8a66\u4e00\u6b21\",\n\t\t\t\t\t\t\t\t\"<input id='relogin' type='button' value='\u518d\u6b21\u767b\u5165' onClick='BODY.ShowLogin();' />\"\n\t\t\t\t\t\t];\n\t\t\t\t\t\t\tself.ShowMessage(\"\u767b\u5165\u5931\u6557\", msgArray);\n\t\t\t\t\t\tOBJ(\"relogin\").focus();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"ERR_SESSFULL\":\n\t\t\t\t\t\tvar msgArray =\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\"\u5df2\u9023\u63a5\u7684\u9023\u7dda\u6578\u592a\u591a\uff0c\u8acb\u7a0d\u5019\u518d\u8a66\u3002\",\n\t\t\t\t\t\t\t\t\"<input id='relogin' type='button' value='\u518d\u6b21\u767b\u5165' onClick='BODY.ShowLogin();' />\"\n\t\t\t\t\t\t];\n\t\t\t\t\t\t\tself.ShowMessage(\"\u767b\u5165\u5931\u6557\", msgArray);\n\t\t\t\t\t\tOBJ(\"relogin\").focus();\n\t\t\t\t\t\tbreak;\t\t\t\t\t\t\n\t\t\t\t\t\tcase \"ERR_CAPTCHA\":\n\t\t\t\t\t\t\tvar msgArray =\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\"\u5716\u5f62\u9a57\u8b49\u4e0d\u6b63\u78ba\",\n\t\t\t\t\t\t\t\t\"<input id='relogin' type='button' value='\u518d\u6b21\u767b\u5165' onClick='BODY.ShowLogin();' />\"\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\tself.ShowMessage(\"\u767b\u5165\u5931\u6557\", msgArray);\n\t\t\t\t\t\t\tOBJ(\"relogin\").focus();\n\t\t\t\t\t\t\tself.enCaptcha = true;\t\t\t\t\t\t\n\t\t\t\t\t\t\tbreak;\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tself.ShowAlert(\"Internal error, \"+JsonData.REASON);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tself.ShowAlert('\u7cfb\u7d71\u6c92\u6709\u56de\u61c9\uff0c\u8acb\u518d\u767b\u5165\u4e00\u6b21\u3002');\n\t\t\t\t\t\tOBJ(\"relogin\").focus();\n\t\t\t\t\t}\t\t\n\t\t\t\t},\n\t\t\t\tOBJ(\"loginusr\").value,\n\t\t\t\tOBJ(\"loginpwd\").value,\n\t\t\t\tOBJ(\"captcha\").value.toUpperCase()\n\t\t\t\t);\n\t\t},\n\t\tLogin: function(callback)\n\t\t{\n\t\t\tif (callback)\tthis.LoginCallback = callback;\n\t\t\tif (AUTH.AuthorizedGroup >= 0) { AUTH.UpdateTimeout(); return true; }\n\t\t\treturn false;\n\t\t},\n\t\tLogout: function()\n\t\t{\n\t\t\tAUTH.Logout(function(){AUTH.TimeoutCallback();});\n\t\t},\n\t\tReboot: function()\n\t\t{\n\t\t\tif (!confirm(\"\u60a8\u8981\u91cd\u65b0\u555f\u52d5\u8def\u7531\u5668\u55ce?\"))\treturn;\n\t\t\tself.location.href = \"./reboot.php\";\n\t\t},\n\t\t//////////////////////////////////////////////////\n\t\tGetCFG: function()\n\t\t{\n\t\t\tvar self = this;\n\t\t\tif (!this.Login(function(){self.GetCFG();})) return;\n\t\t\tif (AUTH.AuthorizedGroup >= 100) this.DisableCfgElements(true);\n\t\t\tif (PAGE&&PAGE.services!=null)\n\t\t\t{\n\t\t\t\tCOMM_GetCFG(\n\t\t\t\t\tfalse,\n\t\t\t\t\tPAGE.services,\n\t\t\t\t\tfunction(xml) {\n\t\t\t\t\t\tPAGE.InitValue(xml);\n\t\t\t\t\t\tPAGE.Synchronize();\n\t\t\t\t\t\tCOMM_DirtyCheckSetup();\n\t\t\t\t\t\tif (AUTH.AuthorizedGroup >= 100) BODY.DisableCfgElements(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t}\n\t\t\treturn;\n\t\t},\n\t\tOnSubmit: function()\n\t\t{\n\t\t\tif (PAGE === null) return;\n\t\t\tPAGE.Synchronize();\n\t\t\tvar dirty = COMM_IsDirty(false);\n\t\t\tif (!dirty && PAGE.IsDirty) dirty = PAGE.IsDirty();\n\t\t\tif (!dirty)\n\t\t\t{\n\t\t\t /*\tvar msgArray =\n\t\t\t\t[\n\t\t\t\t\t'\u8a2d\u5b9a\u6c92\u6709\u6539\u8b8a!',\n\t\t\t\t\t'<input id=\"nochg\" type=\"button\" value=\"\u7e7c\u7e8c\" onClick=\"BODY.ShowContent();\" />'\n\t\t\t\t];\n\t\t\t\tthis.ShowMessage('\u6c92\u6709\u8b8a\u66f4', msgArray);\n\t\t\t\tOBJ(\"menu\").style.display\t= \"none\";\n\t\t\t\tOBJ(\"content\").style.display= \"none\";\n\t\t\t\tOBJ(\"mbox\").style.display\t= \"block\";\n\t\t\t\tOBJ(\"nochg\").focus();\n\t\t\t\treturn;*/\n\t\t\t\twindow.location.href = \"bsc_internet.php\";\n\t\t\t}\n\n\t\t\tvar xml = PAGE.PreSubmit();\n\t\t\tif (xml === null) return;\n\n\t\t\tif('bsc_internet' != 'bsc_sms_send')\n {\n\t var msgArray =\n\t [\n\t '\u8a2d\u5b9a\u5df2\u5132\u5b58\u4e26\u751f\u6548\u3002',\n\t '\u8acb\u7a0d\u5019 ...'\n\t ];\n }\n else\n {\n var msgArray = ['\u50b3\u9001\u8a0a\u606f\u4e2d\uff0c\u8acb\u7a0d\u5019\u2026'];\n }\n\t\t\t\n\t\t\tif(PAGE.ShowSavingMessage) PAGE.ShowSavingMessage();\n\t\t\telse this.ShowMessage('\u5132\u5b58\u4e2d', msgArray);\n\t\t\tAUTH.UpdateTimeout();\n\n\t\t\tvar self = this;\n\t\t\tPXML.UpdatePostXML(xml);\n\t\t\tPXML.Post(function(code, result){self.SubmitCallback(code,result);});\n\t\t},\n\t\tSubmitCallback: function(code, result)\n\t\t{\n\t\t\tif (PAGE.OnSubmitCallback(code, result)) return;\n\t\t\tthis.ShowContent();\n\t\t\tswitch (code)\n\t\t\t{\n\t\t\tcase \"OK\":\n\t\t\t\tthis.OnReload();\n\t\t\t\tbreak;\n\t\t\tcase \"BUSY\":\n\t\t\t\tthis.ShowAlert(\"\u6709\u5176\u4ed6\u4f7f\u7528\u8005\u6b63\u5728\u8a2d\u5b9a\u6b64\u8def\u7531\u5668\uff0c\u8acb\u7a0d\u5019\u518d\u767b\u5165\u3002\");\n\t\t\t\tbreak;\n\t\t\tcase \"HEDWIG\":\n\t\t\t\tthis.ShowAlert(result.Get(\"/hedwig/message\"));\n\t\t\t\tif (PAGE.CursorFocus) PAGE.CursorFocus(result.Get(\"/hedwig/node\")); \n\t\t\t\tbreak;\n\t\t\tcase \"PIGWIDGEON\":\n\t\t\t\tif (result.Get(\"/pigwidgeon/message\")==\"no power\")\n\t\t\t\t{\n\t\t\t\t\tBODY.NoPower();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.ShowAlert(result.Get(\"/pigwidgeon/mes\r\n1000\r\nsage\"));\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\tNoPower: function()\n\t\t{\n\t\t\tBODY.ShowAlert(\"\u60a8\u7684\u9023\u7dda\u5df2\u903e\u6642\uff0c\u8acb\u91cd\u65b0\u767b\u5165\u3002\");\n\t\t\tAUTH.Logout();\n\t\t\tBODY.ShowLogin();\n\t\t},\n\t\tOnReload: function()\n\t\t{\n\t\t\tif(PAGE)\n\t\t\t{\n\t\t\t\tif(PAGE.OnReload) PAGE.OnReload();\n\t\t\t\telse PAGE.OnLoad();\n\t\t\t}\n\t\t\tthis.GetCFG();\n\t\t},\n\t\t//////////////////////////////////////////////////\n\t\tOnLoad: function()\n\t\t{\n\t\t\tvar self = this;\n\t\t\tif (AUTH.AuthorizedGroup < 0)\t{ this.ShowLogin(); return; }\n\t\t\telse\t\t\t\t\t\t\tthis.ShowContent();\n\t\t\tAUTH.TimeoutCallback = function()\n\t\t\t{\n\t\t\t\tvar msgArray =\n\t\t\t\t[\n\t\t\t\t\t'\u60a8\u5df2\u6210\u529f\u767b\u51fa\u3002',\n\t\t\t\t\t'<input id=\"tologin\" type=\"button\" value=\"\u8fd4\u56de\u5230\u767b\u5165\u9801\u9762\" onClick=\"BODY.ShowLogin();\" />'\n\t\t\t\t];\n\t\t\t\tself.ShowMessage('\u767b\u51fa', msgArray);\n\t\t\t\tself.DisableCfgElements(false);\n\t\t\t\tif (PAGE) PAGE.OnLoad();\n\t\t\t\tOBJ(\"tologin\").focus();\n\t\t\t};\n\n\t\t\tif (PAGE) PAGE.OnLoad();\n\t\t\tthis.GetCFG();\n\t\t},\n\t\tOnUnload: function() { if (PAGE) PAGE.OnUnload(); OnunloadAJAX(); },\n\t\tOnKeydown: function(e)\n\t\t{\n\t\t\tswitch (COMM_Event2Key(e))\n\t\t\t{\n\t\t\tcase 13: this.LoginSubmit();\n\t\t\tdefault: return;\n\t\t\t}\n\t\t},\n\t\tInjectTable: function(tblID, uid, data, type)\n\t\t{\n\t\t\tvar rows = OBJ(tblID).getElementsByTagName(\"tr\");\n\t\t\tvar tagTR = null;\n\t\t\tvar tagTD = null;\n\t\t\tvar i;\n\t\t\tvar str;\n\t\t\tvar found = false;\n\t\t\t\n\t\t\t/* Search the rule by UID. */\n\t\t\tfor (i=0; !found && i<rows.length; i++) if (rows[i].id == uid) found = true;\n\t\t\tif (found)\n\t\t\t{\n\t\t\t\tfor (i=0; i<data.length; i++)\n\t\t\t\t{\n\t\t\t\t\ttagTD = OBJ(uid+\"_\"+i);\n\t\t\t\t\tswitch (type[i])\n\t\t\t\t\t{\n\t\t\t\t\tcase \"checkbox\":\n\t\t\t\t\t\tstr = \"<input type='checkbox'\";\n\t\t\t\t\t\tstr += \" id=\"+uid+\"_check_\"+i;\n\t\t\t\t\t\tif (COMM_ToBOOL(data[i])) str += \" checked\";\n\t\t\t\t\t\tstr += \" disabled>\";\n\t\t\t\t\t\ttagTD.innerHTML = str;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\tstr = data[i];\n\t\t\t\t\t\tif(typeof(tagTD.innerText) !== \"undefined\")\ttagTD.innerText = str;\n\t\t\t\t\t\telse if(typeof(tagTD.textContent) !== \"undefined\")\ttagTD.textContent = str;\n\t\t\t\t\t\telse\ttagTD.innerHTML = str;\n\t\t\t\t\t\tbreak;\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tstr = data[i];\n\t\t\t\t\t\ttagTD.innerHTML = str;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/* Add a new row for this entry */\n\t\t\ttagTR = OBJ(tblID).insertRow(rows.length);\n\t\t\ttagTR.id = uid;\n\t\t\t/* save the rule in the table */\n\t\t\tfor (i=0; i<data.length; i++)\n\t\t\t{\n\t\t\t\ttagTD = tagTR.insertCell(i);\n\t\t\t\ttagTD.id = uid+\"_\"+i;\n\t\t\t\ttagTD.className = \"content\";\n\t\t\t\tswitch (type[i])\n\t\t\t\t{\n\t\t\t\tcase \"checkbox\":\n\t\t\t\t\tstr = \"<input type='checkbox'\";\n\t\t\t\t\tstr += \" id=\"+uid+\"_check_\"+i;\n\t\t\t\t\tif (COMM_ToBOOL(data[i])) str += \" checked\";\n\t\t\t\t\tstr += \" disabled>\";\n\t\t\t\t\ttagTD.innerHTML = str;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tstr = data[i];\n\t\t\t\t\tif(typeof(tagTD.innerText) !== \"undefined\")\ttagTD.innerText = str;\n\t\t\t\t\telse if(typeof(tagTD.textContent) !== \"undefined\")\ttagTD.textContent = str;\n\t\t\t\t\telse\ttagTD.innerHTML = str;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tstr = data[i];\n\t\t\t\t\ttagTD.innerHTML = str; \n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tCleanTable: function(tblID)\n\t\t{\n\t\t\ttable = OBJ(tblID);\n\t\t\tvar rows = table.getElementsByTagName(\"tr\");\n\t\t\twhile (rows.length > 1) table.deleteRow(rows.length - 1);\n\t\t}\n\t};\n\t/**************************************************************************/\n\n\tvar AUTH = new Authenticate(-1, 180);\n\tvar PXML = new PostXML();\n\tvar BODY = new Body();\n\tvar PAGE = null;\nif (navigator.cookieEnabled) document.cookie = \"uid=\"+COMM_RandomStr(10)+\"; path=/\";\n\t</script>\n</head>\n\n<body class=\"mainbg\" onload=\"BODY.OnLoad();\" onunload=\"BODY.OnUnload();\">\n<div class=\"maincontainer\">\t\n<div class=\"headercontainer\">\n\t<span class=\"product\">\u7522\u54c1\u9801\u9762 : <a href=\"http://support.dlink.com\" target=\"_blank\">DIR-818LW</a></span>\n\t<span class=\"version\">\u97cc\u9ad4\u7248\u672c : 1.04</span>\n <span class=\"hwversion\">\u786c\u9ad4\u7248\u672c : <span class=\"value\" style=\"text-transform:uppercase;\">A1</span></span>\n</div>\n<div class=\"bannercontainer\">\n\t<span class=\"bannerhead\"><a href=\"http://www.dlink.com\"><img src=\"/pic/head_01.gif\" width=\"162\" height=\"92\"></a></span>\n\t<span class=",
"datamd5" : "734c0e3dc53bbbdc268de7708f2431f7",
"datammh3" : 526944997,
"device" : {
"class" : "<enterprise field>: device.class",
"productvendor" : "<enterprise field>: device.productvendor"
},
"domain" : [
"seed.net.tw"
],
"geolocus" : {
"asn" : "AS4780",
"continent" : "AS",
"continentname" : "Asia",
"country" : "TW",
"countryname" : "Taiwan",
"domain" : [
"fareastone.com.tw",
"seed.net.tw",
"twnic.net",
"twnic.net.tw"
],
"isineu" : "false",
"latitude" : "23.69781",
"location" : "23.69781,120.960515",
"longitude" : "120.960515",
"netname" : "SEEDNET-NET",
"organization" : "Digital United Inc.",
"subnet" : "123.204.0.0/16"
},
"host" : [
"123-204-43-144"
],
"hostname" : [
"123-204-43-144.static.seed.net.tw"
],
"ip" : "123.204.43.144",
"ipv6" : "false",
"latitude" : "25.0504",
"location" : "25.0504,121.5324",
"longitude" : "121.5324",
"node" : {
"country" : "<enterprise field>: node.country",
"groupid" : "<enterprise field>: node.groupid",
"id" : "<enterprise field>: node.id",
"physicalcountry" : "<enterprise field>: node.physicalcountry"
},
"organization" : "Digital United Inc.",
"os" : "Linux Kernel",
"osvendor" : "Linux",
"port" : 1080,
"product" : "WebServer",
"productvendor" : "WebServer",
"protocol" : "http",
"protocolversion" : "1.1",
"reason" : "OK",
"reverse" : [
"123-204-43-144.static.seed.net.tw"
],
"seen_date" : "2024-11-21",
"source" : "datascan",
"status" : 200,
"subdomains" : [
"static.seed.net.tw"
],
"subnet" : "123.204.0.0/16",
"tld" : [
"net.tw"
],
"tls" : "false",
"transport" : "tcp",
"url" : "/"
}