Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2017-11-23 15:37:50 +0300
committerMorris Jobke <hey@morrisjobke.de>2017-11-24 16:58:57 +0300
commit5a270c271567d3c6ef9d0f1f78814b5b249ca2fe (patch)
tree8fca6e04dd9f978038b37f5cab94f06772f6ea84 /lib/base.php
parent2f3484ba88a05cdc85ccd5d66f11478999cf2903 (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.php16
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();