diff --git a/setup.sh b/setup.sh index 3bee6a6..8fd69c3 100644 --- a/setup.sh +++ b/setup.sh @@ -163,25 +163,26 @@ EOL # app.py (the main app) cat <<'PYTHON_END' > app.py -# Standards +# Standard library imports import atexit import csv import io -import locale +import locale # Note: locale was in your imports but not standard for typical web apps unless specific use. import logging import os import random import re import secrets -import sqlite3 +import sqlite3 # Note: direct sqlite3 import is unusual if you're using SQLAlchemy for all DB ops. import time import traceback from datetime import datetime, timedelta from functools import wraps -from io import BytesIO -from time import sleep +from io import BytesIO # Note: io.BytesIO is good, no need for direct BytesIO import if io is already imported. +from time import sleep # Note: time.sleep is fine, no need for direct 'sleep' import if 'time' is imported. from urllib.parse import urlparse from zoneinfo import ZoneInfo +import warnings # 3rd-Provider-Modules import pytz @@ -254,6 +255,7 @@ def enable_foreign_keys(dbapi_connection, connection_record): cursor.execute("PRAGMA foreign_keys=ON;") cursor.close() +ITAD_API_KEY_PLACEHOLDER = "your_api_key_here" TZ = os.getenv('TZ', 'UTC') os.environ['TZ'] = TZ app = Flask(__name__) @@ -346,6 +348,7 @@ app.config.update( SESSION_COOKIE_SAMESITE = 'Lax', PERMANENT_SESSION_LIFETIME = timedelta(days=30), + # LOGIN COOKIE STUFF REMEMBER_COOKIE_DURATION=timedelta(days=30), REMEMBER_COOKIE_HTTPONLY=True, @@ -618,7 +621,8 @@ def parse_steam_release_date(date_str): def fetch_itad_slug(steam_appid: int) -> str | None: api_key = os.getenv("ITAD_API_KEY") - if not api_key: + if not api_key or api_key.strip() == "your-secret-key-here": + app.logger.warning("ITAD-API-Key ist nicht gesetzt oder ist ein Platzhalter.") return None try: response = requests.get( @@ -635,8 +639,8 @@ def fetch_itad_slug(steam_appid: int) -> str | None: def fetch_itad_game_id(steam_appid: int) -> str | None: api_key = os.getenv("ITAD_API_KEY") - if not api_key: - app.logger.error("ITAD_API_KEY nicht gesetzt") + if not api_key or api_key.strip() == "your-secret-key-here": + app.logger.warning("ITAD-API-Key ist nicht gesetzt oder ist ein Platzhalter.") return None try: @@ -655,11 +659,12 @@ def fetch_itad_game_id(steam_appid: int) -> str | None: app.logger.error(f"ITAD Error: {str(e)}") return None - def fetch_itad_prices(game_id: str) -> dict | None: api_key = os.getenv("ITAD_API_KEY") country = os.getenv("ITAD_COUNTRY", "DE") - if not api_key: + + if not api_key or api_key.strip() == "your-secret-key-here": + app.logger.warning("ITAD-API-Key ist nicht gesetzt oder ist ein Platzhalter.") return None try: @@ -677,7 +682,7 @@ def fetch_itad_prices(game_id: str) -> dict | None: ) response.raise_for_status() return response.json()[0] - + except Exception as e: app.logger.error(f"ITAD-Preisabfrage fehlgeschlagen: {str(e)}") return None @@ -1770,7 +1775,7 @@ cat < templates/login.html {% block content %}
-

{{ _('Login') }}

+

{{ _('Login') }}

@@ -1794,23 +1799,29 @@ cat < templates/login.html autocomplete="current-password" aria-required="true">
- {% if error %} +
+ + +
+ {# Flash messages are handled in base.html, so the specific error block here can be removed #} + {# {% if error %} - {% endif %} - + {% endif %} #} + +
+ + {% if config.REGISTRATION_ENABLED %}
- {% if config['REGISTRATION_ENABLED'] %} - {{ _('No account? Register here!') }} - {% endif %} + {{ _('No account? Register here!') }}
+ {% endif %}
{% endblock %} - HTML_END # Register Template