Improved SMART support (including NVMe)

This commit is contained in:
bergware
2017-10-29 18:27:59 +01:00
parent 7b3c04c913
commit 95ddd749f4
5 changed files with 77 additions and 83 deletions
+11 -20
View File
@@ -13,11 +13,6 @@
<?
$docroot = $docroot ?: $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
function getVal(&$ref,$n,$d) {
global $var;
$val = $ref[$n] ?? -1;
return $val!==-1 ? $val : ($var[$n] ?? $d);
}
function normalize($text, $glue='_') {
$words = explode($glue,$text);
foreach ($words as &$word) $word = $word==strtoupper($word) ? $word : preg_replace(['/^(ct|cnt)$/','/^blk$/'],['count','block'],strtolower($word));
@@ -42,28 +37,24 @@ function append(&$ref, &$info) {
}
$disks = []; $var = [];
require_once "$docroot/webGui/include/CustomMerge.php";
require_once "$docroot/webGui/include/Wrappers.php";
require_once "$docroot/webGui/include/Preselect.php";
$name = $_POST['name'] ?? '';
$port = $_POST['port'] ?? '';
if ($name) {
$disk = &$disks[$name];
$type = getVal($disk,'smType','');
if ($type) {
$ports = [];
if (!empty($disk['smDevice'])) $port = $disk['smDevice'];
if (!empty($disk['smPort1'])) $ports[] = $disk['smPort1'];
if (!empty($disk['smPort2'])) $ports[] = $disk['smPort2'];
if (!empty($disk['smPort3'])) $ports[] = $disk['smPort3'];
if ($ports) $type .= ','.implode($disk['smGlue'] ?? ',',$ports);
}
$type = get_value($disk,'smType','');
get_ctlr_options($type, $disk);
} else {
$disk = [];
$type = '';
}
if (substr($port,-2)=='n1') $port = substr($port,0,-2);
$port = port_name($disk['smDevice'] ?? $port);
switch ($_POST['cmd']) {
case "attributes":
require_once "$docroot/webGui/include/Wrappers.php";
require_once "$docroot/webGui/include/Preselect.php";
$select = getVal($disk,'smSelect',0);
$level = getVal($disk,'smLevel',1);
$events = explode('|',getVal($disk,'smEvents',$numbers));
$select = get_value($disk,'smSelect',0);
$level = get_value($disk,'smLevel',1);
$events = explode('|',get_value($disk,'smEvents',$numbers));
$unraid = parse_plugin_cfg('dynamix',true);
$max = $disk['maxTemp'] ?? $unraid['display']['max'];
$hot = $disk['hotTemp'] ?? $unraid['display']['hot'];
+21 -3
View File
@@ -1,6 +1,6 @@
<?PHP
/* Copyright 2005-2016, Lime Technology
* Copyright 2012-2016, Bergware International.
/* Copyright 2005-2017, Lime Technology
* Copyright 2012-2017, Bergware International.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
@@ -11,7 +11,7 @@
*/
?>
<?
$docroot = $docroot ?: @$_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
$docroot = $docroot ?: $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
// Wrapper functions
function parse_plugin_cfg($plugin, $sections=false) {
@@ -52,4 +52,22 @@ function plugin_update_available($plugin, $os=false) {
if (version_compare($server, $unraid, '>=')) return $remote;
}
}
function get_value(&$object,$name,$default) {
global $var;
$value = $object[$name] ?? -1;
return $value!==-1 ? $value : ($var[$name] ?? $default);
}
function get_ctlr_options(&$type, &$disk) {
if (!$type) return;
$ports = [];
if (strlen($disk['smPort1'])) $ports[] = $disk['smPort1'];
if (strlen($disk['smPort2'])) $ports[] = $disk['smPort2'];
if (strlen($disk['smPort3'])) $ports[] = $disk['smPort3'];
$type .= ($ports ? ','.implode($disk['smGlue'] ?? ',',$ports) : '');
}
function port_name($port) {
return substr($port,-2)!='n1' ? $port : substr($port,0,-2);
}
?>