'.ucfirst($share['security']).''; } function globalInclude($name) { global $var; return substr($name,0,4)!='disk' || !$var['shareUserInclude'] || strpos("{$var['shareUserInclude']},","$name,")!==false; } function shareInclude($name) { global $include; return !$include || substr($name,0,4)!='disk' || strpos("$include,", "$name,")!==false; } function sharesOnly($disk) { return strpos('Data,Cache',$disk['type'])!==false && $disk['exportable']=='yes'; } // filter disk shares $disks = array_filter($disks,'sharesOnly'); // Compute all disk shares & check encryption $crypto = false; foreach ($disks as $name => $disk) { if ($compute=='yes') exec("webGui/scripts/disk_size ".escapeshellarg($name)." ssz2"); $crypto |= strpos($disk['fsType'],'luks:')!==false; } // global shares include/exclude $myDisks = array_filter(array_diff(array_keys($disks), explode(',',$var['shareUserExclude'])), 'globalInclude'); // Share size per disk $ssz2 = []; if ($fill) foreach (glob("state/*.ssz2", GLOB_NOSORT) as $entry) $ssz2[basename($entry, ".ssz2")] = parse_ini_file($entry); else exec("rm -f /var/local/emhttp/*.ssz2"); // Build table $row = 0; foreach ($disks as $name => $disk) { $color = $disk['fsColor']; $row++; switch ($color) { case 'green-on' : $orb = 'circle'; $color = 'green'; $help = 'All files protected'; break; case 'yellow-on': $orb = 'warning'; $color = 'yellow'; $help = 'All files unprotected'; break; } if ($crypto) switch ($disk['luksState']) { case 0: $luks = ""; break; case 1: $luks = "All files encrypted"; break; case 2: $luks = "Some or all files unencrypted"; break; default: $luks = "Unknown encryption state'"; break; } else $luks = ""; echo ""; echo "$help$luks$name"; echo "{$disk['comment']}"; echo "".disk_share_settings($var['shareSMBEnabled'], $sec[$name]).""; echo "".disk_share_settings($var['shareNFSEnabled'], $sec_nfs[$name]).""; echo "".disk_share_settings($var['shareAFPEnabled'], $sec_afp[$name]).""; $cmd="/webGui/scripts/disk_size"."&arg1=".urlencode($name)."&arg2=ssz2"; $type = $disk['rotational'] ? 'HDD' : 'SSD'; if (array_key_exists($name, $ssz2)) { echo "$type"; echo "".my_scale(($disk['fsSize'])*1024, $unit)." $unit"; echo "".my_scale($disk['fsFree']*1024, $unit)." $unit"; echo ""; echo ""; foreach ($ssz2[$name] as $sharename => $sharesize) { if ($sharename=='share.total') continue; $include = $shares[$sharename]['include']; $inside = in_array($disk['name'], array_filter(array_diff($myDisks, explode(',',$shares[$sharename]['exclude'])), 'shareInclude')); echo "" : " warning'>"); echo "$sharename:"; echo "".($inside ? "" : "Share is outside the list of designated disks").""; echo ""; echo ""; echo ""; echo ""; echo "".my_scale($sharesize*1024, $unit)." $unit"; echo "".my_scale($disk['fsFree']*1024, $unit)." $unit"; echo ""; echo ""; } } else { echo "$type"; echo "Compute..."; echo "".my_scale($disk['fsFree']*1024, $unit)." $unit"; echo ""; echo ""; } } if ($row==0) { echo "There are no exportable disk shares"; } ?>