 DefaultSettings.php |    2 ++
 Defines.php         |    2 +-
 User.php            |   10 ++++++++--
 3 files changed, 11 insertions(+), 3 deletions(-)

diff -Naur phase3.orig/includes/DefaultSettings.php phase3/includes/DefaultSettings.php
--- phase3.orig/includes/DefaultSettings.php	2005-10-13 22:59:57.000000000 -0300
+++ phase3/includes/DefaultSettings.php	2005-10-14 09:24:04.282477778 -0300
@@ -758,6 +758,8 @@
 
 $wgGroupPermissions['bureaucrat']['userrights'] = true;
 
+$wgGroupPermissions['noipblock']['noipblock']   = true;
+
 /**
  * The developer group is deprecated, but can be activated if need be
  * to use the 'lockdb' and 'unlockdb' special pages. Those require
diff -Naur phase3.orig/includes/Defines.php phase3/includes/Defines.php
--- phase3.orig/includes/Defines.php	2005-09-27 16:48:54.000000000 -0300
+++ phase3/includes/Defines.php	2005-10-14 09:24:04.297474098 -0300
@@ -78,7 +78,7 @@
 $wgAvailableRights = array('read', 'edit', 'move', 'delete', 'undelete',
 'protect', 'block', 'userrights', 'createaccount', 'upload',
 'rollback', 'patrol', 'editinterface', 'siteadmin', 'bot', 'validate', 
-'import', 'importupload' );
+'import', 'importupload', 'noipblock' );
 
 /**#@+
  * Cache type
diff -Naur phase3.orig/includes/User.php phase3/includes/User.php
--- phase3.orig/includes/User.php	2005-10-13 23:00:03.000000000 -0300
+++ phase3/includes/User.php	2005-10-14 09:26:54.668677128 -0300
@@ -380,6 +380,12 @@
 		$this->mBlockedby = 0;
 		$ip = wfGetIP();
 
+		# IP block exemption
+		$noipblock = $this->isAllowed( 'noipblock' );
+		if ($noipblock) {
+			$ip = '';
+		}
+
 		# User/IP blocking
 		$block = new Block();
 		$block->forUpdate( $bFromSlave );
@@ -395,7 +401,7 @@
 		}
 
 		# Range blocking
-		if ( !$this->mBlockedby ) {
+		if ( !$noipblock && !$this->mBlockedby ) {
 			# Check first against slave, and optionally from master.
 			wfDebug( "$fname: Checking range blocks\n" );
 			$block = $wgBlockCache->get( $ip, true );
@@ -412,7 +418,7 @@
 		}
 
 		# Proxy blocking
-		if ( !$this->isSysop() && !in_array( $ip, $wgProxyWhitelist ) ) {
+		if ( !$noipblock && !$this->isSysop() && !in_array( $ip, $wgProxyWhitelist ) ) {
 
 			# Local list
 			if ( array_key_exists( $ip, $wgProxyList ) ) {
