|
|
"""
|
|
|
This module contains helper functions and helper classes.
|
|
|
"""
|
|
|
|
|
|
from neboard import settings
|
|
|
import time
|
|
|
|
|
|
|
|
|
KEY_CAPTCHA_FAILS = 'key_captcha_fails'
|
|
|
KEY_CAPTCHA_DELAY_TIME = 'key_captcha_delay_time'
|
|
|
KEY_CAPTCHA_LAST_ACTIVITY = 'key_captcha_last_activity'
|
|
|
|
|
|
|
|
|
def need_include_captcha(request):
|
|
|
"""
|
|
|
Check if request is made by a user.
|
|
|
It contains rules which check for bots.
|
|
|
"""
|
|
|
|
|
|
if not settings.ENABLE_CAPTCHA:
|
|
|
return False
|
|
|
|
|
|
enable_captcha = False
|
|
|
|
|
|
#newcomer
|
|
|
if KEY_CAPTCHA_LAST_ACTIVITY not in request.session:
|
|
|
return settings.ENABLE_CAPTCHA
|
|
|
|
|
|
last_activity = request.session[KEY_CAPTCHA_LAST_ACTIVITY]
|
|
|
current_delay = int(time.time()) - last_activity
|
|
|
|
|
|
delay_time = (request.session[KEY_CAPTCHA_DELAY_TIME]
|
|
|
if KEY_CAPTCHA_DELAY_TIME in request.session
|
|
|
else settings.CAPTCHA_DEFAULT_SAFE_TIME)
|
|
|
|
|
|
if current_delay < delay_time:
|
|
|
enable_captcha = True
|
|
|
|
|
|
print 'ENABLING' + str(enable_captcha)
|
|
|
|
|
|
return enable_captcha
|
|
|
|
|
|
|
|
|
def update_captcha_access(request, passed):
|
|
|
"""
|
|
|
Update captcha fields.
|
|
|
It will reduce delay time if user passed captcha verification and
|
|
|
it will increase it otherwise.
|
|
|
"""
|
|
|
session = request.session
|
|
|
|
|
|
delay_time = (request.session[KEY_CAPTCHA_DELAY_TIME]
|
|
|
if KEY_CAPTCHA_DELAY_TIME in request.session
|
|
|
else settings.CAPTCHA_DEFAULT_SAFE_TIME)
|
|
|
|
|
|
print "DELAY TIME = " + str(delay_time)
|
|
|
|
|
|
if passed:
|
|
|
delay_time -= 2 if delay_time >= 7 else 5
|
|
|
else:
|
|
|
delay_time += 10
|
|
|
|
|
|
session[KEY_CAPTCHA_LAST_ACTIVITY] = int(time.time())
|
|
|
session[KEY_CAPTCHA_DELAY_TIME] = delay_time
|
|
|
|