ajout de setup_server_debian.sh
This commit is contained in:
164
local/bin/ytdll
Executable file
164
local/bin/ytdll
Executable file
@@ -0,0 +1,164 @@
|
||||
#!/usr/bin/env php
|
||||
|
||||
<?php
|
||||
|
||||
// Auteur : Cédrix pour a5l.fr
|
||||
// Projet : scripts-bash/ytdll
|
||||
|
||||
// Télécharger les pistes audios ajoutées récemment
|
||||
// depuis des chaines Youtubes
|
||||
|
||||
// Version 2024.07.07-14.31
|
||||
// Version initiale
|
||||
|
||||
/*
|
||||
Création de la base de données
|
||||
Linux Debian 12 / PostGres 16
|
||||
|
||||
Suivez les instructions suivantes pour créer
|
||||
votre base de données et tous les éléments
|
||||
associés.
|
||||
|
||||
-- Connectez-vous en tant qu'utilisateur ayant des privilèges suffisants
|
||||
-- depuis le compte root
|
||||
sudo su - postgres
|
||||
|
||||
-- Modification du fichier pg_hba
|
||||
nano /etc/postgresql/16/main/ph_hba.conf
|
||||
-- modifier la ligne
|
||||
local all all peer
|
||||
-- avec la valeur suivante
|
||||
local all all trust
|
||||
|
||||
-- avec le compte root redémarrez postgres
|
||||
systemctl restart postgresql
|
||||
|
||||
-- Connectez-vous en tant qu'utilisateur ayant des privilèges suffisants
|
||||
-- depuis le compte root
|
||||
sudo su - postgres
|
||||
|
||||
-- Connection au requeteur
|
||||
psql
|
||||
|
||||
-- Créer un nouveau role
|
||||
CREATE ROLE r_ytdll WITH LOGIN PASSWORD 'changeme';
|
||||
|
||||
-- Créer la base de données
|
||||
CREATE DATABASE b_ytdll OWNER r_ytdll;
|
||||
|
||||
-- Connectez-vous à la base de données b_ytdll :
|
||||
\c b_ytdll
|
||||
|
||||
-- Créez un nouveau schéma
|
||||
CREATE SCHEMA s_ytdll AUTHORIZATION r_ytdll;
|
||||
|
||||
|
||||
-- Accorder tous les privilèges sur le schéma à l'utilisateur
|
||||
GRANT ALL PRIVILEGES ON SCHEMA s_ytdll TO r_ytdll;
|
||||
|
||||
-- Accorder des privilèges sur les tables et séquences existantes et futures
|
||||
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA s_ytdll TO r_ytdll;
|
||||
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA s_ytdll TO r_ytdll;
|
||||
ALTER DEFAULT PRIVILEGES IN SCHEMA s_ytdll GRANT ALL PRIVILEGES ON TABLES TO r_ytdll;
|
||||
ALTER DEFAULT PRIVILEGES IN SCHEMA s_ytdll GRANT ALL PRIVILEGES ON SEQUENCES TO r_ytdll;
|
||||
|
||||
-- Schéma s_ytdll par défaut
|
||||
SET search_path TO s_ytdll;
|
||||
\d
|
||||
ALTER ROLE r_ytdll SET search_path TO s_ytdll;
|
||||
ALTER DATABASE b_ytdll SET search_path TO s_ytdll;
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
// -- GESTION DES PRE REQUIS --
|
||||
// Vérifier si l'extension pgsql est chargée
|
||||
if (!extension_loaded('pgsql')) {
|
||||
die("L'extension PHP 'pgsql' n'est pas installée. Veuillez l'installer avant de continuer.\n");
|
||||
}
|
||||
|
||||
// Chemin du HOME
|
||||
$homeDir = getenv('HOME');
|
||||
|
||||
// Configuration de l'autoloader
|
||||
spl_autoload_register(function ($class) use ($homeDir) {
|
||||
$baseDir = $homeDir . '/.local/share/ytdll/lib/';
|
||||
$file = $baseDir . str_replace('\\', '/', $class) . '.php';
|
||||
|
||||
if (file_exists($file)) {
|
||||
require $file;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// -- GESTION DE LA CONFIGURATION PRIMAIRE --
|
||||
|
||||
function getUserInput($prompt) {
|
||||
echo $prompt;
|
||||
return trim(fgets(STDIN));
|
||||
}
|
||||
|
||||
function createConfigFile($configPath, $templatePath) {
|
||||
// Vérifie si le fichier de configuration existe
|
||||
if (!file_exists($configPath)) {
|
||||
// Copie le fichier de modèle
|
||||
if (!copy($templatePath, $configPath)) {
|
||||
die("Échec de la copie du fichier de configuration modèle.\n");
|
||||
}
|
||||
|
||||
|
||||
// Demande à l'utilisateur de saisir les valeurs nécessaires
|
||||
$databaseHost = getUserInput("Veuillez saisir le host de la base de données : ");
|
||||
$databaseName = getUserInput("Veuillez saisir le nom de la base de données : ");
|
||||
$databaseUser = getUserInput("Veuillez saisir l'utilisateur de la base de données : ");
|
||||
$databasePassword = getUserInput("Veuillez saisir le mot de passe de la base de données : ");
|
||||
|
||||
// Lit le fichier de modèle
|
||||
$configContent = file_get_contents($configPath);
|
||||
|
||||
// Remplace les valeurs par défaut par les valeurs saisies par l'utilisateur
|
||||
$configArray = [
|
||||
'database' => [
|
||||
'host' => $databaseHost,
|
||||
'dbname' => $databaseName,
|
||||
'user' => $databaseUser,
|
||||
'password' => $databasePassword
|
||||
]
|
||||
];
|
||||
|
||||
// Encode en JSON
|
||||
$jsonConfig = json_encode($configArray, JSON_PRETTY_PRINT);
|
||||
|
||||
// Écrit le fichier de configuration JSON
|
||||
file_put_contents($configPath, $jsonConfig);
|
||||
|
||||
echo "Le fichier de configuration a été créé avec succès.\n";
|
||||
}
|
||||
}
|
||||
|
||||
// Appel de la fonction pour créer le fichier de configuration
|
||||
$configPath = $homeDir . '/.config/fr.a5l.ytdll.json';
|
||||
$templatePath = $homeDir . '/.local/share/ytdll/config.php';
|
||||
createConfigFile($configPath, $templatePath);
|
||||
|
||||
|
||||
|
||||
|
||||
// -- DEBUT --
|
||||
// Lit le fichier de configuration primaire
|
||||
$configContent = file_get_contents($configPath);
|
||||
// Décode le JSON en tableau associatif
|
||||
$config = json_decode($configContent, true);
|
||||
// Initialiser la connexion à la base de données
|
||||
$database = new Database($config['database']);
|
||||
unset($config);
|
||||
// Initialiser au gestionnaire de configuration
|
||||
$configManager = new Config($database);
|
||||
|
||||
|
||||
|
||||
// -- GESTION DES VERSIONS de TABLE --
|
||||
$updateManager = new UpdateManager($configManager, $pdo);
|
||||
$updateManager->manageVersionTables();
|
||||
Reference in New Issue
Block a user