From 2d2d98e6eb30e4f863649dec6d4be3b74ec93612 Mon Sep 17 00:00:00 2001 From: Raimond Spekking Date: Sun, 21 Aug 2011 16:38:02 +0000 Subject: [PATCH] New hook point to exempt an IP address from the account creation throttle. Redo of r95041 per Niklas CR Needed for a new extension to make (mass) account creation easier for schools/colleges etc --- RELEASE-NOTES-1.19 | 1 + docs/hooks.txt | 3 +++ includes/specials/SpecialUserlogin.php | 26 ++++++++++++++++---------- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/RELEASE-NOTES-1.19 b/RELEASE-NOTES-1.19 index 1dd5103869..a59e47dea0 100644 --- a/RELEASE-NOTES-1.19 +++ b/RELEASE-NOTES-1.19 @@ -45,6 +45,7 @@ production. although they are not used there. * (bug 30451) Add page_props to RefreshLinks::deleteLinksFromNonexistent * (bug 30450) Clear page_props table on page deletion +* Hook added to check for exempt from account creation throttle === Bug fixes in 1.19 === * $wgUploadNavigationUrl should be used for file redlinks if diff --git a/docs/hooks.txt b/docs/hooks.txt index a120aa9efd..0ee7e6f7c4 100644 --- a/docs/hooks.txt +++ b/docs/hooks.txt @@ -849,6 +849,9 @@ $user: The user who is trying to email another user. $editToken: The user's edit token. &$hookErr: Out-param for the error. Passed as the parameters to OutputPage::showErrorPage. +'exemptFromAccountCreationThrottle': Exemption from the account creation throttle +$ip: The ip address of the user + 'ExtensionTypes': called when generating the extensions credits, use this to change the tables headers &$extTypes: associative array of extensions types diff --git a/includes/specials/SpecialUserlogin.php b/includes/specials/SpecialUserlogin.php index ee4d617ff7..ae89765988 100644 --- a/includes/specials/SpecialUserlogin.php +++ b/includes/specials/SpecialUserlogin.php @@ -377,17 +377,23 @@ class LoginForm extends SpecialPage { return false; } - if ( $wgAccountCreationThrottle && $wgUser->isPingLimitable() ) { - $key = wfMemcKey( 'acctcreate', 'ip', $ip ); - $value = $wgMemc->get( $key ); - if ( !$value ) { - $wgMemc->set( $key, 0, 86400 ); - } - if ( $value >= $wgAccountCreationThrottle ) { - $this->throttleHit( $wgAccountCreationThrottle ); - return false; + // Hook point to check for exempt from account creation throttle + if ( !wfRunHooks( 'exemptFromAccountCreationThrottle', array( $ip ) ) ) { + wfDebug( "LoginForm::exemptFromAccountCreationThrottle: a hook allowed account creation w/o throttle\n" ); + } else { + if ( ( $wgAccountCreationThrottle && $wgUser->isPingLimitable() ) ) { + wfDebugLog( 'CACT', "IN der core Throttle Abfrage\n" ); + $key = wfMemcKey( 'acctcreate', 'ip', $ip ); + $value = $wgMemc->get( $key ); + if ( !$value ) { + $wgMemc->set( $key, 0, 86400 ); + } + if ( $value >= $wgAccountCreationThrottle ) { + $this->throttleHit( $wgAccountCreationThrottle ); + return false; + } + $wgMemc->incr( $key ); } - $wgMemc->incr( $key ); } if( !$wgAuth->addUser( $u, $this->mPassword, $this->mEmail, $this->mRealName ) ) { -- 2.20.1