X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=maintenance%2FcommandLine.inc;h=bc75f9ac91d75ba09b211ff4f8edc2512566e5af;hb=a448e8f9f1cb288db7b61a0770ebd9ecbd4b363a;hp=10cf5625d66316ad68556d23708256c7922a9323;hpb=b5c80fc4710af2975ee52d9106dd2969ff91e00e;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/commandLine.inc b/maintenance/commandLine.inc index 10cf5625d6..bc75f9ac91 100644 --- a/maintenance/commandLine.inc +++ b/maintenance/commandLine.inc @@ -1,50 +1,94 @@ 1 ) { + $option = $bits[0]; + $param = $bits[1]; + } else { + $param = 1; + } + $options[$option] = $param; } - } elseif ( $arg{0} == '-' ) { + } elseif ( substr( $arg, 0, 1 ) == '-' ) { # Short options for ( $p=1; $psiteFromDB( $db ); + + # If not, work out the language and site the old way + if ( is_null( $site ) || is_null( $lang ) ) { + if ( !$db ) { + $lang = 'aa'; + } else { + $lang = $db; + } + if ( isset( $args[0] ) ) { + $site = array_shift( $args ); + } else { + $site = 'wikipedia'; + } + } } else { - $site = "wikipedia"; + $lang = 'aa'; + $site = 'wikipedia'; } # This is for the IRC scripts, which now run as the apache user # The apache user doesn't have access to the wikiadmin_pass command - if ( $_ENV['USER'] != "apache" ) { - $wgDBuser = $wgDBadminuser = "wikiadmin"; - $wgDBpassword = $wgDBadminpassword = trim(`wikiadmin_pass`); + if ( $_ENV['USER'] == 'apache' ) { + #if ( posix_geteuid() == 48 ) { + $wgUseNormalUser = true; } - putenv( "wikilang=$lang"); + putenv( 'wikilang='.$lang); $DP = $IP; - ini_set( "include_path", ".:$IP:$IP/includes:$IP/languages:$IP/maintenance" ); + ini_set( 'include_path', ".:$IP:$IP/includes:$IP/languages:$IP/maintenance" ); + + if ( $lang == 'test' && $site == 'wikipedia' ) { + define( 'TESTWIKI', 1 ); + } + + #require_once( $IP.'/includes/ProfilerStub.php' ); + require_once( $IP.'/includes/Defines.php' ); + require_once( $IP.'/CommonSettings.php' ); - require_once( "$IP/includes/Defines.php" ); - require_once( "/home/wikipedia/common/php-new/CommonSettings.php" ); + $bin = '/home/wikipedia/bin'; + if ( $wgUseRootUser ) { + $wgDBuser = $wgDBadminuser = 'root'; + $wgDBpassword = $wgDBadminpassword = trim(`$bin/mysql_root_pass`); + } elseif ( !$wgUseNormalUser ) { + $wgDBuser = $wgDBadminuser = 'wikiadmin'; + $wgDBpassword = $wgDBadminpassword = trim(`$bin/wikiadmin_pass`); + } } else { $wgWikiFarm = false; - $settingsFile = "$IP/LocalSettings.php"; + if ( isset( $options['conf'] ) ) { + $settingsFile = $options['conf']; + } else { + $settingsFile = "$IP/LocalSettings.php"; + } + if ( isset( $options['wiki'] ) ) { + $bits = explode( '-', $options['wiki'] ); + if ( count( $bits ) == 1 ) { + $bits[] = ''; + } + define( 'MW_DB', $bits[0] ); + define( 'MW_PREFIX', $bits[1] ); + } if ( ! is_readable( $settingsFile ) ) { print "A copy of your installation's LocalSettings.php\n" . - "must exist in the source directory.\n"; - exit(); + "must exist and be readable in the source directory.\n"; + exit( 1 ); } $wgCommandLineMode = true; $DP = $IP; - require_once( "$IP/includes/Defines.php" ); + #require_once( $IP.'/includes/ProfilerStub.php' ); + require_once( $IP.'/includes/Defines.php' ); require_once( $settingsFile ); - ini_set( "include_path", ".$sep$IP$sep$IP/includes$sep$IP/languages$sep$IP/maintenance" ); - require_once( "$IP/AdminSettings.php" ); + /* ini_set( 'include_path', ".$sep$IP$sep$IP/includes$sep$IP/languages$sep$IP/maintenance" ); */ + + $adminSettings = isset( $options['aconf'] ) + ? $options['aconf'] + : "{$IP}/AdminSettings.php"; + if( is_readable( $adminSettings ) ) + require_once( $adminSettings ); + } # Turn off output buffering again, it might have been turned on in the settings files -@ob_end_flush(); +if( ob_get_level() ) { + ob_end_flush(); +} # Same with these $wgCommandLineMode = true; -$wgDBuser = $wgDBadminuser; -$wgDBpassword = $wgDBadminpassword; +if ( empty( $wgUseNormalUser ) && isset( $wgDBadminuser ) ) { + $wgDBuser = $wgDBadminuser; + $wgDBpassword = $wgDBadminpassword; + + if( $wgDBservers ) { + foreach ( $wgDBservers as $i => $server ) { + $wgDBservers[$i]['user'] = $wgDBuser; + $wgDBservers[$i]['password'] = $wgDBpassword; + } + } + if( isset( $wgLBFactoryConf['serverTemplate'] ) ) { + $wgLBFactoryConf['serverTemplate']['user'] = $wgDBuser; + $wgLBFactoryConf['serverTemplate']['password'] = $wgDBpassword; + } +} -$wgUsePHPTal = false; -require_once( "Setup.php" ); -require_once( "install-utils.inc" ); -$wgTitle = Title::newFromText( "Command line script" ); -set_time_limit(0); +if ( defined( 'MW_CMDLINE_CALLBACK' ) ) { + $fn = MW_CMDLINE_CALLBACK; + $fn(); +} + +ini_set( 'memory_limit', -1 ); + +if( version_compare( phpversion(), '5.2.4' ) >= 0 ) { + // Send PHP warnings and errors to stderr instead of stdout. + // This aids in diagnosing problems, while keeping messages + // out of redirected output. + if( ini_get( 'display_errors' ) ) { + ini_set( 'display_errors', 'stderr' ); + } + + // Don't touch the setting on earlier versions of PHP, + // as setting it would disable output if you'd wanted it. + + // Note that exceptions are also sent to stderr when + // command-line mode is on, regardless of PHP version. +} +$wgShowSQLErrors = true; -?> +require_once( "$IP/includes/Setup.php" ); +require_once( "$IP/install-utils.inc" ); +$wgTitle = null; # Much much faster startup than creating a title object +@set_time_limit(0);