Menu="Dashboard" Nchan="wg_poller,update_1,update_2,update_3,ups_status:stop" --- '._(ucfirst($share['security'])).''; } function vpn_peers($file) { $peers = []; $entries = array_filter(array_map('trim',preg_split('/\[(Interface|Peer)\]/',file_get_contents($file)))); foreach($entries as $key => $entry) { $noname = true; foreach (explode("\n",$entry) as $row) { if ($key>1 && $row[0]=='#') {$peers[$key-1] = substr($row,1); $noname = false;} } if ($key>1 && $noname) $peers[$key-1] = "Peer ".($key-1); } return $peers; } $dockerd = pgrep('dockerd'); $libvirtd = pgrep('libvirtd'); $apcupsd = file_exists('/var/run/apcupsd.pid'); $conf = glob('/etc/wireguard/wg*.conf'); $wireguard = is_executable('/usr/bin/wg') && count($conf); $started = $var['fsState']=='Started'; $sleep = isset($display['sleep']); $array_size = $array_used = 0; $extra_size = $extra_used = 0; $cache_size = $cache_used = []; $cache_type = $cache_rate = []; $parity = $var['mdResync']; $mover = file_exists('/var/run/mover.pid'); $btrfs = exec('pgrep -cf /sbin/btrfs'); $dot = $display['number'][0]; foreach ($disks as $disk) { switch ($disk['type']) { case 'Data': if (isset($disk['fsFree'])) { $array_size += $disk['fsSize']; $array_used += $disk['fsSize']-$disk['fsFree']; } break; case 'Cache': $name = $disk['name']; if (in_array($name,$pools)) { $cache_size[$name] = $disk['fsSize']; $cache_used[$name] = $disk['fsSize']-$disk['fsFree']; $cache_type[$name] = $disk['rotational'] ? ($disk['luksState'] ? 'disk-encrypted' : 'disk') : 'nvme'; $cache_rate[$name] = number_format(100*$cache_used[$name]/($cache_size[$name] ?: 1),1,$dot,''); if (!$disks[$name]['devices']) unset($pools[array_search($name,$pools)]); } break; } } foreach ($devs as $disk) { $extra_size += $disk['sectors']*$disk['sector_size']; } $array_percent = number_format(100*$array_used/($array_size ?: 1),1,$dot,''); exec('cat /sys/devices/system/cpu/*/topology/thread_siblings_list|sort -nu', $cpus); $wg_up = $wireguard ? exec("wg show interfaces") : ''; $wg_up = $wg_up ? explode(' ',$wg_up) : []; $up = count($wg_up); $down = max(count($conf)-$up,0); $fans = exec("sensors -uA 2>/dev/null|grep -c 'fan[0-9]_input'"); $autofan = is_executable("$docroot/plugins/dynamix.system.autofan/scripts/rc.autofan"); $group = $var['shareSMBEnabled']=='yes' | $var['shareNFSEnabled']=='yes'; $names = []; $cache_only = $encrypted = 0; foreach ($shares as $share) { if ($share['useCache']=='only') $cache_only++; if ($share['luksStatus']>0) $encrypted++; } $passwd = $nopass = 0; foreach ($users as $user) if ($user['passwd']=='yes') $passwd++; else $nopass++; $boot = "/boot/config/plugins/dynamix"; $myfile = "case-model.cfg"; $mycase = file_exists("$boot/$myfile") ? file_get_contents("$boot/$myfile") : false; $board = dmidecode('Base Board Information','2',0); $serial = _("s/n").": {$board['Serial Number']}"; $board = "{$board['Manufacturer']} {$board['Product Name']}".($board['Version'] ? ", "._("Version")." {$board['Version']}" : ""); $bios = dmidecode('BIOS Information','0',0); $biosdate = _("BIOS dated").": "._(my_time(strtotime($bios['Release Date']),$display['date']),0); $bios = $bios['Vendor'].($bios['Version'] ? ", "._("Version")." {$bios['Version']}" : ""); $cpu = dmidecode('Processor Information','4',0); $cpumodel = str_ireplace(["Processor","(C)","(R)","(TM)"],["","©","®","™"],$cpu['Version']); $cpumodel .= (strpos($cpumodel,'@')!==false ? "" : " @ {$cpu['Current Speed']}"); $total = exec("awk '/^MemTotal/{print $2*1024}' /proc/meminfo"); unset($ports); exec("ls /sys/class/net|grep -Po '^(lo|(bond|eth)\d+)$'",$ports); $sizes = ['MB','GB','TB']; $memory_type = $ecc = ''; $memory_installed = $memory_maximum = 0; $memory_devices = dmidecode('Memory Device','17'); foreach ($memory_devices as $device) { if (!is_numeric($device['Size'][0])) continue; [$size, $unit] = explode(' ',$device['Size']); $base = array_search($unit,$sizes); if ($base!==false) $memory_installed += $size*pow(1024,$base); if (!$memory_type && $device['Type']!='Unknown') $memory_type = $device['Type']; } $memory_array = dmidecode('Physical Memory Array','16'); foreach ($memory_array as $device) { [$size, $unit] = explode(' ',$device['Maximum Capacity']); $base = array_search($unit,$sizes); if ($base>=1) $memory_maximum += $size*pow(1024,$base); if (!$ecc && $device['Error Correction Type']!='None') $ecc = "{$device['Error Correction Type']} "; } if ($memory_installed >= 1024) { $memory_installed = round($memory_installed/1024); $memory_maximum = round($memory_maximum/1024); $unit = 'GiB'; } else $unit = 'MiB'; // If maximum < installed then roundup maximum to the next power of 2 size of installed. E.g. 6 -> 8 or 12 -> 16 $low = $memory_maximum < $memory_installed; if ($low) $memory_maximum = pow(2,ceil(log($memory_installed)/log(2))); switch ($display['theme']) { case 'white': $color = '#1c1b1b'; $grid = '#e3e3e3'; break; case 'black': $color = '#f2f2f2'; $grid = '#2b2b2b'; break; case 'azure': $color = '#606e7f'; $grid = '#f3f0f4'; break; case 'gray' : $color = '#606e7f'; $grid = '#0c0f0b'; break; default : $color = '#1c1b1b'; $grid = '#e3e3e3'; break; } ?>
"; if ($cpu2) echo ""; else echo ""; echo ""; } ?> "; } $c = 0; foreach ($ports as $port) { $last = ($port=='lo')?' last':''; echo ""; $c += 2; } $c = 0; foreach ($ports as $port) { echo ""; $c += 2; } ?> $peer):?> "; $tr_end = ""; $hdr = []; $row = []; $i = 0; $hdr[0] = $row[0] = $tr_fan; for ($fan=0; $fan<$fans; $fan++) { if ($fan && $fan%3==0) { $hdr[$i] .= $tr_end; $row[$i] .= $tr_end; $i++; $hdr[$i] = $row[$i] = $tr_fan; } $hdr[$i] .= ""; $row[$i] .= ""; } $rest = ($fans%3) ? 3-($fans%3) : 0; for ($fan=0; $fan<$rest; $fan++) $hdr[$i] .= ""; $row[$i] .= ""; if ($rest) {$hdr[$i] .= $tr_end; $row[$i] .= $tr_end;} for ($n=0; $n<=$i; $n++) echo $hdr[$n].$row[$n]; ?>
-circle busy' title=""> -circle hand' title="" onclick='Array()'>
_(Description)_



