[tor-commits] [gettor/master] Update check for too_many_requests

hiro at torproject.org hiro at torproject.org
Fri Oct 18 10:20:26 UTC 2019


commit 8953e38e9dd5527507c3a3de5d1c9ea4b5541d43
Author: hiro <hiro at torproject.org>
Date:   Fri Oct 18 12:11:24 2019 +0200

    Update check for too_many_requests
---
 gettor/parse/email.py       | 18 ++++++++++--------
 tests/test_email_service.py | 12 ++++++++++++
 2 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/gettor/parse/email.py b/gettor/parse/email.py
index 0768356..31afb1e 100644
--- a/gettor/parse/email.py
+++ b/gettor/parse/email.py
@@ -151,10 +151,10 @@ class EmailParser(object):
         return request
 
 
-    def too_many_requests(self, request_id, hid, request_service, num_requests, limit):
-        if hid.hexdigest() == self.settings.get('test_hid'):
+    def too_many_requests(self, hid, num_requests, limit):
+        if hid == self.settings.get('test_hid'):
             return False
-        elif num_requests[0][0] < limit:
+        elif num_requests < limit:
             return False
         else:
             return True
@@ -224,28 +224,30 @@ class EmailParser(object):
         email_requests_limit = self.settings.get("email_requests_limit")
         now_str = datetime.now().strftime("%Y%m%d%H%M%S")
         dbname = self.settings.get("dbname")
-        hid = hashlib.sha256(request['id'].encode('utf-8'))
-        request_service = request['service']
         conn = SQLite3(dbname)
 
         if request["command"]:
+
+            hid = hashlib.sha256(request['id'].encode('utf-8')).hexdigest()
+            request_service = request['service']
+
             log.msg(
                 "Found request for {}.".format(request['command']),
                 system="email parser"
             )
 
             num_requests = yield conn.get_num_requests(
-                id=hid.hexdigest(), service=request_service
+                id=hid, service=request_service
             )
 
             check = self.too_many_requests(
-                request['id'], hid, request_service, num_requests, email_requests_limit
+                hid, num_requests[0][0], email_requests_limit
             )
 
             if check:
                 log.msg(
                     "Discarded. Too many requests from {}.".format(
-                        hid.hexdigest()
+                        hid
                     ), system="email parser"
                 )
             else:
diff --git a/tests/test_email_service.py b/tests/test_email_service.py
index 9d50f5f..8e7adf0 100644
--- a/tests/test_email_service.py
+++ b/tests/test_email_service.py
@@ -1,5 +1,7 @@
 #!/usr/bin/env python3
 import pytest
+import hashlib
+from datetime import datetime
 from twisted.trial import unittest
 from twisted.internet import defer, reactor
 from twisted.internet import task
@@ -58,6 +60,16 @@ class EmailServiceTests(unittest.TestCase):
         self.assertEqual(request["platform"], "osx")
         self.assertEqual(request["language"], "es")
 
+    def test_too_many_request_exclude(self):
+        ep = conftests.EmailParser(self.settings, "gettor at torproject.org")
+        hid = "80d7054da0d3826563c7babb5453e18f3e42f932e562c5ab0434aec9df7b0625"
+        request_service = "osx"
+        limit = self.settings.get("email_requests_limit")
+        num_requests = 300
+        check = ep.too_many_requests(hid, num_requests, limit)
+        self.assertEqual(hid, self.settings.get('test_hid'))
+        self.assertEqual(check, False)
+
     def test_language_email_parser(self):
         ep = conftests.EmailParser(self.settings, "gettor at torproject.org")
         request = ep.parse("From: \"silvia [hiro]\" <hiro at torproject.org>\n Subject: \r\n Reply-To: hiro at torproject.org \nTo: gettor at torproject.org\n osx en")



More information about the tor-commits mailing list