create PendingCaptchaUser before uploading CAPTCHA: closing abuse possibility

This commit is contained in:
Adler Neves 2020-07-11 04:05:55 -03:00
parent bad18f3d0d
commit 8d0ae6301b

View File

@ -272,6 +272,17 @@ class WebHookView(View):
secret = '' secret = ''
while len(secret) < telegramGroupPreferences.captcha_digits: while len(secret) < telegramGroupPreferences.captcha_digits:
secret += random.choice(telegramGroupPreferences.captcha_chars) secret += random.choice(telegramGroupPreferences.captcha_chars)
models.PendingCaptchaUser.objects.filter(group=telegramGroup, user=telegramMember).delete()
pcu = models.PendingCaptchaUser(
bot_token=telegram,
user=telegramMember,
group=telegramGroup,
captcha_answer=secret,
attempts_left=telegramGroupPreferences.captcha_attempts,
lifetime=telegramGroupPreferences.captcha_timeout,
captcha_message_id=0,
)
pcu.save()
imbytes = imageCaptcha.generate(secret) imbytes = imageCaptcha.generate(secret)
captcha_message = (telegramGroupPreferences.captcha_first_message captcha_message = (telegramGroupPreferences.captcha_first_message
.replace('{NAME}', telegramMember.name) .replace('{NAME}', telegramMember.name)
@ -289,16 +300,8 @@ class WebHookView(View):
photo=imbytes, photo=imbytes,
caption=captcha_message, caption=captcha_message,
) )
models.PendingCaptchaUser.objects.filter(group=telegramGroup, user=telegramMember).delete() pcu.captcha_message_id = sent_message.message_id
models.PendingCaptchaUser( pcu.save()
bot_token=telegram,
user=telegramMember,
group=telegramGroup,
captcha_answer=secret,
attempts_left=telegramGroupPreferences.captcha_attempts,
lifetime=telegramGroupPreferences.captcha_timeout,
captcha_message_id=sent_message.message_id,
).save()
else: else:
send_hello(telegramMember) send_hello(telegramMember)
else: else: