From d81f562b712f2387fa02290bf2ca86392ab356f2 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Wed, 11 Oct 2006 20:21:25 +0000 Subject: Aktualisierung auf Version 1.8.1 --- config/index.php | 249 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 142 insertions(+), 107 deletions(-) (limited to 'config') diff --git a/config/index.php b/config/index.php index 8fc91f8e..5443614e 100644 --- a/config/index.php +++ b/config/index.php @@ -47,6 +47,7 @@ require_once( "includes/Defines.php" ); require_once( "includes/DefaultSettings.php" ); require_once( "includes/MagicWord.php" ); require_once( "includes/Namespace.php" ); +require_once( "includes/ProfilerStub.php" ); ## Databases we support: @@ -55,11 +56,13 @@ $ourdb['mysql']['fullname'] = 'MySQL'; $ourdb['mysql']['havedriver'] = 0; $ourdb['mysql']['compile'] = 'mysql'; $ourdb['mysql']['bgcolor'] = '#ffe5a7'; +$ourdb['mysql']['rootuser'] = 'root'; $ourdb['postgres']['fullname'] = 'PostgreSQL'; $ourdb['postgres']['havedriver'] = 0; $ourdb['postgres']['compile'] = 'pgsql'; $ourdb['postgres']['bgcolor'] = '#aaccff'; +$ourdb['postgres']['rootuser'] = 'postgres'; ?> @@ -118,7 +121,7 @@ $ourdb['postgres']['bgcolor'] = '#aaccff'; .error-top { color: red; background-color: #FFF0F0; - border: 2px solid red; + border: 2px solid red; font-size: 130%; font-weight: bold; padding: 1em 1.5em; @@ -149,15 +152,22 @@ $ourdb['postgres']['bgcolor'] = '#aaccff'; @@ -175,7 +185,7 @@ $ourdb['postgres']['bgcolor'] = '#aaccff'; /* Check for existing configurations and bug out! */ if( file_exists( "../LocalSettings.php" ) ) { - dieout( "

Setup has completed, your wiki is configured.

