##// END OF EJS Templates
Added ban middleware. Now banned user's won't cause load to the server.
neko259 -
r210:952de927 default
parent child Browse files
Show More
@@ -0,0 +1,17 b''
1 from django.shortcuts import redirect
2 from boards import views, utils
3 from boards.models import Ban
4
5
6 class BanMiddleware:
7 """This is run before showing the thread. Banned users don't need to see
8 anything"""
9
10 def process_view(self, request, view_func, view_args, view_kwargs):
11
12 if view_func != views.you_are_banned:
13 ip = utils.get_client_ip(request)
14 is_banned = Ban.objects.filter(ip=ip).exists()
15
16 if is_banned:
17 return redirect(views.you_are_banned) No newline at end of file
@@ -7,7 +7,7 b''
7 <link rel="stylesheet" type="text/css"
7 <link rel="stylesheet" type="text/css"
8 href="{{ STATIC_URL }}css/jquery.fancybox.css" media="all"/>
8 href="{{ STATIC_URL }}css/jquery.fancybox.css" media="all"/>
9 <link rel="stylesheet" type="text/css"
9 <link rel="stylesheet" type="text/css"
10 href="{{ STATIC_URL }}css/{{ theme }}/base_page.css?3" media="all"/>
10 href="{{ STATIC_URL }}css/{{ theme }}/base_page.css?4" media="all"/>
11 <link rel="alternate" type="application/rss+xml" href="rss/" title="
11 <link rel="alternate" type="application/rss+xml" href="rss/" title="
12 {% trans 'Feed' %}"/>
12 {% trans 'Feed' %}"/>
13
13
@@ -27,9 +27,9 b''
27 <form method="post">{% csrf_token %}
27 <form method="post">{% csrf_token %}
28 {{ form.as_p }}
28 {{ form.as_p }}
29 <hr />
29 <hr />
30 <input type="submit" value="{% trans "Save" %}" />
30 </form>
31 </form>
31 </div>
32 </div>
32 <input type="submit" value="{% trans "Save" %}" />
33 </div>
33 </div>
34
34
35 {% endblock %}
35 {% endblock %}
@@ -62,3 +62,12 b' def update_captcha_access(request, passe'
62
62
63 session[KEY_CAPTCHA_LAST_ACTIVITY] = int(time.time())
63 session[KEY_CAPTCHA_LAST_ACTIVITY] = int(time.time())
64 session[KEY_CAPTCHA_DELAY_TIME] = delay_time
64 session[KEY_CAPTCHA_DELAY_TIME] = delay_time
65
66
67 def get_client_ip(request):
68 x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
69 if x_forwarded_for:
70 ip = x_forwarded_for.split(',')[-1].strip()
71 else:
72 ip = request.META.get('REMOTE_ADDR')
73 return ip No newline at end of file
@@ -14,6 +14,7 b' from boards.forms import ThreadForm, Pos'
14
14
15 from boards.models import Post, Tag, Ban, User, RANK_USER, SETTING_MODERATE
15 from boards.models import Post, Tag, Ban, User, RANK_USER, SETTING_MODERATE
16 from boards import authors
16 from boards import authors
17 from boards.utils import get_client_ip
17 import neboard
18 import neboard
18
19
19
20
@@ -53,8 +54,8 b' def index(request, page=0):'
53 def _new_post(request, form, thread_id=boards.models.NO_PARENT):
54 def _new_post(request, form, thread_id=boards.models.NO_PARENT):
54 """Add a new post (in thread or as a reply)."""
55 """Add a new post (in thread or as a reply)."""
55
56
56 ip = _get_client_ip(request)
57 ip = get_client_ip(request)
57 is_banned = Ban.objects.filter(ip=ip).count() > 0
58 is_banned = Ban.objects.filter(ip=ip).exists()
58
59
59 if is_banned:
60 if is_banned:
60 return redirect(you_are_banned)
61 return redirect(you_are_banned)
@@ -319,15 +320,6 b' def _get_theme(request, user=None):'
319 return theme
320 return theme
320
321
321
322
322 def _get_client_ip(request):
323 x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
324 if x_forwarded_for:
325 ip = x_forwarded_for.split(',')[-1].strip()
326 else:
327 ip = request.META.get('REMOTE_ADDR')
328 return ip
329
330
331 def _init_default_context(request):
323 def _init_default_context(request):
332 """Create context with default values that are used in most views"""
324 """Create context with default values that are used in most views"""
333
325
@@ -117,7 +117,8 b' MIDDLEWARE_CLASSES = ('
117 'django.contrib.auth.middleware.AuthenticationMiddleware',
117 'django.contrib.auth.middleware.AuthenticationMiddleware',
118 'django.contrib.messages.middleware.MessageMiddleware',
118 'django.contrib.messages.middleware.MessageMiddleware',
119 # Uncomment the next line for simple clickjacking protection:
119 # Uncomment the next line for simple clickjacking protection:
120 # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
120 # 'django.middleware.clickjacking.XFrameOptionsMiddleware'
121 'boards.middlewares.BanMiddleware',
121 )
122 )
122
123
123 ROOT_URLCONF = 'neboard.urls'
124 ROOT_URLCONF = 'neboard.urls'
General Comments 0
You need to be logged in to leave comments. Login now