from django_secux.decorator import ai_ratelimit
@ai_ratelimit()
def protected_view(request):
return HttpResponse("Protected content")
and a receiver for when blocked:
from django.dispatch import receiver
from django_secux.signals import attack_detected
@receiver(attack_detected)
def log_attack(sender, **kwargs):
request = kwargs.get("request")
path = kwargs.get("path")
reason = kwargs.get("reason")
ip = request.META.get("REMOTE_ADDR") if request else "unknown"
user_agent = request.META.get("HTTP_USER_AGENT", "unknown") if request else "unknown"
count = kwargs.get("count")
log_message = "[SECUX] Attack detected:\n"
log_message += f" View: {sender.__name__ if sender else 'unknown'}\n"
log_message += f" Path: {path}\n"
log_message += f" IP: {ip}\n"
log_message += f" Reason: {reason}\n"
log_message += f" User-Agent: {user_agent}\n"
print(log_message)
[!Tip] You can use it for
Webhook
andLog
. —
urls.py
:from django_secux.views import cdn_serve
urlpatterns = [
...
path('cdn/<path:file_path>', cdn_serve, name='cdn'),
]
python manage.py collectstatic
<!-- Basic usage -->
<img src="/cdn[ STATIC ]">
<!-- With resizing -->
<img src="/cdn[ STATIC ]?size=250">
MIDDLEWARE = [
...
'django_secux.middleware.Minify'
]
<link rel="stylesheet" href="/cdn{% static 'style.css' %}" />
...
<script src="/cdn{% static 'script.js' %}"></script>
import django_secux.user as dsu
dsu.create_session(user, session_key, ip=None, user_agent=None)
ip
, user_agent
.dsu.check_user_session(user, session_key)
True
if found, otherwise False
.dsu.get_user_sessions(user)
dsu.get_all_sessions()
dsu.terminate_session(user, session_key)
dsu.is_session_active(session_key)
True
or False
.import django_secux.tools as dst
dst.get_user_ip(request)
dst.get_user_agent(request)
dst.get_referer_url(request, default)
dst.is_request_secure(request)
dst.get_user_meta(request)
dst.get_request_headers(request, prefix)
dst.get_client_timezone(request, default)
dst.is_mobile_device(request)
dst.get_client_fingerprint(request)
from django_secux.models import OptimizeImageField
image = OptimizeImageField(upload_to='image/', name=f'image.jpg', size=(300, 300))
from django.db import models
from django_secux.models import OptimizeImageField
class Test(models.Model):
avatar = OptimizeImageField(upload_to='test/', name=f'test.jpg', size=(300, 300))
from django_secux import captcha
def your_views(request):
if captcha.is_captcha_valid(request):
return HttpResponse(f'Success!')
else:
return HttpResponse(f'Failed!')
{% load secux_captcha %}
...
<img src="{% captcha_src %}">
<input name="secux_captcha_input">
from django_secux.decorator import js_challenge
@js_challenge
def your_views(request):
return HttpResponse('Hello world!')
MIDDLEWARE = [
...
'django_secux.middleware.Honeypot'
]
Previous | Menu | Next |