From a1334ed865deb4dbc9062344295e12e7091e36f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesko=20Ansch=C3=BCtz?= Date: Sun, 4 May 2025 23:44:49 +0200 Subject: [PATCH] first commit --- .env-dist | 10 +++ .gitignore | 3 + Dockerfile | 14 +++ docker-compose.yml | 22 +++++ entrypoint.sh | 39 +++++++++ lmn-logo.png | Bin 0 -> 9795 bytes requirements.txt | 7 ++ script/app.py | 157 ++++++++++++++++++++++++++++++++++ script/static/logo.png | Bin 0 -> 9274 bytes script/static/wifi-icon.png | Bin 0 -> 86574 bytes script/templates/index.html | 83 ++++++++++++++++++ script/templates/voucher.html | 99 +++++++++++++++++++++ 12 files changed, 434 insertions(+) create mode 100644 .env-dist create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 entrypoint.sh create mode 100644 lmn-logo.png create mode 100644 requirements.txt create mode 100644 script/app.py create mode 100644 script/static/logo.png create mode 100644 script/static/wifi-icon.png create mode 100644 script/templates/index.html create mode 100644 script/templates/voucher.html diff --git a/.env-dist b/.env-dist new file mode 100644 index 0000000..6b329dc --- /dev/null +++ b/.env-dist @@ -0,0 +1,10 @@ +UNIFI_HOST = 'wlan.morz.de' +UNIFI_USERNAME = 'admin' +UNIFI_PASSWORD = 'yourPassword' +UNIFI_PORT = 443 +UNIFI_SSL_VERIFY = True +UNIFI_SITE_ID = 'yourSiteID' +WLAN_SSID = 'your WLAN-SSID' +WLAN_PASSWORD = 'your WLAN Passwort' +LOGO_FILE = /app/custom/logo.png +WIFI_ICON = /app/custom/wifi-icon.png \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..368ed78 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.env +script/__pycache__/ + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7060a93 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM python:3.13-slim + +# Arbeitsverzeichnis im Container +WORKDIR /app + +# Abhängigkeiten installieren +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +COPY script/* /app/script-dist/ +COPY entrypoint.sh /app/ +RUN chmod +x /app/entrypoint.sh + +CMD ["sh", "/app/entrypoint.sh"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..19561b4 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,22 @@ +name: linuxmuster-voucher + +services: + linuxmuster-voucher: + build: + context: . + dockerfile: Dockerfile + image: git.az-it.net/az/linuxmuster-voucher:latest + container_name: linuxmuster-voucher + ports: + - 42425:42425 + volumes: + - ./script:/app/script + # - ./lmn-logo.png:/app/script/static/logo.png:ro + + working_dir: /app/script + environment: + - DEV=false + - PYTHONUNBUFFERED=1 + env_file: + - .env + #restart: unless-stopped diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..a1ee0cc --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +APPSCRIPT="/app/script/app.py" +# App-Name ist der Name des Python-Skripts ohne die Endung .py +APPNAME=$(basename "$APPSCRIPT" .py) +APPDIR=$(dirname "$APPSCRIPT") + +if [ -f "/app/script/app.py" ]; then + echo "Das Verzeichnis $APPDIR existiert und enthält die Datei $APPSCRIPT --> führe das Skript aus." +else + echo "Das Verzeichnis $APPDIR existiert nicht oder die Datei $APPSCRIPT fehlt. --> kopiere die Dateien aus dem Verzeichnis /app/script-dist in das Verzeichnis $APPDIR." + mkdir -p $APPDIR + cp -r /app/script-dist/* $APPDIR +fi + +echo "Setze Arbeitsverzeichnis auf $APPDIR" +cd $APPDIR +echo "Inhalt des Verzeichnisses $APPDIR:" +ls -l $APPDIR + +echo DEV=$DEV +if [ "${DEV:-}" = "true" ]; then + echo "DEBUGGING ist auf true gesetzt. Halte Container am Laufen aber starte kein gunicorn" + while true; do + echo "Schlafe 10 Minuten..." + sleep 600 + done +else + APP_WEBPORT=${APP_WEBPORT:-42425} + APP_WORKERS=${APP_WORKERS:-4} + echo "APP_WEBPORT ist auf $APP_WEBPORT gesetzt." + echo "Starte Gunicorn mit $APP_WORKERS Worker auf Port $APP_WEBPORT." + while true; do + echo "Starte gunicorn ..." + PYTHONPATH=$APPDIR gunicorn -w $APP_WORKERS -b 0.0.0.0:$APP_WEBPORT app:$APPNAME + echo "Script wurde beendet, warte 60 Sekunden bis zum nächsten Start." + sleep 60 + done +fi \ No newline at end of file diff --git a/lmn-logo.png b/lmn-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6fb4976fb01053253e7b8a371c735a69628f3bc5 GIT binary patch literal 9795 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 H4}t#$i@itZ literal 0 HcmV?d00001 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..0605dc0 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,7 @@ +flask +gunicorn +authlib +requests +pyunifi +pillow +qrcode diff --git a/script/app.py b/script/app.py new file mode 100644 index 0000000..8065646 --- /dev/null +++ b/script/app.py @@ -0,0 +1,157 @@ +from pyunifi.controller import Controller + +import os +from authlib.integrations.flask_client import OAuth +from flask import Flask, jsonify, request, render_template, redirect, url_for, session, send_from_directory +from werkzeug.middleware.proxy_fix import ProxyFix +import uuid +import json +import qrcode +import base64 +import io + + + + +def str_to_bool(value): + """ + Konvertiert einen String in einen booleschen Wert. + """ + return value.lower() in ('true', '1', 'yes') + +UNIFI_HOST = os.getenv('UNIFI_HOST', '') +UNIFI_USERNAME = os.getenv('UNIFI_USERNAME', 'admin') +UNIFI_PASSWORD = os.getenv('UNIFI_PASSWORD', '') +UNIFI_PORT = int(os.getenv('UNIFI_PORT', 8443)) +UNIFI_SSL_VERIFY = str_to_bool(os.getenv('UNIFI_SSL_VERIFY', 'True')) +UNIFI_SITE_ID = os.getenv('UNIFI_SITE_ID', '') +DEBUG = str_to_bool(os.getenv('DEBUG', 'False')) +LOGO_FILE = os.getenv('LOGO_FILE', '/static/logo.png') +WIFI_ICON = os.getenv('WIFI_ICON', '/static/wifi-icon.png') +if DEBUG: + print("DEBUG mode is enabled.") + print(f"UNIFI_HOST: {UNIFI_HOST}") + print(f"UNIFI_USERNAME: {UNIFI_USERNAME}") + print(f"UNIFI_PASSWORD: {UNIFI_PASSWORD}") + print(f"UNIFI_PORT: {UNIFI_PORT}") + print(f"UNIFI_SSL_VERIFY: {UNIFI_SSL_VERIFY}") + print(f"UNIFI_SITE_ID: {UNIFI_SITE_ID}") + +LOGLEVEL = os.getenv('LOGLEVEL', 'INFO') + +def log(message, level='INFO'): + """ + Log a message with the specified log level. + """ + if level == 'DEBUG' and not DEBUG: + return + if level == 'INFO' and LOGLEVEL not in ['DEBUG', 'INFO']: + return + if level == 'WARNING' and LOGLEVEL not in ['DEBUG', 'INFO', 'WARNING']: + return + if level == 'ERROR' and LOGLEVEL not in ['DEBUG', 'INFO', 'WARNING', 'ERROR']: + return + print(f"{level}: {message}") + + +def check_site_id(site_id): + """ + Check if the given site ID exists in the controller and assign the right one if not. + """ + log(f"Checking site ID: {site_id}", 'DEBUG') + c = Controller(UNIFI_HOST, UNIFI_USERNAME, UNIFI_PASSWORD, port=UNIFI_PORT, ssl_verify=UNIFI_SSL_VERIFY, site_id=UNIFI_SITE_ID) + sites = c.get_sites() + for site in sites: + if site['name'] == site_id: + return site_id + if len(sites) == 1: + print("\n" * 3 , "#" * 60) + print(f"Since there is only one site in your system I can set UNIFI_SITE_ID to {sites[0]['name']}") + print(f"To suppress this message, set environment-variable UNIFI_SITE_ID to {sites[0]['name']}") + print("#" * 60, "\n" * 3) + + return sites[0]['name'] + else: + print("\n" * 3, "#" * 60) + print(f"Multiple sites found. Please specify a valid site ID.") + print(f"Available site IDs: {', '.join([site['name'] for site in sites])}") + print(f"Setting UNIFI_SITE_ID to {sites[0]['name']}") + print(f"To suppress this message, set environment-variable UNIFI_SITE_ID to the desired site ID") + print("#" * 60, "\n" * 3) + return sites[0]['name'] + +def get_voucher_list(controller): + """ + Get the list of vouchers from the controller. + """ + vouchers = controller.list_vouchers() + return vouchers + +def api_create_voucher(c, note="TEST", time=45, up_bandwidth=5000, down_bandwidth=10000, byte_quota=0): + """ + Create a voucher with the specified name and number of vouchers. + create_voucher(Anzahl Voucher, Anzahl Nutzer (0=ohne Limit), Zeit in Minuten, Upstream Bandwidth, Downstream Bandwidth, Byte Quota, Notiz) + """ + + voucher = c.create_voucher(1, 0, time, up_bandwidth=up_bandwidth, down_bandwidth=down_bandwidth, byte_quota=byte_quota, note=note) + code = voucher[0].get('code') + + log(f"Created voucher with code: {code}", 'INFO') + return code + + +# QR-Code für das WLAN generieren: +ssid = os.getenv('WLAN_SSID', 'TANNE') +password = os.getenv('WLAN_WPA2', 'hdndwlanar') +qr_data = f"WIFI:T:WPA;S:{ssid};P:{password};;" +qr = qrcode.QRCode( + version=1, + error_correction=qrcode.constants.ERROR_CORRECT_L, + box_size=10, + border=0, + ) +qr.add_data(qr_data) +qr.make(fit=True) +img = qr.make_image(fill_color="#000000", back_color="transparent") +buffer = io.BytesIO() +img.save(buffer, format="PNG") +buffer.seek(0) + + + + + +app = Flask(__name__) +# b64encode-Filter registrieren +@app.template_filter('b64encode') +def b64encode_filter(data): + """ + Base64-Encode für Jinja2-Templates. + """ + if isinstance(data, bytes): + return base64.b64encode(data).decode('utf-8') + elif hasattr(data, 'getvalue'): # Prüfen, ob es ein BytesIO-Objekt ist + return base64.b64encode(data.getvalue()).decode('utf-8') + return base64.b64encode(data.encode('utf-8')).decode('utf-8') + + +@app.route("/") +def home(): + return render_template("index.html", logo=LOGO_FILE) + +@app.route("/voucher/") +def create_voucher(minutes): + try: + c = Controller(UNIFI_HOST, UNIFI_USERNAME, UNIFI_PASSWORD, port=UNIFI_PORT, ssl_verify=UNIFI_SSL_VERIFY, site_id=check_site_id(UNIFI_SITE_ID)) + code = api_create_voucher(c, time=minutes) # Platzhalter für echten Code + # code aufbereiten: 5 Zeichen Bindestrich, 5 Zeichen Bindestrich, 5 Zeichen Bindestrich, 5 Zeichen + code = f"{code[:5]}-{code[5:10]}" + except Exception as e: + log(f"Error creating voucher: {e}", 'ERROR') + return jsonify({"error": str(e)}), 500 + return render_template("voucher.html", code=code, minutes=minutes, qr_code=buffer, wifi_icon=WIFI_ICON) + + +# Main script +if __name__ == "__main__": + app.run(host="0.0.0.0", port=42425, debug=True) diff --git a/script/static/logo.png b/script/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6ba0066b7ddcb0e7f68e20871d2a039a1c3021c5 GIT binary patch literal 9274 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 literal 0 HcmV?d00001 diff --git a/script/static/wifi-icon.png b/script/static/wifi-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..42455bc1c4fc63eede65cf236f0c0b10d60d6f55 GIT binary patch literal 86574 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 literal 0 HcmV?d00001 diff --git a/script/templates/index.html b/script/templates/index.html new file mode 100644 index 0000000..6054578 --- /dev/null +++ b/script/templates/index.html @@ -0,0 +1,83 @@ + + + + + + Voucher Generator + + + +

+ + \ No newline at end of file diff --git a/script/templates/voucher.html b/script/templates/voucher.html new file mode 100644 index 0000000..daf2b9e --- /dev/null +++ b/script/templates/voucher.html @@ -0,0 +1,99 @@ + + + + + + + + Voucher + + + + +
+ Der {{ minutes }}min Zugangscode: +
+
+ {{ code }} +
+ + + + \ No newline at end of file