Files
S3-to-Web/install.php
T
2026-05-24 04:17:53 +03:00

74 lines
2.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
$db_file = __DIR__ . '/datas.db';
// Если БД уже существует — блокируем установку
if (file_exists($db_file)) {
http_response_code(403);
die("403 Forbidden: База данных уже существует. Удалите install.php.");
}
// Если форма не отправлена — показываем ввод
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
?>
<h1>Установка системы</h1>
<form method="post">
<label>Логин администратора:</label><br>
<input type="text" name="username" required><br><br>
<label>Пароль администратора:</label><br>
<input type="password" name="password" required><br><br>
<button type="submit">Установить</button>
</form>
<?php
exit;
}
$username = trim($_POST['username'] ?? '');
$password = $_POST['password'] ?? '';
if ($username === '' || $password === '') {
die("Ошибка: логин и пароль не могут быть пустыми.");
}
try {
$db = new PDO('sqlite:' . $db_file);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Таблица администратора UI
$db->exec("CREATE TABLE admin (
id INTEGER PRIMARY KEY,
username TEXT,
password TEXT
)");
// Таблица подключений S3 / WebDAV
$db->exec("CREATE TABLE s3_mounts (
id INTEGER PRIMARY KEY,
dav_user TEXT UNIQUE,
dav_pass TEXT,
s3_key TEXT,
s3_secret TEXT,
s3_region TEXT,
s3_endpoint TEXT,
s3_bucket TEXT
)");
// Хешируем введённый пароль
$hash = password_hash($password, PASSWORD_DEFAULT);
$stmt = $db->prepare("INSERT INTO admin (username, password) VALUES (:username, :password)");
$stmt->execute([
':username' => $username,
':password' => $hash
]);
echo "<h1>Установка завершена!</h1>";
echo "<p>Создан файл datas.db.</p>";
echo "<p><b>Логин:</b> " . htmlspecialchars($username) . "</p>";
echo "<p style='color:red;'>В целях безопасности удалите файл install.php!</p>";
echo "<a href='index.php'>Перейти в панель управления</a>";
} catch (Exception $e) {
die("Ошибка БД: " . $e->getMessage());
}