Files
sysPass/js/functions.min.js
2016-09-21 10:27:04 +02:00

1 line
21 KiB
JavaScript

var sysPass=sysPass||{};sysPass.createNS=function(d){var e=d.split(".");var c=sysPass;if(e[0]==="sysPass"){e=e.slice(1)}for(var a=0;a<e.length;a++){var b=e[a];if(typeof c[b]==="undefined"){c[b]={}}c=c[b]}return c};sysPass.createNS("sysPass.Util");sysPass.Util.Common=function($){var APP_ROOT,LANG,PK,MAX_FILE_SIZE;var order={key:0,dir:0};var passToClip=0;var windowAdjustSize=450;var timeout;var passwordData={passLength:0,minPasswordLength:8,complexity:{numbers:true,symbols:true,uppercase:true,numlength:12}};var elements={content:function(){return $("#content")},frmSearch:function(){return $("#frmSearch")}};var encrypt=new JSEncrypt();$(document).ready(function(){initializeClipboard();PK!==""&&bindPassEncrypt()});var getEnvironment=function(){var path=window.location.pathname.split("/");var rootPath=function(){var fullPath="";for(var i=1;i<=path.length-2;i++){fullPath+="/"+path[i]}return fullPath};var url=window.location.protocol+"//"+window.location.host+rootPath();$.ajax({type:"GET",url:url+"/ajax/ajax_getEnvironment.php",dataType:"json",async:false,data:{isAjax:1},success:function(json){APP_ROOT=json.app_root;LANG=json.lang;PK=json.pk;MAX_FILE_SIZE=json.max_file_size;encrypt.setPublicKey(PK)}})};getEnvironment();var doAction=function(actionId,lastAction,itemId){var data={actionId:actionId,lastAction:lastAction,itemId:itemId,isAjax:1};$.ajax({type:"POST",dataType:"html",url:APP_ROOT+"/ajax/ajax_getContent.php",data:data,success:function(response){elements.content().html(response);setContentSize();scrollUp()},error:function(){elements.content().html(resMsg("nofancyerror"))}})};var setContentSize=function(){var container=$("#container");if(container.hasClass("content-no-auto-resize")){return}var totalHeight=elements.content().height()+200;container.css("height",totalHeight)};var scrollUp=function(){$("html, body").animate({scrollTop:0},"slow")};var clearSearch=function(clearStart){var $frmSearch=elements.frmSearch();if(clearStart===1){$frmSearch.find('input[name="start"]').val(0);return}document.frmSearch.search.value="";$frmSearch.find("select").prop("selectedIndex",-1).trigger("chosen:updated");$frmSearch.find('input[name="start"], input[name="skey"], input[name="sorder"]').val(0);order.key=0;order.dir=0};var mkChosen=function(options){$("#"+options.id).chosen({allow_single_deselect:true,placeholder_text_single:options.placeholder,disable_search_threshold:10,no_results_text:options.noresults,width:"200px"})};var accSearch=function(continous,event){elements.frmSearch().find('input[name="start"]').val(0);doSearch()};var searchSort=function(skey,start,dir){if(typeof skey==="undefined"||typeof start==="undefined"){return false}var frmSearch=$("#frmSearch");frmSearch.find('input[name="skey"]').val(skey);frmSearch.find('input[name="sorder"]').val(dir);frmSearch.find('input[name="start"]').val(start);doSearch()};var doSearch=function(){var frmData=$("#frmSearch").serialize();$.ajax({type:"POST",dataType:"html",url:APP_ROOT+"/ajax/ajax_search.php",data:frmData,success:function(response){$("#resBuscar").html(response).css("max-height",$("html").height()-windowAdjustSize);scrollUp()},error:function(){$("#resBuscar").html(resMsg("nofancyerror"))}})};var showSearchOrder=function(){if(order.key){var searchSort=$("#search-sort-"+order.key);searchSort.addClass("filterOn");if(order.dir===0){searchSort.append('<img src="imgs/arrow_down.png" style="width:17px;height:12px;" />')}else{searchSort.append('<img src="imgs/arrow_up.png" style="width:17px;height:12px;" />')}}};var navLog=function(start,current){if(typeof start==="undefined"){return false}$.ajax({type:"POST",dataType:"html",url:APP_ROOT+"/ajax/ajax_eventlog.php",data:{start:start,current:current},success:function(response){elements.content().html(response)},error:function(){elements.content().html(resMsg("nofancyerror"))}})};var viewPass=function(id,show,history){$.ajax({type:"POST",url:APP_ROOT+"/ajax/ajax_viewpass.php",dataType:"json",async:false,data:{accountid:id,full:show,isHistory:history,isAjax:1},success:function(json){if(json.status===10){doLogout();return}if(show===false||show===0){$("#clip-pass-text").html(json.accpass);return true}$("<div></div>").dialog({modal:true,title:LANG[47],width:"auto",open:function(){var thisDialog=$(this);var content;var pass="";var clipboardUserButton='<button class="dialog-clip-user-button ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-primary" data-clipboard-target=".dialog-user-text"><span class="ui-button-icon-primary ui-icon ui-icon-clipboard"></span><span class="ui-button-text">'+LANG[33]+"</span></button>";var clipboardPassButton='<button class="dialog-clip-pass-button ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-primary" data-clipboard-target=".dialog-pass-text"><span class="ui-button-icon-primary ui-icon ui-icon-clipboard"></span><span class="ui-button-text">'+LANG[34]+"</span></button>";var useImage=json.useimage;var user='<p class="dialog-user-text">'+json.acclogin+"</p>";if(json.status===0){if(useImage===0){pass='<p class="dialog-pass-text">'+json.accpass+"</p>"}else{pass='<img class="dialog-pass-text" src="data:image/png;base64,'+json.accpass+'" />';clipboardPassButton=""}content=user+pass+'<div class="dialog-buttons">'+clipboardUserButton+clipboardPassButton+"</div>"}else{content='<span class="altTxtRed">'+json.description+"</span>";thisDialog.dialog("option","buttons",[{text:"Ok",icons:{primary:"ui-icon-close"},click:function(){thisDialog.dialog("close")}}])}thisDialog.html(content);thisDialog.dialog("option","position","center");$(this).parent().on("mouseleave",function(){clearTimeout(timeout);timeout=setTimeout(function(){thisDialog.dialog("close")},30000)})},close:function(){clearTimeout(timeout);$(this).dialog("destroy")}})}})};var getUrlVars=function(){var vars=[],hash;var hashes=window.location.href.slice(window.location.href.indexOf("?")+1).split("&");for(var i=0;i<hashes.length;i++){hash=hashes[i].split("=");vars.push(hash[0]);vars[hash[0]]=hash[1]}return vars};var doLogin=function(){var data=$("#frmLogin").serialize();$("#btnLogin").prop("disabled",true);$.ajax({type:"POST",dataType:"json",url:APP_ROOT+"/ajax/ajax_doLogin.php",data:data,success:function(json){var status=json.status;var description=json.description;if(status===0||status===2){location.href=description}else{if(status===3||status===4){resMsg("error",description);$("#user").val("").focus();$("#pass").val("");$("#mpass").prop("disabled",false);$("#smpass").val("").show()}else{if(status===5){resMsg("warn",description,"","location.href = 'index.php';")}else{$("#user").val("").focus();$("#pass").val("");resMsg("error",description)}}}},complete:function(){$("#btnLogin").prop("disabled",false);sysPassUtil.hideLoading()},statusCode:{404:function(){var txt=LANG[1]+"<p>"+LANG[13]+"</p>";resMsg("error",txt)}}});return false};var doLogout=function(){var url=window.location.search;location.href=url.length>0?"index.php"+url+"&logout=1":"index.php?logout=1"};var checkLogout=function(){var session=getUrlVars()["session"];if(session===0){resMsg("warn",LANG[2],"","location.search = ''")}};var redirect=function(url){location.href=url};var saveAccount=function(frm){var data=$("#"+frm).serialize();var id=$('input[name="accountid"]').val();var action=$('input[name="next"]').val();$.ajax({type:"POST",dataType:"json",url:APP_ROOT+"/ajax/ajax_accountSave.php",data:data,success:function(json){var status=json.status;var description=json.description;if(status===0){resMsg("ok",description);if(action&&id){doAction(action,1,id)}else{if(action){doAction(action,1)}}}else{if(status===10){doLogout()}else{resMsg("error",description)}}},error:function(jqXHR,textStatus,errorThrown){var txt=LANG[1]+"<p>"+errorThrown+textStatus+"</p>";resMsg("error",txt)}})};var delAccount=function(id,action,sk){var data={accountid:id,actionId:action,sk:sk};var atext='<div id="alert"><p id="alert-text">'+LANG[3]+"</p></div>";var url="/ajax/ajax_accountSave.php";alertify.okBtn(LANG[43]).cancelBtn(LANG[44]).confirm(atext,function(e){sendAjax(data,url)},function(e){e.preventDefault();alertify.error(LANG[44])})};var sendRequest=function(){var url="/ajax/ajax_sendRequest.php";var data=$("#frmRequestModify").serialize();sendAjax(data,url)};var configMgmt=function(action,obj){var url;switch(action){case"config":url="/ajax/ajax_configSave.php";break;case"export":url="/ajax/ajax_backup.php";break;case"import":url="/ajax/ajax_migrate.php";break;case"preferences":url="/ajax/ajax_userPrefsSave.php";break;default:return}var data=$(obj).serialize();sendAjax(data,url)};var downFile=function(id,sk,action){var data={fileId:id,sk:sk,action:action};if(action==="view"){$.ajax({type:"POST",cache:false,url:APP_ROOT+"/ajax/ajax_files.php",data:data,success:function(response){if(response){$.fancybox(response,{padding:[10,10,10,10]});setTimeout(function(){$.fancybox.update()},1000)}else{resMsg("error",LANG[14])}}})}else{if(action==="download"){$.fileDownload(APP_ROOT+"/ajax/ajax_files.php",{httpMethod:"POST",data:data})}}};var getFiles=function(id,isDel,sk){var data={id:id,del:isDel,sk:sk};$.ajax({type:"GET",cache:false,url:APP_ROOT+"/ajax/ajax_getFiles.php",data:data,success:function(response){$("#downFiles").html(response)}})};var delFile=function(id,sk,accid){var atext='<div id="alert"><p id="alert-text">'+LANG[15]+"</p></div>";alertify.okBtn(LANG[43]).cancelBtn(LANG[44]).confirm(atext,function(e){var data={fileId:id,action:"delete",sk:sk};$.post(APP_ROOT+"/ajax/ajax_files.php",data,function(data){resMsg("ok",data);$("#downFiles").load(APP_ROOT+"/ajax/ajax_getFiles.php?id="+accid+"&del=1&isAjax=1&sk="+sk)})},function(e){e.preventDefault();alertify.error(LANG[44])})};var fileUpload=function(opts){var options={targetId:"",url:""};var requestDoneAction,requestData={},beforeSendAction;var setFn={setRequestDoneAction:function(a){requestDoneAction=a},setRequestData:function(d){requestData=d},setBeforeSendAction:function(a){beforeSendAction=a}};options=opts;if(typeof options.targetId==="undefined"||options.targetId===""){return setFn}var dropzone=document.getElementById(options.targetId);var sendFile=function(file){if(typeof options.url==="undefined"||options.url===""){return false}var fd=new FormData();fd.append("inFile",file);fd.append("isAjax",1);Object.keys(requestData).forEach(function(key){fd.append(key,requestData[key])});$.ajax({type:"POST",dataType:"json",cache:false,processData:false,contentType:false,url:APP_ROOT+options.url,data:fd,success:function(json){var status=json.status;var description=json.description;if(status===0){if(typeof requestDoneAction==="function"){requestDoneAction()}resMsg("ok",description)}else{if(status===10){doLogout()}else{resMsg("error",description)}}},error:function(jqXHR,textStatus,errorThrown){var txt=LANG[1]+"<p>"+errorThrown+textStatus+"</p>";resMsg("error",txt)}})};var checkFileSize=function(size){return(size/1000>MAX_FILE_SIZE)};var checkFileExtension=function(name){var file_exts_ok=dropzone.getAttribute("data-files-ext").toLowerCase().split(",");for(var i=0;i<=file_exts_ok.length;i++){if(name.indexOf(file_exts_ok[i])!==-1){return true}}return false};var handleFiles=function(filesArray){if(filesArray.length>5){resMsg("error",LANG[17]+" (Max: 5)");return}for(var i=0;i<filesArray.length;i++){var file=filesArray[i];if(checkFileSize(file.size)){resMsg("error",LANG[18]+"<br>"+file.name+" (Max: "+MAX_FILE_SIZE+")")}else{if(!checkFileExtension(file.name)){resMsg("error",LANG[19]+"<br>"+file.name)}else{sendFile(filesArray[i])}}}};var init=function(){dropzone.ondragover=dropzone.ondragenter=function(event){event.stopPropagation();event.preventDefault()};dropzone.ondrop=function(event){event.stopPropagation();event.preventDefault();if(typeof beforeSendAction==="function"){beforeSendAction()}handleFiles(event.dataTransfer.files)};var fallback=initForm(false);dropzone.onclick=function(){fallback.click()}};var initForm=function(display){var form=document.getElementById("fileUploadForm");var formTags=form.getElementsByTagName("input");form.style.display=(display===false)?"none":"";if(formTags[0].type==="file"){formTags[0].addEventListener("change",function(){if(typeof beforeSendAction==="function"){beforeSendAction()}handleFiles(this.files)},false)}return formTags[0]};if(window.File&&window.FileList&&window.FileReader){init()}else{initForm(true)}return setFn};var sendAjax=function(data,url){$.ajax({type:"POST",dataType:"json",url:APP_ROOT+url,data:data,success:function(json){var status=json.status;var description=json.description;var action=json.action;switch(status){case 0:$.fancybox.close();resMsg("ok",description,undefined,action);break;case 1:$.fancybox.close();$(":input[type=password]").val("");resMsg("error",description,undefined,action);break;case 2:$("#resFancyAccion").html('<span class="altTxtError">'+description+"</span>").show();break;case 3:$.fancybox.close();resMsg("warn",description,undefined,action);break;case 10:doLogout();break;default:return}},error:function(jqXHR,textStatus,errorThrown){var txt=LANG[1]+"<p>"+errorThrown+textStatus+"</p>";resMsg("error",txt)}})};var usrUpdPass=function(object,actionId,sk){var userId=$(object).attr("data-itemid");var data={userId:userId,actionId:actionId,sk:sk,isAjax:1};$.ajax({type:"GET",cache:false,url:APP_ROOT+"/ajax/ajax_usrpass.php",data:data,success:function(data){if(data.length===0){doLogout()}else{$.fancybox(data,{padding:0})}}})};var appMgmtData=function(obj,actionId,sk){var itemId=$(obj).attr("data-itemid");var activeTab=$(obj).attr("data-activetab");var data={itemId:itemId,actionId:actionId,sk:sk,activeTab:activeTab,isAjax:1};var url=APP_ROOT+"/ajax/ajax_appMgmtData.php";$.ajax({type:"POST",dataType:"html",url:url,data:data,success:function(response){$.fancybox(response,{padding:[0,10,10,10]})},error:function(jqXHR,textStatus,errorThrown){var txt=LANG[1]+"<p>"+errorThrown+textStatus+"</p>";resMsg("error",txt)}})};var appMgmtDelete=function(obj,actionId,sk){var itemId=$(obj).attr("data-itemid");var activeTab=$(obj).attr("data-activetab");var nextActionId=$(obj).attr("data-nextactionid");var atext='<div id="alert"><p id="alert-text">'+LANG[12]+"</p></div>";var url="/ajax/ajax_appMgmtSave.php";var data={itemId:itemId,actionId:actionId,sk:sk,activeTab:activeTab,onCloseAction:nextActionId};alertify.okBtn(LANG[43]).cancelBtn(LANG[44]).confirm(atext,function(e){sendAjax(data,url)},function(e){e.preventDefault();alertify.error(LANG[44])})};var appMgmtSave=function(frmId){var url="/ajax/ajax_appMgmtSave.php";var data=$("#"+frmId).serialize();sendAjax(data,url)};var checkUpds=function(){$.ajax({type:"GET",dataType:"html",url:APP_ROOT+"/ajax/ajax_checkUpds.php",timeout:10000,success:function(response){$("#updates").html(response);if(typeof componentHandler!=="undefined"){componentHandler.upgradeDom()}},error:function(jqXHR,textStatus,errorThrown){$("#updates").html("!")}})};var clearEventlog=function(sk){var atext='<div id="alert"><p id="alert-text">'+LANG[20]+"</p></div>";alertify.okBtn(LANG[43]).cancelBtn(LANG[44]).confirm(atext,function(e){var data={clear:1,sk:sk,isAjax:1};var url="/ajax/ajax_eventlog.php";sendAjax(data,url)},function(e){e.preventDefault();alertify.error(LANG[44])})};var showOptional=function(me){me.hide();var actions=me.parent().children(".actions-optional");actions.show(250)};var getTime=function(){var t=new Date();return t.getTime()};var checkPassLevel=function(password,dst){var level=zxcvbn(password);outputResult(level.score,dst)};var outputResult=function(level,dstId){var complexity,selector=".passLevel-"+dstId;complexity=$(selector);complexity.removeClass("weak good strong strongest");if(passwordData.passLength===0){complexity.attr("title","").empty()}else{if(passwordData.passLength<passwordData.minPasswordLength){complexity.attr("title",LANG[11]).addClass("weak")}else{if(level===0){complexity.attr("title",LANG[9]).addClass("weak")}else{if(level===1||level===2){complexity.attr("title",LANG[8]).addClass("good")}else{if(level===3){complexity.attr("title",LANG[7]).addClass("strong")}else{if(level===4){complexity.attr("title",LANG[10]).addClass("strongest")}}}}}}};var resMsg=function(type,txt,url,action){if(typeof url!=="undefined"){$.ajax({url:url,type:"get",dataType:"html",async:false,success:function(data){txt=data}})}var html;txt=txt.replace(/(\\n|;;)/g,"<br>");switch(type){case"ok":alertify.success(txt);break;case"error":alertify.error(txt);break;case"warn":alertify.log(txt);break;case"nofancyerror":html='<p class="error round">Oops...<br>'+LANG[1]+"<br>"+txt+"</p>";return html;default:alertify.error(txt);break}if(typeof action!=="undefined"){eval(action)}};var checkLdapConn=function(){var form=$("#frmLdap");sendAjax(form.serialize(),"/ajax/ajax_checkLdap.php")};var goLogin=function(){setTimeout(function(){location.href="index.php"},2000)};var getBrowser=function(){var browser;var ua=navigator.userAgent;var re=new RegExp("(MSIE|Firefox)[ /]?([0-9]{1,}[.0-9]{0,})","i");if(re.exec(ua)!==null){browser=RegExp.$1}return browser};var chosenDetect=function(){var selectWidth="250px";var searchTreshold=10;$(".sel-chosen-usergroup").chosen({placeholder_text_single:LANG[21],placeholder_text_multiple:LANG[21],disable_search_threshold:searchTreshold,no_results_text:LANG[26],width:selectWidth});$(".sel-chosen-user").chosen({placeholder_text_single:LANG[22],placeholder_text_multiple:LANG[22],disable_search_threshold:searchTreshold,no_results_text:LANG[26],width:selectWidth});$(".sel-chosen-profile").chosen({placeholder_text_single:LANG[23],disable_search_threshold:searchTreshold,no_results_text:LANG[26],width:selectWidth});$(".sel-chosen-customer").each(function(){var deselect=$(this).hasClass("sel-chosen-deselect");$(this).chosen({allow_single_deselect:deselect,placeholder_text_single:LANG[24],placeholder_text_multiple:LANG[24],disable_search_threshold:searchTreshold,no_results_text:LANG[26],width:selectWidth})});$(".sel-chosen-category").each(function(){var deselect=$(this).hasClass("sel-chosen-deselect");$(this).chosen({allow_single_deselect:deselect,placeholder_text_single:LANG[25],placeholder_text_multiple:LANG[25],disable_search_threshold:searchTreshold,no_results_text:LANG[26],width:selectWidth})});$(".sel-chosen-action").each(function(){var deselect=$(this).hasClass("sel-chosen-deselect");$(this).chosen({allow_single_deselect:deselect,placeholder_text_single:LANG[39],placeholder_text_multiple:LANG[39],disable_search_threshold:searchTreshold,no_results_text:LANG[26],width:selectWidth})});$(".sel-chosen-ns").chosen({disable_search:true,width:selectWidth})};var checkboxDetect=function(container){$(container).find(".checkbox").button({icons:{primary:"ui-icon-transferthick-e-w"}}).click(function(){if($(this).prop("checked")===true){$(this).button("option","label",LANG[40])}else{$(this).button("option","label",LANG[41])}})};var encryptFormValue=function(inputId){var input=$(inputId);var curValue=input.val();var nextName=inputId+"-encrypted";var nextInput=input.next(':input[name="'+nextName+'"]');if((curValue!==""&&nextInput.attr("name")!==nextName)||(curValue!==""&&nextInput.attr("name")===nextName&&parseInt(input.next().val())!==curValue.length)){var passEncrypted=encrypt.encrypt(curValue);input.val(passEncrypted);if(nextInput.length>0){nextInput.val(passEncrypted.length)}else{input.after('<input type="hidden" name="'+nextName+'" value="'+passEncrypted.length+'" />')}}};var initializeClipboard=function(){var clipboard=new Clipboard(".clip-pass-button",{text:function(trigger){sysPassUtil.Common.viewPass(trigger.getAttribute("data-account-id"),false);return $("#clip-pass-text").html()}});clipboard.on("success",function(e){sysPassUtil.Common.resMsg("ok",LANG[45])});clipboard.on("error",function(e){sysPassUtil.Common.resMsg("error",LANG[46])});var clipboardPass=new Clipboard(".dialog-clip-pass-button");var clipboardUser=new Clipboard(".dialog-clip-user-button");clipboardPass.on("success",function(e){$(".dialog-pass-text").addClass("dialog-clip-pass-copy round");e.clearSelection()});clipboardUser.on("success",function(e){e.clearSelection()})};var bindPassEncrypt=function(){$("body").delegate(":input[type=password]","blur",function(e){if($(this).hasClass("passwordfield__no-pki")){return}var id=$(this).attr("id");encryptFormValue("#"+id)}).delegate(":input[type=password]","keypress",function(e){if(e.keyCode===13){e.preventDefault();var form=$(this).closest("form");var id=$(this).attr("id");encryptFormValue("#"+id);form.submit()}})};return{accSearch:accSearch,appMgmtData:appMgmtData,appMgmtSave:appMgmtSave,appMgmtDelete:appMgmtDelete,checkboxDetect:checkboxDetect,checkLdapConn:checkLdapConn,checkPassLevel:checkPassLevel,checkUpds:checkUpds,clearEventlog:clearEventlog,clearSearch:clearSearch,chosenDetect:chosenDetect,configMgmt:configMgmt,delAccount:delAccount,delFile:delFile,doAction:doAction,doLogin:doLogin,doLogout:doLogout,downFile:downFile,encryptFormValue:encryptFormValue,fileUpload:fileUpload,getFiles:getFiles,navLog:navLog,outputResult:outputResult,redirect:redirect,resMsg:resMsg,searchSort:searchSort,saveAccount:saveAccount,sendAjax:sendAjax,sendRequest:sendRequest,setContentSize:setContentSize,scrollUp:scrollUp,showOptional:showOptional,showSearchOrder:showSearchOrder,usrUpdPass:usrUpdPass,viewPass:viewPass,passwordData:passwordData,passToClip:passToClip,APP_ROOT:APP_ROOT,LANG:LANG,PK:PK}}(jQuery);