Files
scripts-bash/servers/linux/monitoring/bin/monitoring-update-config.php
T
cedricAbonnel a646c2f4be refactor: conformité conventions Linux FHS/XDG
- man pages déplacées dans local/share/man/man1/ (man cherche dans man<section>/)
- docs déplacées dans local/share/doc/scripts-bash/ (un sous-dossier par package)
- old-bin/ supprimé (fichiers obsolètes → historique git)
- .config/prep.sh parasite supprimé
- 'liste des scripts.base' renommé en 'liste-des-scripts.base' (pas d'espace)
- prep.sh et install.sh mis à jour pour les nouveaux chemins
2026-04-30 09:02:00 +02:00

89 lines
2.7 KiB
PHP
Executable File

#!/usr/bin/env php
<?php
/**
* Nettoyeur de surcharge de configuration PHP
* Supprime les entrées locales identiques aux originales.
* Copyright (C) 2026 Cédric Abonnel
*/
if (posix_getuid() !== 0) {
fwrite(STDERR, "Ce script doit être exécuté en root.\n");
exit(1);
}
const CONF_DIR = '/opt/monitoring/conf';
/**
* Logique d'affichage
*/
function log_clean($level, $msg) {
$color = ['info' => '34', 'notice' => '32', 'warn' => '33', 'err' => '31'][$level] ?? '37';
echo sprintf("\e[%sm[%s]\e[0m %s\n", $color, strtoupper($level), $msg);
}
/**
* Nettoie un fichier local en comparant ses valeurs avec la base
*/
function clean_local_config($base_file, $local_file) {
// On inclut les fichiers pour récupérer les tableaux de config
$base_cfg = include $base_file;
$local_cfg = include $local_file;
if (!is_array($base_cfg) || !is_array($local_cfg)) {
return false;
}
$new_local_cfg = $local_cfg;
$removed_keys = [];
foreach ($local_cfg as $key => $value) {
// Si la clé existe en base ET que la valeur est strictement identique
if (array_key_exists($key, $base_cfg) && $base_cfg[$key] === $value) {
unset($new_local_cfg[$key]);
$removed_keys[] = $key;
}
}
if (empty($removed_keys)) {
log_clean('info', basename($local_file) . " est déjà optimisé.");
return true;
}
// Reconstruction du fichier PHP proprement
$content = "<?php\n/**\n * Configuration locale personnalisée\n * Généré par l'audit de nettoyage\n */\n\nreturn [\n";
foreach ($new_local_cfg as $key => $value) {
$val_export = var_export($value, true);
$content .= " '$key' => $val_export,\n";
}
$content .= "];\n";
if (file_put_contents($local_file, $content)) {
log_clean('notice', basename($local_file) . " nettoyé. Clés supprimées (identiques à la base) : " . implode(', ', $removed_keys));
return true;
}
return false;
}
// --- Main ---
log_clean('info', "Début de l'optimisation des configurations locales...");
$base_files = glob(CONF_DIR . '/*.php');
foreach ($base_files as $base_conf) {
// On ignore les fichiers .local.php et .conf.local.php
if (str_contains($base_conf, '.local.')) continue;
// Détermination du nom du fichier local correspondant
// Gère tes deux formats : monitoring.local.conf.php et alert-engine.conf.local.php
$local_conf = str_replace('.conf.php', '.conf.local.php', $base_conf);
if (!file_exists($local_conf)) {
$local_conf = str_replace('.php', '.local.php', $base_conf);
}
if (file_exists($local_conf)) {
clean_local_config($base_conf, $local_conf);
}
}
log_clean('info', "Optimisation terminée.");