X-Git-Url: https://git.cyclocoop.org/%27.WWW_URL.%27admin/?a=blobdiff_plain;f=includes%2FGlobalFunctions.php;h=3250ec835cbf6256022c53831787c41b40b9ef65;hb=25b83169c830f95a07bb1ba58d1d0c5964f8712b;hp=819b0767512ddaa14222ab5572c2d470586adee3;hpb=a1e58c1c7b0e777ea0110642bdbabfa1411014b6;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/GlobalFunctions.php b/includes/GlobalFunctions.php index 819b076751..3250ec835c 100644 --- a/includes/GlobalFunctions.php +++ b/includes/GlobalFunctions.php @@ -1622,18 +1622,19 @@ function wfMsgWikiHtml( $key ) { * @deprecated since 1.18 * * @param string $key key of the message - * @param array $options processing rules. Can take the following options: - * parse: parses wikitext to HTML - * parseinline: parses wikitext to HTML and removes the surrounding + * @param array $options processing rules. + * Can take the following options: + * parse: parses wikitext to HTML + * parseinline: parses wikitext to HTML and removes the surrounding * p's added by parser or tidy - * escape: filters message through htmlspecialchars - * escapenoentities: same, but allows entity references like   through - * replaceafter: parameters are substituted after parsing or escaping - * parsemag: transform the message using magic phrases - * content: fetch message for content language instead of interface - * Also can accept a single associative argument, of the form 'language' => 'xx': - * language: Language object or language code to fetch message for - * (overridden by content). + * escape: filters message through htmlspecialchars + * escapenoentities: same, but allows entity references like   through + * replaceafter: parameters are substituted after parsing or escaping + * parsemag: transform the message using magic phrases + * content: fetch message for content language instead of interface + * Also can accept a single associative argument, of the form 'language' => 'xx': + * language: Language object or language code to fetch message for + * (overridden by content). * Behavior for conflicting options (e.g., parse+parseinline) is undefined. * * @return String @@ -3240,7 +3241,7 @@ function wfUsePHP( $req_ver ) { * with releases * * Note: Due to the behavior of PHP's version_compare() which is used in this - * fuction, if you want to allow the 'wmf' development versions add a 'c' (or + * function, if you want to allow the 'wmf' development versions add a 'c' (or * any single letter other than 'a', 'b' or 'p') as a post-fix to your * targeted version number. For example if you wanted to allow any variation * of 1.22 use `wfUseMW( '1.22c' )`. Using an 'a' or 'b' instead of 'c' will @@ -3375,8 +3376,8 @@ function wfBaseConvert( $input, $sourceBase, $destBase, $pad = 1, 28 => 's', 29 => 't', 30 => 'u', 31 => 'v', 32 => 'w', 33 => 'x', 34 => 'y', 35 => 'z', - '0' => 0, '1' => 1, '2' => 2, '3' => 3, '4' => 4, '5' => 5, - '6' => 6, '7' => 7, '8' => 8, '9' => 9, 'a' => 10, 'b' => 11, + '0' => 0, '1' => 1, '2' => 2, '3' => 3, '4' => 4, '5' => 5, + '6' => 6, '7' => 7, '8' => 8, '9' => 9, 'a' => 10, 'b' => 11, 'c' => 12, 'd' => 13, 'e' => 14, 'f' => 15, 'g' => 16, 'h' => 17, 'i' => 18, 'j' => 19, 'k' => 20, 'l' => 21, 'm' => 22, 'n' => 23, 'o' => 24, 'p' => 25, 'q' => 26, 'r' => 27, 's' => 28, 't' => 29, @@ -4160,3 +4161,56 @@ function wfCanIPUseHTTPS( $ip ) { wfRunHooks( 'CanIPUseHTTPS', array( $ip, &$canDo ) ); return !!$canDo; } + +/** + * Work out the IP address based on various globals + * For trusted proxies, use the XFF client IP (first of the chain) + * + * @deprecated in 1.19; call $wgRequest->getIP() directly. + * @return string + */ +function wfGetIP() { + wfDeprecated( __METHOD__, '1.19' ); + global $wgRequest; + return $wgRequest->getIP(); +} + +/** + * Checks if an IP is a trusted proxy provider. + * Useful to tell if X-Forwarded-For data is possibly bogus. + * Squid cache servers for the site are whitelisted. + * + * @param $ip String + * @return bool + */ +function wfIsTrustedProxy( $ip ) { + $trusted = wfIsConfiguredProxy( $ip ); + wfRunHooks( 'IsTrustedProxy', array( &$ip, &$trusted ) ); + return $trusted; +} + +/** + * Checks if an IP matches a proxy we've configured. + * @param $ip String + * @return bool + * @since 1.23 Supports CIDR ranges in $wgSquidServersNoPurge + */ +function wfIsConfiguredProxy( $ip ) { + global $wgSquidServers, $wgSquidServersNoPurge; + + // quick check of known proxy servers + $trusted = in_array( $ip, $wgSquidServers ) + || in_array( $ip, $wgSquidServersNoPurge ); + + if ( !$trusted ) { + // slightly slower check to see if the ip is listed directly or in a CIDR + // block in $wgSquidServersNoPurge + foreach ( $wgSquidServersNoPurge as $block ) { + if ( strpos( $block, '/' ) !== false && IP::isInRange( $ip, $block ) ) { + $trusted = true; + break; + } + } + } + return $trusted; +}