File manager - Edit - /usr/local/cpanel/whostmgr/docroot/templates/mod_security/views/rulesListController.min.js
Back
define(["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(angular,_,LOCALE,LOGIC){"use strict";var USER_CONFIG="modsec2.user.conf";var STATUS_ENUM={ENABLED:"enabled",DISABLED:"disabled",BOTH:"both"};var PUBLISHED_ENUM={DEPLOYED:"deployed",STAGED:"staged",BOTH:"both"};var app=angular.module("App");var controller=app.controller("rulesListController",["$scope","$location","$anchorScroll","$timeout","ruleService","vendorService","alertService","spinnerAPI","queryService","PAGE",function($scope,$location,$anchorScroll,$timeout,ruleService,vendorService,alertService,spinnerAPI,queryService,PAGE){$scope.loadingPageData=true;$scope.activeSearch=false;$scope.filteredData=false;$scope.advancedSearchApplied=false;function _updateAdvancedSearchApplied(){if($scope.meta.advanced.includeUserRules!==true||$scope.meta.advanced.showEnabledDisabled!==STATUS_ENUM.BOTH||$scope.meta.advanced.showStagedDeployed!==PUBLISHED_ENUM.BOTH){$scope.advancedSearchApplied=true}else{$scope.advancedSearchApplied=false}$scope.appliedIncludeUserRules=$scope.meta.advanced.includeUserRules}function _updatePreviousState(){$scope.previouslySelected=$scope.selectedVendors;$scope.meta.advanced.previousShowStagedDeployed=$scope.meta.advanced.showStagedDeployed;$scope.meta.advanced.previousShowEnabledDisabled=$scope.meta.advanced.showEnabledDisabled;$scope.meta.advanced.previousIncludeUserRules=$scope.meta.advanced.includeUserRules}function _revertToPreviousState(){$scope.selectedVendors=$scope.previouslySelected;$scope.meta.advanced.showStagedDeployed=$scope.meta.advanced.previousShowStagedDeployed;$scope.meta.advanced.showEnabledDisabled=$scope.meta.advanced.previousShowEnabledDisabled;$scope.meta.advanced.includeUserRules=$scope.meta.advanced.previousIncludeUserRules;$scope.meta.advanced.changed=false}function _addAdvancedSearchToQuery(){if($scope.meta.advanced.showStagedDeployed===PUBLISHED_ENUM.STAGED){queryService.query.addSearchField("c","staged","eq","1")}else{queryService.query.clearSearchField("staged","eq","1")}if($scope.meta.advanced.showStagedDeployed===PUBLISHED_ENUM.DEPLOYED){queryService.query.addSearchField("b","staged","eq","0")}else{queryService.query.clearSearchField("staged","eq","0")}if($scope.meta.advanced.showEnabledDisabled===STATUS_ENUM.ENABLED){queryService.query.addSearchField("d","disabled","eq","0")}else{queryService.query.clearSearchField("disabled","eq","0")}if($scope.meta.advanced.showEnabledDisabled===STATUS_ENUM.DISABLED){queryService.query.addSearchField("e","disabled","eq","1")}else{queryService.query.clearSearchField("disabled","eq","1")}if(!$scope.meta.advanced.includeUserRules){queryService.query.removeParameter("config")}else{queryService.query.addParameter("config",USER_CONFIG)}var vendors=_getSelectedVendorIDs();if(vendors.length===0){queryService.query.removeParameter("vendor_id")}else{queryService.query.addParameter("vendor_id",vendors.join(","))}}$scope.onAdvancedChanged=function(type){switch(type){case"vendor":if($scope.previouslySelected!==$scope.selectedVendors){$scope.meta.advanced.changed=true}break;case"userDefined":if($scope.meta.advanced.previousIncludeUserRules!==$scope.meta.advanced.includeUserRules){$scope.meta.advanced.changed=true}break;default:$scope.meta.advanced.changed=true}};$scope.hasSearchFilter=function(){return $scope.filteredData===true||$scope.advancedSearchApplied===true||$scope.appliedVendors.length<$scope.vendors.length};$scope.clearFilter=function(){$scope.meta.filterValue="";$scope.activeSearch=false;$scope.filteredData=false;queryService.query.clearSearchField("*","contains");_addAdvancedSearchToQuery();return $scope.selectPage(1)};$scope.startFilter=function(){$scope.activeSearch=$scope.meta.filterValue!=="";$scope.filteredData=false;if($scope.meta.filterValue){queryService.query.addSearchField("a","*","contains",$scope.meta.filterValue)}else{queryService.query.clearSearchField("*","contains")}return $scope.selectPage(1).then((function(){_addAdvancedSearchToQuery();if($scope.meta.filterValue){$scope.filteredData=true}_updatePreviousState();$scope.meta.advanced.changed=false}),(function(){_revertToPreviousState()})).finally((function(){_updateAdvancedSearchApplied()}))};$scope.openAdvancedSearch=function($event){$event.preventDefault();$event.stopPropagation();$event.currentTarget.blur();$scope.advancedSearchOpen=!$scope.advancedSearchOpen};$scope.applyAdvancedFilter=function($event){$event.preventDefault();$event.stopPropagation();$scope.advancedSearchOpen=false;$scope.toggleSearch()};$scope.resetAdvancedFilter=function($event){$event.preventDefault();$event.stopPropagation();$scope.advancedSearchOpen=false;$scope.resetFilter()};function _updateAppliedVendor(){$scope.appliedVendors=$scope.selectedVendors.slice()}$scope.resetFilter=function(){$scope.meta.advanced.changed=false;if($scope.meta.advanced.showStagedDeployed!==PUBLISHED_ENUM.BOTH){$scope.meta.advanced.showStagedDeployed=PUBLISHED_ENUM.BOTH;$scope.meta.advanced.changed=true}if($scope.meta.advanced.showEnabledDisabled!==STATUS_ENUM.BOTH){$scope.meta.advanced.showEnabledDisabled=STATUS_ENUM.BOTH;$scope.meta.advanced.changed=true}if(!$scope.meta.advanced.includeUserRules){$scope.meta.advanced.includeUserRules=true;$scope.meta.advanced.changed=true}if($scope.selectedVendors.length<$scope.vendors.length){$scope.selectedVendors=$scope.vendors;$scope.meta.advanced.changed=true}if($scope.meta.advanced.changed){$scope.startFilter().then(_updateAppliedVendor)}};$scope.triggerToggleSearch=function(event){if(event.keyCode===27){$scope.toggleSearch(true)}if(event.keyCode===13){$scope.toggleSearch()}};$scope.toggleSearch=function(isClick){var filter=$scope.meta.filterValue;var advancedChanged=$scope.meta.advanced.changed;if(!filter&&!advancedChanged&&($scope.activeSearch||$scope.filteredData)){$scope.clearFilter().then(_updateAppliedVendor)}else if(isClick&&$scope.activeSearch){$scope.clearFilter().then(_updateAppliedVendor)}else if(filter||advancedChanged){$scope.startFilter().then(_updateAppliedVendor)}};$scope.selectPage=function(page){if(page&&angular.isNumber(page)){$scope.meta.pageNumber=page}queryService.query.updatePagination($scope.meta.pageNumber,$scope.meta.pageSize);return $scope.fetch()};$scope.sortList=function(meta,defaultSort){queryService.query.clearSort();queryService.query.addSortField(meta.sortBy,meta.sortType,meta.sortDirection);if(!defaultSort){$scope.fetch()}};$scope.disable=function(rule){var ruleIndentifier=rule.id||"rule";if(rule.hasOwnProperty("meta_msg")&&rule.meta_msg!==""){ruleIndentifier+=": "+rule.meta_msg}return ruleService.disableRule(rule.config,rule.id,false).then((function(){rule.disabled=true;rule.staged=true;$scope.stagedChanges=true;alertService.add({type:"success",message:LOCALE.maketext("You successfully disabled “[_1]” in the list of [asis,ModSecurity™] rules.",_.escape(ruleIndentifier)),id:"alertDisableSuccess"})}),(function(error){alertService.add({type:"danger",message:_.escape(error),id:"errorDisablingRule"})}))};$scope.enable=function(rule){var ruleIndentifier=rule.id||"rule";if(rule.hasOwnProperty("meta_msg")&&rule.meta_msg!==""){ruleIndentifier+=": "+rule.meta_msg}return ruleService.enableRule(rule.config,rule.id,false).then((function(){rule.disabled=false;rule.staged=true;$scope.stagedChanges=true;alertService.add({type:"success",message:LOCALE.maketext("You successfully enabled “[_1]” in the list of [asis,ModSecurity™] rules.",_.escape(ruleIndentifier)),id:"alertEnableSuccess"})}),(function(error){alertService.add({type:"danger",message:_.escape(error),id:"errorEnablingRule"})}))};$scope.delete=function(rule){var ruleIndentifier=rule.id||"rule";if(rule.hasOwnProperty("meta_msg")&&rule.meta_msg!==""){ruleIndentifier+=": "+rule.meta_msg}rule.deleting=true;return ruleService.deleteRule(rule.id).then((function(){$scope.fetch();alertService.add({type:"success",message:LOCALE.maketext("You successfully deleted “[_1]” from the list of [asis,ModSecurity™] rules.",_.escape(ruleIndentifier)),id:"alertDeleteSuccess"})}),(function(error){rule.deleting=false;rule.showDeleteConfirm=false;alertService.add({type:"danger",message:_.escape(error),id:"errorDeletingRule"})}))};$scope.deployChanges=function(){$scope.pendingChanges=true;return ruleService.deployQueuedRules().then((function(){$scope.stagedChanges=false;alertService.add({type:"success",message:LOCALE.maketext("You successfully deployed the staged changes and [asis,Apache] received a graceful restart request."),id:"successDeployChanges"})}),(function(error){alertService.add({type:"danger",message:_.escape(error),id:"errorDeployChanges"})})).finally((function(){$scope.pendingChanges=false;$scope.fetch()}))};$scope.discardChanges=function(){$scope.pendingChanges=true;return ruleService.discardQueuedRules().then((function(){var replace=false;$scope.stagedChanges=false;return $scope.fetch().then((function(){replace=true}),(function(){replace=false})).finally((function(){$scope.discardConfirm=false;alertService.add({type:"success",message:LOCALE.maketext("You successfully discarded the staged changes."),id:"successDiscardingChanges",replace:replace})}))}),(function(error){$scope.fetch();alertService.add({type:"danger",message:_.escape(error),id:"errorDiscardingChanges"})})).finally((function(){$scope.pendingChanges=false}))};var _initializeSelectedVendors=function(){var vendorIds=[];var vendor_id_param=queryService.route.getParameter("vendor_id");if(vendor_id_param){vendorIds=vendor_id_param.split(",")}var config_param=queryService.route.getParameter("config");var vendors=[];if(!angular.isDefined(vendor_id_param)&&!angular.isDefined(config_param)){vendors=$scope.vendors}else if(vendorIds.length>0){vendors=_.filter($scope.vendors,(function(vendor){var id=_.find(vendorIds,(function(id){return vendor.vendor_id===id}));return!!id}))}$scope.previouslySelected=$scope.selectedVendors=vendors;$scope.appliedVendors=vendors.slice()};$scope.isCustomVendor=function(rule){return rule.hasOwnProperty("vendor_id")&&rule.vendor_id===""};$scope.getVendorName=function(rule){var currentVendor;if(rule.vendor_id!==""){for(var i=0,length=$scope.vendors.length;i<length;i++){currentVendor=$scope.vendors[i];if(rule.vendor_id===currentVendor.vendor_id){return currentVendor.name}}}return LOCALE.maketext("Custom")};function _onlyEnabledVendors(vendors){if(vendors&&angular.isArray(vendors)){return vendors.filter((function(vendor){return vendor.enabled}))}else{return[]}}$scope.getVendors=function(){spinnerAPI.start("ruleListSpinner");return vendorService.fetchList().then((function(results){if(angular.isArray(results.items)){$scope.vendors=_onlyEnabledVendors(results.items);_initializeSelectedVendors()}else{alertService.add({message:"The system was unable to retrieve the list of available vendors.",type:"danger"})}}),(function(error){alertService.add({type:"danger",message:_.escape(error),id:"errorLoadingVendorList"})})).finally((function(){spinnerAPI.stop("ruleListSpinner")}))};function _getSelectedVendorIDs(){return $scope.selectedVendors&&$scope.selectedVendors.map((function(vendor){return vendor.vendor_id}))}$scope.fetch=function(){$scope.loadingPageData=true;spinnerAPI.start("ruleListSpinner");alertService.removeById("errorFetchRulesList");return ruleService.fetchRulesList(_getSelectedVendorIDs(),$scope.meta).then((function(results){$scope.rules=results.items;$scope.stagedChanges=results.stagedChanges;$scope.totalItems=results.totalItems;$scope.totalPages=results.totalPages}),(function(error){alertService.add({type:"danger",message:_.escape(error),id:"errorFetchRulesList"});throw error})).finally((function(){$scope.loadingPageData=false;spinnerAPI.stop("ruleListSpinner")}))};$scope.generateIndicatorText=function(type){switch(type){case"vendor-short":return $scope.appliedVendors.length;case"vendor-long":return LOCALE.maketext("[quant,_1,Vendor,Vendors]",$scope.appliedVendors.length);case"vendor-title":return $scope.generateVendorTitle();case"user-title":return $scope.meta.advanced.previousIncludeUserRules?LOCALE.maketext("Your user-defined rules are included below."):LOCALE.maketext("Your user-defined rules are not included below.");default:return LOCALE.maketext("Loading …")}};$scope.generateVendorTitle=function(){var vendors=$scope.appliedVendors;if(vendors.length===0){return LOCALE.maketext("You have not selected any vendor rule sets.")}var vendorNames=vendors.map((function(vendor){return vendor.name}));return LOCALE.maketext("The displayed rules are from the following vendor rule [numerate,_1,set,sets]: [list_and,_2]",vendors.length,vendorNames)};function _setMenuLeft(menu,groupWidth){menu.css("left",-1*groupWidth);menu.css("right","auto")}function _setMenuRight(menu){menu.css("left","");menu.css("right","")}$scope.fixMenuClipping=function(event){var menu=this.find(".advanced-filter-menu");var inputGroup=this.siblings("input");var groupWidth=inputGroup.outerWidth();if(event.type==="open"){menu.css("opacity",0)}$timeout((function(){if(menu){switch(event.type){case"resize":if(menu.offset().left<0){_setMenuLeft(menu,groupWidth)}else if(groupWidth>menu.outerWidth()){_setMenuRight(menu)}break;case"open":if(menu.offset().left<0){_setMenuLeft(menu,groupWidth)}break;case"close":_setMenuRight(menu);break}menu.css("opacity",1)}}),0,false)};$scope.rules=[];$scope.vendors=[];$scope.appliedVendors=[];$scope.totalPages=0;$scope.totalItems=0;var pageSize=queryService.route.getPageSize(queryService.DEFAULT_PAGE_SIZE);var page=queryService.route.getPage(pageSize,1);var sorting=queryService.route.getSortProperties("disabled","","asc");function _includeUserRules(){var config=queryService.route.getParameter("config");var vendor_id=queryService.route.getParameter("vendor_id");if(config!==USER_CONFIG&&!vendor_id){return true}return config===USER_CONFIG}var staged=LOGIC.compareOrDefault(queryService.route.getSearchFieldValue("staged"),"1",true);var deployed=LOGIC.compareOrDefault(queryService.route.getSearchFieldValue("staged"),"0",true);var disabled=LOGIC.compareOrDefault(queryService.route.getSearchFieldValue("disabled"),"1",true);var enabled=LOGIC.compareOrDefault(queryService.route.getSearchFieldValue("disabled"),"0",true);$scope.meta={filterBy:"*",filterCompare:"contains",filterValue:"",pageSize:pageSize,pageNumber:page,sortBy:sorting.field,sortType:sorting.type,sortDirection:sorting.direction,pageSizes:[10,20,50,100],advanced:{showStagedDeployed:LOGIC.translateBinaryAndToState(staged,deployed,PUBLISHED_ENUM.BOTH,PUBLISHED_ENUM.STAGED,PUBLISHED_ENUM.DEPLOYED,PUBLISHED_ENUM.BOTH),showEnabledDisabled:LOGIC.translateBinaryAndToState(enabled,disabled,STATUS_ENUM.BOTH,STATUS_ENUM.ENABLED,STATUS_ENUM.DISABLED,STATUS_ENUM.BOTH),includeUserRules:_includeUserRules(),changed:false}};$scope.appliedIncludeUserRules=$scope.meta.advanced.includeUserRules;_updatePreviousState();$scope.activeSearch=$scope.filteredData=$scope.meta.filterValue?true:false;$scope.$watch("meta.filterValue",(function(oldValue,newValue){if(oldValue===newValue){return}$scope.activeSearch=false}));$scope.$watch("meta.pageSize",(function(oldValue,newValue){if(oldValue===newValue){return}$scope.selectPage(1)}));$scope.isInstalled=PAGE.installed;if(!$scope.isInstalled){$scope.loadView("hitList")}$scope.$on("$viewContentLoaded",(function(){if(app.firstLoad.rules&&PAGE.rules){app.firstLoad.rules=false;$scope.loadingPageData=false;$scope.advancedSearchOpen=false;var vendors=vendorService.prepareList(PAGE.vendors);$scope.vendors=_onlyEnabledVendors(vendors.items);_initializeSelectedVendors();var rules=ruleService.prepareList(PAGE.rules);$scope.rules=rules.items;$scope.stagedChanges=rules.stagedChanges;$scope.totalItems=rules.totalItems;$scope.totalPages=rules.totalPages;if(!rules.status){$scope.stagedChanges=true;$scope.loadingPageData="error";alertService.add({type:"danger",message:LOCALE.maketext("There was a problem loading the page. The system is reporting the following error: [_1].",_.escape(PAGE.rules.metadata.reason)),id:"errorFetchRulesList"})}}else{$timeout((function(){$scope.getVendors().then((function(){$scope.selectPage(1)}))}))}}))}]);return controller}));
| ver. 1.4 |
Github
|
.
| PHP 8.1.34 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings