From 19856341be879f250522804419f3c71ad3609dd8 Mon Sep 17 00:00:00 2001 From: Thibault Debatty <t.debatty@cylab.be> Date: Sun, 6 Aug 2023 22:19:38 +0200 Subject: [PATCH] simplify sensor and abstractsensor --- app/AbstractSensor.php | 43 ----------------------------------- app/Sensor.php | 40 ++++++++++++++++++++++++++++---- app/Sensor/CPUtemperature.php | 4 +++- app/Sensor/ClientVersion.php | 4 +++- app/Sensor/Date.php | 3 ++- app/Sensor/DiskEvolution.php | 4 +++- app/Sensor/Disks.php | 4 +++- app/Sensor/Heartbeat.php | 4 +++- app/Sensor/Ifconfig.php | 4 ++-- app/Sensor/Inodes.php | 2 +- app/Sensor/ListeningPorts.php | 2 +- app/Sensor/LoadAvg.php | 4 ++-- app/Sensor/MemInfo.php | 4 ++-- app/Sensor/Netstat.php | 4 ++-- app/Sensor/Perccli.php | 2 +- app/Sensor/Reboot.php | 2 +- app/Sensor/Ssacli.php | 8 +------ app/Sensor/USBtemperature.php | 2 +- app/Sensor/Updates.php | 2 +- 19 files changed, 67 insertions(+), 75 deletions(-) delete mode 100644 app/AbstractSensor.php diff --git a/app/AbstractSensor.php b/app/AbstractSensor.php deleted file mode 100644 index db74caf..0000000 --- a/app/AbstractSensor.php +++ /dev/null @@ -1,43 +0,0 @@ -<?php - -namespace App; - -/** - * Description of AbstractSensor - * - * @author tibo - */ -abstract class AbstractSensor implements Sensor -{ - - private $server; - - public function __construct(?Server $server = null) - { - $this->server = $server; - } - - protected function server() : Server - { - return $this->server; - } - - public function name() : string - { - return (new \ReflectionClass($this))->getShortName(); - } - - public static function getColorForStatus(int $status) : string - { - switch ($status) { - case 0: - return 'success'; - case 10: - return 'warning'; - case 20: - return 'danger'; - default: - return 'secondary'; - } - } -} diff --git a/app/Sensor.php b/app/Sensor.php index 154cbaa..e60166e 100644 --- a/app/Sensor.php +++ b/app/Sensor.php @@ -2,14 +2,44 @@ namespace App; -interface Sensor +/** + * Base (abstract) class for sensors. + * + * @author tibo + */ +abstract class Sensor { - public function status(array $records) : int; - public function report(array $records) : string; + + private $server; + + public function __construct(?Server $server = null) + { + $this->server = $server; + } + + protected function server() : Server + { + return $this->server; + } /** - * Get the name of this sensor (e.g meminfo, cpuload, heartbeat) + * Get the name of the sensor. Can be overridden by sub-classes to provide + * a more meaningful name. + * * @return string */ - public function name() : string; + public function name() : string + { + return (new \ReflectionClass($this))->getShortName(); + } + + /** + * Compute the status code from an array of Record. + */ + abstract public function status(array $records) : int; + + /** + * Create the HTML report describing the result of this sensor's analysis. + */ + abstract public function report(array $records) : string; } diff --git a/app/Sensor/CPUtemperature.php b/app/Sensor/CPUtemperature.php index c615e81..d22b89c 100644 --- a/app/Sensor/CPUtemperature.php +++ b/app/Sensor/CPUtemperature.php @@ -2,12 +2,14 @@ namespace App\Sensor; +use \App\Sensor; + /** * Description of Update * * @author helha */ -class CPUtemperature extends \App\AbstractSensor +class CPUtemperature extends Sensor { const REGEXP = "/^(Core \d+):\s+\+(\d+\.\d+)/m"; diff --git a/app/Sensor/ClientVersion.php b/app/Sensor/ClientVersion.php index d860aa8..6b629d1 100644 --- a/app/Sensor/ClientVersion.php +++ b/app/Sensor/ClientVersion.php @@ -2,6 +2,8 @@ namespace App\Sensor; +use \App\Sensor; + use GuzzleHttp\Client; use GuzzleHttp\Exception\RequestException; @@ -10,7 +12,7 @@ use GuzzleHttp\Exception\RequestException; * * @author tibo */ -class ClientVersion extends \App\AbstractSensor +class ClientVersion extends Sensor { const MANIFEST = "https://download.cylab.be/monitor-php-client/manifest.json"; diff --git a/app/Sensor/Date.php b/app/Sensor/Date.php index ad6dbbf..bc78b4f 100644 --- a/app/Sensor/Date.php +++ b/app/Sensor/Date.php @@ -2,6 +2,7 @@ namespace App\Sensor; +use \App\Sensor; use App\Record; use App\Status; @@ -10,7 +11,7 @@ use App\Status; * * @author tibo */ -class Date extends \App\AbstractSensor +class Date extends Sensor { public function report(array $records) : string { diff --git a/app/Sensor/DiskEvolution.php b/app/Sensor/DiskEvolution.php index 0429065..28663a4 100644 --- a/app/Sensor/DiskEvolution.php +++ b/app/Sensor/DiskEvolution.php @@ -2,7 +2,9 @@ namespace App\Sensor; -class DiskEvolution extends \App\AbstractSensor +use \App\Sensor; + +class DiskEvolution extends Sensor { public function report(array $records) : string { diff --git a/app/Sensor/Disks.php b/app/Sensor/Disks.php index c812fcc..9030a9d 100644 --- a/app/Sensor/Disks.php +++ b/app/Sensor/Disks.php @@ -2,12 +2,14 @@ namespace App\Sensor; +use \App\Sensor; + /** * Description of Update * * @author tibo */ -class Disks extends \App\AbstractSensor +class Disks extends Sensor { const REGEXP = "/\\n([A-z\/0-9:\\-\\.]+)\s*([0-9]+)\s*([0-9]+)\s*([0-9]+)\s*([0-9]+)%\s*([A-z\/0-9]+)/"; diff --git a/app/Sensor/Heartbeat.php b/app/Sensor/Heartbeat.php index bfff411..bf25216 100644 --- a/app/Sensor/Heartbeat.php +++ b/app/Sensor/Heartbeat.php @@ -2,12 +2,14 @@ namespace App\Sensor; +use \App\Sensor; + /** * Description of Reboot * * @author tibo */ -class Heartbeat extends \App\AbstractSensor +class Heartbeat extends Sensor { //put your code here public function report(array $records) : string diff --git a/app/Sensor/Ifconfig.php b/app/Sensor/Ifconfig.php index 3f6266a..fc0ef92 100644 --- a/app/Sensor/Ifconfig.php +++ b/app/Sensor/Ifconfig.php @@ -2,7 +2,7 @@ namespace App\Sensor; -use \App\AbstractSensor; +use \App\Sensor; use \App\Record; /** @@ -10,7 +10,7 @@ use \App\Record; * * @author tibo */ -class Ifconfig extends AbstractSensor +class Ifconfig extends Sensor { public function report(array $records) : string diff --git a/app/Sensor/Inodes.php b/app/Sensor/Inodes.php index 250dc98..44e3017 100644 --- a/app/Sensor/Inodes.php +++ b/app/Sensor/Inodes.php @@ -7,7 +7,7 @@ namespace App\Sensor; * * @author tibo */ -class Inodes extends \App\AbstractSensor +class Inodes extends \App\Sensor { const REGEXP = "/\\n([A-z\/0-9:\\-\\.]+)\s*([0-9]+)\s*([0-9]+)\s*([0-9]+)\s*([0-9]+)%\s*([A-z\/0-9]+)/"; diff --git a/app/Sensor/ListeningPorts.php b/app/Sensor/ListeningPorts.php index 0ab1b88..ada94ec 100644 --- a/app/Sensor/ListeningPorts.php +++ b/app/Sensor/ListeningPorts.php @@ -7,7 +7,7 @@ namespace App\Sensor; * * @author tibo */ -class ListeningPorts extends \App\AbstractSensor +class ListeningPorts extends \App\Sensor { const REGEXP = "/(tcp6|tcp|udp6|udp)\s*\d\s*\d\s*(\S*):(\d*).*LISTEN\s*(\S*)/m"; diff --git a/app/Sensor/LoadAvg.php b/app/Sensor/LoadAvg.php index 78b6f15..17ca99a 100644 --- a/app/Sensor/LoadAvg.php +++ b/app/Sensor/LoadAvg.php @@ -2,7 +2,7 @@ namespace App\Sensor; -use \App\AbstractSensor; +use \App\Sensor; use \App\Status; /** @@ -10,7 +10,7 @@ use \App\Status; * * @author tibo */ -class LoadAvg extends AbstractSensor +class LoadAvg extends Sensor { /** diff --git a/app/Sensor/MemInfo.php b/app/Sensor/MemInfo.php index d64062e..5ea0f8e 100644 --- a/app/Sensor/MemInfo.php +++ b/app/Sensor/MemInfo.php @@ -2,14 +2,14 @@ namespace App\Sensor; -use \App\AbstractSensor; +use \App\Sensor; /** * Description of MemInfo * * @author tibo */ -class MemInfo extends AbstractSensor +class MemInfo extends Sensor { public function report(array $records) : string diff --git a/app/Sensor/Netstat.php b/app/Sensor/Netstat.php index a059dcd..9c7513b 100644 --- a/app/Sensor/Netstat.php +++ b/app/Sensor/Netstat.php @@ -2,14 +2,14 @@ namespace App\Sensor; -use \App\AbstractSensor; +use \App\Sensor; /** * Parse netstat * * @author tibo */ -class Netstat extends AbstractSensor +class Netstat extends Sensor { public function report(array $records) : string diff --git a/app/Sensor/Perccli.php b/app/Sensor/Perccli.php index 752ffe2..70a3bf1 100644 --- a/app/Sensor/Perccli.php +++ b/app/Sensor/Perccli.php @@ -7,7 +7,7 @@ namespace App\Sensor; * * @author tibo */ -class Perccli extends \App\AbstractSensor +class Perccli extends \App\Sensor { const REGEXP = "/(\d+:\d+)\s+\d+\s+(\w+)\s+\d+\s+(.*(GB|TB))\s+\w+\s+(\w+)/"; diff --git a/app/Sensor/Reboot.php b/app/Sensor/Reboot.php index 5b131fa..1053b32 100644 --- a/app/Sensor/Reboot.php +++ b/app/Sensor/Reboot.php @@ -7,7 +7,7 @@ namespace App\Sensor; * * @author tibo */ -class Reboot extends \App\AbstractSensor +class Reboot extends \App\Sensor { public function report(array $records) : string diff --git a/app/Sensor/Ssacli.php b/app/Sensor/Ssacli.php index 949c732..3c0ea91 100644 --- a/app/Sensor/Ssacli.php +++ b/app/Sensor/Ssacli.php @@ -1,11 +1,5 @@ <?php -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ - namespace App\Sensor; /** @@ -13,7 +7,7 @@ namespace App\Sensor; * * @author tibo */ -class Ssacli extends \App\AbstractSensor +class Ssacli extends \App\Sensor { const REGEXP = "/\s*physicaldrive .*\(port (.*):box (\d*):bay (\d*), (.*), (.*), (\w*)\)/"; diff --git a/app/Sensor/USBtemperature.php b/app/Sensor/USBtemperature.php index af00f86..acf6a2f 100644 --- a/app/Sensor/USBtemperature.php +++ b/app/Sensor/USBtemperature.php @@ -7,7 +7,7 @@ namespace App\Sensor; * * @author helha */ -class USBtemperature extends \App\AbstractSensor +class USBtemperature extends \App\Sensor { //get device responce (8 bytes) : const REGEXP = "/^(80 80)\s*([A-z\/0-9]+) \s*([A-z\/0-9]+)/m"; diff --git a/app/Sensor/Updates.php b/app/Sensor/Updates.php index 54b06d0..43ed148 100644 --- a/app/Sensor/Updates.php +++ b/app/Sensor/Updates.php @@ -7,7 +7,7 @@ namespace App\Sensor; * * @author tibo */ -class Updates extends \App\AbstractSensor +class Updates extends \App\Sensor { const REGEXP = "/(\d+)\spackages? can be updated\.\n(\d+)\supdates? (is a|are) security updates?./"; -- GitLab