diff --git a/backup_restore.php b/backup_restore.php new file mode 100644 index 0000000..85d2900 --- /dev/null +++ b/backup_restore.php @@ -0,0 +1,417 @@ + + + + + + Passwortschutz + + + + +
+

Passwortschutz

+ + +
+
+
+
+
+ +
+
+
+ + + +
+ + +'; + exit; // Die Ausführung hier stoppen, damit der Rest der Seite nicht angezeigt wird, bis das Passwort korrekt eingegeben wurde +} + +// Datenbankverbindung herstellen +include_once 'config/config.php'; +include_once 'log.php'; // Logdatei einbinden + +// Backup durchführen und direkt verschlüsseln +if (isset($_POST['backup'])) { + $timestamp = date('Y-m-d_H-i-s'); // Eindeutiger Zeitstempel für die Dateinamen + $backup_file = "backup/backup_$timestamp.sql"; // Backup-Datei im "backup/"-Ordner speichern + $command = "mysqldump -u $username -p$password $database > $backup_file"; + exec($command); + + // Backup erfolgreich erstellt + if (file_exists($backup_file)) { + // Backup-Datei verschlüsseln + $encryption_key = "2Tj&wuWCUeMrSD%tWS%2fv&vDQdFTeUQ"; // Geheimen Schlüssel für die Verschlüsselung + $input_file = $backup_file; // Backup-Datei, die verschlüsselt werden soll + $output_file = "backup/encrypted_backup_$timestamp.txt"; // Verschlüsselte Ausgabedatei + + // Verschlüsselungsalgorithmus und Modus (z.B. AES-256-CBC) + $encryption_algorithm = 'aes-256-cbc'; + + // Initialisierungsvektor für die Verschlüsselung (zufällig generieren oder festlegen) + $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($encryption_algorithm)); + + // Verschlüsselung durchführen + if ($encrypted_data = openssl_encrypt(file_get_contents($input_file), $encryption_algorithm, $encryption_key, 0, $iv)) { + // Initialisierungsvektor (IV) der verschlüsselten Datei hinzufügen + $encrypted_data_with_iv = $iv . $encrypted_data; + + // Verschlüsselte Daten in Ausgabedatei schreiben + file_put_contents($output_file, $encrypted_data_with_iv); + + // Erfolgreiche Meldung mit Download-Link anzeigen + $download_button = "Download Backup"; + echo ""; + + // Ereignis protokollieren + logEvent('Backup erstellt und verschlüsselt', 'Backup', "Backup-Datei: $backup_file"); + } else { + echo "Fehler beim Erstellen und Verschlüsseln des Backups."; + } + } else { + echo "Fehler beim Erstellen des Backups."; + } +} + +// Wiederherstellung durchführen +if (isset($_POST['restore'])) { + if (isset($_FILES['restore_file'])) { + $restore_file = $_FILES['restore_file']['tmp_name']; + + // Backup-Datei entschlüsseln, bevor die Wiederherstellung durchgeführt wird + $encryption_key = "2Tj&wuWCUeMrSD%tWS%2fv&vDQdFTeUQ"; // Geheimer Schlüssel für die Verschlüsselung + $encryption_algorithm = 'aes-256-cbc'; + $iv_size = openssl_cipher_iv_length($encryption_algorithm); + $encrypted_data_with_iv = file_get_contents($restore_file); + $iv = substr($encrypted_data_with_iv, 0, $iv_size); + $encrypted_data = substr($encrypted_data_with_iv, $iv_size); + $restored_data = openssl_decrypt($encrypted_data, $encryption_algorithm, $encryption_key, 0, $iv); + + // Temporäre Datei für die Wiederherstellung erstellen + $temp_restore_file = 'temp_restore.sql'; + file_put_contents($temp_restore_file, $restored_data); + + // Wiederherstellung durchführen + $command = "mysql -u $username -p$password $database < $temp_restore_file"; + exec($command); + echo ""; + + // Ereignis protokollieren + logEvent('Wiederherstellung durchgeführt', 'Wiederherstellung', "Wiederhergestellte Datei: $restore_file"); + + // Temporäre Datei löschen + unlink($temp_restore_file); + } else { + echo "Datei für die Wiederherstellung nicht hochgeladen."; + } +} + +// Wiederherstellung aus ausgewähltem Backup durchführen +if (isset($_POST['restore_from_selected'])) { + $selected_backup = $_POST['selected_backup']; + + // Wiederherstellung durchführen + $command = "mysql -u $username -p$password $database < $selected_backup"; + exec($command); + echo ""; + + // Ereignis protokollieren + logEvent('Wiederherstellung ausgewähltes Backup durchgeführt', 'Wiederherstellung', "Ausgewählte Backup-Datei: $selected_backup"); +} + +// Liste der letzten 10 Backups generieren +$backup_files = glob('backup/encrypted_backup_*.txt'); // Nur nach verschlüsselten Backups suchen +$backup_files = array_slice($backup_files, -10); // Die letzten 10 Backups auswählen + +?> + + + + + + + + Backup und Wiederherstellung + + + +
+
+

Materialverwaltung

+ +
+
+ +
+

Backup und Wiederherstellung

+ +

Backup erstellen

+
+ +
+ + + +

Wiederherstellung durchführen

+
+ + +
+ + +

Letzte 10 verschlüsselte Backups

+ + +
+ +