+ dieout( "

Setup has completed, your wiki is configured.

Please delete the /config directory for extra security.

" ); } @@ -199,10 +209,13 @@ if( !is_writable( "." ) ) {
 	cd /path/to/wiki
 	chmod a+w config
-	
" ); + + +

Afterwards retry to start the setup.

" ); } +require_once( "install-utils.inc" ); require_once( "maintenance/updaters.inc" ); class ConfigData { @@ -280,7 +293,7 @@ if( ini_get( "register_globals" ) ) {
  • Warning: - PHP's register_globals option is enabled. Disable it if you can. + PHP's register_globals option is enabled. Disable it if you can.
    MediaWiki will work, but your server is more exposed to PHP-based security vulnerabilities.
  • @@ -407,21 +420,21 @@ if ($conf->apc ) { $conf->eaccel = function_exists( 'eaccelerator_get' ); if ( $conf->eaccel ) { - $conf->turck = 'eaccelerator'; - print "
  • eAccelerator installed
  • \n"; + $conf->turck = 'eaccelerator'; + print "
  • eAccelerator installed
  • \n"; } -if (!$conf->turck && !$conf->eaccel && !$conf->apc) { - print "
  • Neither Turck MMCache nor ". - "eAccelerator nor ". - "APC are installed, " . - "can't use object caching functions
  • \n"; + +if( !$conf->turck && !$conf->eaccel && !$conf->apc ) { + echo( '
  • Couldn\'t find Turck MMCache, + eAccelerator or + APC. Object caching functions cannot be used.
  • ' ); } $conf->diff3 = false; -$diff3locations = array("/usr/bin", "/usr/local/bin", "/opt/csw/bin", "/usr/gnu/bin", "/usr/sfw/bin") + explode($sep, getenv("PATH")); -$diff3names = array("gdiff3", "diff3", "diff3.exe"); +$diff3locations = array( "/usr/bin", "/usr/local/bin", "/opt/csw/bin", "/usr/gnu/bin", "/usr/sfw/bin" ) + explode( $sep, getenv( "PATH" ) ); +$diff3names = array( "gdiff3", "diff3", "diff3.exe" ); -$diff3versioninfo = array('$1 --version 2>&1', 'diff3 (GNU diffutils)'); +$diff3versioninfo = array( '$1 --version 2>&1', 'diff3 (GNU diffutils)' ); foreach ($diff3locations as $loc) { $exe = locate_executable($loc, $diff3names, $diff3versioninfo); if ($exe !== false) { @@ -487,12 +500,12 @@ print "
  • Environment check $conf->SysopName = importPost( "SysopName", "WikiSysop" ); $conf->SysopPass = importPost( "SysopPass" ); $conf->SysopPass2 = importPost( "SysopPass2" ); + $conf->RootUser = importPost( "RootUser", "root" ); + $conf->RootPW = importPost( "RootPW", "-" ); ## MySQL specific: $conf->DBprefix = importPost( "DBprefix" ); $conf->DBmysql5 = (importPost( "DBmysql5" ) == "true") ? "true" : "false"; - $conf->RootUser = importPost( "RootUser", "root" ); - $conf->RootPW = importPost( "RootPW", "-" ); $conf->LanguageCode = importPost( "LanguageCode", "en" ); ## Postgres specific: @@ -560,10 +573,10 @@ if ( $conf->Shm == 'memcached' && $conf->MCServers ) { } /* default values for installation */ -$conf->Email =importRequest("Email", "email_enabled"); -$conf->Emailuser=importRequest("Emailuser", "emailuser_enabled"); -$conf->Enotif =importRequest("Enotif", "enotif_allpages"); -$conf->Eauthent =importRequest("Eauthent", "eauthent_enabled"); +$conf->Email = importRequest("Email", "email_enabled"); +$conf->Emailuser = importRequest("Emailuser", "emailuser_enabled"); +$conf->Enotif = importRequest("Enotif", "enotif_allpages"); +$conf->Eauthent = importRequest("Eauthent", "eauthent_enabled"); if( $conf->posted && ( 0 == count( $errs ) ) ) { do { /* So we can 'continue' to end prematurely */ @@ -582,6 +595,11 @@ if( $conf->posted && ( 0 == count( $errs ) ) ) { if ($conf->DBtype === $db) $conf->DBtypename = $ourdb[$db]['fullname']; } + if ( ! strlen($conf->DBtype)) { + $errs["DBpicktype"] = "Please choose a database type"; + continue; + } + if (! $conf->DBtypename) { $errs["DBtype"] = "Unknown database type '$conf->DBtype'"; continue; @@ -601,15 +619,15 @@ if( $conf->posted && ( 0 == count( $errs ) ) ) { $wgDBts2schema = $conf->DBts2schema; $wgCommandLineMode = true; - $wgUseDatabaseMessages = false; /* FIXME: For database failure */ + $wgUseDatabaseMessages = false; /* FIXME: For database failure */ require_once( "includes/Setup.php" ); chdir( "config" ); require_once( "maintenance/InitialiseMessages.inc" ); $wgTitle = Title::newFromText( "Installation script" ); -error_reporting( E_ALL ); - print "
  • Loading class: $dbclass"; + error_reporting( E_ALL ); + print "
  • Loading class: $dbclass"; $dbc = new $dbclass; if( $conf->DBtype == 'mysql' ) { @@ -680,12 +698,26 @@ error_reporting( E_ALL ); if( !$ok ) { continue; } } else /* not mysql */ { - echo( "
  • Attempting to connect to database server as $wgDBuser..." ); + error_reporting( E_ALL ); + $wgSuperUser = ''; + ## Possible connect as a superuser + if( $conf->RootPW != '-' and strlen($conf->RootPW)) { + $wgDBsuperuser = $conf->RootUser; + echo( "
  • Attempting to connect to database \"postgres\" as superuser \"$wgDBsuperuser\"..." ); + $wgDatabase = $dbc->newFromParams($wgDBserver, $wgDBsuperuser, $conf->RootPW, "postgres", 1); + if (!$wgDatabase->isOpen()) { + print " error: " . $wgDatabase->lastError() . "
  • \n"; + $errs["DBserver"] = "Could not connect to database as superuser"; + $errs["RootUser"] = "Check username"; + $errs["RootPW"] = "and password"; + continue; + } + } + echo( "
  • Attempting to connect to database \"$wgDBname\" as \"$wgDBuser\"..." ); $wgDatabase = $dbc->newFromParams($wgDBserver, $wgDBuser, $wgDBpassword, $wgDBname, 1); if (!$wgDatabase->isOpen()) { print " error: " . $wgDatabase->lastError() . "
  • \n"; } else { - $wgDatabase->ignoreErrors(true); $myver = $wgDatabase->getServerVersion(); } } @@ -698,14 +730,14 @@ error_reporting( E_ALL ); print "
  • Connected to $myver"; if ($conf->DBtype == 'mysql') { if( version_compare( $myver, "4.0.14" ) < 0 ) { - die( " -- mysql 4.0.14 or later required. Aborting." ); + dieout( " -- mysql 4.0.14 or later required. Aborting." ); } - $mysqlNewAuth = version_compare( $myver, "4.1.0", "ge" ); + $mysqlNewAuth = version_compare( $myver, "4.1.0", "ge" ); if( $mysqlNewAuth && $mysqlOldClient ) { print "; You are using MySQL 4.1 server, but PHP is linked - to old client libraries; if you have trouble with authentication, see - http://dev.mysql.com/doc/mysql/en/old-client.html for help."; + to old client libraries; if you have trouble with authentication, see + http://dev.mysql.com/doc/mysql/en/old-client.html for help."; } if( $wgDBmysql5 ) { if( $mysqlNewAuth ) { @@ -739,6 +771,11 @@ error_reporting( E_ALL ); } $wgDatabase->selectDB( $wgDBname ); } + else if ($conf->DBtype == 'postgres') { + if( version_compare( $myver, "PostgreSQL 8.0" ) < 0 ) { + dieout( " Postgres 8.0 or later is required. Aborting.
  • " ); + } + } if( $wgDatabase->tableExists( "cur" ) || $wgDatabase->tableExists( "revision" ) ) { print "
  • There are already MediaWiki tables in this database. Checking if updates are needed...
  • \n"; @@ -758,14 +795,12 @@ error_reporting( E_ALL ); dbsource( "../maintenance/users.sql", $wgDatabase ); } } - if ( $conf->DBtype == 'mysql') { - print "
    \n";
    -				chdir( ".." );
    -				flush();
    -				do_all_updates();
    -				chdir( "config" );
    -				print "
    \n"; - } + print "
    \n";
    +			chdir( ".." );
    +			flush();
    +			do_all_updates();
    +			chdir( "config" );
    +			print "
    \n"; print "
  • Finished update checks.
  • \n"; } else { # FIXME: Check for errors @@ -780,11 +815,7 @@ error_reporting( E_ALL ); } dbsource( "../maintenance/interwiki.sql", $wgDatabase ); } else if ($conf->DBtype == 'postgres') { - dbsource( "../maintenance/postgres/tables.sql", $wgDatabase ); - $wgDatabase->update_interwiki(); - } else if ($conf->DBtype == 'oracle') { - dbsource( "../maintenance/oracle/tables.sql", $wgDatabase ); - dbsource( "../maintenance/oracle/interwiki.sql", $wgDatabase ); + $wgDatabase->setup_database(); } else { $errs["DBtype"] = "Do not know how to handle database type '$conf->DBtype'"; @@ -795,13 +826,13 @@ error_reporting( E_ALL ); print "
  • Initializing data..."; $wgDatabase->insert( 'site_stats', - array( 'ss_row_id' => 1, - 'ss_total_views' => 0, - 'ss_total_edits' => 0, - 'ss_good_articles' => 0 ) ); - + array ( 'ss_row_id' => 1, + 'ss_total_views' => 0, + 'ss_total_edits' => 0, + 'ss_good_articles' => 0 ) ); + # Set up the "regular user" account *if we can, and if we need to* - if( $conf->Root ) { + if( $conf->Root and $conf->DBtype == 'mysql') { # See if we need to $wgDatabase2 = $dbc->newFromParams( $wgDBserver, $wgDBuser, $wgDBpassword, $wgDBname, 1 ); if( $wgDatabase2->isOpen() ) { @@ -815,7 +846,7 @@ error_reporting( E_ALL ); echo( "success.
  • " ); } } - + if( $conf->SysopName ) { $u = User::newFromName( $conf->getSysopName() ); if ( 0 == $u->idForName() ) { @@ -848,23 +879,15 @@ error_reporting( E_ALL ); $revid = $revision->insertOn( $wgDatabase ); $article->updateRevisionOn( $wgDatabase, $revision ); - print "
  • ";
    -			initialiseMessages();
    -			print "
  • \n"; + initialiseMessages( false, false, 'printListItem' ); } /* Write out the config file now that all is well */ print "

    Creating LocalSettings.php...

    \n\n"; - $localSettings = "<" . "?php$endl$local$endl?" . ">"; + $localSettings = "<" . "?php$endl$local$endl?" . ">\r\n"; // Fix up a common line-ending problem (due to CVS on Windows) $localSettings = str_replace( "\r\n", "\n", $localSettings ); - - if( version_compare( phpversion(), "4.3.2" ) >= 0 ) { - $xt = "xt"; # Refuse to overwrite an existing file - } else { - $xt = "wt"; # 'x' is not available prior to PHP 4.3.2. We did check above, but race conditions blah blah - } - $f = fopen( "LocalSettings.php", $xt ); + $f = fopen( "LocalSettings.php", 'xt' ); if( $f == false ) { dieout( "

    Couldn't write out LocalSettings.php. Check that the directory permissions are correct and that there isn't already a file of that name here...

    \n" . @@ -978,7 +1001,7 @@ if( count( $errs ) ) {

    - An admin can lock/delete pages, block users from editing, and other maintenance tasks.
    + An admin can lock/delete pages, block users from editing, and do other maintenance tasks.
    A new account will be added only when creating a new wiki database.

    @@ -1050,7 +1073,7 @@ if( count( $errs ) ) {
    -

    +

    For this feature to work, an e-mail address must be present for the user account, and the notification options in the user's preferences must be enabled. Also note the authentication option below. When testing the feature, keep in mind that your own changes will never trigger notifications to be sent to yourself.

    @@ -1077,6 +1100,7 @@ if( count( $errs ) ) {
    +$errs[DBpicktype]\n"; ?>
    @@ -1102,13 +1126,28 @@ if( count( $errs ) ) {

    If you only have a single user account and database available, enter those here. If you have database root access (see below) - you can specify new accounts/databases to be created. -

    -

    - This account will not be created if it pre-exists. If this is the case, ensure that it + you can specify new accounts/databases to be created. This account + will not be created if it pre-exists. If this is the case, ensure that it has SELECT, INSERT, UPDATE and DELETE permissions on the MediaWiki database.

    +
    + +
    +
    + +
    + +

    + If the database user specified above does not exist, or does not have access to create + the database (if needed) or tables within it, please provide details of a superuser account, + such as root, which does. Leave the password set to - if this is not needed. +

    +

    The username specified above will have it's search path set to the above schemas, - so it is recommended that you create a new user.

    + so it is recommended that you create a new user.

    -
    - -
    -
    - -
    - -

    - If the database user specified above does not exist, or does not have access to create - the database (if needed) or tables within it, please provide details of a superuser account, - such as root, which does. Leave the password set to - if this is not needed. -

    -
    @@ -1177,7 +1199,11 @@ if( count( $errs ) ) {
    @@ -1203,8 +1229,8 @@ which means that anyone on the same server can read your database password! Down it and uploading it again will hopefully change the ownership to a user ID specific to you.

    EOT; } else { - echo "

    Installation successful! Move the config/LocalSettings.php file into the parent directory, then follow - this link to your wiki.

    \n"; + echo "

    Installation successful! Move the config/LocalSettings.php file into the parent directory, then follow + this link to your wiki.

    \n"; } } @@ -1328,7 +1354,7 @@ if ( \$wgCommandLineMode ) { \$wgSitename = \"{$slconf['Sitename']}\"; -\$wgScriptPath = \"{$slconf['ScriptPath']}\"; +\$wgScriptPath = \"{$slconf['ScriptPath']}\"; \$wgScript = \"\$wgScriptPath/index.php\"; \$wgRedirectScript = \"\$wgScriptPath/redirect.php\"; @@ -1345,11 +1371,11 @@ if ( \$wgCommandLineMode ) { \$wgUploadPath = \"\$wgScriptPath/images\"; \$wgUploadDirectory = \"\$IP/images\"; -\$wgEnableEmail = $enableemail; -\$wgEnableUserEmail = $enableuseremail; +\$wgEnableEmail = $enableemail; +\$wgEnableUserEmail = $enableuseremail; \$wgEmergencyContact = \"{$slconf['EmergencyContact']}\"; -\$wgPasswordSender = \"{$slconf['PasswordSender']}\"; +\$wgPasswordSender = \"{$slconf['PasswordSender']}\"; ## For a detailed description of the following switches see ## http://meta.wikimedia.org/Enotif and http://meta.wikimedia.org/Eauthent @@ -1360,13 +1386,17 @@ if ( \$wgCommandLineMode ) { \$wgEnotifWatchlist = $enotifwatchlist; # UPO \$wgEmailAuthentication = $eauthent; +\$wgDBtype = \"{$slconf['DBtype']}\"; \$wgDBserver = \"{$slconf['DBserver']}\"; \$wgDBname = \"{$slconf['DBname']}\"; \$wgDBuser = \"{$slconf['DBuser']}\"; \$wgDBpassword = \"{$slconf['DBpassword']}\"; -\$wgDBprefix = \"{$slconf['DBprefix']}\"; -\$wgDBtype = \"{$slconf['DBtype']}\"; \$wgDBport = \"{$slconf['DBport']}\"; +\$wgDBprefix = \"{$slconf['DBprefix']}\"; + +# Schemas for Postgres +\$wgDBmwschema = \"{$slconf['DBmwschema']}\"; +\$wgDBts2schema = \"{$slconf['DBts2schema']}\"; # Experimental charset support for MySQL 4.1/5.0. \$wgDBmysql5 = {$conf->DBmysql5}; @@ -1377,8 +1407,8 @@ if ( \$wgCommandLineMode ) { ## To enable image uploads, make sure the 'images' directory ## is writable, then set this to true: -\$wgEnableUploads = false; -\$wgUseImageResize = {$conf->UseImageResize}; +\$wgEnableUploads = false; +\$wgUseImageResize = {$conf->UseImageResize}; {$magic}\$wgUseImageMagick = true; {$magic}\$wgImageMagickConvertCommand = \"{$convert}\"; @@ -1390,7 +1420,7 @@ if ( \$wgCommandLineMode ) { ## If you have the appropriate support software installed ## you can enable inline LaTeX equations: -\$wgUseTeX = false; +\$wgUseTeX = false; \$wgMathPath = \"{\$wgUploadPath}/math\"; \$wgMathDirectory = \"{\$wgUploadDirectory}/math\"; \$wgTmpDirectory = \"{\$wgUploadDirectory}/tmp\"; @@ -1421,7 +1451,8 @@ if ( \$wgCommandLineMode ) { # sure that cached pages are cleared. \$configdate = gmdate( 'YmdHis', @filemtime( __FILE__ ) ); \$wgCacheEpoch = max( \$wgCacheEpoch, \$configdate ); -"; + "; ## End of setting the $localsettings string + // Keep things in Unix line endings internally; // the system will write out as local text type. return str_replace( "\r\n", "\n", $localsettings ); @@ -1480,7 +1511,7 @@ function aField( &$conf, $field, $text, $type = "text", $value = "", $onclick = } echo "\t\t$full specific options:\n"; } +function printListItem( $item ) { + print "
  • $item
  • "; +} + ?>
    -- cgit v1.2.2