fluxion/sites/Login-Xfinity/Xfinity_files/base_95x.js

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.