diff --git a/htdocs/admin/security.php b/htdocs/admin/security.php index b9c71993213..54276b836ba 100644 --- a/htdocs/admin/security.php +++ b/htdocs/admin/security.php @@ -444,7 +444,7 @@ print ''; print ''; print ''.$langs->trans("MainDbPasswordFileConfEncrypted").''; print ''; -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'); } diff --git a/htdocs/admin/system/security.php b/htdocs/admin/system/security.php index b978848f54c..b80b7164a76 100644 --- a/htdocs/admin/system/security.php +++ b/htdocs/admin/system/security.php @@ -527,7 +527,7 @@ print '
'; /* $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 ''.$langs->trans("MainDbPasswordFileConfEncrypted").': '; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index abbd8359c66..9f3469654c6 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -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 diff --git a/htdocs/core/lib/security.lib.php b/htdocs/core/lib/security.lib.php index 97932f9cfc6..209ab8aee13 100644 --- a/htdocs/core/lib/security.lib.php +++ b/htdocs/core/lib/security.lib.php @@ -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() diff --git a/htdocs/install/check.php b/htdocs/install/check.php index 04b60ddd85b..6a9f8c2603e 100644 --- a/htdocs/install/check.php +++ b/htdocs/install/check.php @@ -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; diff --git a/htdocs/install/repair.php b/htdocs/install/repair.php index 1011536b0db..2368faa0fdc 100644 --- a/htdocs/install/repair.php +++ b/htdocs/install/repair.php @@ -140,12 +140,14 @@ print ''; $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); }