Jump to content

Wikia code/includes/ProxyTools.php

From mediawiki.org
--- D:\Programming\SVN\mediawiki\branches\REL1_16\phase3\includes\ProxyTools.php	2011-07-18 22:31:27.967773500 +0100
+++ D:\Programming\SVN\wikia\trunk\includes\ProxyTools.php	2011-08-17 15:28:46.330078100 +0100
@@ -11,6 +11,14 @@
  * @return string
  */
 function wfGetForwardedFor() {
+	// Wikia - start - @author: wladek
+	// FB#4215 User:Wikia edits being attributed to user's IP and useragent (again)
+	global $wgIP;
+	if ( $wgIP === '127.0.0.1' ) { // Used by User:Wikia
+		return null;
+	}
+	// Wikia - end
+
 	if( function_exists( 'apache_request_headers' ) ) {
 		// More reliable than $_SERVER due to case and -/_ folding
 		$set = array ();
@@ -111,6 +119,16 @@
 		}
 	}
 
+	if( preg_match( "/^10\.(?!10\.)(?!4\.)/", $ip ) && $ip != "10.8.2.159" &&
+	    preg_match( "/Mozilla/", $_SERVER['HTTP_USER_AGENT'] ) ) {
+		if( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
+			$xff = "XFF=$_SERVER[HTTP_X_FORWARDED_FOR]";
+		} else {
+			$xff = "no XFF";
+		}
+		Wikia::log( __METHOD__, false, "Private IP $ip from $_SERVER[REMOTE_ADDR] with $xff ($_SERVER[HTTP_USER_AGENT])", true, true );
+	}
+
 	if( !$ip ) {
 		throw new MWException( "Unable to determine IP" );
 	}