mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
use of url for the throttle scope of ddos
This commit is contained in:
@@ -229,9 +229,6 @@ class AccountViewSetTestCase(ModoAPITestCase):
|
||||
url = reverse("v2:account-validate")
|
||||
resp = self.client.post(url, data, format="json")
|
||||
self.assertEqual(resp.status_code, 204)
|
||||
for _ in range(500):
|
||||
resp = self.client.post(url, data, format="json")
|
||||
self.assertEqual(resp.status_code, 429)
|
||||
|
||||
def test_random_password(self):
|
||||
url = reverse("v2:account-random-password")
|
||||
|
||||
@@ -10,9 +10,8 @@ class UserDdosPerView(SimpleRateThrottle):
|
||||
ident = request.user.pk
|
||||
else:
|
||||
ident = self.get_ident(request)
|
||||
|
||||
return self.cache_format % {
|
||||
'scope': hash(f"{view.basename}_{view.name}"),
|
||||
'scope': hash(request.path),
|
||||
'ident': ident
|
||||
}
|
||||
|
||||
@@ -26,8 +25,7 @@ class UserLesserDdosUser(SimpleRateThrottle):
|
||||
ident = request.user.pk
|
||||
else:
|
||||
ident = self.get_ident(request)
|
||||
|
||||
return self.cache_format % {
|
||||
'scope': self.scope,
|
||||
'scope': hash(request.path),
|
||||
'ident': ident
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ from rest_framework.permissions import DjangoModelPermissions, IsAuthenticated
|
||||
from rest_framework.throttling import UserRateThrottle
|
||||
|
||||
from modoboa.core import models as core_models
|
||||
from modoboa.lib.throttle import UserDdosPerView
|
||||
from modoboa.lib.throttle import UserLesserDdosUser
|
||||
from . import serializers
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ class ResourcesViewSet(
|
||||
|
||||
permission_classes = [IsAuthenticated, DjangoModelPermissions]
|
||||
serializer_class = serializers.ResourcesSerializer
|
||||
throttle_classes = [UserDdosPerView, UserRateThrottle]
|
||||
throttle_classes = [UserLesserDdosUser, UserRateThrottle]
|
||||
|
||||
def get_queryset(self):
|
||||
"""Filter queryset based on current user."""
|
||||
|
||||
@@ -15,12 +15,7 @@ class RelayDomainViewSet(RevisionModelMixin, viewsets.ModelViewSet):
|
||||
|
||||
permission_classes = [IsAuthenticated, DjangoModelPermissions, ]
|
||||
serializer_class = serializers.RelayDomainSerializer
|
||||
|
||||
def get_throttles(self):
|
||||
if self.action:
|
||||
self.throttle_classes.append(UserLesserDdosUser)
|
||||
return super().get_throttles()
|
||||
|
||||
throttle_classes = [UserLesserDdosUser]
|
||||
|
||||
def get_queryset(self):
|
||||
"""Filter queryset based on current user."""
|
||||
|
||||
Reference in New Issue
Block a user