File manager - Edit - /usr/local/cpanel/whostmgr/docroot/templates/greylist/services/GreylistDataSource.js
Back
/* # templates/greylist/services/GraylistDataSource.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 */ define( [ "angular", "jquery", "lodash", "cjt/util/locale", "cjt/util/parse", "cjt/io/api", "cjt/io/whm-v1-request", "cjt/io/whm-v1" ], function(angular, $, _, LOCALE, PARSE, API, APIREQUEST, APIDRIVER) { // Retrieve the current application var app = angular.module("App"); var greylistDataSource = app.factory("GreylistDataSource", ["$q", "PAGE", function($q, PAGE) { var greylistData = {}; greylistData.trustedHosts = []; greylistData.configSettings = { is_enabled: PARSE.parsePerlBoolean(PAGE.is_enabled), is_exim_enabled: PARSE.parsePerlBoolean(PAGE.is_exim_enabled), initial_block_time_mins: parseInt(PAGE.initial_block_time_mins), record_exp_time_mins: parseInt(PAGE.record_exp_time_mins), must_try_time_mins: parseInt(PAGE.must_try_time_mins), spf_bypass: PARSE.parsePerlBoolean(PAGE.spf_bypass), DEFAULT: PAGE.config_default, }; greylistData.commonMailProviders = {}; greylistData.autotrust_new_common_mail_providers = true; greylistData.loadCommonMailProviders = function() { var deferred = $q.defer(); var apiCall = new APIREQUEST.Class(); apiCall.initialize("", "cpgreylist_load_common_mail_providers_config"); API.promise(apiCall.getRunArguments()) .done(function(response) { response = response.parsedResponse; if (response.status) { var providers = response.data.common_mail_providers; for (var provider in providers) { if (providers[provider].hasOwnProperty("autoupdate") && providers[provider].hasOwnProperty("is_trusted")) { providers[provider].autoupdate = PARSE.parsePerlBoolean(providers[provider].autoupdate); providers[provider].is_trusted = PARSE.parsePerlBoolean(providers[provider].is_trusted); } } greylistData.commonMailProviders = response.data.common_mail_providers; greylistData.autotrust_new_common_mail_providers = PARSE.parsePerlBoolean(response.data.autotrust_new_common_mail_providers); deferred.resolve(greylistData); } else { deferred.reject(response); } }); return deferred.promise; }; greylistData.trustOrUntrustProviders = function(trust, settings) { var deferred = $q.defer(); var apiCall = new APIREQUEST.Class(); var apiFunc = trust ? "cpgreylist_trust_entries_for_common_mail_provider" : "cpgreylist_untrust_entries_for_common_mail_provider"; apiCall.initialize("", apiFunc); var paramIndex = 0; for (var provider in settings) { if (settings.hasOwnProperty(provider)) { /* If you are going to trust providers and the provider is currently checked in the UI (trusted), you want to add it to the list of providers to be sent to the trust api call. If you are going to untrust providers and the provider is currently unchecked in the UI (untrusted), you want to add it to the list of providers to be sent to the untrust api call. */ if (trust && settings[provider].is_trusted) { apiCall.addArgument("provider-" + paramIndex, provider); paramIndex++; } else if (!trust && !settings[provider].is_trusted) { apiCall.addArgument("provider-" + paramIndex, provider); paramIndex++; } } } API.promise(apiCall.getRunArguments()) .done(function(response) { response = response.parsedResponse; if (response.status) { var providers = trust ? Object.keys(response.data.providers_trusted) : Object.keys(response.data.providers_untrusted); var change_count = providers.length; var failed = response.data.providers_failed; for (var i = 0; i < change_count; i++) { greylistData.commonMailProviders[providers[i]].is_trusted = trust ? true : false; } var results = {}; results.failed = failed; if (trust) { results.trusted = providers; } else { results.untrusted = providers; } deferred.resolve(results); } else { deferred.reject(response.error); } }); return deferred.promise; }; greylistData.trustCommonMailProviders = function(settings) { return greylistData.trustOrUntrustProviders(true, settings); }; greylistData.untrustCommonMailProviders = function(settings) { return greylistData.trustOrUntrustProviders(false, settings); }; greylistData.saveCommonMailProviders = function(settings, autotrust) { var deferred = $q.defer(); var apiCall = new APIREQUEST.Class(); apiCall.initialize("", "cpgreylist_save_common_mail_providers_config"); apiCall.addArgument("autotrust_new_common_mail_providers", autotrust ? 1 : 0); for (var provider in settings) { if (settings.hasOwnProperty(provider)) { apiCall.addArgument(provider, settings[provider].autoupdate ? 1 : 0); } } API.promise(apiCall.getRunArguments()) .done(function(response) { response = response.parsedResponse; if (response.status) { var providers = response.data.common_mail_providers; greylistData.autotrust_new_common_mail_providers = PARSE.parsePerlBoolean(response.data.autotrust_new_common_mail_providers); for (var provider in providers) { if (providers[provider].hasOwnProperty("autoupdate")) { if (!greylistData.commonMailProviders.hasOwnProperty(provider)) { greylistData.commonMailProviders[provider] = {}; greylistData.commonMailProviders[provider].is_trusted = greylistData.autotrust_new_common_mail_providers; greylistData.commonMailProviders[provider].display_name = providers[provider].display_name; } greylistData.commonMailProviders[provider].autoupdate = PARSE.parsePerlBoolean(providers[provider].autoupdate); } } deferred.resolve(true); } else { deferred.reject(response.error); } }); return deferred.promise; }; greylistData.saveConfigSettings = function(config) { var deferred = $q.defer(); var apiCall = new APIREQUEST.Class(); apiCall.initialize("", "save_cpgreylist_config"); for (var setting in config) { if (greylistData.configSettings.hasOwnProperty(setting)) { if (setting === "is_enabled" || setting === "is_exim_enabled") { continue; } else if (typeof config[setting] === "boolean") { apiCall.addArgument(setting, config[setting] === true ? 1 : 0); } else { apiCall.addArgument(setting, config[setting]); } } } API.promise(apiCall.getRunArguments()) .done(function(response) { response = response.parsedResponse; if (response.status) { for (var returnedSetting in response.data.cpgreylist_config) { if (greylistData.configSettings.hasOwnProperty(returnedSetting)) { if (returnedSetting === "is_enabled" || returnedSetting === "is_exim_enabled" || returnedSetting === "spf_bypass") { greylistData.configSettings[returnedSetting] = PARSE.parsePerlBoolean(response.data.cpgreylist_config[returnedSetting]); } else { greylistData.configSettings[returnedSetting] = parseInt(response.data.cpgreylist_config[returnedSetting], 10); } } } deferred.resolve(response.data); } else { deferred.reject(response.error); } }); return deferred.promise; }; greylistData.status = function() { var deferred = $q.defer(); var apiCall = new APIREQUEST.Class(); apiCall.initialize("", "cpgreylist_status"); API.promise(apiCall.getRunArguments()) .done(function(response) { response = response.parsedResponse; greylistData.configSettings.is_enabled = PARSE.parsePerlBoolean(response.data.is_enabled); greylistData.configSettings.is_exim_enabled = PARSE.parsePerlBoolean(response.data.is_exim_enabled); deferred.resolve(greylistData.configSettings); }); return deferred.promise; }; greylistData.enable = function() { var deferred = $q.defer(); var apiCall = new APIREQUEST.Class(); apiCall.initialize("", "enable_cpgreylist"); API.promise(apiCall.getRunArguments()) .done(function(response) { response = response.parsedResponse; if (response.status) { deferred.resolve(response); greylistData.configSettings.is_enabled = true; } else { deferred.reject(response.error); } }); return deferred.promise; }; greylistData.disable = function() { var deferred = $q.defer(); var apiCall = new APIREQUEST.Class(); apiCall.initialize("", "disable_cpgreylist"); API.promise(apiCall.getRunArguments()) .done(function(response) { response = response.parsedResponse; if (response.status) { deferred.resolve(response.status); greylistData.configSettings.is_enabled = false; } else { deferred.reject(response.error); } }); return deferred.promise; }; greylistData.enabled = function() { return greylistData.configSettings.is_enabled; }; greylistData.addTrustedHosts = function(ips_to_add, comment) { var deferred = $q.defer(); var apiCall = new APIREQUEST.Class(); apiCall.initialize("", "create_cpgreylist_trusted_host"); apiCall.addArgument("comment", comment); for (var a = 0; a < ips_to_add.length; a++) { apiCall.addArgument("ip-" + a, ips_to_add[a]); } API.promise(apiCall.getRunArguments()) .done(function(response) { // create items from the response response = response.parsedResponse; if (response.status) { var ips_added = [], ips_updated = []; // process all the new records for (var l = 0, len = response.data.ips_added.length; l < len; l++) { var ip = response.data.ips_added[l].host_ip; var index = -1; // see if we can find an existing record for (var i = 0, cacheLen = greylistData.trustedHosts.length; i < cacheLen; i++) { var item = greylistData.trustedHosts[i]; if (item.host_ip === ip) { index = i; break; } } if (index !== -1) { // update the existing record in our structure greylistData.trustedHosts[index] = response.data.ips_added[l]; ips_updated.push(ip); } else { // new record, so add it to the array greylistData.trustedHosts.push(response.data.ips_added[l]); ips_added.push(ip); } } deferred.resolve({ rejected: response.data.ips_failed, added: ips_added, updated: ips_updated, comment: response.data.comment }); } else { var error_details = { main_message: response.error, secondary_messages: [] }; var ips_rejected = Object.keys(response.data.ips_failed); var ip_to_show_in_message; for (var ed = 0; ed < ips_rejected.length; ed++) { ip_to_show_in_message = _.escape(response.data.ips_failed[ips_rejected[ed]]); error_details.secondary_messages.push(ip_to_show_in_message); } deferred.reject(error_details); } }); return deferred.promise; }; greylistData.deleteTrustedHosts = function(hostsToDelete) { var deferred = $q.defer(); var apiCall = new APIREQUEST.Class(); apiCall.initialize("", "delete_cpgreylist_trusted_host"); var hostCount = hostsToDelete.length; for (var i = 0; i < hostCount; i++) { apiCall.addArgument("ip-" + i, hostsToDelete[i]); } API.promise(apiCall.getRunArguments()) .done(function(response) { // create items from the response response = response.parsedResponse; if (response.status) { var i = 0, len = response.data.ips_removed.length; var hostsActuallyDeleted = []; for (; i < len; i++) { hostsActuallyDeleted.push(_.find(greylistData.trustedHosts, { host_ip: response.data.ips_removed[i] })); } if (hostsActuallyDeleted.length > 0) { greylistData.trustedHosts = _.difference(greylistData.trustedHosts, hostsActuallyDeleted); } deferred.resolve({ removed: response.data.ips_removed, not_removed: response.data.ips_failed }); } else { // pass the error along deferred.reject(response.error); } }); return deferred.promise; }; greylistData.deleteAllTrustedHosts = function() { var i = 0, len = greylistData.trustedHosts.length, ipsToDelete = []; for (; i < len; i++) { ipsToDelete.push(greylistData.trustedHosts[i].host_ip); } return greylistData.deleteTrustedHosts(ipsToDelete); }; greylistData.loadTrustedHosts = function(forceReload) { var deferred = $q.defer(); if (forceReload) { var apiCall = new APIREQUEST.Class(); apiCall.initialize("", "read_cpgreylist_trusted_hosts"); API.promise(apiCall.getRunArguments()) .done(function(response) { response = response.parsedResponse; if (response.status) { // on API call success, populate data structure greylistData.trustedHosts = response.data; deferred.resolve(null); } else { // pass the error along deferred.reject(response.error); } }); } else { // send a promise with null. // we are already grabbing the current trustedHosts data structure in the controller. deferred.resolve(null); } return deferred.promise; }; greylistData.isServerNetblockTrusted = function() { var deferred = $q.defer(); var apiCall = new APIREQUEST.Class(); apiCall.initialize("", "cpgreylist_is_server_netblock_trusted"); API.promise(apiCall.getRunArguments()) .done(function(response) { response = response.parsedResponse; if (response.status) { var trustedBlocks = [], untrustedBlocks = [], ip_blocks = response.data.ip_blocks; // process all the blocks var keys = _.keys(ip_blocks); for (var l = 0, len = keys.length; l < len; l++) { var block = keys[l]; var isTrusted = PARSE.parsePerlBoolean(ip_blocks[keys[l]]); if (isTrusted) { trustedBlocks.push(block); } else { untrustedBlocks.push(block); } } // figure out if all the blocks are trusted var areAllBlocksTrusted; if (untrustedBlocks.length > 0) { areAllBlocksTrusted = false; } else { areAllBlocksTrusted = true; } // return an object that tells us if all the blocks are trusted, // the actual blocks that are not trusted, and the all the blocks deferred.resolve({ status: areAllBlocksTrusted, untrusted: untrustedBlocks, netblock: trustedBlocks.concat(untrustedBlocks) }); } else { deferred.reject(response.error); } }); // pass the promise back to the controller return deferred.promise; }; greylistData.fetchDeferredEntries = function(meta) { var deferred = $q.defer(); var apiCall = new APIREQUEST.Class(); apiCall.initialize("", "read_cpgreylist_deferred_entries"); if (meta) { if (meta.filterBy && meta.filterValue) { apiCall.addFilter(meta.filterBy, meta.filterCompare, meta.filterValue); } if (meta.sortBy && meta.sortDirection) { apiCall.addSorting(meta.sortBy, meta.sortDirection, meta.sortType); } if (meta.pageNumber) { apiCall.addPaging(meta.pageNumber, meta.pageSize || 20); } } API.promise(apiCall.getRunArguments()) .done(function(response) { response = response.parsedResponse; if (response.status) { var return_data = {}; return_data.list = response.data.greylist_deferred_entries; return_data.utc_offset = response.data.server_tzoffset; return_data.timezone = response.data.server_timezone; return_data.meta = response.meta; deferred.resolve(return_data); } else { deferred.reject(response.error); } }); return deferred.promise; }; return greylistData; } ]); return greylistDataSource; } );
| ver. 1.4 |
Github
|
.
| PHP 8.1.34 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings