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