From b8f5255070c36abea1912ab848dbc4070f4dde92 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Mon, 5 Apr 2010 18:57:22 +0200 Subject: captcha input for webif --- module/web/ajax/urls.py | 1 + module/web/ajax/views.py | 26 +++++++- module/web/media/default/css/window.css | 18 +++--- module/web/media/default/img/images.png | Bin 0 -> 661 bytes module/web/pyload/views.py | 2 +- module/web/templates/default/base.html | 99 +++++++++++++++++++++++++----- module/web/templates/default/captcha.html | 37 +++++++++++ 7 files changed, 155 insertions(+), 28 deletions(-) create mode 100644 module/web/media/default/img/images.png create mode 100644 module/web/templates/default/captcha.html (limited to 'module') diff --git a/module/web/ajax/urls.py b/module/web/ajax/urls.py index dd68729eb..a32a00d89 100644 --- a/module/web/ajax/urls.py +++ b/module/web/ajax/urls.py @@ -27,4 +27,5 @@ urlpatterns = patterns('ajax', (r'^remove_link/(\d+)$', 'views.remove_link'), (r'^restart_link/(\d+)$', 'views.restart_link'), (r'^push_to_queue/(\d+)$', 'views.push_to_queue'), + (r'^set_captcha$', 'views.set_captcha'), ) \ No newline at end of file diff --git a/module/web/ajax/views.py b/module/web/ajax/views.py index 4265e8081..a0e1238aa 100644 --- a/module/web/ajax/views.py +++ b/module/web/ajax/views.py @@ -1,4 +1,3 @@ - # Create your views here. from os.path import join import time @@ -10,6 +9,7 @@ from django.http import HttpResponseForbidden from django.http import HttpResponseServerError from django.utils import simplejson from django.utils.translation import ugettext as _ +import base64 def format_time(seconds): seconds = int(seconds) @@ -89,7 +89,9 @@ def remove_link(request, id): @permission('pyload.can_see_dl') def status(request): try: - return JsonResponse(settings.PYLOAD.status_server()) + status = settings.PYLOAD.status_server() + status['captcha'] = settings.PYLOAD.is_captcha_waiting() + return JsonResponse(status) except: return HttpResponseServerError() @@ -229,4 +231,22 @@ def push_to_queue(request, id): settings.PYLOAD.push_package_2_queue(int(id)) return JsonResponse("sucess") except: - return HttpResponseServerError() \ No newline at end of file + return HttpResponseServerError() + +@permission('pyload.can_add_dl') +def set_captcha(request): + if request.META['REQUEST_METHOD'] == "POST": + try: + settings.PYLOAD.set_captcha_result(request.POST["cap_id"], request.POST["cap_text"]) + except: + pass + + id, binary, typ = settings.PYLOAD.get_captcha_task() + + if id: + binary = base64.standard_b64encode(str(binary)) + src = "data:image/%s;base64,%s" % (typ, binary) + + return JsonResponse({'captcha': True, 'src': src, 'id': id}) + else: + return JsonResponse({'captcha': False}) diff --git a/module/web/media/default/css/window.css b/module/web/media/default/css/window.css index 237cf9ac3..606913be6 100644 --- a/module/web/media/default/css/window.css +++ b/module/web/media/default/css/window.css @@ -13,30 +13,30 @@ } /* ----------- stylized ----------- */ -#add_box{ +#add_box, #cap_box{ border:solid 2px #b7ddf2; background:#ebf4fb; } -#add_box h1 { +#add_box h1, #cap_box h1 { font-size:14px; font-weight:bold; margin-bottom:8px; } -#add_box p{ +#add_box p, #cap_box p{ font-size:11px; color:#666666; margin-bottom:20px; border-bottom:solid 1px #b7ddf2; padding-bottom:10px; } -#add_box label{ +#add_box label, #cap_box label{ display:block; font-weight:bold; text-align:right; width:240px; float:left; } -#add_box .small{ +#add_box .small, #cap_box .small{ color:#666666; display:block; font-size:11px; @@ -44,7 +44,7 @@ text-align:right; width:240px; } -#add_box input{ +#add_box input, #cap_box input{ float:left; font-size:12px; padding:4px 2px; @@ -52,14 +52,14 @@ width:300px; margin:2px 0 20px 10px; } -#add_box .cont{ +#add_box .cont, #cap_box .cont{ float:left; font-size:12px; padding: 0px 10px 15px 0px; width:300px; margin:0px 0px 0px 10px; } -#add_box .cont input{ +#add_box .cont input, #cap_box .cont input{ float: none; margin: 0px 15px 0px 1px; } @@ -71,7 +71,7 @@ width:300px; margin:2px 0 20px 10px; } -#add_box button{ +#add_box button, #cap_box button{ clear:both; margin-left:150px; width:125px; diff --git a/module/web/media/default/img/images.png b/module/web/media/default/img/images.png new file mode 100644 index 000000000..184860d1e Binary files /dev/null and b/module/web/media/default/img/images.png differ diff --git a/module/web/pyload/views.py b/module/web/pyload/views.py index db04f8c67..388184f24 100644 --- a/module/web/pyload/views.py +++ b/module/web/pyload/views.py @@ -57,7 +57,7 @@ def permission(perm): def status_proc(request): - return {'status': settings.PYLOAD.status_server()} + return {'status': settings.PYLOAD.status_server(), 'captcha': settings.PYLOAD.is_captcha_waiting()} def base(request, messages): diff --git a/module/web/templates/default/base.html b/module/web/templates/default/base.html index 7aa6267a3..4631ec382 100644 --- a/module/web/templates/default/base.html +++ b/module/web/templates/default/base.html @@ -21,11 +21,12 @@ {% block title %}pyLoad {% trans "Webinterface" %}{% endblock %}