From 21279f455d5c0eff3bdf8902d67b95073c25f497 Mon Sep 17 00:00:00 2001 From: MrWhiff Date: Thu, 11 Dec 2025 17:11:56 +0100 Subject: [PATCH] =?UTF-8?q?AstraOS=20Ver.=201.10.3:=20-=20Benachrichtigung?= =?UTF-8?q?=20gefixt=20-=20Sachen=20=C3=BCbersetzt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AstraOS/Frontend/HTML/age_verification.html | 37 +------- AstraOS/Frontend/HTML/dashboard.html | 35 -------- AstraOS/Frontend/HTML/role_management.html | 34 -------- AstraOS/Frontend/HTML/settings.html | 35 -------- AstraOS/Frontend/HTML/sidebar.html | 2 +- AstraOS/astra_os.py | 93 ++++++++++++--------- 6 files changed, 54 insertions(+), 182 deletions(-) diff --git a/AstraOS/Frontend/HTML/age_verification.html b/AstraOS/Frontend/HTML/age_verification.html index 9a8d5a5..66b1cc7 100644 --- a/AstraOS/Frontend/HTML/age_verification.html +++ b/AstraOS/Frontend/HTML/age_verification.html @@ -10,41 +10,6 @@

Altersüberprüfung

- -{% with messages = get_flashed_messages(with_categories=true) %} - {% if messages %} -
- {% for category, message in messages %} -
-
-
-
- {% if category == 'success' %} - - {% elif category == 'danger' %} - - {% else %} - - {% endif %} -
-
-

{{ message }}

-
-
-
-
- {% endfor %} -
- {% endif %} -{% endwith %} -
@@ -53,7 +18,7 @@
-
diff --git a/AstraOS/Frontend/HTML/dashboard.html b/AstraOS/Frontend/HTML/dashboard.html index 385ec6b..5522252 100644 --- a/AstraOS/Frontend/HTML/dashboard.html +++ b/AstraOS/Frontend/HTML/dashboard.html @@ -34,41 +34,6 @@

Dashboard

- -{% with messages = get_flashed_messages(with_categories=true) %} - {% if messages %} -
- {% for category, message in messages %} -
-
-
-
- {% if category == 'success' %} - - {% elif category == 'danger' %} - - {% else %} - - {% endif %} -
-
-

{{ message }}

-
-
-
-
- {% endfor %} -
- {% endif %} -{% endwith %} -
diff --git a/AstraOS/Frontend/HTML/role_management.html b/AstraOS/Frontend/HTML/role_management.html index d5f27e1..ebec4ea 100644 --- a/AstraOS/Frontend/HTML/role_management.html +++ b/AstraOS/Frontend/HTML/role_management.html @@ -8,40 +8,6 @@ {% block content %}
- - {% with messages = get_flashed_messages(with_categories=true) %} - {% if messages %} -
- {% for category, message in messages %} -
-
-
-
- {% if category == 'success' %} - - {% elif category == 'danger' %} - - {% else %} - - {% endif %} -
-
-

{{ message }}

-
-
-
-
- {% endfor %} -
- {% endif %} - {% endwith %}

Rollen verwalten

diff --git a/AstraOS/Frontend/HTML/settings.html b/AstraOS/Frontend/HTML/settings.html index 0c05d82..f85d8ee 100644 --- a/AstraOS/Frontend/HTML/settings.html +++ b/AstraOS/Frontend/HTML/settings.html @@ -11,41 +11,6 @@

Einstellungen

- - {% with messages = get_flashed_messages(with_categories=true) %} - {% if messages %} -
- {% for category, message in messages %} -
-
-
-
- {% if category == 'success' %} - - {% elif category == 'danger' %} - - {% else %} - - {% endif %} -
-
-

{{ message }}

-
-
-
-
- {% endfor %} -
- {% endif %} - {% endwith %} -

Account-Informationen

