File manager - Edit - /usr/local/cpanel/whostmgr/docroot/templates/convert_addon_to_account/services/Databases.js
Back
/* # convert_addon_to_account/services/Databases.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: false */ define( [ "angular", "jquery", "lodash", "cjt/util/locale", "cjt/util/parse", "cjt/io/api", "cjt/io/whm-v1-request", "cjt/io/whm-v1" // IMPORTANT: Load the driver so it's ready ], function(angular, $, _, LOCALE, PARSE, API, APIREQUEST, APIDRIVER) { // Retrieve the current application var app = angular.module("App"); var databasesFactory = app.factory("Databases", ["$q", function($q) { var db = {}; db.databases = {}; db.users = {}; db.currentOwner = ""; var uses_prefixing; var mysql_version; var prefix_length; // these are functions that exist in the old cjt/sql.js var verify_func_name = { mysql: { database: "verify_mysql_database_name" }, postgresql: { database: "verify_postgresql_database_name" } }; db.setPrefixing = function(option) { uses_prefixing = option; }; db.isPrefixingEnabled = function() { return uses_prefixing; }; db.setMySQLVersion = function(version) { mysql_version = version; // this has to be exported for the old cjt/sql.js to work correctly window.MYSQL_SERVER_VERSION = mysql_version; }; db.getMySQLVersion = function() { return mysql_version; }; db.setPrefixLength = function(length) { prefix_length = length; }; db.getPrefixLength = function() { return prefix_length; }; db.createPrefix = function(user) { /* * Transfers and some older accounts might have underscores or periods * in the cpusername. For historical reasons, the account's "main" database * username always strips these characters out. * In 99% of cases, this function is a no-op. */ var username = user.replace(/[_.]/, ""); var prefixLength = db.getPrefixLength(); return username.substr(0, prefixLength) + "_"; }; db.addPrefix = function(database, user) { return db.createPrefix(user) + database; }; db.addPrefixIfNeeded = function(database, user) { if (database === void 0 || database === "") { return; } var prefix = db.createPrefix(user); var prefix_regex = new RegExp("^" + prefix + ".+$"); // if the db already has a prefix, just return it if (prefix_regex.test(database)) { return database; } // else, return the database with the prefix return prefix + database; }; /** * Transform the data from the API call into a * map of users and their corresponding databases. * * @method createUsersDictionary * @param {Object} data - the data returned from the * list_mysql_databases_and_users API call * return {Object} an object where the keys are db users and values are * their associated databases. */ function createUsersDictionary(data) { var usersObj = {}; var user = ""; var dbs = data.mysql_databases; for (var database in dbs) { if (dbs.hasOwnProperty(database)) { for (var i = 0, len = dbs[database].length; i < len; i++) { user = dbs[database][i]; if (usersObj.hasOwnProperty(user)) { usersObj[user].push(database); } else { usersObj[user] = [database]; } } } } return usersObj; } db.listMysqlDbsAndUsers = function(owner) { var apiCall = new APIREQUEST.Class(); apiCall.initialize("", "list_mysql_databases_and_users"); apiCall.addArgument("user", owner); return $q.when(API.promise(apiCall.getRunArguments())) .then(function(response) { response = response.parsedResponse; if (response.status) { db.setPrefixing(PARSE.parsePerlBoolean(response.data.mysql_config.use_db_prefix)); db.setPrefixLength(response.data.mysql_config.prefix_length); db.setMySQLVersion(response.data.mysql_config["mysql-version"]); db.databases = response.data.mysql_databases; db.users = createUsersDictionary(response.data); } else { return $q.reject(response.meta); } }); }; /** * Get the databases from the service. This will call the API * if there are no databases stored in the service. * * @method getDatabases * @param {String} owner - the owner of the databases * @return {Promise} a promise that resolves to a dictionary of databases for the owner */ db.getDatabases = function(owner) { if (Object.keys(db.databases).length > 0 && db.currentOwner === owner) { return $q.when(db.databases); } else { return db.listMysqlDbsAndUsers(owner) .then(function() { db.currentOwner = owner; return db.databases; }); } }; /** * Get the users from the service. * * @method getUsers * @return {Object} a dictionary of mysql users */ db.getUsers = function() { return db.users; }; db.validateName = function(name, engine) { return CPANEL.sql[verify_func_name[engine]["database"]](name); }; return db; }]); return databasesFactory; } );
| ver. 1.4 |
Github
|
.
| PHP 8.1.34 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings