830 lines
21 KiB
JavaScript
Executable File
830 lines
21 KiB
JavaScript
Executable File
//Copyright 2011-2012, ARRIS Group, Inc., All rights reserved.
|
|
var attrs = {
|
|
//Model:"GW",
|
|
Family:"950",
|
|
//Model:"852",
|
|
CLASSICCM:true,
|
|
MOCA:false,
|
|
IPV6:true,
|
|
Languages:["English:English", "Spanish:Spanish", "French:French", "German:German","Portuguese:Portuguese"]
|
|
}
|
|
// todo: put in snmp check for no data returned
|
|
|
|
var attrs_TG852G = {
|
|
Model:"TG852G",
|
|
Family:"950",
|
|
CLASSICCM:true,
|
|
MOCA:false,
|
|
IPV6:true,
|
|
Battery: true,
|
|
Wifi: 1,
|
|
Dect: false,
|
|
Languages:["English:English", "Spanish:Spanish", "French:French", "German:German","Portuguese:Portuguese"]
|
|
};
|
|
|
|
var attrs_TG862G = {
|
|
Model:"TG862G",
|
|
Family:"950",
|
|
CLASSICCM:true,
|
|
MOCA:false,
|
|
IPV6:true,
|
|
Battery: true,
|
|
Wifi: 1,
|
|
Dect: false,
|
|
Languages:["English:English", "Spanish:Spanish", "French:French", "German:German","Portuguese:Portuguese"]
|
|
};
|
|
|
|
var attrs_TG1642 = {
|
|
Model:"TG1642",
|
|
Family:"950",
|
|
CLASSICCM:true,
|
|
MOCA:false,
|
|
IPV6:true,
|
|
Battery: true,
|
|
Wifi: 1,
|
|
Dect: false,
|
|
Languages:["English:English", "Spanish:Spanish", "French:French", "German:German","Portuguese:Portuguese"]
|
|
};
|
|
|
|
var attrs_DG1670 = {
|
|
Model:"DG1670",
|
|
Family:"950",
|
|
CLASSICCM:true,
|
|
MOCA:true,
|
|
IPV6:true,
|
|
Battery: false,
|
|
Wifi: 2,
|
|
Dect: false,
|
|
Languages:["English:English", "Spanish:Spanish", "French:French", "German:German","Portuguese:Portuguese"]
|
|
};
|
|
|
|
var attrs_TG1672 = {
|
|
Model:"TG1672",
|
|
Family:"950",
|
|
CLASSICCM:true,
|
|
MOCA:true,
|
|
IPV6:true,
|
|
Battery: false,
|
|
Wifi: 2,
|
|
Dect: false,
|
|
Languages:["English:English", "Spanish:Spanish", "French:French", "German:German","Portuguese:Portuguese"]
|
|
};
|
|
|
|
var attrs_TG1682 = {
|
|
Model:"TG1682",
|
|
Family:"950",
|
|
CLASSICCM:true,
|
|
MOCA:true,
|
|
IPV6:true,
|
|
Battery: true,
|
|
Wifi: 2,
|
|
Dect: true,
|
|
Languages:["English:English", "Spanish:Spanish", "French:French", "German:German","Portuguese:Portuguese"]
|
|
};
|
|
|
|
var attrs_MG2402 = {
|
|
Model:"MG2402",
|
|
Family:"950",
|
|
CLASSICCM:true,
|
|
MOCA:true,
|
|
IPV6:true,
|
|
Battery: true,
|
|
Wifi: 2,
|
|
Dect: true,
|
|
Languages:["English:English", "Spanish:Spanish", "French:French", "German:German","Portuguese:Portuguese"]
|
|
};
|
|
|
|
var attrs_OG1600 = {
|
|
Model:"OG1600A",
|
|
Family:"950",
|
|
CLASSICCM:true,
|
|
MOCA:false,
|
|
IPV6:true,
|
|
Battery: false,
|
|
Wifi: 2,
|
|
Dect: false,
|
|
Languages:["English:English", "Spanish:Spanish", "French:French", "German:German","Portuguese:Portuguese"]
|
|
};
|
|
|
|
var attrs_Default = {
|
|
Model:"unknown",
|
|
Family:"unknown",
|
|
CLASSICCM:false,
|
|
MOCA:true,
|
|
IPV6:true,
|
|
Battery: true,
|
|
Wifi: 2,
|
|
Dect: false,
|
|
Languages:["English:English", "Spanish:Spanish", "French:French", "German:German","Portuguese:Portuguese"]
|
|
};
|
|
|
|
|
|
var g_ModelName = "";
|
|
var g_UserName = "";
|
|
var g_attrTable = {};
|
|
// UNIHAN ADD START
|
|
var CAN_NOT_SET_CRED = "can_not_login";
|
|
// UNIHAN ADD END
|
|
function uh_attrTable_init()
|
|
{
|
|
//g_ModelName = mib2system.sysName.get();
|
|
//reduce loading time
|
|
g_ModelName=readCookie("sysDescrModelName");
|
|
g_UserName = userName();
|
|
|
|
/*switch (g_ModelName)
|
|
{
|
|
case "TG862G": g_attrTable = attrs_TG862G; break;
|
|
case "TG1642": g_attrTable = attrs_TG1642; break;
|
|
case "DG1670": g_attrTable = attrs_DG1670; break;
|
|
case "TG1672": g_attrTable = attrs_TG1672; break;
|
|
case "TG1682": g_attrTable = attrs_TG1682; break;
|
|
case "MG2402": g_attrTable = attrs_MG2402; break;
|
|
default: g_attrTable = attrs_Default; break;
|
|
}*/
|
|
if (g_ModelName.search("TG862")!=-1)
|
|
{
|
|
g_attrTable = attrs_TG862G;
|
|
}
|
|
else if (g_ModelName.search("TG852")!=-1)
|
|
{
|
|
g_attrTable = attrs_TG852G;
|
|
}
|
|
else if (g_ModelName.search("TG1642")!=-1)
|
|
{
|
|
g_attrTable = attrs_TG1642;
|
|
}
|
|
else if (g_ModelName.search("DG1670")!=-1)
|
|
{
|
|
g_attrTable = attrs_DG1670;
|
|
}
|
|
else if (g_ModelName.search("TG1672")!=-1)
|
|
{
|
|
g_attrTable = attrs_TG1672;
|
|
}
|
|
else if (g_ModelName.search("TG1682")!=-1)
|
|
{
|
|
g_attrTable = attrs_TG1682;
|
|
}
|
|
else if (g_ModelName.search("MG2402")!=-1)
|
|
{
|
|
g_attrTable = attrs_MG2402;
|
|
}
|
|
else if (g_ModelName.search("OG1600A")!=-1)
|
|
{
|
|
g_attrTable = attrs_OG1600;
|
|
}
|
|
else
|
|
{
|
|
g_attrTable = attrs_Default;
|
|
}
|
|
}
|
|
function uh_getModel()
|
|
{
|
|
return g_attrTable["Model"];
|
|
}
|
|
function uh_hasBattery()
|
|
{
|
|
return true==g_attrTable["Battery"];
|
|
}
|
|
function uh_hasWifi()
|
|
{
|
|
if (g_attrTable["Wifi"]>0)
|
|
{
|
|
return g_attrTable["Wifi"];
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
function uh_hasMoca()
|
|
{
|
|
return true==g_attrTable["MOCA"];
|
|
}
|
|
function uh_hasDect()
|
|
{
|
|
return true==g_attrTable["Dect"];
|
|
}
|
|
|
|
function encode(o) {
|
|
o = "" + o;
|
|
/* encode "%" was switched "%2525" */
|
|
//o = o.replace(/%/g, "%25");
|
|
o = encodeURIComponent(o);
|
|
o = o.replace(/;/g, "%3B");
|
|
o = o.replace(/,/g, "%2C");
|
|
return o;
|
|
}
|
|
function getAttr(name) {
|
|
return attrs[name] || "";
|
|
}
|
|
function isMG() {
|
|
return attrs["Family"] == "MG";
|
|
}
|
|
function is852() {
|
|
return attrs["Family"] == "852";
|
|
}
|
|
function is95x() {
|
|
return attrs["Family"] == "950";
|
|
}
|
|
function isIPV6() {
|
|
return attrs["IPV6"];
|
|
}
|
|
function getLanguages() {
|
|
return attrs["Languages"];
|
|
}
|
|
function userName() {
|
|
return attrs["Name"] || "";
|
|
}
|
|
function isTechnician() {
|
|
return isLoggedIn() && (isMG() || attrs["Technician"]);
|
|
}
|
|
function isLoggedIn() {
|
|
if (!attrs["Credential"]) {
|
|
attrs["Credential"] = readCookie("credential");
|
|
if (attrs["Credential"]) {
|
|
var o = Base64.decode(attrs["Credential"]);
|
|
o = JSON.parse(o);
|
|
attrs["Family"] = o["family"];
|
|
attrs["Technician"] = o["tech"];
|
|
attrs["Name"] = o["name"];
|
|
}
|
|
}
|
|
return attrs["Credential"];
|
|
}
|
|
var hooks = {
|
|
buildSetURL:function (oid, value, type) {
|
|
var url = "snmpSet?oid=" + oid + "=" + encode(value) + ";" + type + ";";
|
|
return url;
|
|
},
|
|
buildGetURL:function (oida) {
|
|
var url = "snmpGet?oids=" + _.reduce(oida, function (acc, oid) {
|
|
return acc + encode(oid) + ";";
|
|
}, "");
|
|
return url;
|
|
},
|
|
buildMultiGetURL:function (oida) {
|
|
var url = "snmpGet?oids=" +oida+";"; //Get Data typeless
|
|
return url;
|
|
},
|
|
buildWalkURL:function (oida) {
|
|
var url = "walk?oids=" + _.reduce(oida, function (acc, oid) {
|
|
return acc + encode(oid) + ";";
|
|
}, "");
|
|
return url;
|
|
},
|
|
buildMultiWalkURL:function (oida) {
|
|
var url = "walk?oids=" + oida;
|
|
return url;
|
|
},
|
|
postProcess:function (json) {
|
|
return json;
|
|
}
|
|
};
|
|
|
|
function snmpSet1(oid, value, type) {
|
|
/*
|
|
//ASN.1 basic types, all in UNIVERSAL scope
|
|
#define A_NO_ID 0x00
|
|
#define A_BOOLEAN 0x01
|
|
#define A_INTEGER 0x02
|
|
#define A_BITSTRING 0x03
|
|
#define A_OCTETSTRING 0x04
|
|
#define A_NULL 0x05
|
|
#define A_OBJECTID 0x06
|
|
#define A_SEQUENCE 0x10
|
|
#define A_SET 0x11
|
|
#define A_APPLICATION 0x40
|
|
|
|
#define VT_NUMBER A_INTEGER
|
|
#define VT_STRING A_OCTETSTRING
|
|
#define VT_BITS A_OCTETSTRING // same as a string
|
|
#define VT_OBJECT A_OBJECTID
|
|
#define VT_EMPTY A_NULL
|
|
#define VT_IPADDRESS (A_APPLICATION | 0)
|
|
#define VT_COUNTER (A_APPLICATION | 1)
|
|
#define VT_GAUGE (A_APPLICATION | 2)
|
|
#define VT_UNSIGNED32 (A_APPLICATION | 2) // same as a guage
|
|
#define VT_TIMETICKS (A_APPLICATION | 3)
|
|
#define VT_OPAQUE (A_APPLICATION | 4)
|
|
#define VT_COUNTER64 (A_APPLICATION | 6)
|
|
#define VT_UINTEGER32 (A_APPLICATION | 7)
|
|
*/
|
|
// value = encodeHack(value);
|
|
var url = hooks.buildSetURL(oid, value, type); //"snmpSet?oid=" + oid + "=" + encode(value) + ";" + type + ";";
|
|
//$.log("set " + decodeOid(oid) + "=" + value);
|
|
if (window.console) console.log("set " + decodeOid(oid) + "=" + value);
|
|
//$.log(url);
|
|
if (window.console) console.log(url);
|
|
var rv = "fail";
|
|
baseAjax({
|
|
url:url,
|
|
timeout:9000,
|
|
success:function (result) {
|
|
rv = result;
|
|
},
|
|
error:function (jqXHR, textStatus, errorThrown) {
|
|
if (jqXHR.status == 401) {
|
|
logout(false);
|
|
rv = "unauthorized";
|
|
window.location.href="index.php";
|
|
return;
|
|
}
|
|
},
|
|
// dataType : "json",
|
|
async:false,
|
|
cache:false
|
|
});
|
|
|
|
if (rv == "unauthorized")
|
|
throw "unauthorized";
|
|
if (rv == "fail" && shouldVerify(oid, value))
|
|
throw "Unexpected Error";//xlate("Unexpected Error");
|
|
//$.log(">>" + JSON.stringify(rv));
|
|
if (window.console) console.log(">>" + JSON.stringify(rv));
|
|
return rv;
|
|
}
|
|
|
|
|
|
function shouldVerify(oid, val) {
|
|
// if (isMG())
|
|
// return false; // GW snmp is a little screwy so skip for now
|
|
|
|
if (oid.startsWith(arLanClientType.oid + ".")) // 950 bug
|
|
return false;
|
|
|
|
if (oid.startsWith(arApplyAllSettings.oid + "."))
|
|
return true; //was false;
|
|
if (oid.startsWith(arWpsSTAPin.oid + "."))
|
|
return false;
|
|
if (oid.startsWith(arWpsPushButton.oid + "."))
|
|
return false;
|
|
if (oid.startsWith(arCurrentTime.oid + "."))
|
|
return false;
|
|
if (oid.startsWith(arEmailApplySettings.oid + "."))
|
|
return false;
|
|
if (oid.startsWith(arClearLogs.oid + "."))
|
|
return false;
|
|
if (oid.startsWith(arReboot.oid + "."))
|
|
return false;
|
|
if (oid.startsWith(arClearMSOLogs.oid + "."))
|
|
return false;
|
|
if (oid.startsWith(arEmailApplySettings.oid + "."))
|
|
return false;
|
|
if (oid.startsWith(arApplySNTPSettings.oid + "."))
|
|
return false;
|
|
if (oid.startsWith(arDefaults.oid + "."))
|
|
return false;
|
|
if (oid.startsWith(SNTPServerTable.oid + "."))
|
|
return false;
|
|
if (oidIsRowStatus(oid) && val != 1)
|
|
return false;
|
|
return true;
|
|
}
|
|
|
|
|
|
function snmpSet1Async(oid, value, type, func) {
|
|
// value = encodeHack(value);
|
|
var url = hooks.buildSetURL(oid, value, type); //"snmpSet?oid=" + oid + "=" + encode(value) + ";" + type + ";";
|
|
//$.log("setasync " + decodeOid(oid) + "=" + value);
|
|
if (window.console) console.log("setasync " + decodeOid(oid) + "=" + value);
|
|
//$.log(url);
|
|
if (window.console) console.log(url);
|
|
|
|
baseAjax({
|
|
url:url,
|
|
success:function (result) {
|
|
if (func) func(true);
|
|
},
|
|
error:function (jqXHR, textStatus, errorThrown) {
|
|
if (func) func(false);
|
|
},
|
|
// error: function(jqXHR, textStatus, errorThrown) {
|
|
// alert("text:{An error has occured. Your changes may have not been applied. Please refresh this page and verify the changes you expect.}");
|
|
// throw "";
|
|
// },
|
|
// dataType : "json",
|
|
async:true,
|
|
cache:false
|
|
});
|
|
}
|
|
|
|
|
|
function snmpGet1(oid) {
|
|
try {
|
|
var url = hooks.buildGetURL([oid]); //"snmpGet?oids=" + encode(oid) + ";";
|
|
//var url = "walk?oids=" + encodeURI(oid + ";");
|
|
//$.log(url);
|
|
var rv = "";
|
|
baseAjax({
|
|
url:url,
|
|
timeout:9000,
|
|
success:function (result) {
|
|
//$.log("get result " + result);
|
|
if (window.console) console.log("get result " + result);
|
|
rv = result;
|
|
},
|
|
error:function (jqXHR, textStatus, errorThrown) {
|
|
logout(false);
|
|
rv = "unauthorized";
|
|
window.location.href="index.php";
|
|
return;
|
|
},
|
|
dataType:"text",
|
|
async:false,
|
|
cache:false
|
|
});
|
|
// strip of any crap on front for sercomm bug
|
|
// if (rv && (typeof rv == 'string')) {
|
|
// while (rv.length !== 0 && rv.charAt(0) != '{' && rv.charAt(0) != '[') {
|
|
// rv = rv.substr(1);
|
|
// }
|
|
// rv = rv.replace(",", "");
|
|
// }
|
|
|
|
//$.log("pre-parse" + rv);
|
|
if (window.console) console.log("pre-parse" + rv);
|
|
var rrv = JSON.parse(rv);
|
|
//$.log("" + rrv);
|
|
if (window.console) console.log("" + rrv);
|
|
rrv = hooks.postProcess(rrv);
|
|
//$.log(">>" + JSON.stringify(rrv));
|
|
if (window.console) console.log(">>" + JSON.stringify(rrv));
|
|
if (rrv && rrv[oid])
|
|
rrv = rrv[oid];
|
|
else rrv = "";
|
|
//return decodeHack(rv);
|
|
return rrv;
|
|
} catch (e) {
|
|
//$.log("snmp get error " + e);
|
|
if (window.console) console.log("snmp get error " + e);
|
|
return "";
|
|
}
|
|
}
|
|
|
|
|
|
function xxxcompare(a, b) {
|
|
a = "" + a;
|
|
b = "" + b;
|
|
if (a.startsWith("$"))
|
|
a = a.replace(/ /g, "");
|
|
if (b.startsWith("$"))
|
|
b = b.replace(/ /g, "");
|
|
if (a.startsWith("$") && !b.startsWith("$")) {
|
|
if (canConvertToASCII(a))
|
|
a = convertHexStringToASCIIString(a)
|
|
} else if (b.startsWith("$") && !a.startsWith("$")) {
|
|
if (canConvertToASCII(b))
|
|
b = convertHexStringToASCIIString(b)
|
|
}
|
|
if (a.length === 0 && b === "$00000000") {
|
|
return true;
|
|
}
|
|
if (a.startsWith("$") && b.startsWith("$")) {
|
|
return a.toUpperCase() == b.toUpperCase();
|
|
}
|
|
return a == b;
|
|
}
|
|
|
|
var canCloseWaitDialog = false;
|
|
function openWaitDialog() {
|
|
canCloseWaitDialog = false;
|
|
$("#wait-dialog").dialog(
|
|
{ autoOpen:false,
|
|
height:80,
|
|
width:250,
|
|
resizable:false,
|
|
title:"Please Wait",
|
|
beforeClose:function () {
|
|
return canCloseWaitDialog;
|
|
}
|
|
});
|
|
prepareDialog("wait-dialog");
|
|
$("#wait-dialog").dialog("open");
|
|
}
|
|
|
|
function closeWaitDialog() {
|
|
canCloseWaitDialog = true;
|
|
$("#wait-dialog").dialog("close");
|
|
}
|
|
|
|
|
|
function doApplyAndRebootAsync(applyNeeded, rebootNeeded, refreshNeeded) {
|
|
var canCloseWaitDialog = false;
|
|
var busyDialogNeeded = true;
|
|
|
|
function openWaitDialog() {
|
|
if (!busyDialogNeeded)
|
|
return;
|
|
canCloseWaitDialog = false;
|
|
$("#wait-dialog").dialog(
|
|
{ autoOpen:false,
|
|
height:80,
|
|
width:250,
|
|
resizable:false,
|
|
title:"Please Wait",
|
|
beforeClose:function () {
|
|
return canCloseWaitDialog;
|
|
}
|
|
});
|
|
prepareDialog("wait-dialog");
|
|
$("#wait-dialog").dialog("open");
|
|
}
|
|
|
|
function closeWaitDialog() {
|
|
busyDialogNeeded = false;
|
|
canCloseWaitDialog = true;
|
|
$("#wait-dialog").dialog("close");
|
|
}
|
|
|
|
function start() {
|
|
if (applyNeeded)
|
|
snmpSet1Async(arApplyAllSettings.oid + ".0", "1", "2", applyDone);
|
|
else applyDone(true);
|
|
}
|
|
|
|
function applyDone(ok) {
|
|
if (rebootNeeded)
|
|
snmpSet1Async(arReboot.oid + ".0", "1", "2", rebootDone);
|
|
else rebootDone(true);
|
|
}
|
|
|
|
function rebootDone(ok) {
|
|
closeWaitDialog();
|
|
if (refreshNeeded)
|
|
refresh();
|
|
}
|
|
|
|
setTimeout(openWaitDialog, 2);
|
|
start();
|
|
}
|
|
|
|
|
|
// sa [ string... ]
|
|
function snmpGet(sa) {
|
|
try {
|
|
var url = hooks.buildGetURL(sa);
|
|
var rv = "";
|
|
baseAjax({
|
|
url:url,
|
|
timeout:9000,
|
|
success:function (result) {
|
|
rv = result;
|
|
},
|
|
error:function (jqXHR, textStatus, errorThrown) {
|
|
logout(false);
|
|
rv = "unauthorized";
|
|
window.location.href="index.php";
|
|
return;
|
|
},
|
|
dataType:"json",
|
|
async:false,
|
|
cache:false
|
|
|
|
});
|
|
rv = hooks.postProcess(rv);
|
|
//$.log(rv);
|
|
if (window.console) console.log(rv);
|
|
return rv;
|
|
} catch (e) {
|
|
//$.log("snmpGet caught " + e);
|
|
if (window.console) console.log("snmpGet caught " + e);
|
|
return { };
|
|
}
|
|
}
|
|
|
|
// sa [ string... ]
|
|
function snmpMultiGet(sa) {
|
|
try {
|
|
var url = hooks.buildMultiGetURL(sa);
|
|
var rv = "";
|
|
baseAjax({
|
|
url:url,
|
|
timeout:9000,
|
|
success:function (result) {
|
|
rv = result;
|
|
},
|
|
error:function (jqXHR, textStatus, errorThrown) {
|
|
logout(false);
|
|
rv = "unauthorized";
|
|
window.location.href="index.php";
|
|
return;
|
|
},
|
|
dataType:"json",
|
|
async:false,
|
|
cache:false
|
|
|
|
});
|
|
rv = hooks.postProcess(rv);
|
|
//$.log(rv);
|
|
if (window.console) console.log(rv);
|
|
return rv;
|
|
} catch (e) {
|
|
//$.log("snmpGet caught " + e);
|
|
if (window.console) console.log("snmpGet caught " + e);
|
|
return { };
|
|
}
|
|
}
|
|
|
|
// sa [ string... ]
|
|
|
|
function snmpWalk(sa) {
|
|
try {
|
|
var url = hooks.buildWalkURL(sa);
|
|
var rv = "";
|
|
baseAjax({
|
|
url:url,
|
|
timeout:9000,
|
|
success:function (result) {
|
|
rv = result;
|
|
// _.each(_.keys(rv), function(k) {
|
|
// var dv = encodeHack(rv[k]);
|
|
// rv[k] = dv;
|
|
// });
|
|
},
|
|
error:function (jqXHR, textStatus, errorThrown) {
|
|
logout(false);
|
|
rv = "unauthorized";
|
|
window.location.href="index.php";
|
|
return;
|
|
},
|
|
dataType:"json",
|
|
async:false,
|
|
cache:false
|
|
|
|
});
|
|
//$.log(rv);
|
|
if (window.console) console.log(rv);
|
|
rv = hooks.postProcess(rv);
|
|
return rv;
|
|
} catch (e) {
|
|
//$.log("snmpWalk caught " + e);
|
|
if (window.console) console.log("snmpWalk caught " + e);
|
|
return { };
|
|
}
|
|
}
|
|
|
|
|
|
// sa [ string... ]
|
|
|
|
function snmpMultiWalk(sa) {
|
|
try {
|
|
var url = hooks.buildMultiWalkURL(sa);
|
|
var rv = "";
|
|
baseAjax({
|
|
url:url,
|
|
success:function (result) {
|
|
rv = result;
|
|
// _.each(_.keys(rv), function(k) {
|
|
// var dv = encodeHack(rv[k]);
|
|
// rv[k] = dv;
|
|
// });
|
|
},
|
|
error:function (jqXHR, textStatus, errorThrown) {
|
|
logout(false);
|
|
rv = textStatus;//"unauthorized";
|
|
},
|
|
dataType:"text",
|
|
async:false,
|
|
cache:false
|
|
|
|
});
|
|
//$.log(rv);
|
|
if (window.console) console.log(rv);
|
|
rv = hooks.postProcess(rv);
|
|
return rv;
|
|
} catch (e) {
|
|
//$.log("snmpWalk caught " + e);
|
|
if (window.console) console.log("snmpWalk caught " + e);
|
|
return { };
|
|
}
|
|
}
|
|
|
|
function login(name, password) {
|
|
var up = Base64.encode(name + ":" + password);
|
|
var limit_flag = false;
|
|
attrs["Credential"] = "";
|
|
if (window.console) console.log("create credential=" + up);
|
|
eraseCookie("credential");setSessionStorage("ar_nonce","");
|
|
baseAjax({
|
|
url:"login?arg=" + up,
|
|
success:function (result)
|
|
{
|
|
if( result == CAN_NOT_SET_CRED )
|
|
{
|
|
limit_flag = true;
|
|
}
|
|
else
|
|
{
|
|
createCookie("credential", result);
|
|
}
|
|
},
|
|
dataType:"text",
|
|
async:false,
|
|
cache:false
|
|
});
|
|
if( limit_flag == true )
|
|
{
|
|
return CAN_NOT_SET_CRED;
|
|
}
|
|
return isLoggedIn();
|
|
}
|
|
|
|
|
|
function logout(sendMsg) {
|
|
attrs["Credential"] = "";
|
|
eraseCookie("credential");
|
|
setSessionStorage("ar_nonce","");
|
|
if (sendMsg) {
|
|
baseAjax({
|
|
url:"logout",
|
|
dataType:"text",
|
|
async:false,
|
|
cache:false
|
|
});
|
|
}
|
|
refresh();
|
|
}
|
|
function changePassword( name ,OldPassword, NewPassword ) {
|
|
var cred = Base64.encode( name + ":" + OldPassword + ":" + NewPassword );
|
|
var rv = "";
|
|
baseAjax({
|
|
url:"setPassword?arg=" + cred,
|
|
success:function (result) {
|
|
rv = result;
|
|
},
|
|
dataType:"text",
|
|
async:false,
|
|
cache:false
|
|
});
|
|
var ok = rv === "ok" || rv === "true";
|
|
|
|
// if (ok) {
|
|
// logout();
|
|
// login(loginData.name, NewPassword);
|
|
// }
|
|
|
|
return ok;
|
|
}
|
|
|
|
function logfilestore(logtype, idxStr) {
|
|
|
|
baseAjax({
|
|
url:"storelog?arg=" + logtype + idxStr,
|
|
dataType:"text",
|
|
async:false,
|
|
cache:false
|
|
});
|
|
|
|
if (window.console) console.log("storelog");
|
|
}
|
|
|
|
function checkPassword(name, password ) {
|
|
var up = Base64.encode(name + ":" + password );
|
|
var ret = "";
|
|
baseAjax({
|
|
url:"checkPassword?arg=" + up,
|
|
success:function (result) {
|
|
ret = result;
|
|
},
|
|
dataType:"text",
|
|
async:false,
|
|
cache:false
|
|
});
|
|
|
|
if( ret == "true" )
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//BEGIN PROD00219791 CSRF issue.
|
|
function getNonce() {
|
|
var n = getSessionStorage("ar_nonce");
|
|
if (!n) {
|
|
n = "_n="+(""+Math.random()).substr(2,5);
|
|
setSessionStorage("ar_nonce", n);
|
|
}
|
|
return n;
|
|
}
|
|
|
|
function wrapNonce(url){
|
|
if (!url) return url;
|
|
var startChar = url.indexOf('?') === -1 ? '?' : '&';
|
|
url += startChar + getNonce();
|
|
return url;
|
|
}
|
|
// Notice that all new added function that call jQuery.ajax, should use baseAjax to instead it.
|
|
function baseAjax(options){
|
|
options.url = wrapNonce(options.url);
|
|
jQuery.ajax(options);
|
|
}
|
|
// END PROD00219791 CSRF issue.
|
|
|
|
|