diff --git a/AstraOS/Frontend/HTML/sidebar.html b/AstraOS/Frontend/HTML/sidebar.html index 02680a7..d00d0b2 100644 --- a/AstraOS/Frontend/HTML/sidebar.html +++ b/AstraOS/Frontend/HTML/sidebar.html @@ -293,7 +293,7 @@ x-transition:leave="toast transition ease-in duration-300" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" - class="max-w-md w-full bg-gray-800 shadow-lg rounded-lg pointer-events-auto ring-1 ring-black ring-opacity-5 overflow-hidden border border-{{ 'red' if category == 'danger' else ('green' if category == 'success' else ('blue' if category == 'info' else 'gray')) }}-500/40"> + class="max-w-lg w-full bg-gray-800 shadow-lg rounded-lg pointer-events-auto ring-1 ring-black ring-opacity-5 overflow-hidden border border-{{ 'red' if category == 'danger' else ('green' if category == 'success' else ('blue' if category == 'info' else 'gray')) }}-500/40">
diff --git a/AstraOS/astra_os.py b/AstraOS/astra_os.py index f25147b..681e020 100644 --- a/AstraOS/astra_os.py +++ b/AstraOS/astra_os.py @@ -263,7 +263,7 @@ def login(): session['user_id'] = str(user['_id']) session['username'] = user['username'] session['permissions'] = get_user_permissions(str(user['_id'])) - add_log("User Login") + add_log("Benutzer-Login") # Prüfen, ob Discord verknüpft ist if not user.get('discord_id'): @@ -401,7 +401,7 @@ def dashboard(): @app.route('/logout') @login_required def logout(): - add_log("User Logout") + add_log("Benutzer-Logout") session.clear() flash("Sie wurden erfolgreich abgemeldet.", "info") return redirect(url_for('login')) @@ -460,7 +460,7 @@ def add_user(): 'discord_username': None, 'discord_avatar': None }) - add_log("User Created", f"Username: {username}") + add_log("Benutzer erstellt", f"Benutzername: {username}") if dashboard_collection is not None: dashboard_collection.update_one( {"key": "last_user_created"}, @@ -505,7 +505,7 @@ def edit_user(user_id): {'_id': ObjectId(user_id)}, {'$set': update_data} ) - add_log("User Edited", f"Username: {username}") + add_log("Benutzer bearbeitet", f"Benutzername: {username}") flash(f"Benutzer '{username}' wurde erfolgreich aktualisiert.", "success") return redirect(url_for('user_management')) @app.route('/delete_user/', methods=['POST']) @@ -520,7 +520,7 @@ def delete_user(user_id): return redirect(url_for('user_management')) user = accounts_collection.find_one({'_id': ObjectId(user_id)}) accounts_collection.delete_one({'_id': ObjectId(user_id)}) - add_log("User Deleted", f"Username: {user.get('username', 'N/A')}") + add_log("Benutzer gelöscht", f"Benutzername: {user.get('username', 'N/A')}") flash("Benutzer wurde erfolgreich gelöscht.", "success") return redirect(url_for('user_management')) @@ -553,7 +553,7 @@ def update_password(): hashed_password = generate_password_hash(new_password) accounts_collection.update_one({'_id': ObjectId(user_id)}, {'$set': {'password': hashed_password}}) - add_log("Password Changed") + add_log("Passwort geändert") flash("Dein Passwort wurde erfolgreich geändert.", "success") return redirect(url_for('settings')) @@ -565,7 +565,7 @@ def unlink_discord(): {'_id': ObjectId(user_id)}, {'$set': {'discord_id': None, 'discord_username': None, 'discord_avatar': None}} ) - add_log("Discord Unlinked") + add_log("Discord-Verknüpfung aufgehoben") flash("Deine Discord-Verknüpfung wurde entfernt. Bitte verknüpfe dein Konto erneut.", "info") return redirect(url_for('link_discord')) @@ -640,7 +640,7 @@ def callback_discord(): 'discord_avatar': discord_avatar }} ) - add_log("Discord Linked") + add_log("Discord verknüpft") flash("Discord-Account erfolgreich verknüpft!", "success") return redirect(url_for('dashboard')) @@ -652,7 +652,7 @@ def callback_discord(): session['user_id'] = str(user['_id']) session['username'] = user['username'] session['permissions'] = get_user_permissions(str(user['_id'])) - add_log("User Login via Discord") + add_log("Benutzer-Login via Discord") flash("Erfolgreich mit Discord angemeldet!", "success") return redirect(url_for('dashboard')) else: @@ -687,7 +687,7 @@ def add_role(): "permissions": permissions, "is_deletable": True }) - add_log("Role Created", f"Role: {role_name}") + add_log("Rolle erstellt", f"Rolle: {role_name}") flash(f"Rolle '{role_name}' wurde erstellt.", "success") return redirect(url_for('role_management')) @app.route('/edit_role/', methods=['POST']) @@ -703,7 +703,7 @@ def edit_role(role_id): {'_id': ObjectId(role_id)}, {'$set': {'name': role_name, 'permissions': permissions}} ) - add_log("Role Edited", f"Role: {role_name}") + add_log("Rolle bearbeitet", f"Rolle: {role_name}") flash(f"Rolle '{role_name}' wurde aktualisiert.", "success") return redirect(url_for('role_management')) @app.route('/delete_role/', methods=['POST']) @@ -715,12 +715,17 @@ def delete_role(role_id): flash("Diese Rolle kann nicht gelöscht werden.", "danger") return redirect(url_for('role_management')) roles_collection.delete_one({'_id': ObjectId(role_id)}) - add_log("Role Deleted", f"Role: {role.get('name', 'N/A')}") + add_log("Rolle gelöscht", f"Rolle: {role.get('name', 'N/A')}") flash("Rolle wurde gelöscht.", "success") return redirect(url_for('role_management')) def calculate_current_age(birthdate_str): - birthdate_dt = datetime.strptime(birthdate_str, '%Y-%m-%d') + try: + # Versuche zuerst das DD.MM.YYYY Format + birthdate_dt = datetime.strptime(birthdate_str, '%d.%m.%Y') + except ValueError: + # Wenn das fehlschlägt, versuche das YYYY-MM-DD Format (für alte Einträge) + birthdate_dt = datetime.strptime(birthdate_str, '%Y-%m-%d') today = datetime.today() return today.year - birthdate_dt.year - ((today.month, today.day) < (birthdate_dt.month, birthdate_dt.day)) @@ -737,29 +742,32 @@ def age_verification(): ingame_name = request.form.get('ingame_name') if birthdate_str and steam_id and ingame_name: - birthdate_dt = datetime.strptime(birthdate_str, '%Y-%m-%d') - today = datetime.today() - age = today.year - birthdate_dt.year - ((today.month, today.day) < (birthdate_dt.month, birthdate_dt.day)) + try: + birthdate_dt = datetime.strptime(birthdate_str, '%d.%m.%Y') + today = datetime.today() + age = today.year - birthdate_dt.year - ((today.month, today.day) < (birthdate_dt.month, birthdate_dt.day)) - user_data = { - 'birthdate': birthdate_str, - 'steam_id': steam_id, - 'ingame_name': ingame_name, - 'age': age, - 'checked_by': session.get('username'), - 'timestamp': datetime.utcnow() - } - age_verification_collection.insert_one(user_data) + user_data = { + 'birthdate': birthdate_str, + 'steam_id': steam_id, + 'ingame_name': ingame_name, + 'age': age, + 'checked_by': session.get('username'), + 'timestamp': datetime.utcnow() + } + age_verification_collection.insert_one(user_data) - result = {'age': age, 'steam_id': steam_id} - if age < 13: - thirteenth_birthday = birthdate_dt.replace(year=birthdate_dt.year + 13) - ban_duration_days = (thirteenth_birthday - today).days + 1 - result['ban_duration_days'] = ban_duration_days - result['ban_command'] = f"oban {steam_id} {ban_duration_days}d" + result = {'age': age, 'steam_id': steam_id} + if age < 13: + thirteenth_birthday = birthdate_dt.replace(year=birthdate_dt.year + 13) + ban_duration_days = (thirteenth_birthday - today).days + 1 + result['ban_duration_days'] = ban_duration_days + result['ban_command'] = f"oban {steam_id} {ban_duration_days}d" - add_log("Age Verification Added", f"Ingame Name: {ingame_name}, SteamID: {steam_id}") - flash("Altersüberprüfung erfolgreich durchgeführt und gespeichert.", "success") + add_log("Altersüberprüfung hinzugefügt", f"Ingame Name: {ingame_name}, SteamID: {steam_id}") + flash("Altersüberprüfung erfolgreich durchgeführt und gespeichert.", "success") + except ValueError: + flash("Ungültiges Datumsformat. Bitte DD.MM.YYYY verwenden.", "danger") if search_query: users = list(age_verification_collection.find({ @@ -793,7 +801,10 @@ def view_user_age_details(user_id): result = None if user.get('age') < 13: today = datetime.today() - birthdate_dt = datetime.strptime(user['birthdate'], '%Y-%m-%d') + try: + birthdate_dt = datetime.strptime(user['birthdate'], '%d.%m.%Y') + except ValueError: + birthdate_dt = datetime.strptime(user['birthdate'], '%Y-%m-%d') thirteenth_birthday = birthdate_dt.replace(year=birthdate_dt.year + 13) ban_duration_days = (thirteenth_birthday - today).days + 1 if ban_duration_days > 0: @@ -828,7 +839,7 @@ def delete_age_verification(user_id): return redirect(url_for('view_user_age_details', user_id=user_id)) age_verification_collection.delete_one({'_id': ObjectId(user_id)}) - add_log("Age Verification Deleted", f"Ingame Name: {entry.get('ingame_name', 'N/A')}, SteamID: {entry.get('steam_id', 'N/A')}") + add_log("Altersüberprüfung gelöscht", f"Ingame Name: {entry.get('ingame_name', 'N/A')}, SteamID: {entry.get('steam_id', 'N/A')}") flash("Eintrag zur Altersüberprüfung wurde gelöscht.", "success") return redirect(url_for('age_verification')) @app.route('/ip_analyzer', methods=['GET', 'POST']) @@ -870,7 +881,7 @@ def ip_analyzer(): "added_by": session["username"], "timestamp": datetime.utcnow() }) - add_log("IP Analyzed", f"IP: {ip_address}") + add_log("IP analysiert", f"IP: {ip_address}") flash("IP-Adresse erfolgreich analysiert und gespeichert.", "success") else: error = f"Fehler bei der API-Anfrage: Status {response.status_code}" @@ -959,7 +970,7 @@ def upload_bot(): 'created_at': datetime.utcnow(), 'status': 'stopped' }) - add_log("Bot Uploaded", f"Bot Name: {bot_name}") + add_log("Bot hochgeladen", f"Bot Name: {bot_name}") flash(f"Bot '{bot_name}' wurde erfolgreich hochgeladen.", "success") return redirect(url_for('discord_bots')) @app.route('/delete_bot/', methods=['POST']) @@ -986,7 +997,7 @@ def delete_bot(bot_id): except Exception as e: flash(f"Fehler beim Löschen der Bot-Datei: {e}", "danger") discord_bots_collection.delete_one({'_id': ObjectId(bot_id)}) - add_log("Bot Deleted", f"Bot Name: {bot_info.get('name', 'N/A')}") + add_log("Bot gelöscht", f"Bot Name: {bot_info.get('name', 'N/A')}") flash(f"Bot '{bot_info['name']}' wurde erfolgreich gelöscht.", "success") return redirect(url_for('discord_bots')) @app.route('/bot_console/') @@ -1042,7 +1053,7 @@ def handle_toggle_bot(data): thread.daemon = True thread.start() discord_bots_collection.update_one({'_id': ObjectId(bot_id)}, {'$set': {'status': 'running'}}) - add_log("Bot Started", f"Bot Name: {bot_info.get('name', 'N/A')}") + add_log("Bot gestartet", f"Bot Name: {bot_info.get('name', 'N/A')}") emit('status_update', {'bot_id': bot_id, 'status': 'running'}, room=bot_id) emit('console_output', {'type': 'system', 'data': f'--- Bot-Prozess gestartet (PID: {process.pid}) ---'}, room=bot_id) except Exception as e: @@ -1057,7 +1068,7 @@ def handle_toggle_bot(data): if bot_id in running_bots: del running_bots[bot_id] discord_bots_collection.update_one({'_id': ObjectId(bot_id)}, {'$set': {'status': 'stopped'}}) - add_log("Bot Stopped", f"Bot Name: {bot_info.get('name', 'N/A')}") + add_log("Bot gestoppt", f"Bot Name: {bot_info.get('name', 'N/A')}") emit('status_update', {'bot_id': bot_id, 'status': 'stopped'}, room=bot_id) emit('console_output', {'type': 'system', 'data': '--- Bot-Prozess wird gestoppt... ---'}, room=bot_id) @app.route('/maintenance') @@ -1133,7 +1144,7 @@ def update_maintenance(): {"$set": update_data}, upsert=True ) - add_log("Maintenance Settings Updated", f"Enabled: {is_enabled}, Message: {status_message}") + add_log("Wartungseinstellungen aktualisiert", f"Aktiviert: {is_enabled}, Nachricht: {status_message}") flash("Wartungseinstellungen wurden aktualisiert.", "success") return redirect(url_for('maintenance_management')) if __name__ == '__main__':