!function(){"use strict";angular.module("llngManager",["ui.tree","ui.bootstrap","llApp","ngCookies"]).controller("TreeCtrl",["$scope","$http","$location","$q","$uibModal","$translator","$cookies","$htmlParams","$timeout",function(e,t,n,a,r,o,i,d,u){var s,l,c,f,p,m,g,w,h;return e.links=window.links,e.menu=d.menu,e.menulinks=window.menulinks,e.staticPrefix=window.staticPrefix,e.formPrefix=window.formPrefix,e.availableLanguages=window.availableLanguages,e.waiting=!0,e.showM=!1,e.showT=!1,e.form="home",e.currentCfg={},e.clipboardAvailable=Boolean(navigator.clipboard),e.confPrefix=window.confPrefix,e.message={},e.result="",e.translateTitle=function(e){return o.translateField(e,"title")},e.translateP=o.translateP,e.translate=o.translate,e.helpUrl="start.html#configuration",e.setShowHelp=function(t){var n;return null==t&&(t=!e.showH),e.showH=t,(n=new Date(Date.now())).setFullYear(n.getFullYear()+1),i.put("showhelp",t?"true":"false",{expires:n})},e.showH="false"!==i.get("showhelp"),null==e.showH&&e.setShowHelp(!0),g=function(t){var n,a;return n=t.status,a=t.statusLine,e.waiting=!1,403===n?e.message={title:"forbidden",message:"",items:[]}:401===n?(console.debug("Authentication needed"),e.message={title:"authenticationNeeded",message:"__waitOrF5__",items:[]}):e.message=400===n||n>0?{title:"badRequest",message:a,items:[]}:{title:"networkProblem",message:"",items:[]},e.showModal("message.html")},e.showModal=function(t,n){var o,i;return i=r.open({templateUrl:t,controller:"ModalInstanceCtrl",size:"lg",resolve:{elem:function(){return function(t){return e[t]}},set:function(){return function(t,n){return e[t]=n}},init:function(){return n}}}),o=a.defer(),i.result.then((function(t){return e.message={title:"",message:"",items:[]},o.resolve(t)}),(function(t){return e.message={title:"",message:"",items:[]},o.reject(t)})),o.promise},e.menuClick=function(t){if(t.popup)window.open(t.popup);else switch(t.action||(t.action=t.title),typeof t.action){case"function":t.action(e.currentNode,e);break;case"string":e[t.action]();break;default:console.warn("Unknown action type",typeof t.action)}return e.showM=!1},e.home=function(){return e.form="home",e.showM=!1},s=function(t){var a;if(e.message={title:"",message:"",items:[],itemsE:[],itemsNC:[],itemsW:[]},t.needConfirm&&(e.confirmNeeded=!0),t.message&&(e.message.message=t.message),t.details){for(a in t.details)"__changes__"!==a&&("__needConfirmation__"===a?(e.message.itemsNC.push({message:a,items:t.details[a]}),console.debug("NeedConfirmation:",e.message.itemsNC)):"__warnings__"===a?(e.message.itemsW.push({message:a,items:t.details[a]}),console.debug("Warnings:",e.message.itemsW)):(e.message.itemsE.push({message:a,items:t.details[a]}),console.debug("Errors:",e.message.itemsE)));e.message.items=e.message.itemsE.concat(e.message.itemsNC.concat(e.message.itemsW))}return e.waiting=!1,1===t.result?(n.path("/confs/"),e.message.title="successfullySaved"):e.message.title="saveReport",e.showModal("message.html")},e.downloadConf=function(){return window.open(e.confPrefix+e.currentCfg.cfgNum+"?full=1")},e.downloadOidcMetadata=function(){return window.open(e.confPrefix+e.currentCfg.cfgNum+"?oidcMetadata=1")},e.downloadSamlMetadata=function(){return window.open(e.confPrefix+e.currentCfg.cfgNum+"?samlMetadata=1")},e.save=function(){return e.showModal("save.html").then((function(){return e.waiting=!0,e.data.push({id:"cfgLog",title:"cfgLog",data:e.result?e.result:""}),t.post(`${window.confPrefix}?cfgNum=${e.currentCfg.cfgNum}&cfgDate=${e.currentCfg.cfgDate}${e.forceSave?"&force=1":""}`,e.data).then((function(t){return e.data.pop(),s(t.data)}),(function(t){return g(t),e.data.pop()}))}),(function(){console.debug("Saving canceled")})),e.showM=!1},e.saveRawConf=function(n){return e.waiting=!0,t.post(`${window.confPrefix}/raw`,n).then((function(e){return s(e.data)}),g)},e.restore=function(){return e.currentNode=null,e.form="restore"},e.cancel=function(){return e.currentNode.data=null,e.getKey(e.currentNode)},p=1,e._findContainer=function(){return e._findScopeContainer().$modelValue},e._findScopeContainer=function(){var t;for(t=e.currentScope;!t.$modelValue.type.match(/Container$/);)t=t.$parentNodeScope;return t},e._findScopeByKey=function(t){var n;for(n=e.currentScope;n.$modelValue.title!==t;)n=n.$parentNodeScope;return n},e.newGrantRule=function(){var t;return(t=e._findContainer()).nodes.length,t.nodes.push({id:`${t.id}/n${p++}`,title:"New rule",re:'"Message"',comment:"New rule",data:"1",type:"grant"})},e.newRule=function(){var t,n,a;return n=(t=(a=e._findContainer()).nodes.length)>0?t-1:0,a.nodes.splice(n,0,{id:`${a.id}/n${p++}`,title:"New rule",re:"^/new",comment:"New rule",data:"accept",type:"rule"})},e.newPost=function(){var t;return(t=e._findContainer()).nodes.push({id:`${t.id}/n${p++}`,title:"/absolute/path/to/form",data:{},type:"post"})},e.newPostVar=function(){return null==e.currentNode.data.vars&&(e.currentNode.data.vars=[]),e.currentNode.data.vars.push(["var1","$uid"])},e.newAuthChoice=function(){var t;return(t=e._findContainer()).nodes.push({id:`${t.id}/n${p++}`,title:"1_Key",data:["Null","Null","Null"],type:"authChoice"}),e.execFilters(e._findScopeByKey("authParams"))},e.newHashEntry=function(){var t;return(t=e._findContainer()).nodes.push({id:`${t.id}/n${p++}`,title:"new",data:"",type:"keyText"})},e.newCat=function(){var t;return"menuApp"===(t=e.currentScope).$modelValue.type&&(t=t.$parentNodeScope),t.$modelValue.nodes.push({id:`${t.$modelValue.id}/n${p++}`,title:"New category",type:"menuCat",nodes:[]})},e.newApp=function(){var t;return"menuApp"===(t=e.currentScope).$modelValue.type&&(t=t.$parentNodeScope),t.$modelValue.nodes.push({id:`${t.$modelValue.id}/n${p++}`,title:"New application",type:"menuApp",data:{description:"New app description",uri:"https://test.example.com/",tooltip:"New app tooltip",logo:"network.png",display:"auto"}})},e.newCmbMod=function(){var t;return(t=e._findContainer()).nodes.push({id:`${t.id}/n${p++}`,title:"new",type:"cmbModule",data:{type:"LDAP",for:"0",over:[]}}),e.execFilters(e._findScopeByKey("authParams"))},e.newSfExtra=function(){var t;return(t=e._findContainer()).nodes.push({id:`${t.id}/n${p++}`,title:"new",type:"sfExtra",data:{type:"",rule:"",logo:"",level:"",label:"",over:[]}})},e.newSfOver=function(){var t;return(t=e.currentNode.data).over||(t.over=[]),t.over.push(["new"+p++,""])},e.newCmbOver=function(){var t;return(t=e.currentNode.data).over||(t.over=[]),t.over.push(["new"+p++,""])},e.newChoiceOver=function(){var t;return t=e.currentNode.data,console.debug("data",t),t[5]||(t[5]=[]),t[5].push(["new"+p++,""])},e.addHost=function(){var t;return(t=e.currentNode).data||(t.data=[]),t.data.push({k:"newHost",h:[{k:"key",v:"uid"}]})},e.addSamlAttribute=function(){var t;return(t=e._findContainer()).nodes.push({id:`${t.id}/n${p++}`,title:"new",type:"samlAttribute",data:["0","New","",""]})},e.addOidcAttribute=function(){var t;return(t=e._findContainer()).nodes.push({id:`${t.id}/n${p++}`,title:"new",type:"oidcAttribute",data:["","string","auto"]})},e.addVhost=function(){var t;return t=e.domain?`.${e.domain.data}`:".example.com",e.message={title:"virtualHostName",field:"hostname"},e.showModal("prompt.html",t).then((function(){var t;if(t=e.result)return e.addTemplateNode(t,"virtualHost")}))},e.duplicateVhost=function(){var t;return t=e.domain?`.${e.domain.data}`:".example.com",e.message={title:"virtualHostName",field:"hostname"},e.showModal("prompt.html",t).then((function(){var t;return t=e.result,e.duplicateNode(t,"virtualHost",e.currentNode.title)}))},e.addSamlIDP=function(){return e.newTemplateNode("samlIDPMetaDataNode","samlPartnerName","idp-example")},e.addSamlSP=function(){return e.newTemplateNode("samlSPMetaDataNode","samlPartnerName","sp-example")},e.duplicateSamlSp=function(){return e.message={title:"samlPartnerName",field:"name"},e.showModal("prompt.html","sp-copy").then((function(){var t;return t=e.result,e.duplicateNode(t,"samlSPMetaDataNode",e.currentNode.title)}))},e.addOidcOp=function(){return e.newTemplateNode("oidcOPMetaDataNode","oidcOPName","op-example")},e.addOidcRp=function(){return e.newTemplateNode("oidcRPMetaDataNode","oidcRPName","rp-example")},e.duplicateOidcRp=function(){return e.message={title:"oidcRPName",field:"name"},e.showModal("prompt.html","rp-copy").then((function(){var t;return t=e.result,e.duplicateNode(t,"oidcRPMetaDataNode",e.currentNode.title)}))},e.addCasSrv=function(){return e.newTemplateNode("casSrvMetaDataNode","casPartnerName","srv-example")},e.addCasApp=function(){return e.newTemplateNode("casAppMetaDataNode","casPartnerName","app-example")},e.duplicateCasApp=function(){return e.message={title:"casPartnerName",field:"name"},e.showModal("prompt.html","app-copy").then((function(){var t;return t=e.result,e.duplicateNode(t,"casAppMetaDataNode",e.currentNode.title)}))},e.addKey=function(){return e.newTemplateNode("keyNode","keyName","key-example")},e.newTemplateNode=function(t,n,a){return e.message={title:n,field:"name"},e.showModal("prompt.html",a).then((function(){var n;if(n=e.result)return e.addTemplateNode(n,t)}))},e.addTemplateNode=function(t,n){var a,r;for(a=e.currentScope;a.$modelValue.title!==`${n}s`;)a=a.$parentNodeScope;return r={id:`${n}s/new__${t}`,title:t,type:n,nodes:templates(n,`new__${t}`)},w(r.nodes),a.$modelValue.nodes.push(r),a.expand(),r},w=function(e){var t,n,a;for(a=0,t=e.length;a<t;a++)(n=e[a]).cnodes&&n.default&&(delete n.cnodes,n._nodes=n.default),n._nodes?w(n._nodes):(n.default||0===n.default)&&(n.data=n.default);return e},c=function(t){var n,r;return n=a.defer(),r=a.defer(),t._nodes?(f(t),n.resolve()):t.cnodes?l(t).then((function(){return n.resolve()})):t.nodes||t.data?n.resolve():e.getKey(t).then((function(){return n.resolve()})),n.promise.then((function(){var e,n,o,i,d;if(d=[],t.nodes)for(o=0,e=(i=t.nodes).length;o<e;o++)n=i[o],d.push(c(n));return a.all(d).then((function(){return r.resolve()}))})),r.promise},e.duplicateNode=function(t,n,a){var r;return r=e.currentScope,c(e.currentNode).then((function(){for(var o;r.$modelValue.title!==`${n}s`;)r=r.$parentNodeScope;return(o=JSON.parse(JSON.stringify(e.currentNode).replace(/[*]/g,"").replace(new RegExp(a,"g"),"new__"+t))).id=`${n}s/new__${t}`,o.title=t,r.$modelValue.nodes.push(o),o}))},e.del=function(e,t){return e.splice(t,1)},e.deleteEntry=function(){var t;return t=e.currentScope.$parentNodeScope,e.currentScope.remove(),e.displayForm(t)},e.down=function(){var t,n,a,r,o,i,d,u;for(n=e.currentNode.id,a=(i=e.currentScope.$parentNodeScope.$modelValue).nodes.length,t=o=0,r=(d=i.nodes).length;o<r;t=++o)d[t].id===n&&(a=t);return a<i.nodes.length-1&&(u=i.nodes[a],i.nodes[a]=i.nodes[a+1],i.nodes[a+1]=u),a},e.up=function(){var t,n,a,r,o,i,d,u;for(n=e.currentNode.id,a=-1,t=o=0,r=(d=(i=e.currentScope.$parentNodeScope.$modelValue).nodes).length;o<r;t=++o)d[t].id===n&&(a=t);return a>0&&(u=i.nodes[a],i.nodes[a]=i.nodes[a-1],i.nodes[a-1]=u),a},e.inSelect=function(t){var n,a,r;for(a=0,n=(r=e.currentNode.select).length;a<n;a++)if(r[a].k===t)return!0;return!1},e.changeRuleTitle=function(e){return e.title=e.comment.length>0?e.comment:e.re},e.filters={},e.execFilters=function(t){var n,r,o;for(n in t=t||e,o=e.filters)if(r=o[n],e.filters.hasOwnProperty(n))return window.filterFunctions[n](t,a,r);return!1},e.stoggle=function(e){var t;return t=e.$modelValue,f(t),e.toggle()},f=function(t){var n,a,r,o,i,d,u,s,l,c,f;for(d=0,a=(l=["nodes","nodes_cond"]).length;d<a;d++)if(t[`_${i=l[d]}`]){for(t[i]=[],u=0,r=(c=t[`_${i}`]).length;u<r;u++)n=c[u],t[i].push(n);delete t[`_${i}`]}if(t._nodes_filter){if(t.nodes)for(s=0,o=(f=t.nodes).length;s<o;s++)(i=f[s]).onChange=e.execFilters;return e.filters[t._nodes_filter]=t,e.execFilters()}},e.toggle=function(e){return e.toggle()},e.download=function(e){var t;return t=e.$modelValue,l(t)},l=function(n){var r,o;return(r=a.defer()).notify("Trying to get datas"),e.waiting=!0,console.debug(`Trying to get key ${n.cnodes}`),o=encodeURI(n.cnodes),t.get(`${window.confPrefix}${e.currentCfg.cfgNum}/${o}`).then((function(t){var a,o,i,d;if(o=t.data)if(o.error)o.error.match(/setDefault$/)?(n.default?n.nodes=n.default.slice(0):n.nodes=[],delete n.cnodes,r.resolve("Set data to default value")):r.reject(`Server return an error: ${o.error}`);else{for(delete n.cnodes,n.type||(n.type="keyTextContainer"),n.nodes=[],d=0,i=o.length;d<i;d++)(a=o[d]).template&&(a._nodes=templates(a.template,a.title)),n.nodes.push(a),a.type.match(/^rule$/)&&(console.debug("Parse rule AuthnLevel as integer"),a.level&&"string"==typeof a.level&&(a.level=parseInt(a.level,10)));r.resolve("OK")}else r.reject("Empty response from server");return e.waiting=!1}),(function(e){return g(e),r.reject("")})),r.promise},e.openCnode=function(t){return e.download(t).then((function(){return t.toggle()}))},e.copyPath=function(){var t=e.breadCrumb.join(" ยป ");navigator.clipboard.writeText(t).then((function(){e.$apply((function(){e.copySuccess=!0,u((function(){e.copySuccess=!1}),400)}))}))},h=function(t){for(;!t.$modelValue.help&&t.$parentNodeScope;)t=t.$parentNodeScope;return e.helpUrl=t.$modelValue.help||"start.html#configuration"},e.getTrPath=function(e){for(var t=[],n=[],a=e,r=0;a&&a.$modelValue&&r<100;)r+=1,a.$modelValue.title&&a.$modelValue.title!=t[0]&&(n.unshift(e.translate(a.$modelValue.title)),t.unshift(a.$modelValue.title)),a=a.$parent;return n},e.displayForm=function(t){var n,a,r,o,i,d;if((o=t.$modelValue).cnodes&&e.download(t),o._nodes&&e.stoggle(t),e.currentNode=o,e.currentScope=t,n=o.type?o.type:"text",o.nodes||o._nodes||o.cnodes?e.form="text"!==n?n:"mini":(e.form=n,e.getKey(o)),o.type&&"simpleInputContainer"===o.type)for(i=0,a=(d=o.nodes).length;i<a;i++)r=d[i],e.getKey(r);return e.showT=!1,e.breadCrumb=e.getTrPath(t),h(t)},e.keyTranslatable=function(e){var t;return!(!(t=e.$modelValue).type||!t.type.match(/^(?:(?:c(?:as(?:App|Srv)MetaDataNod|mbModul)|oidc(?:[OR]PMetaDataNod|Attribut)|authChoic|rul)e|s(?:aml(?:(?:ID|S)PMetaDataNod|Attribut)e|fExtra)|key(?:Node|Text)|menu(?:App|Cat)|virtualHost)$/))},e.sendTestMail=function(){return e.message={title:"sendTestMail",field:"dest"},e.showModal("prompt.html").then((function(){var n;return e.result,e.waiting=!0,n=e.result,t.post(`${window.confPrefix}/sendTestMail`,{dest:n}).then((function(t){var n,a;return a=t.data.success,n=t.data.error,e.waiting=!1,e.message=a?{title:"ok",message:"__sendTestMailSuccess__",items:[]}:{title:"error",message:n,items:[]},e.showModal("message.html")}),g)}),(function(){console.error("Error sending test email")}))},e.newCertificate=function(){return e.showModal("password.html").then((function(){var n,a;return e.waiting=!0,n=e.currentNode,a=e.result,t.post(`${window.confPrefix}/newCertificate`,{password:a}).then((function(t){return n.data[0].data=t.data.private,n.data[1].data=a,n.data[2].data=t.data.public,e.waiting=!1}),g)}),(function(){console.debug("New key cancelled")}))},e.newEcCertificate=function(){return e.showModal("password.html").then((function(){var n,a;return e.waiting=!0,n=e.currentNode,a=e.result,t.post(`${window.confPrefix}/newEcCertificate`,{password:a}).then((function(t){return n.data[0].data=t.data.private,n.data[1].data=a,n.data[2].data=t.data.public,e.waiting=!1}),g)}),(function(){console.debug("New key cancelled")}))},e.newEcKeys=function(){var n;return e.waiting=!0,n=e.currentNode,t.post(`${window.confPrefix}/newEcKeys`,{password:""}).then((function(t){var a,r;for(a=r=0;r<=3;a=++r)n.data[a+4].data=n.data[a].data;return n.data[0].data=t.data.private,n.data[1].data=t.data.public,n.data[2].data=t.data.hash,n.data[3].data="EC",e.waiting=!1}),g)},e.newCertificateNoPassword=function(){var n;return e.waiting=!0,n=e.currentNode,t.post(`${window.confPrefix}/newCertificate`,{password:""}).then((function(t){var a,r;for(a=r=0;r<=3;a=++r)n.data[a+4].data=n.data[a].data;return n.data[0].data=t.data.private,n.data[1].data=t.data.public,n.data[2].data=t.data.hash,n.data[3].data="RSA",e.waiting=!1}),g)},e.newRSAKey=function(){return e.showModal("password.html").then((function(){var n,a;return e.waiting=!0,n=e.currentNode,a=e.result,t.post(`${window.confPrefix}/newRSAKey`,{password:a}).then((function(t){return n.data[0].data=t.data.private,n.data[1].data=a,n.data[2].data=t.data.public,e.waiting=!1}),g)}),(function(){console.debug("New key cancelled")}))},e.getKey=function(n){var r,o,i,d,u,s,l,c;if(r=a.defer(),n.data)r.resolve(n.data);else if(e.waiting=!0,n.get&&"object"==typeof n.get){for(n.data=[],l=[],o=u=0,i=(s=n.get).length;u<i;o=++u)d=s[o],n.data[o]={title:d.split("/").pop(),get:d,id:d},l.push(e.getKey(n.data[o]));a.all(l).then((function(){return r.resolve(n.data)}),(function(t){return r.reject(t.statusLine),e.waiting=!1}))}else c="",n.get?(console.debug(`Trying to get key ${n.get}`),c=encodeURI(n.get)):console.debug(`Trying to get title ${n.title}`),t.get(`${window.confPrefix}${e.currentCfg.cfgNum}/${n.get?c:n.title}`).then((function(t){var a;return(null===(a=t.data).value||a.error&&a.error.match(/setDefault$/))&&null!==n.default?n.data=n.default:n.data=a.value,n.type&&n.type.match(/^(bool|trool|boolOrExpr)$/)&&"string"==typeof n.data&&n.data.match(/^(?:-1|0|1)$/)&&(n.data=parseInt(n.data,10)),n.type&&n.type.match(/^int$/)&&(n.data=parseInt(n.data,10)),n.type&&n.type.match(/^select$/)?n.data=n.data?n.data.toString():"":!n.type||!n.type.match(/^(saml(Service|Assertion)|blackWhiteList)$/)||n.data&&"object"==typeof n.data||(n.data=n.data?n.data.split(";"):[]),e.waiting=!1,r.resolve(n.data)}),(function(e){return g(e),r.reject(e.status)}));return r.promise},m=function(t,a,r){var o;return null===(o=a.match(new RegExp("#!?/confs/(latest|[0-9]+)")))?n.path("/confs/latest"):(console.debug(`Trying to get cfg number ${o[1]}`),e.getCfg(o[1]))},e.$on("$locationChangeSuccess",m),e.getCfg=function(a){return e.currentCfg.cfgNum!==a?t.get(`${window.confPrefix}${a}`).then((function(t){var r;return e.currentCfg=t.data,r=new Date(1e3*e.currentCfg.cfgDate),e.currentCfg.date=r.toLocaleString(),console.debug(`Metadatas of cfg ${a} loaded`),n.path(`/confs/${a}`),e.init()}),(function(t){return g(t).then((function(){return e.currentCfg.cfgNum=0,e.init()}))})):e.waiting=!1},e.getLanguage=function(t){return e.lang=t,e.form="white",e.init(),e.showM=!1},e.init=function(){var n;return n=null,e.waiting=!0,e.breadCrumb=null,e.data=[],e.confirmNeeded=!1,e.forceSave=!1,a.all([o.init(e.lang),t.get(`${window.staticPrefix}struct.json`).then((function(e){n=e.data,console.debug("Structure loaded")}))]).then((function(){return console.debug("Starting structure binding"),e.data=n,n=null,0!==e.currentCfg.cfgNum?setScopeVars(e):(e.message={title:"emptyConf",message:"__zeroConfExplanations__"},e.showModal("message.html")),e.form="home",e.waiting=!1}),g),e.activeModule="conf",e.myStyle={color:"#ffb84d"}},n.path().match(new RegExp("^/confs/(latest|[0-9]+)"))||(console.debug("Redirecting to /confs/latest"),n.path("/confs/latest")),e.replaceContentByUrl=function(n,a){return e.waiting=!0,t.post(window.scriptname+"prx",{url:a}).then((function(t){return n.data=t.data.content,e.waiting=!1}),g)},e.replaceContent=function(e,t){return e.data=t},e.saveAs=function(e,t,n){return saveAs(new Blob([e],{type:t}),n)},e.saveAsPem=function(e,t){return t.saveAs(`${e.data[0].data}\n${e.data[2].data}`,"application/x-pem-file",`${e.title}.pem`)},e.saveAsText=function(e,t){return t.saveAs(e.data,"text/plain",`${e.title}.txt`)}}])}();