X-Git-Url: https://git.cyclocoop.org/%27.WWW_URL.%27admin/?a=blobdiff_plain;f=api.php;h=889c5f10a2a2dc1a3f4782184b7892997fc462e1;hb=74281ebe4658bffd6cf702ee8e021e78c2347052;hp=1d12e03f0920813d9e92a3a93350adbf1fe55cd9;hpb=7055add7990fd1fd23d4a58572582cf97839614d;p=lhc%2Fweb%2Fwiklou.git diff --git a/api.php b/api.php index 1d12e03f09..889c5f10a2 100644 --- a/api.php +++ b/api.php @@ -37,59 +37,44 @@ // So extensions (and other code) can check whether they're running in API mode define( 'MW_API', true ); -// Include global constants, including MW_VERSION and MW_MIN_PHP_VERSION -require_once( dirname( __FILE__ ) . '/includes/Defines.php' ); - -// We want a plain message on catastrophic errors that machines can identify -function wfDie( $msg = '' ) { - header( $_SERVER['SERVER_PROTOCOL'] . ' 500 MediaWiki configuration Error', true, 500 ); - echo $msg; - die( 1 ); -} - -// Die on unsupported PHP versions -if( !function_exists( 'version_compare' ) || version_compare( phpversion(), MW_MIN_PHP_VERSION ) < 0 ){ - $version = htmlspecialchars( MW_VERSION ); - $phpversion = htmlspecialchars( MW_MIN_PHP_VERSION ); - wfDie( "MediaWiki $version requires at least PHP version $phpversion." ); +// Bail if PHP is too low +if ( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.2.3' ) < 0 ) { + require( dirname( __FILE__ ) . '/includes/PHPVersionError.php' ); + wfPHPVersionError( 'api.php' ); } // Initialise common code. -require ( dirname( __FILE__ ) . '/includes/WebStart.php' ); +if ( isset( $_SERVER['MW_COMPILED'] ) ) { + require ( 'core/includes/WebStart.php' ); +} else { + require ( dirname( __FILE__ ) . '/includes/WebStart.php' ); +} wfProfileIn( 'api.php' ); $starttime = microtime( true ); // URL safety checks -// -// See RawPage.php for details; summary is that MSIE can override the -// Content-Type if it sees a recognized extension on the URL, such as -// might be appended via PATH_INFO after 'api.php'. -// -// Some data formats can end up containing unfiltered user-provided data -// which will end up triggering HTML detection and execution, hence -// XSS injection and all that entails. -// -if ( $wgRequest->isPathInfoBad() ) { - wfHttpError( 403, 'Forbidden', - 'Invalid file extension found in PATH_INFO or QUERY_STRING.' ); +if ( !$wgRequest->checkUrlExtension() ) { return; } // Verify that the API has not been disabled if ( !$wgEnableAPI ) { - wfDie( 'MediaWiki API is not enabled for this site. Add the following line to your LocalSettings.php' - . '
$wgEnableAPI=true;
' - ); + header( $_SERVER['SERVER_PROTOCOL'] . ' 500 MediaWiki configuration Error', true, 500 ); + echo( 'MediaWiki API is not enabled for this site. Add the following line to your LocalSettings.php' + . '
$wgEnableAPI=true;
' ); + die(1); } // Selectively allow cross-site AJAX -/* +/** * Helper function to convert wildcard string into a regex * '*' => '.*?' * '?' => '.' - * @ return string + * + * @param $search string + * @return string */ function convertWildcard( $search ) { $search = preg_quote( $search, '/' ); @@ -132,7 +117,7 @@ $processor = new ApiMain( $wgRequest, $wgEnableWriteAPI ); $processor->execute(); // Execute any deferred updates -wfDoUpdates(); +DeferredUpdates::doUpdates(); // Log what the user did, for book-keeping purposes. $endtime = microtime( true ); @@ -144,7 +129,7 @@ if ( $wgAPIRequestLog ) { $items = array( wfTimestamp( TS_MW ), $endtime - $starttime, - wfGetIP(), + $wgRequest->getIP(), $_SERVER['HTTP_USER_AGENT'] ); $items[] = $wgRequest->wasPosted() ? 'POST' : 'GET';