Files
sysPass/public/js/app-main.min.js
nuxsmin a00b1fb3e9 * [ADD] Unit testing. Work in progress
* [MOD] Code refactoring
* [FIX] Minor bugfixes
2018-08-06 10:16:29 +02:00

28 lines
12 KiB
JavaScript

var $jscomp={scope:{},findInternal:function(b,l,h){b instanceof String&&(b=String(b));for(var m=b.length,n=0;n<m;n++){var w=b[n];if(l.call(h,w,n,b))return{i:n,v:w}}return{i:-1,v:void 0}}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(b,l,h){if(h.get||h.set)throw new TypeError("ES3 does not support getters and setters.");b!=Array.prototype&&b!=Object.prototype&&(b[l]=h.value)};
$jscomp.getGlobal=function(b){return"undefined"!=typeof window&&window===b?b:"undefined"!=typeof global?global:b};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(b,l,h,m){if(l){h=$jscomp.global;b=b.split(".");for(m=0;m<b.length-1;m++){var n=b[m];n in h||(h[n]={});h=h[n]}b=b[b.length-1];m=h[b];l=l(m);l!=m&&null!=l&&$jscomp.defineProperty(h,b,{configurable:!0,writable:!0,value:l})}};
$jscomp.polyfill("Array.prototype.find",function(b){return b?b:function(b,h){return $jscomp.findInternal(this,b,h).v}},"es6-impl","es3");$jscomp.SYMBOL_PREFIX="jscomp_symbol_";$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(b){return $jscomp.SYMBOL_PREFIX+(b||"")+$jscomp.symbolCounter_++};
$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 t)"function"===typeof t[a].checkVersion&&t[a].checkVersion().then(function(a){0===a.status&&void 0!==a.data.plugin&&d.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(),e=.9*$(window).height(),b={width:a.width(),height:a.height()},c={calc:0,main:0,secondary:0,factor:.9,rel:b.width/b.height},d=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,d(a));return a},D=function(){c.main=g;c.secondary=e;var k=d(c);a.css({width:k.main,height:k.calc});b.width=k.main;b.height=k.calc},E=function(){c.main=
e;c.secondary=g;var k=d(c);a.css({width:k.calc,height:k.main});b.width=k.calc;b.height=k.main};b.width>g?D():b.height>e&&(f.info("height"),E());return b},m=function(a,g){f.info("Eval: "+a);if("function"===typeof a)a(g);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=u.account.copyPass($(this)).done(function(a){if(0!==a.status)return d.out(a),!1;x.set(a.csrf)});!1!==a&&clipboard.copy(a.responseJSON.data.accpass).then(function(){d.ok(c.LANG[45])},function(a){d.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){d.error(c.LANG[46])})}).on("click",".clip-pass-icon",function(){clipboard.copy(l($(this.dataset.clipboardTarget).val())).then(function(){d.ok(c.LANG[45])},function(a){d.error(c.LANG[46])})}).on("click",".clip-pass-field",function(){clipboard.copy(l(document.getElementById(this.dataset.clipboardTarget).dataset.pass)).then(function(){d.ok(c.LANG[45])},function(a){d.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 e=$("#password-level-"+b.attr("id")),g=a.score;e.removeClass("weak good strong strongest");0===p.passLength?e.attr("data-level-msg",""):p.passLength<p.minPasswordLength?e.attr("data-level-msg",c.LANG[11]).addClass("weak"):0===g?e.attr("data-level-msg",c.LANG[9]+" - "+a.feedback.warning).addClass("weak"):1===g||2===g?e.attr("data-level-msg",
c.LANG[8]+" - "+a.feedback.warning).addClass("good"):3===g?e.attr("data-level-msg",c.LANG[7]).addClass("strong"):4===g&&e.attr("data-level-msg",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},e={actionId:a.data("action-id"),
itemId:a.data("item-id"),sk:x.get()},k={requestDoneAction:"",setRequestData:function(a){$.extend(e,a)},getRequestData:function(){return e},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);e.sk=x.get();Object.keys(e).forEach(function(a){b.append(a,e[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(),d.ok(a)):10===b?u.main.logout():d.error(a)})},l=function(a){if(5<a.length)d.error(c.LANG[17]+" (Max: 5)");else for(var b=0;b<a.length;b++){var e=a[b];if(e.size/1E3>c.MAX_FILE_SIZE)d.error(c.LANG[18]+"<br>"+e.name+" (Max: "+c.MAX_FILE_SIZE+")");else{var g;a:{g=e.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]):d.error(c.LANG[19]+"<br>"+e.name)}}};window.File&&window.FileList&&
window.FileReader?function(){f.info("fileUpload:init");var e=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(){e.click()})}():b(!0);return k},A=function(a){window.location.replace(a)},I=function(){f.info("checkLogout");return"login/logout"===
H("r")?(d.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:[]},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()},d={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 e={timeOut:0};"function"===typeof b&&(e.onHidden=b);toastr.warning(a,c.LANG[60],e)},out:function(a){if("object"===typeof a){var b=a.status,e=a.description;void 0!==a.messages&&0<a.messages.length&&(e=e+"<br>"+a.messages.join("<br>"));switch(b){case 0:d.ok(e);break;case 1:d.error(e);break;case 2:d.warn(e);break;case 10:u.main.logout();
break;case 100:d.ok(e);d.sticky(e);break;case 101:d.error(e);d.sticky(e);break;case 102:d.warn(e);d.sticky(e);break;default:d.error(e)}}},html:{error:function(a){return'<p class="error round">Oops...<br>'+c.LANG[1]+"<br>"+a+"</p>"}}};Object.freeze(d);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){void 0!==a.data&&(c.LANG=a.data.lang,c.PK=a.data.pk,c.CHECK_UPDATES=a.data.check_updates,c.CHECK_NOTICES=a.data.check_notices,c.CRYPT.setPublicKey(a.data.pk),c.TIMEZONE=a.data.timezone,c.LOCALE=a.data.locale,c.DEBUG=
a.data.debug,c.MAX_FILE_SIZE=parseInt(a.data.max_file_size),c.COOKIES_ENABLED=a.data.cookies_enabled,c.PLUGINS=a.data.plugins,c.LOGGEDIN=a.data.loggedin,c.AUTHBASIC_AUTOLOGIN=a.data.authbasic_autologin,c.IMPORT_ALLOWED_EXTS=a.data.import_allowed_exts,c.FILES_ALLOWED_EXTS=a.data.files_allowed_exts,Object.freeze(c))})},H=function(a){for(var b=[],c,d=window.location.href.slice(window.location.href.indexOf("?")+1).split("&"),f=0;f<d.length;f++)c=d[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="",d="";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;)d+=c.charAt(Math.floor(Math.random()*(c.length-1)+0));p.passLength=d.length;"function"===typeof a&&a(d,zxcvbn(d))},O=function(){var a=String.fromCharCode(Math.floor(25*Math.random()+
65));do{var b=Math.floor(42*Math.random()+48);if(58>b||64<b)a+=String.fromCharCode(b)}while(32>a.length);return a.toLowerCase()};return function(){f.info("init");y={actions:function(){return u},triggers:function(){return q},theme:function(){return B},sk:x,msg:d,log:f,passwordData:p,outputResult:C,checkPassLevel:F,encryptFormValue:z,fileUpload:G,redirect:A,scrollUp:J,setContentSize:K,generateRandomPass:N,uniqueId:O};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&&d.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}()};