From 734be0ba3ccfd6227a72703bf042804f747ee176 Mon Sep 17 00:00:00 2001 From: bergware Date: Sat, 16 Dec 2023 01:30:04 +0100 Subject: [PATCH] device_list: move encryption indicator to FS column --- emhttp/plugins/dynamix/nchan/device_list | 97 ++++++++++++------------ 1 file changed, 48 insertions(+), 49 deletions(-) diff --git a/emhttp/plugins/dynamix/nchan/device_list b/emhttp/plugins/dynamix/nchan/device_list index fd1fd51e9..679cb9170 100755 --- a/emhttp/plugins/dynamix/nchan/device_list +++ b/emhttp/plugins/dynamix/nchan/device_list @@ -44,20 +44,20 @@ function my_power($power) { return _var($display,'power') && $power ? ' / '.number_format($power,$power<10?2:1,$number[0]).' '._('W') : ''; } function device_info(&$disk,$online) { - global $pools, $var, $crypto; + global $pools, $var; if (!$online || _var($disk,'fsStatus')!='Mounted' || (in_array(_var($disk,'type'),['Parity','Cache']) && (!in_array(_var($disk,'name'),$pools) || isSubpool(_var($disk,'name'))))) { $view = ""; } else { $dir = _var($disk,'name')=='flash' ? "/boot" : "/mnt/"._var($disk,'name'); $view = ""; } - $name = _var($disk,'name'); - $named = no_tilde($name); - $fancy = _(my_disk(native($name,1)),3); - $type = _var($disk,'type')=='Flash' ? $disk['type'] : 'Device'; - $pool = _var($disk,'type')=='Cache'; + $name = _var($disk,'name'); + $named = no_tilde($name); + $fancy = _(my_disk(native($name,1)),3); + $type = _var($disk,'type')=='Flash' ? $disk['type'] : 'Device'; + $pool = _var($disk,'type')=='Cache'; $parity = _var($disk,'type')=='Parity'; - $action = strpos(_var($disk,'color'),'blink')===false ? 'down' : 'up'; + $action = str_contains(_var($disk,'color'),'blink') ? 'up' : 'down'; switch (_var($disk,'color')) { case 'green-on': $orb = 'circle'; $color = 'green'; $help = _('Normal operation, device is active'); break; case 'green-blink': $orb = 'circle'; $color = 'grey'; $help = _('Device is in standby mode (spun-down)'); break; @@ -72,39 +72,16 @@ function device_info(&$disk,$online) { } $ctrl = ''; $disk_status = _var($disk,'status'); - if (_var($var,'fsState')=='Started' && $type!='Flash' && strpos($disk_status,'_NP')===false) { + if (_var($var,'fsState')=='Started' && $type!='Flash' && !str_contains($disk_status,'_NP')) { $ctrl = " style='cursor:pointer' onclick=\"toggle_state('$type','$name','$action')\""; $help .= "
"._("Click to spin $action device"); } $status = "$help"; - $link = (_var($disk,'type')=='Parity' && strpos($disk_status,'_NP')===false) || + $link = (_var($disk,'type')=='Parity' && !str_contains($disk_status,'_NP')) || (_var($disk,'type')=='Data' && $disk_status!='DISK_NP') || (_var($disk,'type')=='Cache' && $disk_status!='DISK_NP') || (_var($disk,'name')=='flash') || in_array(_var($disk,'name'),$pools) || _var($disk,'type')=='New' ? "$fancy" : $fancy; - if ($crypto) switch (_var($disk,'luksState',0)) { - case 0: - if (!vfs_luks(_var($disk,'fsType'))) - $luks = ""; - else - $luks = ""._('Device to be encrypted').""; - break; - case 1: - if ($online) { - $luks = ""._('Device encrypted and unlocked').""; - break; - } - /* fall thru */ - case 2: - $luks = ""._('Device encrypted').""; - break; - case 3: - $luks = ""._('Device locked: wrong encryption key').""; - break; - default: - $luks = ""._('Device locked: unknown error').""; - break; - } else $luks = ''; return $view.$status.$luks.$link; } function device_desc(&$disk) { @@ -140,23 +117,45 @@ function assignment(&$disk) { $echo[] = ""; return implode($echo); } -function vfs_type($fs) { - return str_replace('luks:','',$fs); -} function vfs_luks($fs) { - return ($fs != vfs_type($fs)); + return str_starts_with($fs,'luks:'); } -function vfs_parent($name) { - global $disks; - return vfs_type(_var($disks[prefix($name)],'fsType')); +function vfs_type(&$disk, $parent=false) { + global $disks, $pools, $crypto; + $fsType = _var($disk,'fsType'); + $name = _var($disk,'name'); + $type = ($parent || _var($disk,'type')=='Cache' && !in_array($name,$pools)) ? _var($disks[prefix($name)],'fsType') : $fsType; + $luks = ''; + if ($crypto) switch (_var($disk,'luksState',0)) { + case 0: + if (vfs_luks($fsType)) + $luks = ""._('Device to be encrypted').""; + break; + case 1: + if ($online) { + $luks = ""._('Device encrypted and unlocked').""; + break; + } + /* fall thru */ + case 2: + $luks = ""._('Device encrypted').""; + break; + case 3: + $luks = ""._('Device locked: wrong encryption key').""; + break; + default: + $luks = ""._('Device locked: unknown error').""; + break; + } + return $luks.str_replace('luks:','',$type); } function fs_info(&$disk) { global $display, $pools; $echo = []; if (empty($disk['fsStatus']) || $disk['fsStatus']=='-') { - return (_var($disk,'type')=='Cache' && !in_array(_var($disk,'name'),$pools)) ? "".vfs_parent(_var($disk,'name')).""._('Device is part of a pool')."" : ""; + return (_var($disk,'type')=='Cache' && !in_array(_var($disk,'name'),$pools)) ? "".vfs_type($disk,true).""._('Device is part of a pool')."" : ""; } elseif (_var($disk,'fsStatus')=='Mounted') { - $echo[] = "".vfs_type(_var($disk,'fsType')).""; + $echo[] = "".vfs_type($disk).""; $echo[] = "".my_scale(_var($disk,'fsSize',0)*1024,$unit,-1)." $unit"; if ($display['text']%10==0) { $echo[] = "".my_scale(_var($disk,'fsUsed',0)*1024,$unit)." $unit"; @@ -171,7 +170,7 @@ function fs_info(&$disk) { $echo[] = "
".my_scale(_var($disk,'fsFree',0)*1024,$unit)." $unit
"; } } else { - $echo[] = "".vfs_type(_var($disk,'fsType')).""._(_var($disk,'fsStatus')).""; + $echo[] = "".vfs_type($disk).""._(_var($disk,'fsStatus')).""; } return implode($echo); } @@ -184,7 +183,7 @@ function array_offline(&$disk, $pool='') { $echo = []; $warning = ''; $status = ['DISK_DSBL','DISK_INVALID','DISK_DSBL_NEW','DISK_NEW','DISK_WRONG']; $text = ""._('All existing data on this device will be OVERWRITTEN when array is Started').""; - if (strpos(_var($var,'mdState'),'ERROR:')===false) { + if (!str_contains(_var($var,'mdState'),'ERROR:')) { if (_var($disk,'type')=='Cache') { if (!empty(_var($disks[$pool],'uuid')) && _var($disk,'status')=='DISK_NEW') $warning = $text; } else { @@ -220,7 +219,7 @@ function array_offline(&$disk, $pool='') { $echo[] = "$warning"; } else { $echo[] = ""; - $echo[] = "".vfs_type(_var($disk,'fsType')).""; + $echo[] = "".vfs_type($disk).""; $echo[] = ""; } break; @@ -232,7 +231,7 @@ function array_offline(&$disk, $pool='') { $echo[] = "$warning"; } else { $echo[] = ""; - $echo[] = "".vfs_type(_var($disk,'fsType')).""; + $echo[] = "".vfs_type($disk).""; $echo[] = ""; } break; @@ -475,21 +474,21 @@ while (true) { $echo[$n] .= ""._('Slots').":".cache_slots($off,$pool,_var($cache[$pool],'devicesSb'),_var($cache[$pool],'slots',0)).""; $zfsPool = strstr(_var($cache[$pool],'fsType'),'zfs') && !isSubpool($pool); if ($zfsPool) { - $current_subpools = array_filter($pools, function($element) use ($pool,$_tilde_) {return strpos($element, "{$pool}{$_tilde_}")!==false;}); + $current_subpools = array_filter($pools, function($element) use ($pool,$_tilde_) {return str_contains($element,"{$pool}{$_tilde_}");}); $current_subpools_list = str_replace("{$pool}{$_tilde_}","", implode(',', $current_subpools)); $echo[$n] .= ""; } $echo[$n] .= ""; } else { foreach ($cache as $disk) if (prefix($disk['name'])==$pool) { - if (isset($disk['fsType'])) $fstype = vfs_type($disk['fsType']); + $fstype = str_replace('luks:','',_var($disk,'fsType')); if (substr(_var($cache[$pool],'fsStatus'),0,11)=='Unmountable' && empty($disk['fsStatus'])) $disk['fsStatus'] = _var($cache[$pool],'fsStatus'); $echo[$n] .= array_online($disk,$fstype); } if (strcmp($root,$pool)!=0) $cache[$root]['devices'] += $cache[$pool]['devices']; if (strcmp($pool,$print)==0) { delete_file($pool_log); - if (_var($display,'total') && _var($cache[$root],'devices',0)>1) $echo[$n] .= show_totals(sprintf(_('Pool of %s devices'),my_word($cache[$root]['devices'])),strpos($pool,$_tilde_)!==false,"$root*"); + if (_var($display,'total') && _var($cache[$root],'devices',0)>1) $echo[$n] .= show_totals(sprintf(_('Pool of %s devices'),my_word($cache[$root]['devices'])),str_contains($pool,$_tilde_),"$root*"); $sum = initSum(); } } @@ -511,7 +510,7 @@ while (true) { $echo[$n] .= "".my_number(_var($disk,'numErrors',0)).""; if (file_exists("/tmp/preclear_stat_$dev")) { $text = exec("cut -d'|' -f3 /tmp/preclear_stat_$dev|sed 's:\^n:\:g'"); - if (strpos($text,'Total time')===false) $text = _('Preclear in progress').'... '.$text; + if (!str_contains($text,'Total time')) $text = _('Preclear in progress').'... '.$text; $echo[$n] .= "$text"; } else $echo[$n] .= "";