use of url for the throttle scope of ddos

This commit is contained in:
Spitap
2023-02-01 14:09:28 +01:00
parent bee1342f4d
commit b707ae292c
4 changed files with 5 additions and 15 deletions
-3
View File
@@ -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")
+2 -4
View File
@@ -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
}
+2 -2
View File
@@ -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."""
+1 -6
View File
@@ -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."""