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:
@@ -54,7 +54,7 @@ class Mysqls extends ApiCommand implements ResourceEntity
|
|||||||
* @param string $description
|
* @param string $description
|
||||||
* optional, description for database
|
* optional, description for database
|
||||||
* @param string $custom_suffix
|
* @param string $custom_suffix
|
||||||
* optional, name for database
|
* optional, name for database if customer.mysqlprefix setting is set to "DBNAME"
|
||||||
* @param bool $sendinfomail
|
* @param bool $sendinfomail
|
||||||
* optional, send created resource-information to customer, default: false
|
* optional, send created resource-information to customer, default: false
|
||||||
* @param int $customerid
|
* @param int $customerid
|
||||||
@@ -110,6 +110,9 @@ class Mysqls extends ApiCommand implements ResourceEntity
|
|||||||
$dbm = new DbManager($this->logger());
|
$dbm = new DbManager($this->logger());
|
||||||
|
|
||||||
if (strtoupper(Settings::Get('customer.mysqlprefix')) == 'DBNAME' && !empty($databasename)) {
|
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);
|
$username = $dbm->createDatabase($newdb_params['loginname'] . '_' . $databasename, $password, $dbserver);
|
||||||
} else {
|
} else {
|
||||||
$username = $dbm->createDatabase($newdb_params['loginname'], $password, $dbserver, $newdb_params['mysql_lastaccountnumber']);
|
$username = $dbm->createDatabase($newdb_params['loginname'], $password, $dbserver, $newdb_params['mysql_lastaccountnumber']);
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
namespace Froxlor\Database;
|
namespace Froxlor\Database;
|
||||||
|
|
||||||
|
use Exception;
|
||||||
use Froxlor\Database\Manager\DbManagerMySQL;
|
use Froxlor\Database\Manager\DbManagerMySQL;
|
||||||
use Froxlor\Froxlor;
|
use Froxlor\Froxlor;
|
||||||
use Froxlor\FroxlorLogger;
|
use Froxlor\FroxlorLogger;
|
||||||
@@ -83,7 +84,7 @@ class DbManager
|
|||||||
* @param array $mysql_access_host_array
|
* @param array $mysql_access_host_array
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
* @throws \Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public static function correctMysqlUsers(array $mysql_access_host_array)
|
public static function correctMysqlUsers(array $mysql_access_host_array)
|
||||||
{
|
{
|
||||||
@@ -150,6 +151,7 @@ class DbManager
|
|||||||
* @param int $last_accnumber
|
* @param int $last_accnumber
|
||||||
*
|
*
|
||||||
* @return string|bool $username if successful or false of username is equal to the password
|
* @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)
|
public function createDatabase(string $loginname = null, string $password = null, int $dbserver = 0, int $last_accnumber = 0)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user