* [ADD] Random generated password length is restricted to 117 bytes because RSA encryption payload max length

* [ADD] Added line breaks for password displaying
This commit is contained in:
nuxsmin
2018-03-27 12:22:50 +02:00
parent ca362bfda2
commit 9426c8a520
6 changed files with 128 additions and 111 deletions

View File

@@ -68,93 +68,65 @@ sysPass.Theme = function (Common) {
};
// Función para generar claves aleatorias.
const password = function ($target) {
let i = 0;
let chars = "";
let genPassword = "";
const randomPassword = function ($target) {
Common.generateRandomPass(function (password, level) {
$target.attr("data-pass", password);
const getRandomChar = function (min, max) {
return chars.charAt(Math.floor((Math.random() * max) + min));
};
// if ($target) {
const $dstParent = $target.parent();
const $targetR = $("#" + $target.attr("id") + "_repeat");
if (Common.passwordData.complexity.symbols) {
chars += "!\"\\·@|#$~%&/()=?'¿¡^*[]·;,_-{}<>";
}
Common.outputResult(level, $target);
if (Common.passwordData.complexity.numbers) {
chars += "1234567890";
}
// Actualizar los componentes de MDL
const mdl = new MaterialTextfield();
if (Common.passwordData.complexity.chars) {
chars += "abcdefghijklmnopqrstuvwxyz";
// Poner la clave en los input y actualizar MDL
$dstParent.find("input:password").val(password);
$dstParent.addClass(mdl.CssClasses_.IS_DIRTY).removeClass(mdl.CssClasses_.IS_INVALID);
if (Common.passwordData.complexity.uppercase) {
chars += String("abcdefghijklmnopqrstuvwxyz").toUpperCase();
// Poner la clave en el input de repetición y encriptarla
if ($targetR.length > 0) {
$targetR.val(password).parent().addClass(mdl.CssClasses_.IS_DIRTY).removeClass(mdl.CssClasses_.IS_INVALID);
Common.encryptFormValue($targetR);
}
}
for (; i++ < Common.passwordData.complexity.numlength;) {
genPassword += getRandomChar(0, chars.length - 1);
}
$target.attr("data-pass", genPassword);
const level = zxcvbn(genPassword);
Common.passwordData.passLength = genPassword.length;
// if ($target) {
const $dstParent = $target.parent();
const $targetR = $("#" + $target.attr("id") + "_repeat");
Common.outputResult(level, $target);
// Actualizar los componentes de MDL
const mdl = new MaterialTextfield();
// Poner la clave en los input y actualizar MDL
$dstParent.find("input:password").val(genPassword);
$dstParent.addClass(mdl.CssClasses_.IS_DIRTY).removeClass(mdl.CssClasses_.IS_INVALID);
// Poner la clave en el input de repetición y encriptarla
if ($targetR.length > 0) {
$targetR.val(genPassword).parent().addClass(mdl.CssClasses_.IS_DIRTY).removeClass(mdl.CssClasses_.IS_INVALID);
Common.encryptFormValue($targetR);
}
// Mostar el indicador de complejidad
$dstParent.find("#passLevel").show(500);
// } else {
// Common.outputResult(level);
// $("input:password, input.password").val(genPassword);
// $("#passLevel").show(500);
// }
// Mostar el indicador de complejidad
$dstParent.find("#passLevel").show(500);
// } else {
// Common.outputResult(level);
// $("input:password, input.password").val(genPassword);
// $("#passLevel").show(500);
// }
});
};
// Diálogo de configuración de complejidad de clave
const complexityDialog = function () {
const content =
"<div id=\"box-complexity\"><div>" +
"<label class=\"mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect\" for=\"checkbox-chars\">" +
"<input type=\"checkbox\" id=\"checkbox-chars\" class=\"mdl-checkbox__input\" name=\"checkbox-chars\" checked/>" +
"<span class=\"mdl-checkbox__label\">" + Common.config().LANG[63] + "</span>" +
"</label>" +
"<label class=\"mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect\" for=\"checkbox-numbers\">" +
"<input type=\"checkbox\" id=\"checkbox-numbers\" class=\"mdl-checkbox__input\" name=\"checkbox-numbers\" checked/>" +
"<span class=\"mdl-checkbox__label\">" + Common.config().LANG[35] + "</span>" +
"</label>" +
"<label class=\"mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect\" for=\"checkbox-uppercase\">" +
"<input type=\"checkbox\" id=\"checkbox-uppercase\" class=\"mdl-checkbox__input\" name=\"checkbox-uppercase\"/>" +
"<span class=\"mdl-checkbox__label\">" + Common.config().LANG[36] + "</span>" +
"</label>" +
"<label class=\"mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect\" for=\"checkbox-symbols\">" +
"<input type=\"checkbox\" id=\"checkbox-symbols\" class=\"mdl-checkbox__input\" name=\"checkbox-symbols\"/>" +
"<span class=\"mdl-checkbox__label\">" + Common.config().LANG[37] + "</span>" +
"</label>" +
"<div class=\"mdl-textfield mdl-js-textfield textfield-passlength\">" +
"<input class=\"mdl-textfield__input\" type=\"number\" pattern=\"[0-9]*\" id=\"passlength\" />" +
"<label class=\"mdl-textfield__label\" for=\"passlength\">" + Common.config().LANG[38] + "</label>" +
"</div></div></div>";
`<div id="box-complexity"><div>
<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="checkbox-chars">
<input type="checkbox" id="checkbox-chars" class="mdl-checkbox__input" name="checkbox-chars" checked/>
<span class="mdl-checkbox__label">${Common.config().LANG[63]}</span>
</label>
<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="checkbox-numbers">
<input type="checkbox" id="checkbox-numbers" class="mdl-checkbox__input" name="checkbox-numbers" checked/>
<span class="mdl-checkbox__label">${Common.config().LANG[35]}</span>
</label>
<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="checkbox-uppercase">
<input type="checkbox" id="checkbox-uppercase" class="mdl-checkbox__input" name="checkbox-uppercase"/>
<span class="mdl-checkbox__label">${Common.config().LANG[36]}</span>
</label>
<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="checkbox-symbols">
<input type="checkbox" id="checkbox-symbols" class="mdl-checkbox__input" name="checkbox-symbols"/>
<span class="mdl-checkbox__label">${Common.config().LANG[37]}</span>
</label>
<div class="mdl-textfield mdl-js-textfield textfield-passlength">
<input class="mdl-textfield__input" type="number" pattern="[0-9]*" id="passlength" min="1" max="117" list="defaultLength"/>
<label class="mdl-textfield__label" for="passlength">${Common.config().LANG[38]}</label>
</div></div></div>
<datalist id="defaultLength"><option value="8"><option value="12"><option value="16"><option value="32"><option value="64"></datalist>`;
mdlDialog().show({
title: Common.config().LANG[29],
@@ -167,11 +139,13 @@ sysPass.Theme = function (Common) {
onClick: function (e) {
e.preventDefault();
const length = parseInt($("#passlength").val());
Common.passwordData.complexity.chars = $("#checkbox-chars").is(":checked");
Common.passwordData.complexity.numbers = $("#checkbox-numbers").is(":checked");
Common.passwordData.complexity.uppercase = $("#checkbox-uppercase").is(":checked");
Common.passwordData.complexity.symbols = $("#checkbox-symbols").is(":checked");
Common.passwordData.complexity.numlength = parseInt($("#passlength").val());
Common.passwordData.complexity.numlength = length;
}
},
cancelable: true,
@@ -223,7 +197,7 @@ sysPass.Theme = function (Common) {
// Crear evento para generar clave aleatoria
$passwordActions.find(".passGen").on("click", function () {
password($this);
randomPassword($this);
$this.blur();
});
@@ -234,7 +208,7 @@ sysPass.Theme = function (Common) {
// Crear evento para mostrar clave generada/introducida
$passwordActions.find(".showpass").on("mouseover", function () {
$(this).attr("title", $this.data("pass"));
$(this).attr("title", $this[0].dataset.pass);
});
// Reset de los campos de clave
@@ -518,7 +492,7 @@ sysPass.Theme = function (Common) {
return {
passwordDetect: passwordDetect,
password: password,
password: randomPassword,
viewsTriggers: viewsTriggers,
loading: loading,
ajax: ajax,

View File

@@ -1,19 +1,19 @@
var $jscomp={scope:{},findInternal:function(a,f,c){a instanceof String&&(a=String(a));for(var g=a.length,h=0;h<g;h++){var l=a[h];if(f.call(c,l,h,a))return{i:h,v:l}}return{i:-1,v:void 0}}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(a,f,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[f]=c.value)};
$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(a,f,c,g){if(f){c=$jscomp.global;a=a.split(".");for(g=0;g<a.length-1;g++){var h=a[g];h in c||(c[h]={});c=c[h]}a=a[a.length-1];g=c[a];f=f(g);f!=g&&null!=f&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:f})}};
var $jscomp={scope:{},findInternal:function(a,e,c){a instanceof String&&(a=String(a));for(var f=a.length,h=0;h<f;h++){var k=a[h];if(e.call(c,k,h,a))return{i:h,v:k}}return{i:-1,v:void 0}}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(a,e,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[e]=c.value)};
$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(a,e,c,f){if(e){c=$jscomp.global;a=a.split(".");for(f=0;f<a.length-1;f++){var h=a[f];h in c||(c[h]={});c=c[h]}a=a[a.length-1];f=c[a];e=e(f);e!=f&&null!=e&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:e})}};
$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,c){return $jscomp.findInternal(this,a,c).v}},"es6-impl","es3");
sysPass.Theme=function(a){var f=a.log,c={elems:{$wrap:$("#wrap-loading"),$loading:$("#loading")},show:function(a){void 0!==a&&!0===a&&c.elems.$wrap.addClass("overlay-full");c.elems.$wrap.show();c.elems.$loading.addClass("is-active")},hide:function(){c.elems.$wrap.removeClass("overlay-full").hide();c.elems.$loading.removeClass("is-active")},upgradeFull:function(){c.elems.$wrap.addClass("overlay-full")}},g=function(b){var k=0,d="",e="";a.passwordData.complexity.symbols&&(d+="!\"\\\u00b7@|#$~%&/()=?'\u00bf\u00a1^*[]\u00b7;,_-{}<>");
a.passwordData.complexity.numbers&&(d+="1234567890");a.passwordData.complexity.chars&&(d+="abcdefghijklmnopqrstuvwxyz",a.passwordData.complexity.uppercase&&(d+="ABCDEFGHIJKLMNOPQRSTUVWXYZ"));for(;k++<a.passwordData.complexity.numlength;)e+=d.charAt(Math.floor(Math.random()*(d.length-1)+0));b.attr("data-pass",e);var c=zxcvbn(e);a.passwordData.passLength=e.length;k=b.parent();d=$("#"+b.attr("id")+"_repeat");a.outputResult(c,b);b=new MaterialTextfield;k.find("input:password").val(e);k.addClass(b.CssClasses_.IS_DIRTY).removeClass(b.CssClasses_.IS_INVALID);
0<d.length&&(d.val(e).parent().addClass(b.CssClasses_.IS_DIRTY).removeClass(b.CssClasses_.IS_INVALID),a.encryptFormValue(d));k.find("#passLevel").show(500)},h=function(){var b='<div id="box-complexity"><div><label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="checkbox-chars"><input type="checkbox" id="checkbox-chars" class="mdl-checkbox__input" name="checkbox-chars" checked/><span class="mdl-checkbox__label">'+a.config().LANG[63]+'</span></label><label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="checkbox-numbers"><input type="checkbox" id="checkbox-numbers" class="mdl-checkbox__input" name="checkbox-numbers" checked/><span class="mdl-checkbox__label">'+
a.config().LANG[35]+'</span></label><label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="checkbox-uppercase"><input type="checkbox" id="checkbox-uppercase" class="mdl-checkbox__input" name="checkbox-uppercase"/><span class="mdl-checkbox__label">'+a.config().LANG[36]+'</span></label><label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="checkbox-symbols"><input type="checkbox" id="checkbox-symbols" class="mdl-checkbox__input" name="checkbox-symbols"/><span class="mdl-checkbox__label">'+
a.config().LANG[37]+'</span></label><div class="mdl-textfield mdl-js-textfield textfield-passlength"><input class="mdl-textfield__input" type="number" pattern="[0-9]*" id="passlength" /><label class="mdl-textfield__label" for="passlength">'+a.config().LANG[38]+"</label></div></div></div>";mdlDialog().show({title:a.config().LANG[29],text:b,negative:{title:a.config().LANG[44]},positive:{title:a.config().LANG[43],onClick:function(b){b.preventDefault();a.passwordData.complexity.chars=$("#checkbox-chars").is(":checked");
a.passwordData.complexity.numbers=$("#checkbox-numbers").is(":checked");a.passwordData.complexity.uppercase=$("#checkbox-uppercase").is(":checked");a.passwordData.complexity.symbols=$("#checkbox-symbols").is(":checked");a.passwordData.complexity.numlength=parseInt($("#passlength").val())}},cancelable:!0,contentStyle:{"max-width":"300px"},onLoaded:function(){$("#checkbox-chars").prop("checked",a.passwordData.complexity.chars);$("#checkbox-numbers").prop("checked",a.passwordData.complexity.numbers);
$("#checkbox-uppercase").prop("checked",a.passwordData.complexity.uppercase);$("#checkbox-symbols").prop("checked",a.passwordData.complexity.symbols);$("#passlength").val(a.passwordData.complexity.numlength)}})},l=function(b){b.find(".passwordfield__input").each(function(){var b=$(this);if("true"!==b.attr("data-pass-upgraded")){var d=b.parent(),e=b.attr("id"),c='<button id="menu-password-'+e+'" class="mdl-button mdl-js-button mdl-button--icon" type="button" title="'+a.config().LANG[27]+'"><i class="material-icons">more_vert</i></button>\n <ul class="mdl-menu mdl-js-menu" for="menu-password-'+
e+'">\n <li class="mdl-menu__item passGen"><i class="material-icons">settings</i>'+a.config().LANG[28]+'</li>\n <li class="mdl-menu__item passComplexity"><i class="material-icons">vpn_key</i>'+a.config().LANG[29]+'</li>\n <li class="mdl-menu__item reset"><i class="material-icons">refresh</i>'+a.config().LANG[30]+"</li></ul>";d.after('<div class="password-actions" />');d.next(".password-actions").prepend('<span class="passLevel passLevel-'+e+' fullround" title="'+
a.config().LANG[31]+'"></span>').prepend('<i class="showpass material-icons clip-pass-field" data-clipboard-target=\'#'+e+"' title=\""+a.config().LANG[32]+'">remove_red_eye</i>').prepend(c);b.on("keyup",function(){a.checkPassLevel(b)});d=b.parent().next();d.find(".passGen").on("click",function(){g(b);b.blur()});d.find(".passComplexity").on("click",function(){h()});d.find(".showpass").on("mouseover",function(){$(this).attr("title",b.data("pass"))});d.find(".reset").on("click",function(){b.val("");
var a=$("#"+e+"_repeat");0<a.length&&a.val("");componentHandler.upgradeDom()});b.attr("data-pass-upgraded","true")}});b.find(".passwordfield__input-show").each(function(){var b=$(this),d=$('<i class="showpass material-icons" title="'+a.config().LANG[32]+'">remove_red_eye</i>');if(1===b.data("clipboard")){var c=$('<i class="clip-pass-icon material-icons" title="'+a.config().LANG[34]+'" data-clipboard-target="#'+b.attr("id")+'">content_paste</i>');b.parent().after(c).after(d)}else b.parent().after(d);
d.on("mouseover",function(){d.attr("title",b.val())})})},m=function(b){f.info("setupDatePicker");var c={format:"YYYY-MM-DD",lang:a.config().LOCALE.substr(0,2),time:!1,cancelText:a.config().LANG[44],okText:a.config().LANG[43],clearText:a.config().LANG[30],nowText:a.config().LANG[56],minDate:new Date,triggerEvent:"dateIconClick"};b.find(".password-datefield__input").each(function(){var b=$(this),e=b.parent();b.bootstrapMaterialDatePicker(c);var k=e.find("input[name="+b.data("dst-unix")+"]");k.val(moment.tz(b.val(),
a.config().TIMEZONE).format("X"));e.next("i").on("click",function(){b.trigger("dateIconClick")});b.on("change",function(){k.val(moment.tz(b.val(),a.config().TIMEZONE).format("X"))})})};return{passwordDetect:l,password:g,viewsTriggers:{main:function(){var a=document.querySelector(".mdl-layout");$(".mdl-layout__drawer").find("a").click(function(){a.MaterialLayout.toggleDrawer()})},search:function(){var b=$("#frmSearch"),c=$("#res-content");b.find("button.btn-clear").on("click",function(a){$(".icon-searchfav").find("i").removeClass("mdl-color-text--amber-A200")});
b.find(".icon-searchfav").on("click",function(){var c=$(this).find("i"),d=b.find("input[name='searchfav']");0==d.val()?(c.addClass("mdl-color-text--amber-A200"),c.attr("title",a.config().LANG[53]),d.val(1)):(c.removeClass("mdl-color-text--amber-A200"),c.attr("title",a.config().LANG[52]),d.val(0));b.submit()});var d=b.find("#tags")[0],e=b.find(".search-filters-tags"),f=b.find("i.show-filter");c.on("click","#data-search-header .sort-down,#data-search-header .sort-up",function(){var b=$(this);b.parent().find("a").addClass("filterOn");
a.appActions().account.sort(b)}).on("click","#search-rows i.icon-favorite",function(){var b=$(this);a.appActions().account.saveFavorite(b,function(){"on"===b.data("status")?(b.addClass("mdl-color-text--amber-A100"),b.attr("title",a.config().LANG[50]),b.html("star")):(b.removeClass("mdl-color-text--amber-A100"),b.attr("title",a.config().LANG[49]),b.html("star_border"))})}).on("click","#search-rows span.tag",function(){e.is(":hidden")&&f.trigger("click");d.selectize.addItem($(this).data("tag-id"),!1)});
f.on("click",function(){var a=$(this);e.is(":hidden")?(e.slideDown("slow"),a.html(a.data("icon-up"))):(e.slideUp("slow"),a.html(a.data("icon-down")))});-1!==d.selectedIndex&&f.trigger("click")},common:function(a){l(a);m(a)}},loading:c,ajax:{complete:function(){f.info("ajax:complete");componentHandler.upgradeDom()}},html:{getList:function(a,c){var b=$('<ul class="ldap-list-item mdl-list"></ul>'),e=$('<li class="mdl-list__item"></li>'),f=$('<span class="mdl-list__item-primary-content"></span>'),g='<i class="material-icons mdl-list__item-icon">'+
(void 0===c||""===c?"description":c)+"</i>";a.forEach(function(a){var c=f.clone();c.append(g);c.append(a);a=e.clone().append(c);b.append(a)});return b},tabs:{add:function(a,c,d,e){a=$(a);var b;1===e&&(a.parent().find("#tabs-"+c).addClass("is-active"),b="is-active");a.append('<a href="#tabs-'+c+'" class="mdl-tabs__tab '+b+'">'+d+"</a>")}}}}};
sysPass.Theme=function(a){var e=a.log,c={elems:{$wrap:$("#wrap-loading"),$loading:$("#loading")},show:function(a){void 0!==a&&!0===a&&c.elems.$wrap.addClass("overlay-full");c.elems.$wrap.show();c.elems.$loading.addClass("is-active")},hide:function(){c.elems.$wrap.removeClass("overlay-full").hide();c.elems.$loading.removeClass("is-active")},upgradeFull:function(){c.elems.$wrap.addClass("overlay-full")}},f=function(b){a.generateRandomPass(function(d,m){b.attr("data-pass",d);var c=b.parent(),g=$("#"+
b.attr("id")+"_repeat");a.outputResult(m,b);var l=new MaterialTextfield;c.find("input:password").val(d);c.addClass(l.CssClasses_.IS_DIRTY).removeClass(l.CssClasses_.IS_INVALID);0<g.length&&(g.val(d).parent().addClass(l.CssClasses_.IS_DIRTY).removeClass(l.CssClasses_.IS_INVALID),a.encryptFormValue(g));c.find("#passLevel").show(500)})},h=function(){var b='<div id="box-complexity"><div>\n <label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="checkbox-chars">\n <input type="checkbox" id="checkbox-chars" class="mdl-checkbox__input" name="checkbox-chars" checked/>\n <span class="mdl-checkbox__label">'+
a.config().LANG[63]+'</span>\n </label>\n <label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="checkbox-numbers">\n <input type="checkbox" id="checkbox-numbers" class="mdl-checkbox__input" name="checkbox-numbers" checked/>\n <span class="mdl-checkbox__label">'+a.config().LANG[35]+'</span>\n </label>\n <label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="checkbox-uppercase">\n <input type="checkbox" id="checkbox-uppercase" class="mdl-checkbox__input" name="checkbox-uppercase"/>\n <span class="mdl-checkbox__label">'+
a.config().LANG[36]+'</span>\n </label>\n <label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="checkbox-symbols">\n <input type="checkbox" id="checkbox-symbols" class="mdl-checkbox__input" name="checkbox-symbols"/>\n <span class="mdl-checkbox__label">'+a.config().LANG[37]+'</span>\n </label>\n <div class="mdl-textfield mdl-js-textfield textfield-passlength">\n <input class="mdl-textfield__input" type="number" pattern="[0-9]*" id="passlength" min="1" max="117" list="defaultLength"/>\n <label class="mdl-textfield__label" for="passlength">'+
a.config().LANG[38]+'</label>\n </div></div></div>\n <datalist id="defaultLength"><option value="8"><option value="12"><option value="16"><option value="32"><option value="64"></datalist>';mdlDialog().show({title:a.config().LANG[29],text:b,negative:{title:a.config().LANG[44]},positive:{title:a.config().LANG[43],onClick:function(d){d.preventDefault();d=parseInt($("#passlength").val());a.passwordData.complexity.chars=$("#checkbox-chars").is(":checked");a.passwordData.complexity.numbers=
$("#checkbox-numbers").is(":checked");a.passwordData.complexity.uppercase=$("#checkbox-uppercase").is(":checked");a.passwordData.complexity.symbols=$("#checkbox-symbols").is(":checked");a.passwordData.complexity.numlength=d}},cancelable:!0,contentStyle:{"max-width":"300px"},onLoaded:function(){$("#checkbox-chars").prop("checked",a.passwordData.complexity.chars);$("#checkbox-numbers").prop("checked",a.passwordData.complexity.numbers);$("#checkbox-uppercase").prop("checked",a.passwordData.complexity.uppercase);
$("#checkbox-symbols").prop("checked",a.passwordData.complexity.symbols);$("#passlength").val(a.passwordData.complexity.numlength)}})},k=function(b){b.find(".passwordfield__input").each(function(){var d=$(this);if("true"!==d.attr("data-pass-upgraded")){var b=d.parent(),c=d.attr("id"),g='<button id="menu-password-'+c+'" class="mdl-button mdl-js-button mdl-button--icon" type="button" title="'+a.config().LANG[27]+'"><i class="material-icons">more_vert</i></button>\n <ul class="mdl-menu mdl-js-menu" for="menu-password-'+
c+'">\n <li class="mdl-menu__item passGen"><i class="material-icons">settings</i>'+a.config().LANG[28]+'</li>\n <li class="mdl-menu__item passComplexity"><i class="material-icons">vpn_key</i>'+a.config().LANG[29]+'</li>\n <li class="mdl-menu__item reset"><i class="material-icons">refresh</i>'+a.config().LANG[30]+"</li></ul>";b.after('<div class="password-actions" />');b.next(".password-actions").prepend('<span class="passLevel passLevel-'+c+' fullround" title="'+
a.config().LANG[31]+'"></span>').prepend('<i class="showpass material-icons clip-pass-field" data-clipboard-target=\'#'+c+"' title=\""+a.config().LANG[32]+'">remove_red_eye</i>').prepend(g);d.on("keyup",function(){a.checkPassLevel(d)});b=d.parent().next();b.find(".passGen").on("click",function(){f(d);d.blur()});b.find(".passComplexity").on("click",function(){h()});b.find(".showpass").on("mouseover",function(){$(this).attr("title",d[0].dataset.pass)});b.find(".reset").on("click",function(){d.val("");
var a=$("#"+c+"_repeat");0<a.length&&a.val("");componentHandler.upgradeDom()});d.attr("data-pass-upgraded","true")}});b.find(".passwordfield__input-show").each(function(){var b=$(this),c=$('<i class="showpass material-icons" title="'+a.config().LANG[32]+'">remove_red_eye</i>');if(1===b.data("clipboard")){var e=$('<i class="clip-pass-icon material-icons" title="'+a.config().LANG[34]+'" data-clipboard-target="#'+b.attr("id")+'">content_paste</i>');b.parent().after(e).after(c)}else b.parent().after(c);
c.on("mouseover",function(){c.attr("title",b.val())})})},n=function(b){e.info("setupDatePicker");var c={format:"YYYY-MM-DD",lang:a.config().LOCALE.substr(0,2),time:!1,cancelText:a.config().LANG[44],okText:a.config().LANG[43],clearText:a.config().LANG[30],nowText:a.config().LANG[56],minDate:new Date,triggerEvent:"dateIconClick"};b.find(".password-datefield__input").each(function(){var b=$(this),d=b.parent();b.bootstrapMaterialDatePicker(c);var g=d.find("input[name="+b.data("dst-unix")+"]");g.val(moment.tz(b.val(),
a.config().TIMEZONE).format("X"));d.next("i").on("click",function(){b.trigger("dateIconClick")});b.on("change",function(){g.val(moment.tz(b.val(),a.config().TIMEZONE).format("X"))})})};return{passwordDetect:k,password:f,viewsTriggers:{main:function(){var a=document.querySelector(".mdl-layout");$(".mdl-layout__drawer").find("a").click(function(){a.MaterialLayout.toggleDrawer()})},search:function(){var b=$("#frmSearch"),c=$("#res-content");b.find("button.btn-clear").on("click",function(a){$(".icon-searchfav").find("i").removeClass("mdl-color-text--amber-A200")});
b.find(".icon-searchfav").on("click",function(){var c=$(this).find("i"),d=b.find("input[name='searchfav']");0==d.val()?(c.addClass("mdl-color-text--amber-A200"),c.attr("title",a.config().LANG[53]),d.val(1)):(c.removeClass("mdl-color-text--amber-A200"),c.attr("title",a.config().LANG[52]),d.val(0));b.submit()});var e=b.find("#tags")[0],f=b.find(".search-filters-tags"),g=b.find("i.show-filter");c.on("click","#data-search-header .sort-down,#data-search-header .sort-up",function(){var b=$(this);b.parent().find("a").addClass("filterOn");
a.appActions().account.sort(b)}).on("click","#search-rows i.icon-favorite",function(){var b=$(this);a.appActions().account.saveFavorite(b,function(){"on"===b.data("status")?(b.addClass("mdl-color-text--amber-A100"),b.attr("title",a.config().LANG[50]),b.html("star")):(b.removeClass("mdl-color-text--amber-A100"),b.attr("title",a.config().LANG[49]),b.html("star_border"))})}).on("click","#search-rows span.tag",function(){f.is(":hidden")&&g.trigger("click");e.selectize.addItem($(this).data("tag-id"),!1)});
g.on("click",function(){var a=$(this);f.is(":hidden")?(f.slideDown("slow"),a.html(a.data("icon-up"))):(f.slideUp("slow"),a.html(a.data("icon-down")))});-1!==e.selectedIndex&&g.trigger("click")},common:function(a){k(a);n(a)}},loading:c,ajax:{complete:function(){e.info("ajax:complete");componentHandler.upgradeDom()}},html:{getList:function(a,c){var b=$('<ul class="ldap-list-item mdl-list"></ul>'),d=$('<li class="mdl-list__item"></li>'),e=$('<span class="mdl-list__item-primary-content"></span>'),f='<i class="material-icons mdl-list__item-icon">'+
(void 0===c||""===c?"description":c)+"</i>";a.forEach(function(a){var c=e.clone();c.append(f);c.append(a);a=d.clone().append(c);b.append(a)});return b},tabs:{add:function(a,c,e,f){a=$(a);var b;1===f&&(a.parent().find("#tabs-"+c).addClass("is-active"),b="is-active");a.append('<a href="#tabs-'+c+'" class="mdl-tabs__tab '+b+'">'+e+"</a>")}}}}};

View File

@@ -24,7 +24,7 @@
</tr>
<tr>
<?php if (!$isImage): ?>
<td class="dialog-text dialog-pass-text"><?php echo $pass; ?></td>
<td class="dialog-text dialog-pass-text"><?php echo wordwrap($pass, 50, PHP_EOL, true); ?></td>
<td class="right">
<button class="dialog-clip-button mdl-button mdl-js-button mdl-js-ripple-effect"
title="<?php echo __('Copiar Clave'); ?>" data-clipboard-target=".dialog-pass-text">

View File

@@ -56,7 +56,7 @@ class Installer extends Service
*/
const VERSION = [3, 0, 0];
const VERSION_TEXT = '3.0-beta';
const BUILD = 18032601;
const BUILD = 18032701;
/**
* @var ConfigService

View File

@@ -257,7 +257,7 @@ sysPass.Main = function () {
const $target = $(this.dataset.clipboardTarget);
clipboard
.copy($target.text())
.copy($target.text().replace(/\r?\n|\r/g))
.then(
function () {
$(".dialog-text").removeClass("dialog-clip-copy");
@@ -843,7 +843,8 @@ sysPass.Main = function () {
fileUpload: fileUpload,
redirect: redirect,
scrollUp: scrollUp,
setContentSize: setContentSize
setContentSize: setContentSize,
generateRandomPass: generateRandomPass
};
// Objeto con métodos y propiedades protegidas
@@ -932,6 +933,47 @@ sysPass.Main = function () {
return t.getTime();
};
/**
* Function to generate random password and call a callback sending the generated string
* and a zxcvbn object
*
* @param callback
*/
const generateRandomPass = function (callback) {
let i = 0;
let chars = "";
let password = "";
const getRandomChar = function (min, max) {
return chars.charAt(Math.floor((Math.random() * max) + min));
};
if (passwordData.complexity.symbols) {
chars += "!\"\\·@|#$~%&/()=?'¿¡^*[]·;,_-{}<>";
}
if (passwordData.complexity.numbers) {
chars += "1234567890";
}
if (passwordData.complexity.chars) {
chars += "abcdefghijklmnopqrstuvwxyz";
if (passwordData.complexity.uppercase) {
chars += String("abcdefghijklmnopqrstuvwxyz").toUpperCase();
}
}
for (; i++ < passwordData.complexity.numlength;) {
password += getRandomChar(0, chars.length - 1);
}
passwordData.passLength = password.length;
if (typeof callback === "function") {
callback(password, zxcvbn(password));
}
};
return init();
};

View File

@@ -4,22 +4,23 @@ $jscomp.polyfill("Array.prototype.find",function(b){return b?b:function(b,h){ret
$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var b=$jscomp.global.Symbol.iterator;b||(b=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[b]&&$jscomp.defineProperty(Array.prototype,b,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(b){var l=0;return $jscomp.iteratorPrototype(function(){return l<b.length?{done:!1,value:b[l++]}:{done:!0}})};
$jscomp.iteratorPrototype=function(b){$jscomp.initSymbolIterator();b={next:b};b[$jscomp.global.Symbol.iterator]=function(){return this};return b};$jscomp.array=$jscomp.array||{};$jscomp.iteratorFromArray=function(b,l){$jscomp.initSymbolIterator();b instanceof String&&(b+="");var h=0,m={next:function(){if(h<b.length){var n=h++;return{value:l(n,b[n]),done:!1}}m.next=function(){return{done:!0,value:void 0}};return m.next()}};m[Symbol.iterator]=function(){return m};return m};
$jscomp.polyfill("Array.prototype.keys",function(b){return b?b:function(){return $jscomp.iteratorFromArray(this,function(b){return b})}},"es6-impl","es3");
sysPass.Main=function(){var b=function(){f.info("checkPluginUpdates");for(var a in r)"function"===typeof r[a].checkVersion&&r[a].checkVersion().then(function(a){0===a.status&&void 0!==a.data.plugin&&e.info(String.format(c.LANG[67],a.data.plugin,a.data.remoteVersion))})},l=function(){var a=document.createElement("div");return function(g){g&&"string"===typeof g&&(g=g.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi,""),g=g.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi,""),a.innerHTML=g,g=a.textContent,
sysPass.Main=function(){var b=function(){f.info("checkPluginUpdates");for(var a in t)"function"===typeof t[a].checkVersion&&t[a].checkVersion().then(function(a){0===a.status&&void 0!==a.data.plugin&&e.info(String.format(c.LANG[67],a.data.plugin,a.data.remoteVersion))})},l=function(){var a=document.createElement("div");return function(g){g&&"string"===typeof g&&(g=g.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi,""),g=g.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi,""),a.innerHTML=g,g=a.textContent,
a.textContent="");return g}}(),h=function(a){f.info("resizeImage");var g=.9*$(window).width(),d=.9*$(window).height(),b={width:a.width(),height:a.height()},c={calc:0,main:0,secondary:0,factor:.9,rel:b.width/b.height},e=function(a){a.main>a.secondary?a.calc=a.main/a.rel:a.main<a.secondary&&(a.calc=a.main*a.rel);a.calc>a.secondary&&(a.main*=a.factor,e(a));return a},D=function(){c.main=g;c.secondary=d;var k=e(c);a.css({width:k.main,height:k.calc});b.width=k.main;b.height=k.calc},E=function(){c.main=
d;c.secondary=g;var k=e(c);a.css({width:k.calc,height:k.main});b.width=k.calc;b.height=k.main};b.width>g?D():b.height>d&&(f.info("height"),E());return b},m=function(a,b){f.info("Eval: "+a);if("function"===typeof a)a(b);else throw Error("Function not found: "+a);},n=function(){f.info("bindPassEncrypt");$("body").on("blur",":input[type=password]",function(a){a=$(this);a.hasClass("passwordfield__no-pki")||z(a)}).on("keypress",":input[type=password]",function(a){13===a.keyCode&&(a.preventDefault(),a=
$(this),z(a),a.closest("form").submit())})},w=function(){f.info("initializeClipboard");if(clipboard.isSupported())$("body").on("click",".clip-pass-button",function(){var a=t.account.copyPass($(this)).done(function(a){if(0!==a.status)return e.out(a),!1;x.set(a.csrf)});!1!==a&&clipboard.copy(a.responseJSON.data.accpass).then(function(){e.ok(c.LANG[45])},function(a){e.error(c.LANG[46])})}).on("click",".dialog-clip-button",function(){var a=$(this.dataset.clipboardTarget);clipboard.copy(a.text()).then(function(){$(".dialog-text").removeClass("dialog-clip-copy");
$(this),z(a),a.closest("form").submit())})},w=function(){f.info("initializeClipboard");if(clipboard.isSupported())$("body").on("click",".clip-pass-button",function(){var a=u.account.copyPass($(this)).done(function(a){if(0!==a.status)return e.out(a),!1;x.set(a.csrf)});!1!==a&&clipboard.copy(a.responseJSON.data.accpass).then(function(){e.ok(c.LANG[45])},function(a){e.error(c.LANG[46])})}).on("click",".dialog-clip-button",function(){var a=$(this.dataset.clipboardTarget);clipboard.copy(a.text().replace(/\r?\n|\r/g)).then(function(){$(".dialog-text").removeClass("dialog-clip-copy");
a.addClass("dialog-clip-copy")},function(a){e.error(c.LANG[46])})}).on("click",".clip-pass-icon",function(){clipboard.copy(l($(this.dataset.clipboardTarget).val())).then(function(){e.ok(c.LANG[45])},function(a){e.error(c.LANG[46])})}).on("click",".clip-pass-field",function(){clipboard.copy(l($(this.dataset.clipboardTarget).data("pass"))).then(function(){e.ok(c.LANG[45])},function(a){e.error(c.LANG[46])})});else f.warn(c.LANG[65])},z=function(a){f.info("encryptFormValue");var b=a.val();""!==b&&parseInt(a.attr("data-length"))!==
b.length&&(b=c.CRYPT.encrypt(b),a.val(b),a.attr("data-length",b.length))},C=function(a,b){f.info("outputResult");var d=$(".passLevel-"+b.attr("id")),g=a.score;d.show();d.removeClass("weak good strong strongest");0===u.passLength?d.attr("title","").empty():u.passLength<u.minPasswordLength?d.attr("title",c.LANG[11]).addClass("weak"):0===g?d.attr("title",c.LANG[9]+" - "+a.feedback.warning).addClass("weak"):1===g||2===g?d.attr("title",c.LANG[8]+" - "+a.feedback.warning).addClass("good"):3===g?d.attr("title",
c.LANG[7]).addClass("strong"):4===g&&d.attr("title",c.LANG[10]).addClass("strongest")},F=function(a){f.info("checkPassLevel");u.passLength=a.val().length;C(zxcvbn(a.val()),a)},G=function(a){var b=function(a){var b=$("#fileUploadForm");!1===a&&b.hide();a=b.find("input[type='file']");a.on("change",function(){"function"===typeof k.beforeSendAction&&k.beforeSendAction();l(this.files)});return a},d={actionId:a.data("action-id"),itemId:a.data("item-id"),sk:x.get()},k={requestDoneAction:"",setRequestData:function(a){$.extend(d,
a)},getRequestData:function(){return d},beforeSendAction:"",url:"",allowedExts:[]},h=function(a){if(void 0===k.url||""===k.url)return!1;var b=new FormData;b.append("inFile",a);b.append("isAjax",1);d.sk=x.get();Object.keys(d).forEach(function(a){b.append(a,d[a])});a=v.getRequestOpts();a.url=k.url;a.processData=!1;a.contentType=!1;a.data=b;v.getActionCall(a,function(a){var b=a.status;a=a.description;0===b?("function"===typeof k.requestDoneAction&&k.requestDoneAction(),e.ok(a)):10===b?t.main.logout():
b.length&&(b=c.CRYPT.encrypt(b),a.val(b),a.attr("data-length",b.length))},C=function(a,b){f.info("outputResult");var d=$(".passLevel-"+b.attr("id")),g=a.score;d.show();d.removeClass("weak good strong strongest");0===p.passLength?d.attr("title","").empty():p.passLength<p.minPasswordLength?d.attr("title",c.LANG[11]).addClass("weak"):0===g?d.attr("title",c.LANG[9]+" - "+a.feedback.warning).addClass("weak"):1===g||2===g?d.attr("title",c.LANG[8]+" - "+a.feedback.warning).addClass("good"):3===g?d.attr("title",
c.LANG[7]).addClass("strong"):4===g&&d.attr("title",c.LANG[10]).addClass("strongest")},F=function(a){f.info("checkPassLevel");p.passLength=a.val().length;C(zxcvbn(a.val()),a)},G=function(a){var b=function(a){var b=$("#fileUploadForm");!1===a&&b.hide();a=b.find("input[type='file']");a.on("change",function(){"function"===typeof k.beforeSendAction&&k.beforeSendAction();l(this.files)});return a},d={actionId:a.data("action-id"),itemId:a.data("item-id"),sk:x.get()},k={requestDoneAction:"",setRequestData:function(a){$.extend(d,
a)},getRequestData:function(){return d},beforeSendAction:"",url:"",allowedExts:[]},h=function(a){if(void 0===k.url||""===k.url)return!1;var b=new FormData;b.append("inFile",a);b.append("isAjax",1);d.sk=x.get();Object.keys(d).forEach(function(a){b.append(a,d[a])});a=v.getRequestOpts();a.url=k.url;a.processData=!1;a.contentType=!1;a.data=b;v.getActionCall(a,function(a){var b=a.status;a=a.description;0===b?("function"===typeof k.requestDoneAction&&k.requestDoneAction(),e.ok(a)):10===b?u.main.logout():
e.error(a)})},l=function(a){if(5<a.length)e.error(c.LANG[17]+" (Max: 5)");else for(var b=0;b<a.length;b++){var d=a[b];if(d.size/1E3>c.MAX_FILE_SIZE)e.error(c.LANG[18]+"<br>"+d.name+" (Max: "+c.MAX_FILE_SIZE+")");else{var g;a:{g=d.name.toUpperCase();var f=void 0;for(f in k.allowedExts)if(-1!==g.indexOf(k.allowedExts[f])){g=!0;break a}g=!1}g?h(a[b]):e.error(c.LANG[19]+"<br>"+d.name)}}};window.File&&window.FileList&&window.FileReader?function(){f.info("fileUpload:init");var d=b(!1);a.on("dragover dragenter",
function(a){f.info("fileUpload:drag");a.stopPropagation();a.preventDefault()});a.on("drop",function(a){f.info("fileUpload:drop");a.stopPropagation();a.preventDefault();"function"===typeof k.beforeSendAction&&k.beforeSendAction();l(a.originalEvent.dataTransfer.files)});a.on("click",function(){d.click()})}():b(!0);return k},A=function(a){window.location.replace(a)},I=function(){f.info("checkLogout");return"login/logout"===H("r")?(e.sticky(c.LANG[61],function(){A("index.php?r=login")}),!0):!1},J=function(){$("html, body").animate({scrollTop:0},
"slow")},K=function(){var a=$("#container");a.hasClass("content-no-auto-resize")||a.css("height",$("#content").height()+200)},x={get:function(){f.info("sk:get");return $("#container").attr("data-sk")},set:function(a){f.info("sk:set");f.debug(a);$("#container").attr("data-sk",a)}},c={APP_ROOT:"",LANG:[],PK:"",MAX_FILE_SIZE:1024,CRYPT:new JSEncrypt,CHECK_UPDATES:!1,TIMEZONE:"",LOCALE:"",DEBUG:"",COOKIES_ENABLED:!1,PLUGINS:[],LOGGEDIN:!1,AUTHBASIC_AUTOLOGIN:!1,FILES_ALLOWED_EXTS:"",IMPORT_ALLOWED_EXTS:[]},
u={passLength:0,minPasswordLength:8,complexity:{chars:!0,numbers:!0,symbols:!0,uppercase:!0,numlength:12}};Object.seal(u);var B={},p={},t={},v={},r={},y={},q={},f={log:function(a){!0===c.DEBUG&&console.log(a)},info:function(a){!0===c.DEBUG&&console.info(a)},error:function(a){console.error(a)},warn:function(a){console.warn(a)},debug:function(a){!0===c.DEBUG&&console.debug(a)}};Object.freeze(f);toastr.options={closeButton:!0,debug:!1,newestOnTop:!1,progressBar:!1,positionClass:"toast-top-center",preventDuplicates:!1,
onclick:null,showDuration:"300",hideDuration:"1000",timeOut:"5000",extendedTimeOut:"1000",showEasing:"swing",hideEasing:"linear",showMethod:"fadeIn",hideMethod:"fadeOut"};var L=function(){f.info("setupCallbacks");var a=$("#container"),b=a.data("page");if(""!==b&&"function"===typeof p.views[b])p.views[b](a);0<$("footer").length&&p.views.footer();$("#btnBack").click(function(){A("index.php")});p.bodyHooks()},e={ok:function(a){toastr.success(a)},error:function(a){toastr.error(a)},warn:function(a){toastr.warning(a)},
info:function(a){toastr.info(a)},sticky:function(a,b){var d={timeOut:0};"function"===typeof b&&(d.onHidden=b);toastr.warning(a,c.LANG[60],d)},out:function(a){if("object"===typeof a){var b=a.status,d=a.description;void 0!==a.messages&&0<a.messages.length&&(d=d+"<br>"+a.messages.join("<br>"));switch(b){case 0:e.ok(d);break;case 1:e.error(d);break;case 2:e.warn(d);break;case 10:t.main.logout();break;case 100:e.ok(d);e.sticky(d);break;case 101:e.error(d);e.sticky(d);break;case 102:e.warn(d);e.sticky(d);
p={passLength:0,minPasswordLength:8,complexity:{chars:!0,numbers:!0,symbols:!0,uppercase:!0,numlength:12}};Object.seal(p);var B={},q={},u={},v={},t={},y={},r={},f={log:function(a){!0===c.DEBUG&&console.log(a)},info:function(a){!0===c.DEBUG&&console.info(a)},error:function(a){console.error(a)},warn:function(a){console.warn(a)},debug:function(a){!0===c.DEBUG&&console.debug(a)}};Object.freeze(f);toastr.options={closeButton:!0,debug:!1,newestOnTop:!1,progressBar:!1,positionClass:"toast-top-center",preventDuplicates:!1,
onclick:null,showDuration:"300",hideDuration:"1000",timeOut:"5000",extendedTimeOut:"1000",showEasing:"swing",hideEasing:"linear",showMethod:"fadeIn",hideMethod:"fadeOut"};var L=function(){f.info("setupCallbacks");var a=$("#container"),b=a.data("page");if(""!==b&&"function"===typeof q.views[b])q.views[b](a);0<$("footer").length&&q.views.footer();$("#btnBack").click(function(){A("index.php")});q.bodyHooks()},e={ok:function(a){toastr.success(a)},error:function(a){toastr.error(a)},warn:function(a){toastr.warning(a)},
info:function(a){toastr.info(a)},sticky:function(a,b){var d={timeOut:0};"function"===typeof b&&(d.onHidden=b);toastr.warning(a,c.LANG[60],d)},out:function(a){if("object"===typeof a){var b=a.status,d=a.description;void 0!==a.messages&&0<a.messages.length&&(d=d+"<br>"+a.messages.join("<br>"));switch(b){case 0:e.ok(d);break;case 1:e.error(d);break;case 2:e.warn(d);break;case 10:u.main.logout();break;case 100:e.ok(d);e.sticky(d);break;case 101:e.error(d);e.sticky(d);break;case 102:e.warn(d);e.sticky(d);
break;default:e.error(d)}}},html:{error:function(a){return'<p class="error round">Oops...<br>'+c.LANG[1]+"<br>"+a+"</p>"}}};Object.freeze(e);String.format||(String.format=function(a){var b=Array.prototype.slice.call(arguments,1);return a.replace(/{(\d+)}/g,function(a,c){return"undefined"!==typeof b[c]?b[c]:a})});var M=function(){f.info("getEnvironment");var a=window.location.pathname.split("/");c.APP_ROOT=window.location.protocol+"//"+window.location.host+function(){for(var b="",c=1;c<=a.length-2;c++)b+=
"/"+a[c];return b}();var b=v.getRequestOpts();b.url="/index.php?r=bootstrap/getEnvironment";b.method="get";b.useLoading=!1;b.data={isAjax:1};return v.getActionCall(b,function(a){c.LANG=a.lang;c.PK=a.pk;c.CHECK_UPDATES=a.check_updates;c.CHECK_NOTICES=a.check_notices;c.CRYPT.setPublicKey(a.pk);c.TIMEZONE=a.timezone;c.LOCALE=a.locale;c.DEBUG=a.debug;c.MAX_FILE_SIZE=parseInt(a.max_file_size);c.COOKIES_ENABLED=a.cookies_enabled;c.PLUGINS=a.plugins;c.LOGGEDIN=a.loggedin;c.AUTHBASIC_AUTOLOGIN=a.authbasic_autologin;
c.IMPORT_ALLOWED_EXTS=a.import_allowed_exts;c.FILES_ALLOWED_EXTS=a.files_allowed_exts;Object.freeze(c)})},H=function(a){for(var b=[],c,e=window.location.href.slice(window.location.href.indexOf("?")+1).split("&"),f=0;f<e.length;f++)c=e[f].split("="),b.push(c[0]),b[c[0]]=c[1];return void 0!==a&&void 0!==b[a]?b[a]:b};return function(){f.info("init");y={actions:function(){return t},triggers:function(){return p},theme:function(){return B},sk:x,msg:e,log:f,passwordData:u,outputResult:C,checkPassLevel:F,
encryptFormValue:z,fileUpload:G,redirect:A,scrollUp:J,setContentSize:K};q=$.extend({log:f,config:function(){return c},appTheme:function(){return B},appActions:function(){return t},appTriggers:function(){return p},appRequests:function(){return v},appPlugins:function(){return r},evalAction:m,resizeImage:h},y);Object.freeze(y);Object.freeze(q);p=sysPass.Triggers(q);t=sysPass.Actions(q);v=sysPass.Requests(q);"function"===typeof sysPass.Theme&&(B=sysPass.Theme(q));M().then(function(){if(!I()&&(""!==c.PK&&
n(),!1===c.COOKIES_ENABLED&&e.sticky(c.LANG[64]),w(),L(),0<c.PLUGINS.length)){f.info(c.PLUGINS);f.info("initPlugins");for(var a=0;a<c.PLUGINS.length;a++){var g=c.PLUGINS[a];"function"===typeof sysPass.Plugin[g]&&(r[g]=sysPass.Plugin[g](q))}Object.freeze(r);!0===c.LOGGEDIN&&!0===c.CHECK_UPDATES&&b()}});return y}()};
c.IMPORT_ALLOWED_EXTS=a.import_allowed_exts;c.FILES_ALLOWED_EXTS=a.files_allowed_exts;Object.freeze(c)})},H=function(a){for(var b=[],c,e=window.location.href.slice(window.location.href.indexOf("?")+1).split("&"),f=0;f<e.length;f++)c=e[f].split("="),b.push(c[0]),b[c[0]]=c[1];return void 0!==a&&void 0!==b[a]?b[a]:b},N=function(a){var b=0,c="",e="";p.complexity.symbols&&(c+="!\"\\\u00b7@|#$~%&/()=?'\u00bf\u00a1^*[]\u00b7;,_-{}<>");p.complexity.numbers&&(c+="1234567890");p.complexity.chars&&(c+="abcdefghijklmnopqrstuvwxyz",
p.complexity.uppercase&&(c+="ABCDEFGHIJKLMNOPQRSTUVWXYZ"));for(;b++<p.complexity.numlength;)e+=c.charAt(Math.floor(Math.random()*(c.length-1)+0));p.passLength=e.length;"function"===typeof a&&a(e,zxcvbn(e))};return function(){f.info("init");y={actions:function(){return u},triggers:function(){return q},theme:function(){return B},sk:x,msg:e,log:f,passwordData:p,outputResult:C,checkPassLevel:F,encryptFormValue:z,fileUpload:G,redirect:A,scrollUp:J,setContentSize:K,generateRandomPass:N};r=$.extend({log:f,
config:function(){return c},appTheme:function(){return B},appActions:function(){return u},appTriggers:function(){return q},appRequests:function(){return v},appPlugins:function(){return t},evalAction:m,resizeImage:h},y);Object.freeze(y);Object.freeze(r);q=sysPass.Triggers(r);u=sysPass.Actions(r);v=sysPass.Requests(r);"function"===typeof sysPass.Theme&&(B=sysPass.Theme(r));M().then(function(){if(!I()&&(""!==c.PK&&n(),!1===c.COOKIES_ENABLED&&e.sticky(c.LANG[64]),w(),L(),0<c.PLUGINS.length)){f.info(c.PLUGINS);
f.info("initPlugins");for(var a=0;a<c.PLUGINS.length;a++){var g=c.PLUGINS[a];"function"===typeof sysPass.Plugin[g]&&(t[g]=sysPass.Plugin[g](r))}Object.freeze(t);!0===c.LOGGEDIN&&!0===c.CHECK_UPDATES&&b()}});return y}()};