X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=api.php;h=7aef1eb9921ce84e262ca68954edb4d7a89e900e;hb=57ec7a98780ab5bdb257c9b14663f0f522fe3d9a;hp=978e8d4e94f5f613bc3d4b1ed12eca5784725c65;hpb=ff1dc8a17591c1e540d6f7e2ccb5c1ba0dec2e34;p=lhc%2Fweb%2Fwiklou.git diff --git a/api.php b/api.php index 978e8d4e94..7aef1eb992 100644 --- a/api.php +++ b/api.php @@ -37,17 +37,10 @@ // So extensions (and other code) can check whether they're running in API mode define( 'MW_API', true ); -// 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(), '5.2.3' ) < 0 ){ - $version = htmlspecialchars( $wgVersion ); - wfDie( "MediaWiki $version requires at least PHP version 5.2.3." ); +// 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. @@ -61,26 +54,16 @@ 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 @@ -144,7 +127,7 @@ if ( $wgAPIRequestLog ) { $items = array( wfTimestamp( TS_MW ), $endtime - $starttime, - wfGetIP(), + $wgRequest->getIP(), $_SERVER['HTTP_USER_AGENT'] ); $items[] = $wgRequest->wasPosted() ? 'POST' : 'GET';