Add visitor count

This commit is contained in:
Thijs Raymakers 2025-05-14 21:39:24 +02:00
parent f6d68b3eee
commit 6cd8baf1c7
No known key found for this signature in database
3 changed files with 28 additions and 4 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
.env
visitor_count

26
main.py
View file

@ -4,12 +4,20 @@ from dotenv import load_dotenv
from os import getenv
from ssl import get_server_certificate
from flask import Flask, request, render_template, Response, send_from_directory
import os
app = Flask(__name__)
app.config['TEMPLATES_AUTO_RELOAD'] = True
global unifi
VISITOR_COUNT_FILE = "visitor_count"
def main():
if not os.path.exists(VISITOR_COUNT_FILE):
os.mknod(VISITOR_COUNT_FILE)
with open(VISITOR_COUNT_FILE, "w") as f:
f.write("0")
load_dotenv()
HOSTNAME = str(getenv("HOSTNAME"))
@ -22,16 +30,30 @@ def main():
#unifi = UnifiClient(host=HOSTNAME,
# username=USERNAME, password=PASSWORD, cert=cert)
app.run(host="0.0.0.0", port=80)
app.run(host="0.0.0.0", port=8080)
@app.route('/guest/s/default/', methods=["GET"])
def root():
visitor_count = 1337
# Yes there is a race condition here, I don't care
try:
with open(VISITOR_COUNT_FILE, "r+") as f:
visitors = int(f.read().strip())
print("visitors:", visitors)
visitors += 1
f.seek(0)
f.write(str(visitors))
f.truncate()
visitor_count = visitors
except Exception as e:
print(f"error {e}")
ap = escape(request.args.get('ap'))
id = escape(request.args.get('id'))
ssid = escape(request.args.get('ssid'))
url = escape(request.args.get('url'))
page = render_template("index.html", ap=ap, id=id, ssid=ssid, url=url)
page = render_template("index.html", ap=ap, id=id, ssid=ssid, url=url, visitor_count=visitor_count)
response = Response(page, mimetype="text/html")
return response

View file

@ -75,13 +75,14 @@
</P>
<HR>
<P>
<CENTER>
<H2>U BENT BEZOEKER <FONT COLOR="red"><BLINK>{{visitor_count}}</BLINK></FONT>!</H2>
</CENTER>
<FORM METHOD="POST" ACTION="/connect">
<INPUT TYPE="hidden" NAME="id" VALUE="{{id}}">
<CENTER><INPUT TYPE="image" VALUE="Verbind nu!" src="/afbeeldingen/verbind.gif"></INPUT></CENTER>
</FORM>
</P>
TODO: 88x31 en visitor count
</TD>
</TR>
</TABLE>
</BODY>