define("app/views/commonController",["angular","cjt/filters/wrapFilter","cjt/services/alertService","cjt/directives/alertList","uiBootstrap"],(function(e){var t;try{t=e.module("App")}catch(r){t=e.module("App",["ui.bootstrap","ngSanitize"])}return t.controller("commonController",["$scope","$location","$rootScope","alertService","PAGE",function(e,t,r,a,i){e.isInstalled=i.installed,e.alerts=a.getAlerts(),e.route=null,e.closeAlert=function(e){a.remove(e)},e.isCurrentView=function(t){return!(!e.route||!e.route.$$route)&&e.route.$$route.originalPath===t},r.$on("$routeChangeStart",(function(t,r,a){e.route=r}))}])})),define("app/services/hitlistService",["angular","cjt/util/locale","cjt/io/api","cjt/io/whm-v1-request","cjt/io/whm-v1","cjt/services/APIService"],(function(e,t,r,a,i){var n;try{n=e.module("App")}catch(t){n=e.module("App",["cjt2.services.api"])}function s(e){var t=[];if(e.status){for(var r=e.data,a=0,i=r.length;a<i;a++){var n=r[a];t.push(n)}var s=e.meta;return{items:t,totalItems:s.paginate.total_records||r.length,totalPages:s.paginate.total_pages||1}}return{items:[],totalItems:0,totalPages:0}}n.factory("hitListService",["$q","APIService",function(r,n){var o=function(){};return o.prototype=new n({transformAPISuccess:s}),e.extend(o.prototype,{fetchList:function(e){var t=new a.Class;return t.initialize("","modsec_get_log"),e&&(e.sortBy&&e.sortDirection&&t.addSorting(e.sortBy,e.sortDirection,e.sortType),e.pageNumber&&t.addPaging(e.pageNumber,e.pageSize||10),e.filterBy&&e.filterValue&&t.addFilter(e.filterBy,e.filterCompare,e.filterValue)),this.deferred(t).promise},fetchById:function(e){return this.fetchList({filterBy:"id",filterValue:e,filterCompare:"eq"}).then((function(a){var i=a.items.length;return 1===i?a:i>1?r.reject({message:t.maketext("More than one hit matched hit ID “[_1]”.",e),count:i}):r.reject({message:t.maketext("No hits matched ID “[_1]”.",e),count:i})}))},prepareList:function(e){return s(e=i.parse_response(e).parsedResponse)}}),new o}])})),define("app/services/ruleService",["angular","cjt/io/api","cjt/io/whm-v1-request","cjt/io/whm-v1","cjt/util/locale","cjt/util/parse","cjt/services/APIService"],(function(e,t,r,a,i,n){var s,o="";try{s=e.module("App")}catch(t){s=e.module("App",["cjt2.services.api"])}var d=/\n/g;s.factory("ruleService",["$q","APIService",function(t,s){function l(e){return e.config_active=n.parsePerlBoolean(e.config_active),e.disabled=n.parsePerlBoolean(e.disabled),e.staged=n.parsePerlBoolean(e.staged),e.vendor_active=n.parsePerlBoolean(e.vendor_active),e}function c(e){var t=[];if(e.status){for(var r=e.data.chunks,a=0,i=r.length;a<i;a++)t.push(l(r[a]));var s=e.meta,o=s.paginate.total_records||r.length,d=s.paginate.total_pages||1;return{items:t,stagedChanges:n.parsePerlBoolean(e.data.staged_changes),totalItems:o,totalPages:d,status:e.status}}return{items:[],stagedChanges:!1,totalItems:0,totalPages:0,status:e.status}}var u=function(e,t,a,n,s){var d=new r.Class;return d.initialize(o,"modsec_disable_rule"),d.addArgument("config",t),d.addArgument("id",a),this.deferred(d,{context:this,done:function(t){e.notify(i.maketext("You have successfully disabled the rule.")),(t=t.parsedResponse).status?(s&&(s.disabled=!0),n?f.call(this,e,s):e.resolve(s)):e.reject(t.error)}},e),e.promise},p=function(e,t,a,n,s){var d=new r.Class;return d.initialize(o,"modsec_undisable_rule"),d.addArgument("config",t),d.addArgument("id",a),this.deferred(d,{context:this,done:function(t){(t=t.parsedResponse).status?(e.notify(i.maketext("You have successfully enabled the rule.")),s&&(s.disabled=!1),n?f.call(this,e,s):e.resolve(s)):e.reject(t.error)}},e),e.promise},f=function(e,t){var a=new r.Class;return a.initialize(o,"modsec_deploy_all_rule_changes"),this.deferred(a,{apiSuccess:function(r){e.notify(i.maketext("You have successfully deployed the staged rules to your custom [asis,ModSecurity™] configuration.")),e.resolve(t)}},e),e.promise},g=function(){};return g.prototype=new s,e.extend(g.prototype,{fetchRulesList:function(t,a){var i=new r.Class;if(i.initialize(o,"modsec_get_rules"),t&&t.length&&i.addArgument("vendor_id",t.join(",")),(!t||!t.length)&&a&&a.advanced&&!e.isDefined(a.advanced.includeUserRules))throw new Error("No vendor selected and user-defined rules were not requested. There is nothing to fetch.");return i.addArgument("exclude_other_directives",1),i.addArgument("exclude_bare_comments",1),e.isDefined(a.advanced.includeUserRules)||(i.addFilter("vendor_active","eq",1),i.addFilter("config_active","eq",1)),a&&a.advanced&&("staged"===a.advanced.showStagedDeployed&&i.addFilter("staged","eq",1),"deployed"===a.advanced.showStagedDeployed&&i.addFilter("staged","eq",0),"enabled"===a.advanced.showEnabledDisabled&&i.addFilter("disabled","eq",0),"disabled"===a.advanced.showEnabledDisabled&&i.addFilter("disabled","eq",1),a.advanced.includeUserRules&&i.addArgument("config","modsec2.user.conf")),a&&(a.sortBy&&a.sortDirection&&i.addSorting(a.sortBy,a.sortDirection,a.sortType),a.pageNumber&&i.addPaging(a.pageNumber,a.pageSize||10),a.filterBy&&a.filterCompare&&a.filterValue&&i.addFilter(a.filterBy,a.filterCompare,a.filterValue)),this.deferred(i,{transformAPISuccess:c}).promise},fetchRulesById:function(e,t){var a=new r.Class;return a.initialize(o,"modsec_get_rules"),a.addArgument("exclude_other_directives",1),a.addArgument("exclude_bare_comments",1),a.addFilter("id","==",e),"string"==typeof t?a.addArgument("vendor_id",t):a.addArgument("config","modsec2.user.conf"),this.deferred(a,{apiSuccess:function(e,t){var r=(e=c(e)).items.length;1===r?t.resolve(e):t.reject({count:r})},transformAPIFailure:function(e){return{message:e.error}}}).promise},getCustomConfigText:function(){var e=new r.Class;e.initialize(o,"modsec_get_config_text"),e.addArgument("config","modsec2.user.conf"),e.addArgument("pagable",1),e.addPaging(1,500);var a=this,i=this.deferred(e,{context:this,apiSuccess:function(r,i){i.notify({text:r.data,type:"page",page:1});var n=r.meta.paginate.total_pages||1;if(n>1){for(var s=t.all({}),o=function(t){return function(){return e.addPaging(t,500),a.deferred(e,{apiSuccess:function(e){i.notify({text:e.data,type:"page",page:t,totalPages:n})},apiFailure:function(e){i.notify({type:"error",error:e.error})}},i)}},d=2;d<=n;d++)s=s.then(o(d));s.finally((function(){i.resolve()}))}else i.notify({text:r.data.text,type:"page",page:1,totalPages:1,done:!0}),i.resolve()},apiFailure:function(e){i.notify({type:"error",error:e.error}),i.reject()}});return i.promise},setCustomConfigText:function(e,a){for(var i=e.split(d),s=i.length,l=[],c=0;c<s;c+=1500)l.push(i.slice(c,c+1500).join("\n"));var u=l.length,p=new r.Class;p.initialize(o,"modsec_assemble_config_text"),p.addArgument("config","modsec2.user.conf"),p.addArgument("text",l[0]),p.addArgument("init",1),1===u&&(p.addArgument("final",1),a&&p.addArgument("deploy",1));var g=this;return this.deferred(p,{context:this,apiSuccess:function(e,r){if(u>1){p.removeArgument("init");for(var i=t.all({}),n=function(e,t,a){return function(){return p.addArgument("text",l[e]),t&&(p.addArgument("final",1),a&&p.addArgument("deploy",1)),g.deferred(p,{apiSuccess:function(t){r.notify({text:t.data,type:"post",page:e,totalPages:u})},apiFailure:function(e){r.notify({type:"error",error:e.error}),r.reject()}},r)}},s=1;s<u;s++){var o=s===u-1;i=i.then(n(s,o,a))}i.finally((function(){r.resolve()}))}else r.resolve()},apiFailure:function(e,t){e.data&&n.parsePerlBoolean(e.data.duplicate)?a?f.call(this,t):t.resolve():(t.notify({type:"error",error:e.error}),t.reject())}}).promise},addRule:function(e,a,s){var d=t.defer(),c=new r.Class;return c.initialize(o,"modsec_add_rule"),c.addArgument("config","modsec2.user.conf"),c.addArgument("rule",e),this.deferred(c,{context:this,apiSuccess:function(e){var t=l(e.data.rule);d.notify(i.maketext("You have successfully added the rule to the staged configuration file.")),a?s?f.call(this,d,t):d.resolve(t):u.call(this,d,t.config,t.id,s,t)},apiFailure:function(e){var t={message:e.error,duplicate:!!e.data&&n.parsePerlBoolean(e.data.duplicate)};d.reject(t)}},d),d.promise},cloneRule:function(e,t){var a=new r.Class;return a.initialize(o,"modsec_clone_rule"),a.addArgument("id",e),a.addArgument("config",t),this.deferred(a,{transformAPISuccess:function(e){return l(e.data.rule)},transformAPIFailure:function(e){return{message:e.error,duplicate:!!e.data&&n.parsePerlBoolean(e.data.duplicate)}}}).promise},deleteRule:function(e){var t=new r.Class;return t.initialize(o,"modsec_remove_rule"),t.addArgument("config","modsec2.user.conf"),t.addArgument("id",e),this.deferred(t).promise},updateRule:function(e,a,s,d,c,g){var m=t.defer(),v=new r.Class,h=function(t,r){c?d?p.call(this,m,e,r.id,t,r):u.call(this,m,e,r.id,t,r):t?f.call(this,m,r):m.resolve(r)}.bind(this);return e.match(/modsec2.user.conf$/)?(v.initialize(o,"modsec_edit_rule"),v.addArgument("config",e),v.addArgument("id",a),v.addArgument("rule",s),this.deferred(v,{context:this,apiSuccess:function(e){var t=l(e.data.rule);m.notify(i.maketext("You have successfully updated the rule in the staged configuration file.")),h(g,t)},apiFailure:function(e){var t={message:e.error,duplicate:!!e.data&&n.parsePerlBoolean(e.data.duplicate)};m.reject(t)}},m)):h(g,{id:a,config:e,rule:s}),m.promise},disableRule:function(e,r,a){var i=t.defer();return u.call(this,i,e,r,a)},enableRule:function(e,r,a){var i=t.defer();return p.call(this,i,e,r,a)},deployQueuedRules:function(){var e=t.defer();return f.call(this,e)},discardQueuedRules:function(){var e=new r.Class;return e.initialize(o,"modsec_discard_all_rule_changes"),this.deferred(e).promise},prepareList:function(e){return c(e=a.parse_response(e).parsedResponse)}}),new g}])})),define("app/services/reportService",["angular","cjt/util/locale","cjt/io/whm-v1-request","cjt/io/whm-v1","cjt/services/APIService","app/services/hitlistService","app/services/ruleService"],(function(e,t,r){var a;try{a=e.module("App")}catch(t){a=e.module("App",["cjt2.services.api"])}a.factory("reportService",["$q","APIService","ruleService","hitListService",function(a,i,n,s){var o;function d(t){var a=new r.Class;return a.initialize("","modsec_report_rule"),e.forEach({row_ids:t.hits.join(","),message:t.message,email:t.email,type:t.reason,send:t.send?1:0},(function(e,t){a.addArgument(t,e)})),this.deferred(a,{transformAPISuccess:l}).promise}function l(e){return e.data.report}var c=function(){};return c.prototype=new i,e.extend(c.prototype,{fetchByHit:function(r){var i,d={};if(e.isObject(r)){d.hits=[r];var l=a.defer();l.resolve(r),i=l.promise}else i=s.fetchById(r).then((function(e){return d.hits=e.items,e.items[0]}));return o=i.then((function(e){var r,i,s=(r=e.meta_file,(i=r&&r.match(/\/modsec_vendor_configs\/(\w+)/))?i[1]:void 0);return s?n.fetchRulesById(e.meta_id,s):a.reject(t.maketext("You can only report [asis,ModSecurity] rules that a vendor provided."))})).then((function(e){return d.rule=e.items[0],d}))},fetchByRule:function(r,i){var d,l={};if(e.isObject(r)){if(!r.vendor_id)return a.reject(t.maketext("Only [asis,ModSecurity] rules provided by vendors may be reported."));l.rule=r;var c=a.defer();c.resolve(r),d=c.promise}else{if(!i)return a.reject(t.maketext("You can only report [asis,ModSecurity] rules that a vendor provided."));d=n.fetchRulesById(r,i).then((function(e){return l.rule=e.items[0],l.rule}))}return o=d.then((function(e){return s.fetchList({filterBy:"meta_id",filterValue:e.id,filterCompare:"eq"})})).then((function(e){return l.hits=e.items,l}))},getCurrent:function(){return o},clearCurrent:function(){o=void 0},viewReport:function(e){return e.send=!1,d.call(this,e)},sendReport:function(e,t){var r={};return e.send=!0,r.report=d.call(this,e),t&&(r.disable=n.disableRule(t.ruleConfig,t.ruleId,t.deployRule)),a.all(r)}}),new c}])})),define("app/views/hitListController",["angular","cjt/util/locale","uiBootstrap","cjt/directives/responsiveSortDirective","cjt/decorators/paginationDecorator","cjt/directives/autoFocus","cjt/filters/wrapFilter","cjt/directives/spinnerDirective","cjt/services/alertService","app/services/hitlistService","app/services/reportService"],(function(e,t){var r=e.module("App");return r.controller("hitListController",["$scope","$location","$anchorScroll","$routeParams","$timeout","hitListService","alertService","reportService","spinnerAPI","PAGE",function(a,i,n,s,o,d,l,c,u,p){a.loadingPageData=!0,a.activeSearch=!1,a.filteredData=!1,a.selectedRow=-1,a.showAddSuccess=!1,a.loadReportView=function(e){c.fetchByHit(e),a.loadView("report/hit/"+e.id)},a.loadEditRuleView=function(e,r){var i,n={ruleId:e,back:"hitList"};!function(e){return/\/modsec2\.user\.conf$/.test(e)}(r)?(i=function(e){var t=e&&e.match(/\/modsec_vendor_configs\/+([^/]+)/);return t?t[1]:void 0}(r))?(n.vendorId=i,a.loadView("editCustomRule",n)):l.add({type:"danger",message:t.maketext("An unknown error occurred in the attempt to retrieve the rule."),id:"errorFetchRule"}):a.loadView("editCustomRule",n)},a.clearFilter=function(){return a.meta.filterValue="",a.activeSearch=!1,a.filteredData=!1,i.search("api.filter.enable",0),i.search("api.filter.verbose",null),i.search("api.filter.a.field",null),i.search("api.filter.a.type",null),i.search("api.filter.a.arg0",null),a.selectPage(1)},a.startFilter=function(){a.activeSearch=!0,a.filteredData=!1,i.search("api.filter.enable",1),i.search("api.filter.verbose",1),i.search("api.filter.a.field","*"),i.search("api.filter.a.type","contains"),i.search("api.filter.a.arg0",a.meta.filterValue),a.selectPage(1),a.filteredData=!0},a.toggleRow=function(e){e===a.selectedRow?a.selectedRow=-1:a.selectedRow=e},a.selectPage=function(t){return a.selectedRow=-1,t&&e.isNumber(t)&&(a.meta.pageNumber=t),i.search("api.chunk.enable",1),i.search("api.chunk.verbose",1),i.search("api.chunk.size",a.meta.pageSize),i.search("api.chunk.start",(a.meta.pageNumber-1)*a.meta.pageSize+1),a.fetch()},a.sortList=function(e,t){a.selectedRow=-1,i.search("api.sort.enable",1),i.search("api.sort.a.field",e.sortBy),i.search("api.sort.a.method",e.sortType||""),i.search("api.sort.a.reverse","asc"===e.sortDirection?0:1),t||a.fetch()},a.triggerToggleSearch=function(e){27===e.keyCode&&a.toggleSearch(!0),13===e.keyCode&&a.toggleSearch()},a.toggleSearch=function(e){var t=a.meta.filterValue;t||!a.activeSearch&&!a.filteredData?e&&a.activeSearch?a.clearFilter():t&&a.startFilter():a.clearFilter()},a.fetch=function(){return u.start("hitlistSpinner"),d.fetchList(a.meta).then((function(e){a.hitList=e.items,a.totalItems=e.totalItems,a.totalPages=e.totalPages}),(function(e){l.add({type:"danger",message:e,id:"errorFetchHitList"})})).then((function(){a.loadingPageData=!1,u.stop("hitlistSpinner")}))},a.hitList=[],a.totalPages=0,a.totalItems=0;var f="1"===s["api.chunk.enable"],g=10,m=1;f&&(g=parseInt(s["api.chunk.size"],10),m=Math.floor(parseInt(s["api.chunk.start"],10)/g)+1);var v="1"===s["api.sort.enable"];a.meta={filterBy:s["api.filter.a.field"]||"*",filterCompare:"contains",filterValue:s["api.filter.a.arg0"]||"",pageSize:f?g:10,pageNumber:f?m:1,sortDirection:v?"1"===s["api.sort.a.reverse"]?"desc":"asc":"desc",sortBy:v?s["api.sort.a.field"]:"timestamp",sortType:v?s["api.sort.a.type"]:"numeric",pageSizes:[10,20,50,100]},a.$watch("meta.filterValue",(function(e,t){e!==t&&(a.activeSearch=!1)})),a.$watch("meta.pageSize",(function(e,t){e!==t&&a.selectPage(1)})),a.activeSearch=a.filteredData=!!a.meta.filterValue,a.isInstalled=p.installed,a.dbException=0===p.hitList.metadata.result?p.hitList.metadata.reason:"",a.$on("$viewContentLoaded",(function(){if(r.firstLoad.hitList&&p.hitList){r.firstLoad.hitList=!1,a.loadingPageData=!1;var e=d.prepareList(p.hitList);a.hitList=e.items,a.totalItems=e.totalItems,a.totalPages=e.totalPages}else o((function(){a.selectPage(1)}))})),s.addSuccess&&(a.showAddSuccess=!0)}])})),define("app/services/vendorService",["angular","cjt/util/locale","cjt/util/parse","cjt/io/api","cjt/io/whm-v1-request","cjt/io/whm-v1","cjt/services/APIService"],(function(e,t,r,a,i,n){var s="",o=e.module("App");function d(e){if(e.cpanel_provided=r.parsePerlBoolean(e.cpanel_provided),e.enabled=r.parsePerlBoolean(e.enabled),e.update=r.parsePerlBoolean(e.update),e.installed=r.parsePerlBoolean(e.installed),e.totalEnabled=0,e.totalDisabled=0,e.configs){for(var t=0,a=e.configs.length;t<a;t++){var i=e.configs[t];i.enabled=r.parsePerlBoolean(i.active),delete i.active,i.enabled?e.totalEnabled++:e.totalDisabled++}e.configs.sort((function(e,t){return e.config.localeCompare(t.config)}))}return e}function l(e){var t=[];if(e.status){for(var r=e.data,a=0,i=r.length;a<i;a++){var n=r[a];n.changed=!1,t.push(d(n))}var s=e.meta;return{items:t,totalItems:s.paginate.total_records||r.length,totalPages:s.paginate.total_pages||1}}return{items:[],totalItems:0,totalPages:0}}function c(e,t){var a=r.parsePerlBoolean(e.ok);return e.ok=a,e.enabled=t?a:!a,e}function u(e,t){var r=[],a=0,i=0;if(e)for(var n=0,s=e.length;n<s;n++){var o=e[n];r.push(c(o,t)),o.enabled?a++:i++}return{configs:r,totalEnabled:a,totalDisabled:i}}var p=function(e,t,r){var a=new i.Class;return a.initialize(s,t),a.addArgument("url",r.url),this.deferred(a,{transformAPISuccess:function(e){return e.data}},e),e.promise};o.factory("vendorService",["$q","APIService",function(r,a){var o=function(){};return o.prototype=new a,e.extend(o.prototype,{fetchVendorById:function(e){var r=new i.Class;return r.initialize(s,"modsec_get_vendors"),r.addArgument("show_uninstalled",1),r.addFilter("vendor_id","eq",e),this.deferred(r,{apiSuccess:function(r,a){var i=l(r);1===i.items.length?a.resolve(i.items[0]):i.items.length>1?a.reject(t.maketext("You have multiple vendors with the same [asis,vendor_id].")):a.reject(t.maketext("The system could not find the specified [asis,vendor_id].",e))}}).promise},fetchList:function(e){var t=new i.Class;return t.initialize(s,"modsec_get_vendors"),t.addArgument("show_uninstalled",1),e&&(e.sortBy&&e.sortDirection&&t.addSorting(e.sortBy,e.sortDirection,e.sortType),e.pageNumber&&t.addPaging(e.pageNumber,e.pageSize||10),e.filterBy&&e.filterValue&&t.addFilter(e.filterBy,e.filterCompare,e.filterValue)),this.deferred(t,{transformAPISuccess:l}).promise},disableVendor:function(e){var t=new i.Class;return t.initialize(s,"modsec_disable_vendor"),t.addArgument("vendor_id",e),this.deferred(t).promise},enableVendor:function(e){var t=new i.Class;return t.initialize(s,"modsec_enable_vendor"),t.addArgument("vendor_id",e),this.deferred(t).promise},disableConfig:function(e){var t=new i.Class;return t.initialize(s,"modsec_make_config_inactive"),t.addArgument("config",e),this.deferred(t).promise},enableConfig:function(e){var t=new i.Class;return t.initialize(s,"modsec_make_config_active"),t.addArgument("config",e),this.deferred(t).promise},enableAllConfigs:function(e){var t=new i.Class;return t.initialize(s,"modsec_enable_vendor_configs"),t.addArgument("vendor_id",e),this.deferred(t,{transformAPISuccess:function(e){return u(e.data,!0)},transformAPIFailure:function(e){return u(e.data,!0)}}).promise},disableAllConfigs:function(e){var t=new i.Class;return t.initialize(s,"modsec_disable_vendor_configs"),t.addArgument("vendor_id",e),this.deferred(t,{transformAPISuccess:function(e){return u(e.data,!1)},transformAPIFailure:function(e){return u(e.data,!1)}}).promise},enableVendorUpdates:function(e){var t=new i.Class;return t.initialize(s,"modsec_enable_vendor_updates"),t.addArgument("vendor_id",e),this.deferred(t).promise},disableVendorUpdates:function(e){var t=new i.Class;return t.initialize(s,"modsec_disable_vendor_updates"),t.addArgument("vendor_id",e),this.deferred(t).promise},deleteVendor:function(e){var t=new i.Class;return t.initialize(s,"modsec_remove_vendor"),t.addArgument("vendor_id",e),this.deferred(t).promise},loadVendor:function(e){var t=r.defer();return p.call(this,t,"modsec_preview_vendor",{url:e})},saveVendor:function(e){var t=r.defer();return p.call(this,t,"modsec_add_vendor",{url:e})},prepareList:function(e){return l(e=n.parse_response(e).parsedResponse)}}),new o}])})),define("app/views/rulesListController",["angular","lodash","cjt/util/locale","cjt/util/logic","uiBootstrap","cjt/directives/responsiveSortDirective","cjt/decorators/paginationDecorator","cjt/directives/autoFocus","cjt/filters/wrapFilter","cjt/filters/splitFilter","cjt/filters/htmlFilter","cjt/directives/spinnerDirective","cjt/directives/actionButtonDirective","cjt/services/alertService","app/services/ruleService","app/services/vendorService","cjt/io/whm-v1-querystring-service"],(function(e,t,r,a){"use strict";var i="modsec2.user.conf",n="enabled",s="disabled",o="both",d="deployed",l="staged",c="both",u=e.module("App");return u.controller("rulesListController",["$scope","$location","$anchorScroll","$timeout","ruleService","vendorService","alertService","spinnerAPI","queryService","PAGE",function(p,f,g,m,v,h,y,S,b,w){function _(){p.previouslySelected=p.selectedVendors,p.meta.advanced.previousShowStagedDeployed=p.meta.advanced.showStagedDeployed,p.meta.advanced.previousShowEnabledDisabled=p.meta.advanced.showEnabledDisabled,p.meta.advanced.previousIncludeUserRules=p.meta.advanced.includeUserRules}function C(){p.meta.advanced.showStagedDeployed===l?b.query.addSearchField("c","staged","eq","1"):b.query.clearSearchField("staged","eq","1"),p.meta.advanced.showStagedDeployed===d?b.query.addSearchField("b","staged","eq","0"):b.query.clearSearchField("staged","eq","0"),p.meta.advanced.showEnabledDisabled===n?b.query.addSearchField("d","disabled","eq","0"):b.query.clearSearchField("disabled","eq","0"),p.meta.advanced.showEnabledDisabled===s?b.query.addSearchField("e","disabled","eq","1"):b.query.clearSearchField("disabled","eq","1"),p.meta.advanced.includeUserRules?b.query.addParameter("config",i):b.query.removeParameter("config");var e=I();0===e.length?b.query.removeParameter("vendor_id"):b.query.addParameter("vendor_id",e.join(","))}function P(){p.appliedVendors=p.selectedVendors.slice()}p.loadingPageData=!0,p.activeSearch=!1,p.filteredData=!1,p.advancedSearchApplied=!1,p.onAdvancedChanged=function(e){switch(e){case"vendor":p.previouslySelected!==p.selectedVendors&&(p.meta.advanced.changed=!0);break;case"userDefined":p.meta.advanced.previousIncludeUserRules!==p.meta.advanced.includeUserRules&&(p.meta.advanced.changed=!0);break;default:p.meta.advanced.changed=!0}},p.hasSearchFilter=function(){return!0===p.filteredData||!0===p.advancedSearchApplied||p.appliedVendors.length<p.vendors.length},p.clearFilter=function(){return p.meta.filterValue="",p.activeSearch=!1,p.filteredData=!1,b.query.clearSearchField("*","contains"),C(),p.selectPage(1)},p.startFilter=function(){return p.activeSearch=""!==p.meta.filterValue,p.filteredData=!1,p.meta.filterValue?b.query.addSearchField("a","*","contains",p.meta.filterValue):b.query.clearSearchField("*","contains"),p.selectPage(1).then((function(){C(),p.meta.filterValue&&(p.filteredData=!0),_(),p.meta.advanced.changed=!1}),(function(){p.selectedVendors=p.previouslySelected,p.meta.advanced.showStagedDeployed=p.meta.advanced.previousShowStagedDeployed,p.meta.advanced.showEnabledDisabled=p.meta.advanced.previousShowEnabledDisabled,p.meta.advanced.includeUserRules=p.meta.advanced.previousIncludeUserRules,p.meta.advanced.changed=!1})).finally((function(){!0!==p.meta.advanced.includeUserRules||p.meta.advanced.showEnabledDisabled!==o||p.meta.advanced.showStagedDeployed!==c?p.advancedSearchApplied=!0:p.advancedSearchApplied=!1,p.appliedIncludeUserRules=p.meta.advanced.includeUserRules}))},p.openAdvancedSearch=function(e){e.preventDefault(),e.stopPropagation(),e.currentTarget.blur(),p.advancedSearchOpen=!p.advancedSearchOpen},p.applyAdvancedFilter=function(e){e.preventDefault(),e.stopPropagation(),p.advancedSearchOpen=!1,p.toggleSearch()},p.resetAdvancedFilter=function(e){e.preventDefault(),e.stopPropagation(),p.advancedSearchOpen=!1,p.resetFilter()},p.resetFilter=function(){p.meta.advanced.changed=!1,p.meta.advanced.showStagedDeployed!==c&&(p.meta.advanced.showStagedDeployed=c,p.meta.advanced.changed=!0),p.meta.advanced.showEnabledDisabled!==o&&(p.meta.advanced.showEnabledDisabled=o,p.meta.advanced.changed=!0),p.meta.advanced.includeUserRules||(p.meta.advanced.includeUserRules=!0,p.meta.advanced.changed=!0),p.selectedVendors.length<p.vendors.length&&(p.selectedVendors=p.vendors,p.meta.advanced.changed=!0),p.meta.advanced.changed&&p.startFilter().then(P)},p.triggerToggleSearch=function(e){27===e.keyCode&&p.toggleSearch(!0),13===e.keyCode&&p.toggleSearch()},p.toggleSearch=function(e){var t=p.meta.filterValue,r=p.meta.advanced.changed;t||r||!p.activeSearch&&!p.filteredData?e&&p.activeSearch?p.clearFilter().then(P):(t||r)&&p.startFilter().then(P):p.clearFilter().then(P)},p.selectPage=function(t){return t&&e.isNumber(t)&&(p.meta.pageNumber=t),b.query.updatePagination(p.meta.pageNumber,p.meta.pageSize),p.fetch()},p.sortList=function(e,t){b.query.clearSort(),b.query.addSortField(e.sortBy,e.sortType,e.sortDirection),t||p.fetch()},p.disable=function(e){var a=e.id||"rule";return e.hasOwnProperty("meta_msg")&&""!==e.meta_msg&&(a+=": "+e.meta_msg),v.disableRule(e.config,e.id,!1).then((function(){e.disabled=!0,e.staged=!0,p.stagedChanges=!0,y.add({type:"success",message:r.maketext("You successfully disabled “[_1]” in the list of [asis,ModSecurity™] rules.",t.escape(a)),id:"alertDisableSuccess"})}),(function(e){y.add({type:"danger",message:t.escape(e),id:"errorDisablingRule"})}))},p.enable=function(e){var a=e.id||"rule";return e.hasOwnProperty("meta_msg")&&""!==e.meta_msg&&(a+=": "+e.meta_msg),v.enableRule(e.config,e.id,!1).then((function(){e.disabled=!1,e.staged=!0,p.stagedChanges=!0,y.add({type:"success",message:r.maketext("You successfully enabled “[_1]” in the list of [asis,ModSecurity™] rules.",t.escape(a)),id:"alertEnableSuccess"})}),(function(e){y.add({type:"danger",message:t.escape(e),id:"errorEnablingRule"})}))},p.delete=function(e){var a=e.id||"rule";return e.hasOwnProperty("meta_msg")&&""!==e.meta_msg&&(a+=": "+e.meta_msg),e.deleting=!0,v.deleteRule(e.id).then((function(){p.fetch(),y.add({type:"success",message:r.maketext("You successfully deleted “[_1]” from the list of [asis,ModSecurity™] rules.",t.escape(a)),id:"alertDeleteSuccess"})}),(function(r){e.deleting=!1,e.showDeleteConfirm=!1,y.add({type:"danger",message:t.escape(r),id:"errorDeletingRule"})}))},p.deployChanges=function(){return p.pendingChanges=!0,v.deployQueuedRules().then((function(){p.stagedChanges=!1,y.add({type:"success",message:r.maketext("You successfully deployed the staged changes and [asis,Apache] received a graceful restart request."),id:"successDeployChanges"})}),(function(e){y.add({type:"danger",message:t.escape(e),id:"errorDeployChanges"})})).finally((function(){p.pendingChanges=!1,p.fetch()}))},p.discardChanges=function(){return p.pendingChanges=!0,v.discardQueuedRules().then((function(){var e=!1;return p.stagedChanges=!1,p.fetch().then((function(){e=!0}),(function(){e=!1})).finally((function(){p.discardConfirm=!1,y.add({type:"success",message:r.maketext("You successfully discarded the staged changes."),id:"successDiscardingChanges",replace:e})}))}),(function(e){p.fetch(),y.add({type:"danger",message:t.escape(e),id:"errorDiscardingChanges"})})).finally((function(){p.pendingChanges=!1}))};var R=function(){var r=[],a=b.route.getParameter("vendor_id");a&&(r=a.split(","));var i=b.route.getParameter("config"),n=[];e.isDefined(a)||e.isDefined(i)?r.length>0&&(n=t.filter(p.vendors,(function(e){return!!t.find(r,(function(t){return e.vendor_id===t}))}))):n=p.vendors,p.previouslySelected=p.selectedVendors=n,p.appliedVendors=n.slice()};function A(t){return t&&e.isArray(t)?t.filter((function(e){return e.enabled})):[]}function I(){return p.selectedVendors&&p.selectedVendors.map((function(e){return e.vendor_id}))}function x(e,t){e.css("left",-1*t),e.css("right","auto")}function D(e){e.css("left",""),e.css("right","")}p.isCustomVendor=function(e){return e.hasOwnProperty("vendor_id")&&""===e.vendor_id},p.getVendorName=function(e){var t;if(""!==e.vendor_id)for(var a=0,i=p.vendors.length;a<i;a++)if(t=p.vendors[a],e.vendor_id===t.vendor_id)return t.name;return r.maketext("Custom")},p.getVendors=function(){return S.start("ruleListSpinner"),h.fetchList().then((function(t){e.isArray(t.items)?(p.vendors=A(t.items),R()):y.add({message:"The system was unable to retrieve the list of available vendors.",type:"danger"})}),(function(e){y.add({type:"danger",message:t.escape(e),id:"errorLoadingVendorList"})})).finally((function(){S.stop("ruleListSpinner")}))},p.fetch=function(){return p.loadingPageData=!0,S.start("ruleListSpinner"),y.removeById("errorFetchRulesList"),v.fetchRulesList(I(),p.meta).then((function(e){p.rules=e.items,p.stagedChanges=e.stagedChanges,p.totalItems=e.totalItems,p.totalPages=e.totalPages}),(function(e){throw y.add({type:"danger",message:t.escape(e),id:"errorFetchRulesList"}),e})).finally((function(){p.loadingPageData=!1,S.stop("ruleListSpinner")}))},p.generateIndicatorText=function(e){switch(e){case"vendor-short":return p.appliedVendors.length;case"vendor-long":return r.maketext("[quant,_1,Vendor,Vendors]",p.appliedVendors.length);case"vendor-title":return p.generateVendorTitle();case"user-title":return p.meta.advanced.previousIncludeUserRules?r.maketext("Your user-defined rules are included below."):r.maketext("Your user-defined rules are not included below.");default:return r.maketext("Loading …")}},p.generateVendorTitle=function(){var e=p.appliedVendors;if(0===e.length)return r.maketext("You have not selected any vendor rule sets.");var t=e.map((function(e){return e.name}));return r.maketext("The displayed rules are from the following vendor rule [numerate,_1,set,sets]: [list_and,_2]",e.length,t)},p.fixMenuClipping=function(e){var t=this.find(".advanced-filter-menu"),r=this.siblings("input").outerWidth();"open"===e.type&&t.css("opacity",0),m((function(){if(t){switch(e.type){case"resize":t.offset().left<0?x(t,r):r>t.outerWidth()&&D(t);break;case"open":t.offset().left<0&&x(t,r);break;case"close":D(t)}t.css("opacity",1)}}),0,!1)},p.rules=[],p.vendors=[],p.appliedVendors=[],p.totalPages=0,p.totalItems=0;var j=b.route.getPageSize(b.DEFAULT_PAGE_SIZE),F=b.route.getPage(j,1),V=b.route.getSortProperties("disabled","","asc");var k,L,E=a.compareOrDefault(b.route.getSearchFieldValue("staged"),"1",!0),$=a.compareOrDefault(b.route.getSearchFieldValue("staged"),"0",!0),B=a.compareOrDefault(b.route.getSearchFieldValue("disabled"),"1",!0),q=a.compareOrDefault(b.route.getSearchFieldValue("disabled"),"0",!0);p.meta={filterBy:"*",filterCompare:"contains",filterValue:"",pageSize:j,pageNumber:F,sortBy:V.field,sortType:V.type,sortDirection:V.direction,pageSizes:[10,20,50,100],advanced:{showStagedDeployed:a.translateBinaryAndToState(E,$,c,l,d,c),showEnabledDisabled:a.translateBinaryAndToState(q,B,o,n,s,o),includeUserRules:(k=b.route.getParameter("config"),L=b.route.getParameter("vendor_id"),k!==i&&!L||k===i),changed:!1}},p.appliedIncludeUserRules=p.meta.advanced.includeUserRules,_(),p.activeSearch=p.filteredData=!!p.meta.filterValue,p.$watch("meta.filterValue",(function(e,t){e!==t&&(p.activeSearch=!1)})),p.$watch("meta.pageSize",(function(e,t){e!==t&&p.selectPage(1)})),p.isInstalled=w.installed,p.isInstalled||p.loadView("hitList"),p.$on("$viewContentLoaded",(function(){if(u.firstLoad.rules&&w.rules){u.firstLoad.rules=!1,p.loadingPageData=!1,p.advancedSearchOpen=!1;var e=h.prepareList(w.vendors);p.vendors=A(e.items),R();var a=v.prepareList(w.rules);p.rules=a.items,p.stagedChanges=a.stagedChanges,p.totalItems=a.totalItems,p.totalPages=a.totalPages,a.status||(p.stagedChanges=!0,p.loadingPageData="error",y.add({type:"danger",message:r.maketext("There was a problem loading the page. The system is reporting the following error: [_1].",t.escape(w.rules.metadata.reason)),id:"errorFetchRulesList"}))}else m((function(){p.getVendors().then((function(){p.selectPage(1)}))}))}))}])})),define("app/views/addRuleController",["angular","lodash","jquery","cjt/util/locale","cjt/util/parse","uiBootstrap","cjt/directives/autoFocus","cjt/directives/spinnerDirective","cjt/services/alertService","app/services/ruleService"],(function(e,t,r,a,i){"use strict";return e.module("App").controller("addRuleController",["$scope","$location","$anchorScroll","$routeParams","$q","spinnerAPI","alertService","ruleService","PAGE",function(e,r,i,n,s,o,d,l,c){e.disableSave=function(e){return e.rule.$pristine&&e.enabled.$pristine||e.$dirty&&e.$invalid},e.clearForm=function(){e.enabled=!0,e.rule="",e.deploy=!1,e.clearNotices()},e.clearNotices=function(){d.clear(),e.notice=""},e.cancel=function(){e.clearNotices(),e.loadView("rulesList")},e.save=function(r,i){if(e.clearNotices(),r.$valid)return o.start("loadingSpinner"),l.addRule(e.rule,e.enabled,e.deploy).then((function(n){e.clearNotices(),r.$setPristine(),o.stop("loadingSpinner"),e.clearForm(),d.add({type:"success",message:a.maketext("You have successfully saved your [asis,ModSecurity™] rule with the following ID: [_1].",t.escape(n.id)),id:"alertAddSuccess",replace:!0}),i?e.loadView("rulesList"):(e.isCopy&&e.getClonedRule(n),e.scrollTo("top"),document.getElementById("txtRuleText").focus())}),(function(r){if(e.notice="",r&&r.duplicate)d.add({type:"warning",message:a.maketext("There is a duplicate [asis,ModSecurity™] rule in the staged configuration file. You cannot add a duplicate rule."),id:"alertAddWarning"});else{var i=r.message||r;d.add({type:"danger",message:t.escape(i),id:"alertAddFailure"})}e.scrollTo("top"),document.getElementById("txtRuleText").focus()}),(function(t){e.notice+=t+"\n"})).finally((function(){o.stop("loadingSpinner")}))},e.disableOriginalRule=function(r){return l.disableRule(r.config,r.id,!1).then((function(){r.disabled=!0,d.add({type:"success",message:a.maketext("You successfully disabled the [asis,ModSecurity™] rule with the following ID: [_1]",t.escape(r.id)),id:"alertDisableSuccess"})}),(function(e){var t=e.message||e;d.add({type:"danger",message:t,id:"alertDisableFailure"})})).finally((function(){e.scrollTo("top"),document.getElementById("txtRuleText").focus()}))},e.getClonedRule=function(r){return o.start("loadingSpinner"),l.cloneRule(r.id,r.config).then((function(t){e.id=t.id,e.enabled=!t.disabled,e.rule=t.rule,e.form.rule.$pristine=!1}),(function(r){var a=r.message||r;d.add({type:"danger",message:t.escape(a),id:"alertCopyFailure"}),e.scrollTo("top"),document.getElementById("txtRuleText").focus()})).finally((function(){o.stop("loadingSpinner")}))},e.isInstalled=c.installed,e.isInstalled||e.loadView("hitList"),e.clearForm(),-1!==r.$$path.indexOf("copy")&&(e.originalRule={id:n.id,config:n.config,disabled:n.disabled},e.originalRule.id&&e.originalRule.config&&(e.isCopy=!0,e.getClonedRule(e.originalRule)))}])})),define("app/views/editRuleController",["angular","lodash","jquery","cjt/util/locale","cjt/util/parse","uiBootstrap","cjt/directives/autoFocus","cjt/directives/spinnerDirective","cjt/services/alertService","app/services/ruleService"],(function(e,t,r,a,i){"use strict";var n=e.module("App");return n.controller("editRuleController",["$scope","$location","$anchorScroll","$routeParams","spinnerAPI","alertService","ruleService","PAGE",function(r,s,o,d,l,c,u,p){r.disableSave=function(e){var t=e.rule.$pristine&&e.enabled.$pristine;return r.isEditor&&r.cantEdit||t||e.$dirty&&e.$invalid},r.clearForm=function(){r.enabled=!1,r.oldRule=0,r.ruleText="",r.deploy=!1,r.clearNotices(),r.cantEdit=!1},r.clearNotices=function(){c.clear(),r.notice=""},r.cancel=function(){r.clearNotices(),r.loadView(m)},r.save=function(e,i){if(r.clearNotices(),e.$valid)return l.start("loadingSpinner"),u.updateRule(r.configFile,r.id,r.rule,r.enabled,r.enabled!==r.originalEnabled,r.deploy).then((function(t){r.clearNotices(),e.$setPristine(),l.stop("loadingSpinner"),r.clearForm(),c.add({type:"success",message:a.maketext("You have successfully updated the [asis,ModSecurity™] rule."),id:"alertAddSuccess",replace:!0}),n.firstLoad.rules=!1,r.loadView("rulesList")}),(function(e){if(r.notice="",e&&e.duplicate)c.add({type:"warning",message:a.maketext("There is a duplicate [asis,ModSecurity™] rule in the staged configuration file. You cannot add a duplicate rule."),id:"alertAddWarning"});else{var i=e.message||e;c.add({type:"danger",message:t.escape(i),id:"alertAddFailure"})}r.scrollTo("top"),document.getElementById("txtRuleText").focus()}),(function(e){r.notice+=e+"\n"})).then((function(){l.stop("loadingSpinner")}))};r.isInstalled=p.installed,r.isInstalled||r.loadView("hitList"),r.isVendor=!!d.vendorId,r.isEditor=!0,r.cantEdit=!0,r.clearForm();var f=d.ruleId,g=d.vendorId,m=d.back;m||(m="rulesList"),e.isUndefined(f)?(c.add({type:"danger",message:a.maketext("The system could not find the ID number for this rule."),id:"alertNoIdError"}),r.cantEdit=!0):(r.isVendor&&c.add({type:"info",message:a.maketext("A vendor configuration file provides this rule. You cannot edit vendor rules. You can enable or disable this rule with the controls below."),id:"alertVendorRuleInfo"}),function(e,n){l.start("loadingSpinner"),u.fetchRulesById(e,n).then((function(e){r.stagedChanges=e.stagedChanges;var t=e.items[0];if(r.id=t.id,r.enabled=!i.parsePerlBoolean(t.disabled),r.originalEnabled=r.enabled,r.meta_msg=t.meta_msg,r.rule=t.rule,r.cantEdit=!1,r.configFile=t.config,t.vendor_id&&(!t.vendor_active||!t.config_active)){var n=t.vendor_active?a.maketext("The configuration file that provides the rule “[_1]” is disabled. Whether enabled or disabled, the rule will have no visible effect until you enable the configuration file for the “[_2]” vendor.",t.config,t.vendor_id):a.maketext("The vendor that provides the rule “[_1]” is disabled. Whether enabled or disabled, the rule will have no visible effect until you enable that vendor.",t.vendor_id);c.add({type:"warning",message:n,id:"alertDisabledWarning",replace:!1})}}),(function(i){var s;i.count>1?(s=n?a.maketext("The rule with ID number “[_1]” is not unique. There are multiple rules that use the same ID number within the “[_2]” vendor rule set.",e,n):a.maketext("The rule with ID number “[_1]” is not unique. There are multiple rules that use the same ID number within your user-defined rule set.",e),c.add({type:"danger",message:t.escape(s),id:"alertEditError"})):i.count<1?(s=n?a.maketext("The system could not find the rule with ID number “[_1]” from the “[_2]” vendor rule set.",e,n):a.maketext("The system could not find the rule with ID number “[_1]” from your user-defined rule set.",e),c.add({type:"warning",message:t.escape(s),id:"alertEditWarning"})):c.add({type:"danger",message:t.escape(i.message),id:"errorFetchRulesList"}),r.cantEdit=!0})).finally((function(){l.stop("loadingSpinner")}))}(f,g))}])})),define("app/views/massEditRuleController",["angular","lodash","cjt/util/locale","jquery","cjt/jquery/plugins/rangeSelection","uiBootstrap","cjt/directives/autoFocus","cjt/directives/spinnerDirective","cjt/services/alertService","app/services/ruleService"],(function(e,t,r){"use strict";return e.module("App").controller("massEditRuleController",["$scope","$location","$anchorScroll","$routeParams","$q","$timeout","ruleService","alertService","spinnerAPI","PAGE",function(a,i,n,s,o,d,l,c,u,p){var f=500;a.disableSave=function(e){return a.cantEdit||e.txtRules.$pristine||e.$dirty&&e.$invalid},a.clearForm=function(){a.enabled=!0,a.rules="",a.deploy=!1,a.clearNotices(),a.cantEdit=!1},a.clearNotices=function(){c.clear(),a.notice=""},a.cancel=function(){a.clearNotices(),a.loadView("rulesList")},a.save=function(e){if(a.clearNotices(),e.$valid)return u.start("loadingSpinner"),a.progress=0,a.cantEdit=!0,l.setCustomConfigText(a.rules,a.deploy).then((function(){u.stop("loadingSpinner"),d((function(){a.progress=100,d((function(){a.deploy?c.add({type:"success",message:r.maketext("You have successfully saved and deployed your [asis,ModSecurity™] rules."),id:"alertSaveSuccess"}):c.add({type:"success",message:r.maketext("You have successfully saved your [asis,ModSecurity™] rules."),id:"alertSaveSuccess"}),d((function(){a.loadView("rulesList"),a.showProgress=!1}),1e3)}),1e3)}),1e3)}),(function(e){u.stop("loadingSpinner"),a.cantEdit=!1,e&&c.add({type:"danger",message:t.escape(e),id:"errorFetchRules"}),d((function(){a.scrollTo("top"),document.getElementById("txtRules").focus()}),1e3)}),(function(e){switch(e.type){case"post":e.totalPages>2&&(a.showProgress=!0),a.progress=Math.floor(e.page/e.totalPages*100);break;case"error":c.add({type:"danger",message:t.escape(e.error),id:"errorSaveRules"})}}))};a.isInstalled=p.installed,a.isInstalled||a.loadView("hitList"),a.showProgress=!1,a.cantEdit=!0,a.clearForm(),u.start("loadingSpinner"),a.progress=0,a.cantEdit=!0,l.getCustomConfigText().then(e.noop,(function(e){e&&c.add({type:"danger",message:t.escape(e),id:"errorFetchRules"})}),(function(e){switch(e.type){case"page":e.totalPages>2&&(a.showProgress=!0),e.text&&(a.progress=Math.floor(e.page/e.totalPages*100),a.rules+=e.text.join(""));break;case"error":c.add({type:"danger",message:t.escape(e.error),id:"errorFetchRules"})}})).finally((function(){u.stop("loadingSpinner"),d((function(){a.progress=100,d((function(){a.cantEdit=!1,a.showProgress=!1,d((function(){a.progress=0,e.element(document.querySelector("#txtRules")).selectRange(0)}),f)}),f)}),f)}))}])})),define("app/views/reportController",["angular","cjt/util/locale","uiBootstrap","app/services/reportService","cjt/validator/email-validator","cjt/directives/validationContainerDirective","cjt/directives/validationItemDirective","cjt/directives/spinnerDirective","cjt/filters/wrapFilter","cjt/filters/breakFilter"],(function(e,t){e.module("App").controller("reportController",["$scope","reportService","alertService","$route","$window","$location","spinnerAPI",function(r,a,i,n,s,o,d){var l,c,u;function p(){l.vendorId=c.rule.vendor_id,l.isDisabled={overall:c.rule.disabled||!c.rule.config_active||!c.rule.vendor_active,rule:c.rule.disabled,config:!c.rule.config_active,vendor:!c.rule.vendor_active}}function f(){var e=[];return c.hits&&c.hits.forEach((function(t){t.included&&e.push(t.id)})),e}function g(){return{hits:f(),email:c.inputs.email,reason:c.inputs.reason,message:c.inputs.comments}}function m(){return l.form.$dirty||(e=f(),!(!l.lastIncludedHitIds||e.length!==l.lastIncludedHitIds.length)&&e.some((function(e,t){return-1===l.lastIncludedHitIds.indexOf(e)})));var e}function v(){m()&&(l.form.$setPristine(),l.lastIncludedHitIds=f(),h().then((function(e){c.json=JSON.stringify(e,!1,2)}),(function(e){i.add({type:"danger",message:e,id:"fetch-generated-report-error"})})))}function h(){return l.loading.report=!0,a.viewReport(g()).finally((function(){l.loading.report=!1}))}r.$on("$destroy",(function(){u=!0})),e.extend(r,{getTitleText:function(){return l.vendorId?t.maketext("Report a [asis,ModSecurity] Rule to [_1]",l.vendorId):t.maketext("Report a [asis,ModSecurity] Rule")},isExpanded:function(e){return l.expandedHit===e},toggleExpandCollapse:function(e){l.expandedHit=l.expandedHit===e?null:e},toggleIncludeExclude:function(e){1!==l.includedHitCount?(e.included=!e.included,l.includedHitCount--):i.add({type:"info",message:t.maketext("You must include at least one hit record with your report."),id:"report-last-hit-info"})},changeToTab:function(e){u||("hitList"!==e&&i.removeById("report-last-hit-info"),"rawReport"===e&&v())},viewReport:h,submitReport:function(){var e,n;return i.clear(),l.submitting=!0,!l.isDisabled.rule&&c.inputs.disableRule?(n={deployRule:c.inputs.deployRule,ruleConfig:c.rule.config,ruleId:c.rule.id},e=a.sendReport(g(),n)):e=a.sendReport(g()),e.then((function(e){i.add({type:"success",message:t.maketext("You have successfully submitted a report for the rule ID “[_1]” to “[_2]”.",c.rule.id,l.vendorId),id:"report-rule-submit-success"}),r.loadView("hitList")}),(function(e){i.add({type:"warning",message:e,id:"report-rule-submit-error"})})).finally((function(){l.submitting=!1})),e},cancelSubmission:function(){i.clear(),o.state?s.history.back():n.current.pathParams.hitId?r.loadView("hitList"):r.loadView("rulesList")},changeStep:function(e){l.step=e,"review"===e&&l.rawReportActive&&v()},rawTabIsStale:m}),l=r.view={step:"input",loading:{init:!1,report:!1},submitting:!1,ruleExpanded:!1},c=r.report={hits:null,rule:null,inputs:{}},function(e){l.loading.init=!0;var t=a.getCurrent();if(!t)if(e.hitId)t=a.fetchByHit(e.hitId);else{if(!e.ruleId||!e.vendorId)throw new ReferenceError("Cannot populate the report without a ruleId or hitId.");t=a.fetchByRule(e.ruleId,e.vendorId)}return t.then((function(e){c.invalid&&delete c.invalid,c.rule=e.rule,c.hits=e.hits.map((function(e){return e.included=!0,e})),l.includedHitCount=c.hits.length}),(function(e){c.invalid=!0,e&&e.message?i.add({type:"danger",message:e.message,id:"report-retrieval-error"}):i.add({type:"danger",message:e,id:"report-retrieval-error"})})).finally((function(){l.loading.init=!1})),t}(n.current.pathParams).then(p)}]).filter("onlyTrueHitFields",(function(){var t=["included","reportable","file_exists"];return function(r){var a={};return e.forEach(r,(function(e,r){-1===t.indexOf(r)&&(a[r]=e)})),a}}))})),define("app/index",["angular","jquery","lodash","cjt/core","cjt/modules","ngRoute","uiBootstrap"],(function(e,t,r,a){return function(){return e.module("App",["cjt2.config.whm.configProvider","ngRoute","ui.bootstrap","cjt2.whm"]),require(["cjt/bootstrap","cjt/util/locale","cjt/views/applicationController","cjt/filters/breakFilter","app/views/commonController","app/views/hitListController","app/views/rulesListController","app/views/addRuleController","app/views/editRuleController","app/views/massEditRuleController","app/views/reportController","cjt/services/autoTopService","cjt/services/whm/breadcrumbService"],(function(t,r){var i=e.module("App");i.value("PAGE",PAGE),i.firstLoad={hitList:!0,rules:!0},i.config(["$routeProvider",function(e){e.when("/hitList",{controller:"hitListController",templateUrl:a.buildFullPath("mod_security/views/hitListView.ptt"),breadcrumb:r.maketext("Hits List"),reloadOnSearch:!1}),e.when("/rulesList",{controller:"rulesListController",templateUrl:a.buildFullPath("mod_security/views/rulesListView.ptt"),breadcrumb:r.maketext("Rules List"),reloadOnSearch:!1}),e.when("/addCustomRule",{controller:"addRuleController",templateUrl:a.buildFullPath("mod_security/views/addEditRuleView.ptt"),breadcrumb:r.maketext("Add Custom Rule"),reloadOnSearch:!1}),e.when("/copyCustomRule",{controller:"addRuleController",templateUrl:a.buildFullPath("mod_security/views/addEditRuleView.ptt"),breadcrumb:r.maketext("Copy Rule"),reloadOnSearch:!1}),e.when("/editCustomRule",{controller:"editRuleController",templateUrl:a.buildFullPath("mod_security/views/addEditRuleView.ptt"),breadcrumb:r.maketext("Edit Custom Rule"),reloadOnSearch:!1}),e.when("/editCustomRules",{controller:"massEditRuleController",templateUrl:a.buildFullPath("mod_security/views/massEditRuleView.ptt"),breadcrumb:r.maketext("Edit Custom Rules"),reloadOnSearch:!1}),e.when("/report/hit/:hitId",{controller:"reportController",templateUrl:a.buildFullPath("mod_security/views/reportView.ptt"),breadcrumb:r.maketext("Report ModSecurity Hit"),reloadOnSearch:!1}),e.when("/report/:vendorId/rule/:ruleId",{controller:"reportController",templateUrl:a.buildFullPath("mod_security/views/reportView.ptt"),breadcrumb:r.maketext("Report ModSecurity Rule"),reloadOnSearch:!1}),e.otherwise({redirectTo:function(e,t,r){return"/hitList?"+window.location.search}})}]),i.run(["autoTopService","breadcrumbService",function(e,t){e.initialize(),t.initialize()}]),t(document)}))}}));