Esempio n. 1
0
def generate_captcha():
    challenge_code = uuid.uuid4().get_hex()
    image, answer = generate_captcha_image_and_answer(size=(150, 30),
                                                      font_size=25,
                                                      draw_lines=True,
                                                      draw_points=True)
    redis().setex(captcha_redis_key(challenge_code), CAPTCHA_ANSWER_ALIVE_TIME,
                  answer)
    bucket_key = captcha_bucket_key(challenge_code)
    with contextlib.closing(StringIO()) as buffer_:
        image.save(buffer_, 'GIF', transparency=0)
        buffer_.reset()
        bucket().store(bucket_key, buffer_)
    return challenge_code, bucket().get_url(bucket_key)
Esempio n. 2
0
def clean_up_captcha_images():
    if not isinstance(bucket(), FilesystemBucket):
        LOGGER.warn(
            'failed as captcha images are not saved in file-system-based bucket'
        )
        return
    if not bucket().base_directory.exists():
        return
    try:
        shell_execute('find {} -type f -mmin +{} -delete'.format(
            bucket().base_directory, CAPTCHA_ANSWER_ALIVE_MINUTES * 2),
                      capture=True)
    except Exception as e:
        LOGGER.info('clean up captcha images got exception: %(message)s',
                    {'message': e.message})