die( "This file is part of MediaWiki and is not a valid entry point\n" );
}
+/**
+ * Create a site configuration object
+ * Not used for much in a default install
+ */
+require_once( 'includes/SiteConfiguration.php' );
+$wgConf = new SiteConfiguration;
+
/** MediaWiki version number */
$wgVersion = '1.5beta1';
*/
$wgAllowSpecialInclusion = true;
+/**
+ * Timeout for HTTP requests done via CURL
+ */
+$wgHTTPTimeout = 3;
?>
--- /dev/null
+<?php
+
+/**
+ * Get the contents of a file by HTTP
+ *
+ * if $timeout is 'default', $wgHTTPTimeout is used
+ */
+function wfGetHTTP( $url, $timeout = 'default' ) {
+ global $wgServer, $wgHTTPTimeout;
+
+
+ # Use curl if available
+ if ( function_exists( 'curl_init' ) ) {
+ $c = curl_init( $url );
+ if ( wfIsLocalURL( $url ) ) {
+ curl_setopt( $c, CURLOPT_PROXY, 'localhost:80' );
+ }
+ if ( $timeout == 'default' ) {
+ $timeout = $wgHTTPTimeout;
+ }
+ curl_setopt( $c, CURLOPT_TIMEOUT, $timeout );
+ ob_start();
+ curl_exec();
+ $text = ob_get_contents();
+ ob_end_clean();
+ } else {
+ # Otherwise use file_get_contents, or its compatibility function from GlobalFunctions.php
+ # This may take 3 minutes to time out, and doesn't have local fetch capabilities
+ $url_fopen = ini_set( 'allow_url_fopen', 1 );
+ $text = file_get_contents( $url );
+ ini_set( 'allow_url_fopen', $url_fopen );
+ }
+ return $text;
+}
+
+/**
+ * Check if the URL can be served by localhost
+ */
+function wfIsLocalURL( $url ) {
+ global $wgConf;
+ // Extract host part
+ if ( preg_match( '!^http://([\w.-]+)[/:].*$!', $url, $matches ) ) {
+ $host = $matches[1];
+ // Split up dotwise
+ $domainParts = explode( '.', $host );
+ // Check if this domain or any superdomain is listed in $wgConf as a local virtual host
+ $domainParts = array_reverse( $domainParts );
+ for ( $i = 0; $i < count( $domainParts ); $i++ ) {
+ $domainPart = $domainParts[$i];
+ if ( $i == 0 ) {
+ $domain = $domainPart;
+ } else {
+ $domain = $domainPart . '.' . $domain;
+ }
+ if ( $wgConf->isLocalVHost( $domain ) ) {
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+?>
<?php
/**
- *This file is used to configure the live Wikimedia wikis. The file that
- * includes it contains passwords and other sensitive data, and there's
- * currently no public equivalent.
+ * This is a class used to hold configuration settings, particularly for multi-wiki sites.
*
* @package MediaWiki
*/
define('SITE_CONFIGURATION', 1);
class SiteConfiguration {
- var $suffixes, $wikis, $settings;
- var $localDatabases;
+ var $suffixes = array();
+ var $wikis = array();
+ var $settings = array();
+ var $localDatabases = array();
+ var $localVHosts = array();
function get( $setting, $wiki, $suffix, $params = array() ) {
if ( array_key_exists( $wiki, $this->settings[$setting] ) ) {
}
return array( $site, $lang );
}
+
+ function isLocalVHost( $vhost ) {
+ return in_array( $vhost, $this->localVHosts );
+ }
}
}