Reintroduced $wgRateLimitsExcludedIPs from r47352 (removed in r51045). $wgAutopromote...
authorTim Starling <tstarling@users.mediawiki.org>
Mon, 19 Oct 2009 19:11:56 +0000 (19:11 +0000)
committerTim Starling <tstarling@users.mediawiki.org>
Mon, 19 Oct 2009 19:11:56 +0000 (19:11 +0000)
RELEASE-NOTES
includes/DefaultSettings.php
includes/User.php

index 22b0ed9..72fbe63 100644 (file)
@@ -252,6 +252,8 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN
 * Rewrote Special:Upload to allow easier extension. 
 * Upload errors that can be solved by changing the filename now do not require
   reuploading.
+* Added $wgRateLimitsExcludedIPs, to allow specific IPs to be whitelisted from
+  rate limits.
 
 === Bug fixes in 1.16 ===
 
index 8087816..b7a3395 100644 (file)
@@ -3581,6 +3581,12 @@ $wgRateLimitLog = null;
  */
 $wgRateLimitsExcludedGroups = array();
 
+/**
+ * Array of IPs which should be excluded from rate limits.
+ * This may be useful for whitelisting NAT gateways for conferences, etc.
+ */
+$wgRateLimitsExcludedIPs = array();
+
 /**
  * On Special:Unusedimages, consider images "used", if they are put
  * into a category. Default (false) is not to count those as used.
index 3549158..9fd2598 100644 (file)
@@ -1219,11 +1219,18 @@ class User {
         */
        public function isPingLimitable() {
                global $wgRateLimitsExcludedGroups;
+               global $wgRateLimitsExcludedIPs;
                if( array_intersect( $this->getEffectiveGroups(), $wgRateLimitsExcludedGroups ) ) {
                        // Deprecated, but kept for backwards-compatibility config
                        return false;
                }
-               return !$this->isAllowed( 'noratelimit' );
+               if( in_array( wfGetIP(), $wgRateLimitsExcludedIPs ) ) {
+                       // No other good way currently to disable rate limits
+                       // for specific IPs. :P
+                       // But this is a crappy hack and should die.
+                       return false;
+               }
+               return !$this->isAllowed('noratelimit');
        }
 
        /**