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:
@@ -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';
|
||||
|
||||
Reference in New Issue
Block a user