commit 8953e38e9dd5527507c3a3de5d1c9ea4b5541d43 Author: hiro hiro@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@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@torproject.org") request = ep.parse("From: "silvia [hiro]" hiro@torproject.org\n Subject: \r\n Reply-To: hiro@torproject.org \nTo: gettor@torproject.org\n osx en")
tor-commits@lists.torproject.org