47 lines
1.1 KiB
Python
47 lines
1.1 KiB
Python
# SPDX-FileCopyrightText: 2024 Aravinth Manivannan <realaravinth@batsense.net>
|
|
#
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
import os
|
|
from flask import Flask, render_template, request
|
|
from mcaptcha_api import MCaptcha
|
|
|
|
app = Flask(__name__)
|
|
|
|
sitekey = os.environ["SITEKEY"]
|
|
secret = os.environ["SECRET"]
|
|
instance_url = os.environ["INSTANCE_URL"]
|
|
|
|
if len(sitekey) == 0:
|
|
print("please enter sitekey")
|
|
exit(-1)
|
|
|
|
|
|
if len(secret) == 0:
|
|
print("please enter secret")
|
|
exit(-1)
|
|
|
|
|
|
if len(instance_url) == 0:
|
|
print("please enter instance url")
|
|
exit(-1)
|
|
|
|
|
|
@app.route("/")
|
|
def index():
|
|
return render_template(
|
|
"index.html.j2", widget_link=f"{instance_url}/widget?sitekey={sitekey}"
|
|
)
|
|
|
|
|
|
mcaptcha = MCaptcha(instance_url=instance_url, sitekey=sitekey, secret=secret)
|
|
|
|
|
|
@app.route("/login", methods=["POST"])
|
|
def login_page():
|
|
username = request.form["username"]
|
|
token = request.form["mcaptcha__token"]
|
|
if mcaptcha.verify(token=token):
|
|
return "<p> Success. Click <a href="/">here</a> to retry</p>"
|
|
else:
|
|
return '<p> Failed. Click <a href="/">here</a> to retry</p>'
|