74 lines
2.5 KiB
PHP
74 lines
2.5 KiB
PHP
<?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());
|
||
}
|