Fix regression on pass encryption in conf

This commit is contained in:
Laurent Destailleur
2025-07-29 01:14:42 +02:00
parent 0165045524
commit 23d0879dde
6 changed files with 12 additions and 7 deletions

View File

@@ -444,7 +444,7 @@ print '</tr>';
print '<tr class="oddeven">';
print '<td colspan="3">'.$langs->trans("MainDbPasswordFileConfEncrypted").'</td>';
print '<td align="center" width="60">';
if (preg_match('/crypted:/i', $dolibarr_main_db_pass) || !empty($dolibarr_main_db_encrypted_pass)) {
if (preg_match('/crypted:/i', $dolibarr_main_db_pass) || preg_match('/dolcrypt:/i', $dolibarr_main_db_pass) || !empty($dolibarr_main_db_encrypted_pass)) {
print img_picto($langs->trans("Active"), 'tick');
}

View File

@@ -527,7 +527,7 @@ print '<br>';
/*
$usepassinconfencrypted = 0;
global $dolibarr_main_db_pass, $dolibarr_main_db_encrypted_pass;
if (preg_match('/crypted:/i', $dolibarr_main_db_pass) || !empty($dolibarr_main_db_encrypted_pass)) {
if (preg_match('/crypted:/i', $dolibarr_main_db_pass) || preg_match('/dolcrypt:/i', $dolibarr_main_db_pass) || !empty($dolibarr_main_db_encrypted_pass)) {
$usepassinconfencrypted = 1;
}
print '<strong>'.$langs->trans("MainDbPasswordFileConfEncrypted").'</strong>: ';

View File

@@ -462,7 +462,7 @@ function isDolTms($timestamp)
* @param string $type Type of database (mysql, pgsql...)
* @param string $host Address of database server
* @param string $user Authorized username
* @param string $pass Password
* @param string $pass Password (clear)
* @param string $name Name of database
* @param int $port Port of database server
* @return DoliDB A DoliDB instance

View File

@@ -178,7 +178,7 @@ function dolEncrypt($chain, $key = '', $ciphering = '', $forceseed = '')
* Note: If a backup is restored onto another instance with a different $conf->file->instance_unique_id, then decoded value will differ.
*
* @param string $chain string to decode
* @param string $key If '', we use $conf->file->instance_unique_id
* @param string $key If '', we use $conf->file->dolcrypt_key else $conf->file->instance_unique_id
* @return string encoded string
* @since v17
* @see dolEncrypt(), dol_hash()

View File

@@ -345,7 +345,7 @@ if (!file_exists($conffile)) {
// Requirements met/all ok: display the next step button
if ($checksok) {
$ok = 0;
$ok = false;
// Try to create db connection
if (file_exists($conffile)) {
@@ -358,11 +358,13 @@ if (!file_exists($conffile)) {
require_once $dolibarr_main_document_root.'/core/lib/admin.lib.php';
// If password is encoded, we decode it
if (preg_match('/crypted:/i', $dolibarr_main_db_pass) || !empty($dolibarr_main_db_encrypted_pass)) {
if (preg_match('/crypted:/i', $dolibarr_main_db_pass) || preg_match('/dolcrypt:/i', $dolibarr_main_db_pass) || !empty($dolibarr_main_db_encrypted_pass)) {
require_once $dolibarr_main_document_root.'/core/lib/security.lib.php';
if (preg_match('/crypted:/i', $dolibarr_main_db_pass)) {
$dolibarr_main_db_encrypted_pass = preg_replace('/crypted:/i', '', $dolibarr_main_db_pass); // We need to set this as it is used to know the password was initially encrypted
$dolibarr_main_db_pass = dol_decode($dolibarr_main_db_encrypted_pass);
} elseif (preg_match('/dolcrypt:/i', $dolibarr_main_db_pass)) {
$dolibarr_main_db_pass = dolDecrypt($dolibarr_main_db_pass);
} else {
$dolibarr_main_db_pass = dol_decode($dolibarr_main_db_encrypted_pass);
}
@@ -375,6 +377,7 @@ if (!file_exists($conffile)) {
$conf->db->name = $dolibarr_main_db_name;
$conf->db->user = $dolibarr_main_db_user;
$conf->db->pass = $dolibarr_main_db_pass;
$db = getDoliDBInstance($conf->db->type, $conf->db->host, (string) $conf->db->user, $conf->db->pass, $conf->db->name, (int) $conf->db->port);
if ($db->connected && $db->database_selected) {
$ok = true;

View File

@@ -140,12 +140,14 @@ print '<table cellspacing="0" cellpadding="1" class="centpercent">';
$error = 0;
// If password is encoded, we decode it
if (preg_match('/crypted:/i', $dolibarr_main_db_pass) || !empty($dolibarr_main_db_encrypted_pass)) {
if (preg_match('/crypted:/i', $dolibarr_main_db_pass) || preg_match('/dolcrypt:/i', $dolibarr_main_db_pass) || !empty($dolibarr_main_db_encrypted_pass)) {
require_once $dolibarr_main_document_root.'/core/lib/security.lib.php';
if (preg_match('/crypted:/i', $dolibarr_main_db_pass)) {
$dolibarr_main_db_pass = preg_replace('/crypted:/i', '', $dolibarr_main_db_pass);
$dolibarr_main_db_pass = dol_decode($dolibarr_main_db_pass);
$dolibarr_main_db_encrypted_pass = $dolibarr_main_db_pass; // We need to set this as it is used to know the password was initially encrypted
} elseif (preg_match('/dolcrypt:/i', $dolibarr_main_db_pass)) {
$dolibarr_main_db_pass = dolDecrypt($dolibarr_main_db_pass);
} else {
$dolibarr_main_db_pass = dol_decode($dolibarr_main_db_encrypted_pass);
}