v1.7.6: Tableau SystemD Services - ajout des 3 services manquants

Ajout dans le tableau admin et dans les listes allowed restart/toggle:
- rtc_save_to_db.service
- nebuleair-wifi-powersave.timer
- nebuleair-cpu-power.service

Aussi: nebuleair-noise-data.timer etait dans get_systemd_services
mais absent des listes restart/toggle (les boutons n'auraient pas
fonctionne). Corrige.

Nouveau: support d'un display_name explicite par service (override
optionnel) pour les noms qui ne suivent pas la convention
'nebuleair-*-data.timer'.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
PaulVua
2026-05-12 17:42:58 +02:00
parent b87b054e2b
commit d34b029d48
3 changed files with 60 additions and 17 deletions

View File

@@ -1476,6 +1476,7 @@ if ($type == "execute_command") {
if ($type == "get_systemd_services") {
try {
// List of NebuleAir services to monitor with descriptions and frequencies
// Optional 'display_name' overrides the auto-generated cleaned-up name.
$services = [
'nebuleair-npm-data.timer' => [
'description' => 'Collects particulate matter data from NextPM sensor',
@@ -1508,26 +1509,45 @@ if ($type == "get_systemd_services") {
'nebuleair-db-cleanup-data.timer' => [
'description' => 'Cleans up old data from database',
'frequency' => 'Daily'
],
'nebuleair-wifi-powersave.timer' => [
'display_name' => 'Wifi powersave',
'description' => 'Enables WiFi power-saving mode to reduce battery consumption',
'frequency' => '10 min after boot'
],
'nebuleair-cpu-power.service' => [
'display_name' => 'Cpu power',
'description' => 'Applies CPU power mode from DB config at boot',
'frequency' => 'At boot'
],
'rtc_save_to_db.service' => [
'display_name' => 'Rtc save to db',
'description' => 'Reads DS3231 RTC over I2C and saves timestamp to DB',
'frequency' => 'Continuous (1Hz)'
]
];
$serviceStatus = [];
foreach ($services as $service => $serviceInfo) {
// Get service active status
$activeCmd = "systemctl is-active " . escapeshellarg($service) . " 2>/dev/null";
$activeStatus = trim(shell_exec($activeCmd));
$isActive = ($activeStatus === 'active');
// Get service enabled status
$enabledCmd = "systemctl is-enabled " . escapeshellarg($service) . " 2>/dev/null";
$enabledStatus = trim(shell_exec($enabledCmd));
$isEnabled = ($enabledStatus === 'enabled');
// Clean up service name for display
$displayName = str_replace(['.timer', 'nebuleair-', '-data'], '', $service);
$displayName = ucfirst(str_replace('-', ' ', $displayName));
// Display name: explicit override if provided, otherwise auto-cleanup
if (isset($serviceInfo['display_name'])) {
$displayName = $serviceInfo['display_name'];
} else {
$displayName = str_replace(['.timer', '.service', 'nebuleair-', '-data'], '', $service);
$displayName = ucfirst(str_replace('-', ' ', $displayName));
}
$serviceStatus[] = [
'name' => $service,
'display_name' => $displayName,
@@ -1566,14 +1586,18 @@ if ($type == "restart_systemd_service") {
// Validate service name (security check)
$allowedServices = [
'nebuleair-npm-data.timer',
'nebuleair-envea-data.timer',
'nebuleair-envea-data.timer',
'nebuleair-sara-data.timer',
'nebuleair-bme280-data.timer',
'nebuleair-mppt-data.timer',
'nebuleair-noise-data.timer',
'nebuleair-mhz19-data.timer',
'nebuleair-db-cleanup-data.timer'
'nebuleair-db-cleanup-data.timer',
'nebuleair-wifi-powersave.timer',
'nebuleair-cpu-power.service',
'rtc_save_to_db.service'
];
if (!in_array($service, $allowedServices)) {
echo json_encode([
'success' => false,
@@ -1581,7 +1605,7 @@ if ($type == "restart_systemd_service") {
]);
exit;
}
try {
// Restart the service
$command = "sudo systemctl restart " . escapeshellarg($service) . " 2>&1";
@@ -1627,14 +1651,18 @@ if ($type == "toggle_systemd_service") {
// Validate service name (security check)
$allowedServices = [
'nebuleair-npm-data.timer',
'nebuleair-envea-data.timer',
'nebuleair-envea-data.timer',
'nebuleair-sara-data.timer',
'nebuleair-bme280-data.timer',
'nebuleair-mppt-data.timer',
'nebuleair-noise-data.timer',
'nebuleair-mhz19-data.timer',
'nebuleair-db-cleanup-data.timer'
'nebuleair-db-cleanup-data.timer',
'nebuleair-wifi-powersave.timer',
'nebuleair-cpu-power.service',
'rtc_save_to_db.service'
];
if (!in_array($service, $allowedServices)) {
echo json_encode([
'success' => false,
@@ -1642,7 +1670,7 @@ if ($type == "toggle_systemd_service") {
]);
exit;
}
try {
$enable = filter_var($enable, FILTER_VALIDATE_BOOLEAN);
$action = $enable ? 'enable' : 'disable';