diff options
author | Morris Jobke <hey@morrisjobke.de> | 2017-11-23 15:37:50 +0300 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2017-11-24 16:58:57 +0300 |
commit | 5a270c271567d3c6ef9d0f1f78814b5b249ca2fe (patch) | |
tree | 8fca6e04dd9f978038b37f5cab94f06772f6ea84 /lib/base.php | |
parent | 2f3484ba88a05cdc85ccd5d66f11478999cf2903 (diff) |
Reset bruteforce attempt table on successful login
* only clear the entries that come from the same subnet, same action and same metadata
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
Diffstat (limited to 'lib/base.php')
-rw-r--r-- | lib/base.php | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/base.php b/lib/base.php index dc09d0f533d..6193b591ab5 100644 --- a/lib/base.php +++ b/lib/base.php @@ -730,7 +730,7 @@ class OC { OC_User::setIncognitoMode(true); } - self::registerCacheHooks(); + self::registerCleanupHooks(); self::registerFilesystemHooks(); self::registerShareHooks(); self::registerEncryptionWrapper(); @@ -802,15 +802,23 @@ class OC { } /** - * register hooks for the cache + * register hooks for the cleanup of cache and bruteforce protection */ - public static function registerCacheHooks() { + public static function registerCleanupHooks() { //don't try to do this before we are properly setup if (\OC::$server->getSystemConfig()->getValue('installed', false) && !self::checkUpgrade(false)) { // NOTE: This will be replaced to use OCP $userSession = self::$server->getUserSession(); - $userSession->listen('\OC\User', 'postLogin', function () { + $userSession->listen('\OC\User', 'postLogin', function () use ($userSession) { + if (!defined('PHPUNIT_RUN')) { + // reset brute force delay for this IP address and username + $uid = \OC::$server->getUserSession()->getUser()->getUID(); + $request = \OC::$server->getRequest(); + $throttler = \OC::$server->getBruteForceThrottler(); + $throttler->resetDelay($request->getRemoteAddress(), 'login', ['user' => $uid]); + } + try { $cache = new \OC\Cache\File(); $cache->gc(); |