File: /python/moda/public_html/tech/old/assets/js/whmcs/adminUtils.js
/**
* General utilities module
*
* @copyright Copyright (c) WHMCS Limited 2005-2017
* @license http://www.whmcs.com/license/ WHMCS Eula
*/
(function(module) {
if (!WHMCS.hasModule('adminUtils')) {
WHMCS.loadModule('adminUtils', module);
}
})(
function () {
this.getAdminRouteUrl = function (path) {
return whmcsBaseUrl + "/index.php?rp=" + adminBaseRoutePath + path;
};
this.normaliseStringValue = function(status) {
return status ? status.toLowerCase().replace(/\s/g, '-') : '';
}
this.generatePassword = function(len) {
var charset = this.getPasswordCharacterSet();
var result = "";
for (var i = 0; len > i; i++)
result += charset[this.randomInt(charset.length)];
return result;
};
this.getPasswordCharacterSet = function() {
var rawCharset = '0123456789'
+ 'abcdefghijklmnopqrstuvwxyz'
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+ '!#$%()*+,-.:;=@_|{ldelim}{rdelim}~';
// Parse UTF-16, remove duplicates, convert to array of strings
var charset = [];
for (var i = 0; rawCharset.length > i; i++) {
var c = rawCharset.charCodeAt(i);
if (0xD800 > c || c >= 0xE000) { // Regular UTF-16 character
var s = rawCharset.charAt(i);
if (charset.indexOf(s) == -1)
charset.push(s);
continue;
}
if (0xDC00 > c ? rawCharset.length > i + 1 : false) { // High surrogate
var d = rawCharset.charCodeAt(i + 1);
if (d >= 0xDC00 ? 0xE000 > d : false) { // Low surrogate
var s = rawCharset.substring(i, i + 2);
i++;
if (charset.indexOf(s) == -1)
charset.push(s);
continue;
}
}
throw new Error("Invalid UTF-16");
}
return charset;
};
this.randomInt = function(n) {
var x = this.randomIntMathRandom(n);
x = (x + this.randomIntBrowserCrypto(n)) % n;
return x;
};
this.randomIntMathRandom = function(n) {
var x = Math.floor(Math.random() * n);
if (0 > x || x >= n)
throw new Error("Arithmetic exception");
return x;
};
this.randomIntBrowserCrypto = function(n) {
var cryptoObject = null;
if ("crypto" in window)
cryptoObject = crypto;
else if ("msCrypto" in window)
cryptoObject = msCrypto;
else
return 0;
if (!("getRandomValues" in cryptoObject) || !("Uint32Array" in window) || typeof Uint32Array != "function")
cryptoObject = null;
if (cryptoObject == null)
return 0;
// Generate an unbiased sample
var x = new Uint32Array(1);
do cryptoObject.getRandomValues(x);
while (x[0] - x[0] % n > 4294967296 - n);
return x[0] % n;
};
return this;
});