_(Registration)_
Unraid OS

_(Uptime)_



","_(Select Case Model)_",700,980,true,"setCase");return false'>
_(Motherboard)_




_(Processor)_
_(Load)_: 0%


_(Show details)_
_(Overall Load)_:0%
CPU $cpu1 - HT $cpu20%
0%
CPU $cpu10%
_(Memory)_
_(Utilization)_: 0%

_(Maximum size)_: _(RAM)_0%
_(Flash)_0%
_(Usable size)_: _(Log)_0%
_(Docker)_0%
_(Interface)_
_(Inbound)_: ---_(Outbound)_: ---

_(Mode of operation)__(Received packets)__(Receive counters)__(Inbound)_ _(Transmitted packets)__(Transmit counters)__(Outbound)_
$port
$port
$port
_(VPN)_
_(Active tunnels)_: _(Inactive tunnels)_:

' onclick="toggleVPN($(this),'')" title="Toggle tunnel state">_(Activity)__(Handshake)_
_(---)__(inactive)_
_(Power)_
_(UPS Load)_:

_(UPS status)_:
_(Battery charge)_:
_(Runtime left)_:
_(Nominal power)_:
_(Airflow)_
_(Fan count)_:

"._('FAN')." $fan
$share) { $i++; $list = "".compress($name,20).""; if ($share['luksStatus']>0) $list = str_replace('blue-text','green-text',$list); elseif ($share['useCache']=='only') $list = str_replace('blue-text','orange-text',$list); $comment = compress($share['comment'],40); $security = export_settings($var['shareSMBEnabled'], $sec[$name]); echo ""; } if (!count($shares)) echo ""; ?> $share) { $list = "".compress($name,20).""; if ($share['luksStatus']>0) $list = str_replace('blue-text','green-text',$list); elseif ($share['useCache']=='only') $list = str_replace('blue-text','orange-text',$list); $comment = compress($share['comment'],40); $security = export_settings($var['shareNFSEnabled'], $sec_nfs[$name]); echo ""; } if (!count($shares)) echo ""; ?> $share) { $list = "".compress($name,20).""; if ($share['luksStatus']>0) $list = str_replace('blue-text','green-text',$list); elseif ($share['useCache']=='only') $list = str_replace('blue-text','orange-text',$list); $comment = compress($share['comment'],40); echo ""; } if (!count($shares)) echo ""; ?>".compress($name,20).""; $desc = compress($user['desc'],40); if ($name=='root') { $write = '-'; $read = '-'; } else { $write = 0; $read = 0; foreach ($shares as $share) { $access = $sec[$share['name']]; if ($access['export']=='-') continue; switch ($access['security']) { case 'public': $write++; break; case 'secure': if (in_array($name,explode(',',$access['writeList']))) $write++; else $read++; break; case 'private': if (in_array($name,explode(',',$access['writeList']))) $write++; if (in_array($name,explode(',',$access['readList']))) $read++; break; } } } if ($user['passwd']!='yes') $list = str_replace('blue-text','orange-text',$list); echo ""; } ?>".compress($name,20).""; $desc = compress($user['desc'],40); $write = '-'; $read = '-'; if ($user['passwd']!='yes') $list = str_replace('blue-text','orange-text',$list); echo ""; } ?>".compress($name,20).""; $desc = compress($user['desc'],40); if ($user['passwd']!='yes') $list = str_replace('blue-text','orange-text',$list); echo ""; } ?>
_(Docker Containers)_
_(Virtual Machines)_
_(Shares)_
_(Name)__(Description)__(Security)__(Streams)_
_(Users)_
_(Name)__(Description)__(Write)__(Read)_
$list$desc$write$read
$list$desc$write$read
$list$desc--
_(Parity)_
_(Array)_ (_(stopped)_)
_(Device)__(Status)__(Temp)__(SMART)__(Utilization)_
(_(stopped)_)
_(Device)__(Status)__(Temp)__(SMART)__(Utilization)_
_(Unassigned)_
_(Device)__(Status)__(Temp)__(SMART)__(Utilization)_
'>