From 5cf5ec639b0fe3e39b49092f06fef6d53fb06a10 Mon Sep 17 00:00:00 2001 From: Platonides Date: Thu, 16 Jun 2011 20:58:12 +0000 Subject: [PATCH] Allow to provide the db password inside a file instead of using the command line, so that it isn't exposed in the process list. Sadly, use of /dev/stdin or <(process) doesn't work in Linux, since they are shown as symlinks to pipe:[12345678] and php dereferences all of them. It has to be a real file. However, such constructs work in Solaris, where they are presented as character devices. --- maintenance/install.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/maintenance/install.php b/maintenance/install.php index 34e3ea85f3..781b12d5ae 100644 --- a/maintenance/install.php +++ b/maintenance/install.php @@ -55,6 +55,7 @@ class CommandLineInstaller extends Maintenance { $this->addOption( 'installdbpass', 'The pasword for the DB user to install as.', false, true ); $this->addOption( 'dbuser', 'The user to use for normal operations (wikiuser)', false, true ); $this->addOption( 'dbpass', 'The pasword for the DB user for normal operations', false, true ); + $this->addOption( 'dbpassfile', 'An alternative way to provide dbpass option, as the contents of this file', false, true ); $this->addOption( 'confpath', "Path to write LocalSettings.php to, default $IP", false, true ); /* $this->addOption( 'dbschema', 'The schema for the MediaWiki DB in pg (mediawiki)', false, true ); */ /* $this->addOption( 'namespace', 'The project namespace (same as the name)', false, true ); */ @@ -67,6 +68,17 @@ class CommandLineInstaller extends Maintenance { $adminName = isset( $this->mArgs[1] ) ? $this->mArgs[1] : null; $wgTitle = Title::newFromText( 'Installer script' ); + $dbpassfile = $this->getOption( 'dbpassfile', false ); + if ( $dbpassfile !== false ) { + wfSuppressWarnings(); + $dbpass = file_get_contents( $dbpassfile ); + wfRestoreWarnings(); + if ( $dbpass === false ) { + $this->error( "Couldn't open $dbpassfile", true ); + } + $this->mOptions['dbpass'] = $dbpass; + } + $installer = new CliInstaller( $siteName, $adminName, $this->mOptions ); -- 2.20.1