From ab9be29356f548a4ef11745234c12f406171c84c Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@destailleur.fr>
Date: Sat, 24 Jun 2017 21:36:51 +0200
Subject: [PATCH] Fix installers

---
 build/exe/doliwamp/install.forced.php.install |  2 +-
 build/rpm/install.forced.php.fedora           |  2 +-
 build/rpm/install.forced.php.generic          |  2 +-
 build/rpm/install.forced.php.mandriva         |  2 +-
 build/rpm/install.forced.php.opensuse         |  2 +-
 htdocs/install/fileconf.php                   | 26 ++++++++++++-------
 htdocs/install/step1.php                      |  5 ++--
 7 files changed, 24 insertions(+), 17 deletions(-)

diff --git a/build/exe/doliwamp/install.forced.php.install b/build/exe/doliwamp/install.forced.php.install
index fd98dbf3984..5b186c17268 100644
--- a/build/exe/doliwamp/install.forced.php.install
+++ b/build/exe/doliwamp/install.forced.php.install
@@ -5,7 +5,7 @@
 // during install process to be used.
 //
 //
-$force_install_noedit=2;
+$force_install_noedit=2;		// 1=To block vars specific to distrib, 2 to block all technical parameters
 $force_install_message='KeepDefaultValuesWamp';
 $force_install_main_data_root='WAMPROOT/dolibarr_documents';
 $force_install_type='mysqli';
diff --git a/build/rpm/install.forced.php.fedora b/build/rpm/install.forced.php.fedora
index 108455a9403..a8db3e25c9e 100644
--- a/build/rpm/install.forced.php.fedora
+++ b/build/rpm/install.forced.php.fedora
@@ -1,7 +1,7 @@
 <?php
 
 $force_install_packager='rpmfedora';
-$force_install_noedit=1;	# 1 to block var specific to distrib, 2 to block every technical parameters
+$force_install_noedit=1;	// 1 to block var specific to distrib, 2 to block every technical parameters
 $force_install_message='KeepDefaultValuesDeb';
 $force_install_main_data_root='/var/lib/dolibarr/documents';
 $force_install_type='mysqli';
diff --git a/build/rpm/install.forced.php.generic b/build/rpm/install.forced.php.generic
index 161f69cdbb3..107ef533310 100644
--- a/build/rpm/install.forced.php.generic
+++ b/build/rpm/install.forced.php.generic
@@ -1,7 +1,7 @@
 <?php
 
 $force_install_packager='rpmgeneric';
-$force_install_noedit=1;	# 1 to block var specific to distrib, 2 to block every technical parameters
+$force_install_noedit=1;	// 1 to block var specific to distrib, 2 to block every technical parameters
 $force_install_message='KeepDefaultValuesDeb';
 $force_install_main_data_root='/var/lib/dolibarr/documents';
 $force_install_type='mysqli';
diff --git a/build/rpm/install.forced.php.mandriva b/build/rpm/install.forced.php.mandriva
index 266468c7f33..927877b59d0 100644
--- a/build/rpm/install.forced.php.mandriva
+++ b/build/rpm/install.forced.php.mandriva
@@ -1,7 +1,7 @@
 <?php
 
 $force_install_packager='rpmmandriva';
-$force_install_noedit=1;	# 1 to block var specific to distrib, 2 to block every technical parameters
+$force_install_noedit=1;	// 1 to block var specific to distrib, 2 to block every technical parameters
 $force_install_message='KeepDefaultValuesDeb';
 $force_install_main_data_root='/var/lib/dolibarr/documents';
 $force_install_type='mysqli';
diff --git a/build/rpm/install.forced.php.opensuse b/build/rpm/install.forced.php.opensuse
index b644cea6e24..c91836918f4 100644
--- a/build/rpm/install.forced.php.opensuse
+++ b/build/rpm/install.forced.php.opensuse
@@ -1,7 +1,7 @@
 <?php
 
 $force_install_packager='rpmopensuse';
-$force_install_noedit=1;	# 1 to block var specific to distrib, 2 to block every technical parameters
+$force_install_noedit=1;	// 1 to block var specific to distrib, 2 to block every technical parameters
 $force_install_message='KeepDefaultValuesDeb';
 $force_install_main_data_root='/var/lib/dolibarr/documents';
 $force_install_type='mysqli';
diff --git a/htdocs/install/fileconf.php b/htdocs/install/fileconf.php
index cdd639ad50b..c1083062a5f 100644
--- a/htdocs/install/fileconf.php
+++ b/htdocs/install/fileconf.php
@@ -66,6 +66,7 @@ if (@file_exists($forcedfile)) {
 }
 
 
+
 /*
  *	View
  */
@@ -426,8 +427,8 @@ if (! empty($force_install_message))
 			<input type="password" id="db_pass" autocomplete="off"
 			       name="db_pass"
 			       value="<?php
