Viewing File: /usr/local/cpanel/whostmgr/docroot/templates/greylist/views/reports.js
/*
# templates/greylist/views/reports.js Copyright(c) 2020 cPanel, L.L.C.
# All rights reserved.
# copyright@cpanel.net http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited
*/
/* global define, PAGE */
/* jshint -W100 */
define(
[
"angular",
"jquery",
"lodash",
"cjt/util/parse",
"cjt/util/locale",
"moment",
"uiBootstrap",
"cjt/directives/actionButtonDirective",
"cjt/directives/pageSizeDirective",
"cjt/directives/searchDirective",
"cjt/directives/toggleSortDirective",
"cjt/decorators/paginationDecorator",
"cjt/decorators/growlDecorator",
"app/services/GreylistDataSource",
"app/filters/relativeTimeFilter"
], function(angular, $, _, PARSE, LOCALE, moment) {
var ipV6Test = /:/;
// set the initial locale
var currentLocale = PAGE.current_locale;
moment.locale(currentLocale);
// Retrieve the current application
var app = angular.module("App");
var controller = app.controller(
"reportsController",
["$scope", "GreylistDataSource", "growl", "growlMessages", "PAGE",
function($scope, GreylistDataSource, growl, growlMessages, PAGE) {
$scope.greylistEntries = [];
$scope.dropdownAddresses = [];
$scope.loadingPageData = false;
$scope.updatingPageData = false;
$scope.meta = {
filterBy: "*",
filterCompare: "contains",
filterValue: "",
sortDirection: "desc",
sortBy: "create_time",
sortType: "",
pageNumber: 1,
pageNumberStart: 0,
pageNumberEnd: 0,
pageSize: 20,
pageSizes: [20, 50, 100],
maxPages: 0,
totalRows: 0
};
function convertIpToSlash16Range(ipToConvert) {
var ipSegments = ipToConvert.split(".");
return ipSegments[0] + "." + ipSegments[1] + ".0.0/16";
}
function convertIpToSlash24Range(ipToConvert) {
var ipSegments = ipToConvert.split(".");
return ipSegments[0] + "." + ipSegments[1] + "." + ipSegments[2] + ".0/24";
}
$scope.search = function() {
return $scope.fetch({ "isUpdate": true });
};
$scope.sortList = function() {
return $scope.fetch({ "isUpdate": true });
};
$scope.changePageSize = function() {
return $scope.fetch({ "isUpdate": true });
};
$scope.fetchPage = function(page) {
// set the page if requested
if (page && angular.isNumber(page)) {
$scope.meta.currentPage = page;
}
return $scope.fetch({ "isUpdate": true });
};
$scope.toggleIPAddressDropdown = function(open, address) {
if (open) {
if (ipV6Test.test(address)) {
$scope.dropdownAddresses = [
address + "/128",
address + "/64"
];
} else {
$scope.dropdownAddresses = [
address,
convertIpToSlash24Range(address),
convertIpToSlash16Range(address)
];
}
}
};
$scope.fetch = function(options) {
if (options && options.isUpdate) {
$scope.updatingPageData = true;
} else {
$scope.loadingPageData = true;
$scope.greylistEntries = [];
}
return GreylistDataSource.fetchDeferredEntries($scope.meta)
.then(function(data) {
$scope.greylistEntries = data.list;
$scope.timezone = data.timezone;
$scope.utcOffset = data.utc_offset;
$scope.meta.pageSize = parseInt(data.meta.paginate.page_size, 10);
$scope.meta.totalRows = data.meta.paginate.total_records;
$scope.meta.pageNumber = data.meta.paginate.current_page;
$scope.meta.pageNumberStart = data.meta.paginate.current_record;
if ($scope.meta.totalRows === 0) {
$scope.meta.pageNumberStart = 0;
}
$scope.meta.pageNumberEnd = ($scope.meta.pageNumber * $scope.meta.pageSize);
if ($scope.meta.pageNumberEnd > $scope.meta.totalRows) {
$scope.meta.pageNumberEnd = $scope.meta.totalRows;
}
}, function(error) {
growl.error(error);
}
)
.finally(function() {
$scope.loadingPageData = false;
$scope.updatingPageData = false;
});
};
$scope.addToTrustedHost = function(ipOrRange) {
if (!ipOrRange) {
return;
}
var addTime = new Date();
var comment = "Added from Greylist Report at " + addTime.toUTCString();
return $scope.$parent.addTrustedHost([ipOrRange], comment);
};
$scope.refresh = function() {
return $scope.fetch({ "isUpdate": false });
};
$scope.init = function() {
$scope.fetch({ "isUpdate": false });
};
$scope.init();
}
]);
return controller;
}
);
Back to Directory
File Manager