浏览代码

[Web] Delete log lines containing ratelimit hash key when removing rate limit hashes from db

andryyy 5 年之前
父节点
当前提交
92df42999e
共有 1 个文件被更改,包括 9 次插入1 次删除
  1. 9 1
      data/web/inc/functions.ratelimit.inc.php

+ 9 - 1
data/web/inc/functions.ratelimit.inc.php

@@ -203,7 +203,15 @@ function ratelimit($_action, $_scope, $_data = null) {
         return false;
       }
       try {
-        if ($redis->exists($data['hash'])) {
+        $data_rllog = $redis->lRange('RL_LOG', 0, -1);
+        if ($data_rllog) {
+          foreach ($data_rllog as $json_line) {
+            if (preg_match('/' . $data['hash'] . '/i', $json_line)) {
+              $redis->lRem('RL_LOG', $json_line, 0);
+            }
+          }
+        }
+        if ($redis->type($data['hash']) == Redis::REDIS_HASH) {
           $redis->delete($data['hash']);
           $_SESSION['return'][] = array(
             'type' => 'success',