Viewing File: /usr/local/cpanel/whostmgr/docroot/templates/autossl/services/AutoSSLConfigureService.js
/* global define, PAGE */
define(
[
"angular",
"lodash",
"cjt/io/api",
"cjt/io/whm-v1-request",
"cjt/io/whm-v1", // IMPORTANT: Load the driver so it’s ready
],
function(angular, _, API, APIREQUEST) {
var app = angular.module("App");
function AutoSSLConfigureServiceFactory($q, PAGE) {
var AutoSSLConfigureService = {};
var users = [];
var usermap = {};
var NO_MODULE = null;
function _call_api(module, call, params, filters) {
var deferred = $q.defer();
var apiCall = new APIREQUEST.Class();
apiCall.initialize(module, call);
angular.forEach(params, function(param, key) {
apiCall.addArgument(key, param);
});
if (filters) {
angular.forEach(filters, function(filter) {
apiCall.addFilter(filter.key, filter.operator, filter.value);
});
}
API.promise(apiCall.getRunArguments())
.done(function(response) {
response = response.parsedResponse;
if (response.status) {
deferred.resolve(response);
} else {
deferred.reject(response.error);
}
});
return deferred.promise;
}
function _build_batch_command(call, params) {
var command_str = call;
if (params) {
var command_params = [];
angular.forEach(params, function(value, key) {
command_params.push(key + "=" + encodeURIComponent(value));
});
command_str += "?" + command_params.join("&");
}
return command_str;
}
AutoSSLConfigureService._set_auto_ssl_for_users = function(items, enable) {
/* enable the feature means disable the override */
var features = JSON.stringify({
autossl: enable ? "1" : "0"
});
// This gets added to in the foreach loop. Format is necessary for batching.
var params = {
command: []
};
angular.forEach(items, function(item) {
item.updating = true;
params.command.push(_build_batch_command("add_override_features_for_user", {
user: item.user,
features: features
}));
});
return _call_api(NO_MODULE, "batch", params).then(function() {
angular.forEach(items, function(item) {
item.auto_ssl_enabled = enable ? "enabled" : "disabled";
});
}).finally(function() {
angular.forEach(items, function(item) {
item.updating = false;
});
});
};
AutoSSLConfigureService.enable_auto_ssl_for_users = function(items) {
return AutoSSLConfigureService._set_auto_ssl_for_users(items, true);
};
AutoSSLConfigureService.disable_auto_ssl_for_users = function(items) {
return AutoSSLConfigureService._set_auto_ssl_for_users(items, false);
};
AutoSSLConfigureService.reset_auto_ssl_for_users = function(items) {
/* enable the feature means disable the override */
var features = JSON.stringify(["autossl"]);
// This gets added to in the foreach loop. Format is necessary for batching.
var params = {
command: []
};
angular.forEach(items, function(item) {
item.updating = true;
params.command.push(_build_batch_command("remove_override_features_for_user", {
user: item.user,
features: features
}));
});
return _call_api(NO_MODULE, "batch", params).then(function() {
angular.forEach(items, function(item) {
item.auto_ssl_enabled = "inherit";
});
}).finally(function() {
angular.forEach(items, function(item) {
item.updating = false;
});
});
};
AutoSSLConfigureService.get_user_by_username = function(username) {
var user_i = usermap[username];
return users[user_i];
};
AutoSSLConfigureService.get_users = function() {
return users;
};
AutoSSLConfigureService.fetch_users = function() {
function _update(data) {
users = [];
usermap = {};
angular.forEach(data, function(user) {
usermap[user.user] = users.length;
users.push({
"user": user.user,
"rowSelected": 0,
"updating": true,
"auto_ssl_settings": {}
});
/* set to true (has ssl) if not set to false by fetch_disabled */
});
return AutoSSLConfigureService.get_users();
}
if (PAGE.users) {
return _update(PAGE.users);
} else {
PAGE.users = [];
}
};
AutoSSLConfigureService.fetch_users_features_settings = function(users) {
function _update(data) {
angular.forEach(data, function(setting) {
var user = AutoSSLConfigureService.get_user_by_username(setting.user);
user.feature_list = setting.feature_list;
user.auto_ssl_settings = setting;
user.auto_ssl_enabled = "inherit";
if (setting.cpuser_setting === "0" || setting.cpuser_setting === "1") {
user.auto_ssl_enabled = setting.cpuser_setting === "1" ? "enabled" : "disabled";
}
});
return AutoSSLConfigureService.get_users();
}
/* The API call will fail if no users are provided. */
if (!users.length) {
return $q.reject();
}
return _call_api(NO_MODULE, "get_users_features_settings", {
"user": users.map(function(user) {
return user.user;
}),
"feature": "autossl"
}).then(function(result) {
_update(result.data);
}).finally(function() {
angular.forEach(users, function(user) {
user.updating = false;
});
});
};
AutoSSLConfigureService.start_autossl_for_user = function(username) {
return _call_api(
NO_MODULE,
"start_autossl_check_for_one_user", {
username: username
}
);
};
return AutoSSLConfigureService;
}
AutoSSLConfigureServiceFactory.$inject = ["$q", "PAGE"];
return app.factory("AutoSSLConfigureService", AutoSSLConfigureServiceFactory);
});
Back to Directory
File Manager