-			       // We don't want to set password. It will be extracted from the forced install file at step1.
-			       $autofill = ((!empty($_SESSION['dol_save_pass'])) ? $_SESSION['dol_save_pass'] : '');
+			       // If $force_install_databasepass is on, we don't want to set password, we just show '***'. Real value will be extracted from the forced install file at step1.
+			       $autofill = ((!empty($_SESSION['dol_save_pass'])) ? $_SESSION['dol_save_pass'] : str_pad('', strlen($force_install_databasepass), '*'));
 			       if (!empty($dolibarr_main_prod)) {
 				       $autofill = '';
 			       }
@@ -479,7 +480,7 @@ if (! empty($force_install_message))
 			       name="db_user_root"
 			       class="needroot"
 			       value="<?php print (!empty($force_install_databaserootlogin)) ? $force_install_databaserootlogin : @$db_user_root; ?>"
-				<?php if ($force_install_noedit == 2 && $force_install_databaserootlogin !== null) {
+				<?php if ($force_install_noedit > 0 && ! empty($force_install_databaserootlogin)) {
 					print ' disabled';
 				} ?>
 			>
@@ -499,26 +500,28 @@ if (! empty($force_install_message))
 		<td class="label" valign="top"><b><?php echo $langs->trans("Password"); ?></b>
 		</td>
 		<td class="label" valign="top">
+
 			<input type="password"
 			       autocomplete="off"
 			       id="db_pass_root"
 			       name="db_pass_root"
 			       class="needroot"
 			       value="<?php
-			       // We don't want to set password. It will be extracted from the forced install file at step1.
-			       $autofill = ((!empty($force_install_database_rootpass)) ? '' : @$db_pass_root);
+			       // If $force_install_databaserootpass is on, we don't want to set password here, we just show '***'. Real value will be extracted from the forced install file at step1.
+			       $autofill = ((!empty($force_install_databaserootpass)) ? str_pad('', strlen($force_install_databaserootpass), '*') : @$db_pass_root);
 			       if (!empty($dolibarr_main_prod)) {
 				       $autofill = '';
-			       }    // Do not autofill password if instance is a production instance
+			       }
+				   // Do not autofill password if instance is a production instance
 			       if (!empty($_SERVER["SERVER_NAME"]) && !in_array($_SERVER["SERVER_NAME"],
-					       array('127.0.0.1', 'localhost'))
+					       array('127.0.0.1', 'localhost', 'localhostgit'))
 			       ) {
 				       $autofill = '';
 			       }    // Do not autofill password for remote access
 			       print dol_escape_htmltag($autofill);
 			       ?>"
-				<?php if ($force_install_noedit == 2 && $force_install_databaserootpass !== null) {
-					print ' disabled';
+				<?php if ($force_install_noedit > 0 && ! empty($force_install_databaserootpass)) {
+					print ' disabled';     // May be removed by javascript
 				} ?>
 			>
 		</td>
@@ -561,7 +564,10 @@ jQuery(document).ready(function() {
 		if (jQuery("#db_create_database").is(":checked") || jQuery("#db_create_user").is(":checked"))
 		{
 			jQuery(".hideroot").show();
-			jQuery(".needroot").removeAttr('disabled');
+			<?php
+			if ($force_install_noedit == 0) { ?>
+                jQuery(".needroot").removeAttr('disabled');
+			<?php } ?>
 		}
 		else
 		{
diff --git a/htdocs/install/step1.php b/htdocs/install/step1.php
index b323c970a9d..486b156fcaf 100644
--- a/htdocs/install/step1.php
+++ b/htdocs/install/step1.php
@@ -88,6 +88,7 @@ if (@file_exists($forcedfile)) {
 			$main_data_dir = detect_dolibarr_main_data_root($main_dir);
 		}
 		$main_url = detect_dolibarr_main_url_root();
+
 		if (!empty($force_install_databaserootlogin)) {
 			$userroot = parse_database_login($force_install_databaserootlogin);
 		}
@@ -542,7 +543,7 @@ if (! $error && $db->connected && $action == "set")
                 if ($db->connected)
                 {
                     $resultbis = 1;
-                    
+
                     // Create user
                     $result=$db->DDLCreateUser($dolibarr_main_db_host, $dolibarr_main_db_user, $dolibarr_main_db_pass, $dolibarr_main_db_name);
                     // Create user bis
@@ -553,7 +554,7 @@ if (! $error && $db->connected && $action == "set")
                             $resultbis=$db->DDLCreateUser('%', $dolibarr_main_db_user, $dolibarr_main_db_pass, $dolibarr_main_db_name);
                         }
                     }
-                    
+
                     if ($result > 0 && $resultbis > 0)
                     {
 
-- 
GitLab