First version, for githup; UNSTABLE, DO NOT USE!
This commit is contained in:
74
setup/database/generate-sql.php
Normal file
74
setup/database/generate-sql.php
Normal file
@@ -0,0 +1,74 @@
|
||||
<?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";
|
||||
Reference in New Issue
Block a user