mirror of
https://github.com/Froxlor/Froxlor.git
synced 2024-09-21 02:17:34 +00:00
check custom database-name against supported maximum length of username/databasename of used dbms, fixes #1258
Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
parent
10e87a909a
commit
1d246fee02
@ -54,7 +54,7 @@ class Mysqls extends ApiCommand implements ResourceEntity
|
||||
* @param string $description
|
||||
* optional, description for database
|
||||
* @param string $custom_suffix
|
||||
* optional, name for database
|
||||
* optional, name for database if customer.mysqlprefix setting is set to "DBNAME"
|
||||
* @param bool $sendinfomail
|
||||
* optional, send created resource-information to customer, default: false
|
||||
* @param int $customerid
|
||||
@ -110,6 +110,9 @@ class Mysqls extends ApiCommand implements ResourceEntity
|
||||
$dbm = new DbManager($this->logger());
|
||||
|
||||
if (strtoupper(Settings::Get('customer.mysqlprefix')) == 'DBNAME' && !empty($databasename)) {
|
||||
if (strlen($newdb_params['loginname'] . '_' . $databasename) > Database::getSqlUsernameLength()) {
|
||||
throw new Exception("Database name cannot be longer than " . (Database::getSqlUsernameLength() - strlen($newdb_params['loginname'] . '_')) . " characters.", 406);
|
||||
}
|
||||
$username = $dbm->createDatabase($newdb_params['loginname'] . '_' . $databasename, $password, $dbserver);
|
||||
} else {
|
||||
$username = $dbm->createDatabase($newdb_params['loginname'], $password, $dbserver, $newdb_params['mysql_lastaccountnumber']);
|
||||
|
@ -25,6 +25,7 @@
|
||||
|
||||
namespace Froxlor\Database;
|
||||
|
||||
use Exception;
|
||||
use Froxlor\Database\Manager\DbManagerMySQL;
|
||||
use Froxlor\Froxlor;
|
||||
use Froxlor\FroxlorLogger;
|
||||
@ -83,7 +84,7 @@ class DbManager
|
||||
* @param array $mysql_access_host_array
|
||||
*
|
||||
* @return void
|
||||
* @throws \Exception
|
||||
* @throws Exception
|
||||
*/
|
||||
public static function correctMysqlUsers(array $mysql_access_host_array)
|
||||
{
|
||||
@ -150,6 +151,7 @@ class DbManager
|
||||
* @param int $last_accnumber
|
||||
*
|
||||
* @return string|bool $username if successful or false of username is equal to the password
|
||||
* @throws Exception
|
||||
*/
|
||||
public function createDatabase(string $loginname = null, string $password = null, int $dbserver = 0, int $last_accnumber = 0)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user