From 6d048e2cee6a307d5b44f0944b005b83cb68e016 Mon Sep 17 00:00:00 2001 From: Michael Kaufmann Date: Wed, 11 Jan 2023 19:41:24 +0100 Subject: [PATCH] fix default mysql-dbserver for customers if not allowed to use the default (id=0) one; fixes #1075 Signed-off-by: Michael Kaufmann --- lib/Froxlor/Api/Commands/Mysqls.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/Froxlor/Api/Commands/Mysqls.php b/lib/Froxlor/Api/Commands/Mysqls.php index 334fce27..c5d78501 100644 --- a/lib/Froxlor/Api/Commands/Mysqls.php +++ b/lib/Froxlor/Api/Commands/Mysqls.php @@ -73,12 +73,12 @@ class Mysqls extends ApiCommand implements ResourceEntity $password = $this->getParam('mysql_password'); // parameters - $dbserver = $this->getParam('mysql_server', true, 0); $databasedescription = $this->getParam('description', true, ''); $databasename = $this->getParam('custom_suffix', true, ''); $sendinfomail = $this->getBoolParam('sendinfomail', true, 0); // get needed customer info to reduce the mysql-usage-counter by one $customer = $this->getCustomerData('mysqls'); + $dbserver = $this->getParam('mysql_server', true, $this->getDefaultMySqlServer($customer)); // validation $password = Validate::validate($password, 'password', '', '', [], true); @@ -558,4 +558,13 @@ class Mysqls extends ApiCommand implements ResourceEntity $this->logger()->logAction($this->isAdmin() ? FroxlorLogger::ADM_ACTION : FroxlorLogger::USR_ACTION, LOG_WARNING, "[API] deleted database '" . $result['databasename'] . "'"); return $this->response($result); } + + private function getDefaultMySqlServer(array $customer) { + $allowed_mysqlservers = json_decode($customer['allowed_mysqlserver'] ?? '[]', true); + asort($allowed_mysqlservers, SORT_NUMERIC); + if (count($allowed_mysqlservers) == 1 && $allowed_mysqlservers[0] != 0) { + return (int) $allowed_mysqlservers[0]; + } + return (int) array_shift($allowed_mysqlservers); + } }