Basic contact page

This commit is contained in:
2025-01-08 22:12:10 +00:00
parent 856528fbc4
commit 66c8b16018
6 changed files with 102 additions and 9 deletions

View File

@@ -2,16 +2,61 @@
from index import app
from os import environ
from flask import request, redirect, render_template
from flask import request, render_template
from requests import post, get
from uuid import uuid4
from textwrap import dedent
def validate_turnstile(response: str, ip: str) -> bool:
turnstile_secret = environ['TURNSTILE_SECRET']
cf_response = post(
url='https://challenges.cloudflare.com/turnstile/v0/siteverify',
data={
'secret': turnstile_secret,
'response': response,
'remoteip': ip,
'idempotency_key': uuid4()
}
).json()
return cf_response.get('success', False)
def send_to_discord(form: dict) -> bool:
try:
discord_hook = environ['DISCORD_WEBHOOK']
except:
return False
discord_msg = dedent(
f'''
__**New Contact Form Response**__
**From:** {form.get('name')} <{form.get('email')}>
''')
if form.get("message") == '':
discord_msg += '*No Message*'
else:
discord_msg += f'>>> {form.get("message")}'
discord_response = post(
url=discord_hook,
data={
'username': form.get('name'),
'content': discord_msg
}
).status_code
if discord_response == 204:
return True
return False
@app.route('/contact/', methods=('GET', 'POST'))
def contact():
if request.method == 'POST':
discord_hook = environ['DISCORD_WEBHOOK']
print(discord_hook)
print(request.form)
return redirect('/contact/')
if not validate_turnstile(request.form['cf-turnstile-response'], request.remote_addr):
return render_template('contact.html', error=True, user_message='You appear to be a robot.')
send_result = send_to_discord(request.form)
if send_result:
return render_template('contact.html', user_message='Your message has been sent!')
return render_template('contact.html', error=True, user_message='An error occurred.')
else:
return render_template('contact.html')