Backups können gelöscht werden
Dieser Commit ist enthalten in:
@@ -3024,6 +3024,62 @@ def download_backup(backup_id):
|
||||
|
||||
return send_file(filepath, as_attachment=True, download_name=filename)
|
||||
|
||||
@app.route("/backup/delete/<int:backup_id>", methods=["DELETE"])
|
||||
@login_required
|
||||
def delete_backup(backup_id):
|
||||
"""Löscht ein Backup"""
|
||||
conn = get_connection()
|
||||
cur = conn.cursor()
|
||||
|
||||
try:
|
||||
# Backup-Informationen abrufen
|
||||
cur.execute("""
|
||||
SELECT filename, filepath
|
||||
FROM backup_history
|
||||
WHERE id = %s
|
||||
""", (backup_id,))
|
||||
backup_info = cur.fetchone()
|
||||
|
||||
if not backup_info:
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'message': 'Backup nicht gefunden'
|
||||
}), 404
|
||||
|
||||
filename, filepath = backup_info
|
||||
filepath = Path(filepath)
|
||||
|
||||
# Datei löschen, wenn sie existiert
|
||||
if filepath.exists():
|
||||
filepath.unlink()
|
||||
|
||||
# Aus Datenbank löschen
|
||||
cur.execute("""
|
||||
DELETE FROM backup_history
|
||||
WHERE id = %s
|
||||
""", (backup_id,))
|
||||
|
||||
conn.commit()
|
||||
|
||||
# Audit-Log
|
||||
log_audit('DELETE', 'backup', backup_id,
|
||||
additional_info=f"Backup gelöscht: {filename}")
|
||||
|
||||
return jsonify({
|
||||
'success': True,
|
||||
'message': f'Backup "{filename}" wurde erfolgreich gelöscht'
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
conn.rollback()
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'message': f'Fehler beim Löschen des Backups: {str(e)}'
|
||||
}), 500
|
||||
finally:
|
||||
cur.close()
|
||||
conn.close()
|
||||
|
||||
@app.route("/security/blocked-ips")
|
||||
@login_required
|
||||
def blocked_ips():
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren