Initial commit: Modular Deploymentcenter platform

This commit is contained in:
Deploymentcenter Bot
2026-08-05 21:23:24 +02:00
commit 3a38fd4837
27 changed files with 2323 additions and 0 deletions
+89
View File
@@ -0,0 +1,89 @@
<?php
declare(strict_types=1);
error_reporting(E_ALL);
ini_set('display_errors', '1');
header('Content-Type: application/json; charset=utf-8');
try {
$config = require __DIR__ . '/../config/config.php';
$dbCfg = $config['db'];
$dsn = sprintf('mysql:host=%s;dbname=%s;charset=%s', $dbCfg['host'], $dbCfg['dbname'], $dbCfg['charset']);
$pdo = new PDO($dsn, $dbCfg['username'], $dbCfg['password'], [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]);
$sqlFile = __DIR__ . '/../sql/schema.sql';
if (!file_exists($sqlFile)) {
echo json_encode(['status' => 'error', 'message' => 'schema.sql file not found']);
exit;
}
$rawSql = file_get_contents($sqlFile);
// Remove comments
$lines = explode("\n", $rawSql);
$cleanLines = [];
foreach ($lines as $line) {
$trimmed = trim($line);
if (str_starts_with($trimmed, '--') || str_starts_with($trimmed, '#')) {
continue;
}
$cleanLines[] = $line;
}
$cleanSql = implode("\n", $cleanLines);
// Split queries by semicolon
$queries = array_filter(array_map('trim', explode(';', $cleanSql)));
$executed = 0;
foreach ($queries as $q) {
if (!empty($q)) {
$pdo->exec($q);
$executed++;
}
}
// Create / update Admin user: admin / Admin1337!
$adminUsername = 'admin';
$adminPassword = 'Admin1337!';
$passwordHash = password_hash($adminPassword, PASSWORD_ARGON2ID);
$stmt = $pdo->prepare('
INSERT INTO dc_users (username, password_hash, created_at)
VALUES (:u, :p, NOW())
ON DUPLICATE KEY UPDATE password_hash = VALUES(password_hash)
');
$stmt->execute([':u' => $adminUsername, ':p' => $passwordHash]);
// Seed default endpoints setting in dc_settings
$endpoints = json_encode([
'validate' => '/api/license/v1/validate',
'deactivate' => '/api/license/v1/deactivate',
]);
$stmtSet = $pdo->prepare('INSERT INTO dc_settings (skey, svalue) VALUES ("endpoints", :v) ON DUPLICATE KEY UPDATE svalue = VALUES(svalue)');
$stmtSet->execute([':v' => $endpoints]);
// Query created tables to verify
$tables = $pdo->query('SHOW TABLES')->fetchAll(PDO::FETCH_COLUMN);
echo json_encode([
'status' => 'success',
'message' => "Successfully executed {$executed} SQL statements!",
'created_user' => 'admin',
'tables_in_db' => $tables,
'timestamp' => date('Y-m-d H:i:s')
], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
} catch (Throwable $t) {
http_response_code(500);
echo json_encode([
'status' => 'error',
'message' => $t->getMessage(),
'file' => $t->getFile(),
'line' => $t->getLine()
], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
}