summaryrefslogtreecommitdiff
path: root/libs/Utils/Config.php
diff options
context:
space:
mode:
authorShevAbam <shevabam@gmail.com>2015-07-07 15:57:41 +0200
committerShevAbam <shevabam@gmail.com>2015-07-07 15:57:41 +0200
commit9970343fe5c8226f25234addc6b80836c092fe1f (patch)
treece8f029f3ce9251bd4c207a6427c356ad9042525 /libs/Utils/Config.php
parentdd982cee0716e38e68bc42ffb24952b5675a5b19 (diff)
General : cleaning and optimizing CSS
General : responsive design General : reload button now spins when you reload block General : update jQuery plugin Knob to 1.2.11 General : optimizing security (config file esm.config.json is now in the conf/ folder with an htaccess) CPU : retrieves correctly CPU frequency for Raspberry Pi CPU : add CPU temperature (+ option to enable/disable) System : little correction for getting distro name Swap : fix if swap is disabled Services status : adds protocol TCP or UDP for checking service status Services status : new option to hide port number (see show_port in services section)
Diffstat (limited to 'libs/Utils/Config.php')
-rw-r--r--libs/Utils/Config.php138
1 files changed, 138 insertions, 0 deletions
diff --git a/libs/Utils/Config.php b/libs/Utils/Config.php
new file mode 100644
index 0000000..212a227
--- /dev/null
+++ b/libs/Utils/Config.php
@@ -0,0 +1,138 @@
+<?php
+
+class Config
+{
+ public $file = null;
+ public $config = null;
+
+ public function __construct()
+ {
+ $this->_checkPHPVersion(5.3);
+
+ $this->file = __DIR__.'/../../conf/esm.config.json';
+
+ if (!file_exists($this->file))
+ throw new \Exception('Config file '.basename($this->file).' not found');
+
+ $this->_readFile();
+ }
+
+ private function _readFile()
+ {
+ $content = file_get_contents($this->file);
+ $this->config = json_decode(utf8_encode($content), true);
+
+ if ($this->config == null && json_last_error() != JSON_ERROR_NONE)
+ {
+ throw new \LogicException(sprintf("Failed to parse config file '%s'. Error: '%s'", basename($this->file) , json_last_error_msg()));
+ }
+ }
+
+
+ /**
+ * Returns a specific config variable
+ * Ex : get('ping:hosts')
+ */
+ public function get($var)
+ {
+ $tab = $this->config;
+
+ $explode = explode(':', $var);
+
+ foreach ($explode as $vartmp)
+ {
+ if (isset($tab[$vartmp]))
+ {
+ $tab = $tab[$vartmp];
+ }
+ }
+
+ // return $tab == $this->config ? null : $tab;
+ return $tab;
+ }
+
+
+ /**
+ * Returns all config variables
+ */
+ public function getAll()
+ {
+ return $this->config;
+ }
+
+
+ /**
+ * Checks the PHP version compared to the required version
+ */
+ private function _checkPHPVersion($min)
+ {
+ if (!version_compare(phpversion(), $min, '>='))
+ throw new \Exception('Your PHP version is too old ! PHP '.$min.' is required.');
+
+ return true;
+ }
+
+
+ /**
+ * Checks if there is an eSM`Web update available
+ */
+ public function checkUpdate()
+ {
+ if ($this->get('esm:check_updates') === false)
+ return null;
+
+ $response = null;
+ $this_version = $this->get('esm:version');
+ $update_url = $this->get('esm:website').'/esm-web/update/'.$this_version;
+
+ if (!function_exists('curl_version'))
+ {
+ $tmp = @file_get_contents($update_url);
+ $response = json_decode($tmp, true);
+ }
+ else
+ {
+ $curl = curl_init();
+
+ curl_setopt_array($curl, array(
+ CURLOPT_CONNECTTIMEOUT => 10,
+ CURLOPT_RETURNTRANSFER => true,
+ CURLOPT_SSL_VERIFYPEER => false,
+ CURLOPT_TIMEOUT => 60,
+ CURLOPT_USERAGENT => 'eZ Server Monitor `Web',
+ CURLOPT_URL => $update_url,
+ ));
+
+ $response = json_decode(curl_exec($curl), true);
+
+ curl_close($curl);
+ }
+
+ if (!is_null($response) && !empty($response))
+ {
+ if (is_null($response['error']))
+ {
+ return $response['datas'];
+ }
+ }
+ }
+}
+
+
+// PHP 5.5.0
+if (!function_exists('json_last_error_msg'))
+{
+ function json_last_error_msg()
+ {
+ static $errors = array(
+ JSON_ERROR_NONE => null,
+ JSON_ERROR_DEPTH => 'Maximum stack depth exceeded',
+ JSON_ERROR_STATE_MISMATCH => 'Underflow or the modes mismatch',
+ JSON_ERROR_CTRL_CHAR => 'Unexpected control character found',
+ JSON_ERROR_SYNTAX => 'Syntax error, malformed JSON',
+ JSON_ERROR_UTF8 => 'Malformed UTF-8 characters, possibly incorrectly encoded'
+ );
+ $error = json_last_error();
+ return array_key_exists($error, $errors) ? $errors[$error] : "Unknown error ({$error})";
+ }
+} \ No newline at end of file