74 lines
2.4 KiB
PHP
74 lines
2.4 KiB
PHP
<?php
|
|
|
|
// --- KONFIGURATION ---
|
|
$sqlFile = 'wkvs-database-template.sql';
|
|
$newSqlFile = 'sql-database.sql';
|
|
$envFile = __DIR__ . '/../../config/.env.db-tables';
|
|
$oldPrefix = 'prefix-placeholder_';
|
|
$hashPlaceholder = 'PW_HASH';
|
|
|
|
// --- LOGIK ---
|
|
|
|
// 1. Generieren eines neuen, zufälligen Prefixes
|
|
// Format: 8 zufällige Zeichen + "_" (oder wie Sie es mögen)
|
|
$newPrefix = bin2hex(random_bytes(6)) . '_';
|
|
|
|
echo "=== Prefix Update Prozess ===\n";
|
|
echo "Alter Prefix: $oldPrefix\n";
|
|
echo "Neuer Prefix: $newPrefix\n";
|
|
|
|
|
|
if (!file_exists($sqlFile) || !file_exists($envFile)) {
|
|
die("FEHLER: Die Dateien '$sqlFile' oder '$envFile' wurden nicht gefunden.\n");
|
|
}
|
|
|
|
// 3. SQL-Datei verarbeiten (Stream-basiert für Performance)
|
|
echo "Verarbeite SQL-Datei...\n";
|
|
$handleIn = fopen($sqlFile, 'r');
|
|
$handleOut = fopen($newSqlFile, 'w'); // Überschreiben der Originaldatei (oder neue Datei nutzen)
|
|
|
|
if (!$handleIn || !$handleOut) {
|
|
die("FEHLER: Konnte Dateien nicht öffnen.\n");
|
|
}
|
|
|
|
$randPw = bin2hex(random_bytes(12));
|
|
|
|
$pwHash = password_hash($randPw, PASSWORD_ARGON2ID);
|
|
|
|
$linesProcessed = 0;
|
|
while (($line = fgets($handleIn)) !== false) {
|
|
// Ersetze den alten Prefix im SQL-Content
|
|
$newLine = str_replace($oldPrefix, $newPrefix, $line);
|
|
$newLine = str_replace($hashPlaceholder, $newPrefix, $newLine);
|
|
fwrite($handleOut, $newLine);
|
|
$linesProcessed++;
|
|
}
|
|
|
|
fclose($handleIn);
|
|
fclose($handleOut);
|
|
echo "✓ SQL-Datei aktualisiert ($linesProcessed Zeilen bearbeitet).\n";
|
|
echo "\n ---> WK-Leitungs Benutzer hinzugefügt. Benutzername: admin Passwort: $randPw\n\n";
|
|
|
|
// 4. .env-Datei verarbeiten
|
|
echo "Aktualisiere .env-Datei...\n";
|
|
$envContent = file_get_contents($envFile);
|
|
|
|
// Wir ersetzen die Zeile DB_PREFIX=... durch DB_PREFIX=...
|
|
// Regex sucht nach "DB_PREFIX=" gefolgt von beliebigen Zeichen bis Zeilenende
|
|
$pattern = '/^DB_PREFIX=.*/m';
|
|
$replacement = "DB_PREFIX=$newPrefix";
|
|
|
|
$updatedEnv = preg_replace($pattern, $replacement, $envContent);
|
|
|
|
if ($updatedEnv === $envContent) {
|
|
// Falls die Zeile nicht gefunden wurde, hängen wir sie an
|
|
$updatedEnv .= "\nDB_PREFIX=$newPrefix";
|
|
echo "⚠️ Hinweis: DB_PREFIX war nicht in der .env, wurde angehängt.\n";
|
|
}
|
|
|
|
file_put_contents($envFile, $updatedEnv);
|
|
echo "✓ .env-Datei aktualisiert.\n";
|
|
|
|
// 5. Abschluss
|
|
echo "\n✅ Prozess erfolgreich abgeschlossen!\n";
|
|
echo "Bitte prüfen Sie Ihre Dateien und setzen Sie den neuen Prefix in Ihrer Konfiguration. Dateiname: $newSqlFile\n"; |