Skip to content
Snippets Groups Projects
Commit 19856341 authored by Thibault Debatty's avatar Thibault Debatty
Browse files

simplify sensor and abstractsensor

parent d47a4fbd
No related branches found
No related tags found
No related merge requests found
Pipeline #11622 passed
Showing
with 67 additions and 75 deletions
<?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';
}
}
}
......@@ -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;
}
......@@ -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";
......
......@@ -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";
......
......@@ -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
{
......
......@@ -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
{
......
......@@ -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]+)/";
......
......@@ -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
......
......@@ -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
......
......@@ -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]+)/";
......
......@@ -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";
......
......@@ -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
{
/**
......
......@@ -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
......
......@@ -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
......
......@@ -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+)/";
......
......@@ -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
......
<?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*)\)/";
......
......@@ -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";
......
......@@ -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?./";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment