function render_partition($disk, $partition)
{
    global $plugin;
    if (!isset($partition['device'])) {
        return '';
    }
    $out = array();
    $mounted = is_mounted($partition['device']);
    if (!$mounted && $partition['fstype'] != 'btrfs' || $mounted && $partition['fstype'] == 'btrfs') {
        $fscheck = "<a class='exec' onclick='openWindow_fsck(\"/plugins/{$plugin}/include/fsck.php?disk={$partition[device]}&fs={$partition[fstype]}&type=ro\",\"Check filesystem\",600,900);'><i class='glyphicon glyphicon-th-large partition'></i>{$partition[part]}</a>";
    } else {
        $fscheck = "<i class='glyphicon glyphicon-th-large partition'></i>{$partition[part]}";
    }
    $mpoint = "<div>{$fscheck}<i class='glyphicon glyphicon-arrow-right'></i>";
    $mbutton = "<span style='width:auto;text-align:right;'>";
    if ($mounted) {
        $mpoint .= "<a href='/Shares/Browse?dir={$partition[mountpoint]}' target='_blank'>{$partition[mountpoint]}</a></div>";
        $mbutton .= "<button type='button' style='padding:2px 7px 2px 7px;' onclick=\"usb_mount('/usr/local/sbin/unassigned_umount {$partition[device]}');\"><i class='glyphicon glyphicon-export'></i> Unmount</button>";
    } else {
        $mpoint .= "<form method='POST' action='/plugins/{$plugin}/UnassignedDevices.php?action=change_mountpoint&serial={$partition[serial]}&partition={$partition[part]}' target='progressFrame' style='display:inline;margin:0;padding:0;'><span class='text exec'><a>{$partition[mountpoint]}</a></span><input class='input' type='text' name='mountpoint' value='{$partition[mountpoint]}' hidden /></form></div>";
        $mbutton .= "<button type='button' style='padding:2px 7px 2px 7px;' onclick=\"usb_mount('/usr/local/sbin/unassigned_mount {$partition[device]}');\"><i class='glyphicon glyphicon-import'></i>  Mount</button>";
    }
    $out[] = "<tr class='{$outdd} toggle-parts toggle-" . basename($disk['device']) . "' style='__SHOW__' >";
    $out[] = "<td></td>";
    $out[] = "<td>{$mpoint}</td>";
    $out[] = "<td>{$mbutton}</td>";
    $out[] = "<td>-</td>";
    $out[] = "<td >" . $partition['fstype'] . "</td>";
    $out[] = "<td><span>" . my_scale($partition['size'], $unit) . " {$unit}</span></td>";
    $out[] = render_used_and_free($partition);
    $out[] = "<td>" . (strlen($partition['target']) ? shell_exec("lsof '{$partition[target]}' 2>/dev/null|grep -c -v COMMAND") : "-") . "</td>";
    $out[] = "<td>-</td>";
    $out[] = "<td><input type='checkbox' class='toggle_share' info='" . htmlentities(json_encode($partition)) . "' " . ($partition['shared'] ? 'checked' : '') . "></td>";
    $out[] = "<td><a href='/Main/EditScript?s=" . urlencode($partition['serial']) . "&l=" . urlencode(basename($partition['mountpoint'])) . "&p=" . urlencode($partition['part']) . "'><img src='/webGui/images/default.png' style='cursor:pointer;width:16px;" . (get_config($partition['serial'], "command.{$partition[part]}") ? "" : "opacity: 0.4;") . "'></a></td>";
    $out[] = "<tr>";
    return $out;
}
 foreach ($disks as $disk) {
     echo "<tr class='{$odd}'>";
     printf("<td><img src='/webGui/images/%s'> %s</td>", is_disk_running($disk['device']) ? "green-on.png" : "green-blink.png", basename($disk['device']));
     $disk_mounted = false;
     foreach ($disk['partitions'] as $p) {
         if (is_mounted($p['device'])) {
             $disk_mounted = TRUE;
         }
     }
     $m_button = "<td><span style='width:auto;text-align:right;'>" . ($disk_mounted ? "<button type='button' style='padding:2px 7px 2px 7px;' onclick=\"usb_mount('/usr/local/sbin/usb_umount {$disk[device]}');\"><i class='glyphicon glyphicon-export'></i> Unmount</button>" : "<button type='button' style='padding:2px 7px 2px 7px;' onclick=\"usb_mount('/usr/local/sbin/usb_mount {$disk[device]}');\"><i class='glyphicon glyphicon-import'></i>  Mount</button>") . "</span></td>";
     echo "<td><i class='glyphicon glyphicon-hdd hdd'></i>" . $disk['partitions'][0]['serial'] . $m_button . "</td>";
     $temp = my_temp($disk['temperature']);
     echo "<td >{$temp}</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>";
     echo "<td><input type='checkbox' class='automount' serial='" . $disk['partitions'][0]['serial'] . "' " . ($disk['partitions'][0]['automount'] ? 'checked' : '') . "></td><td>-</td></tr>";
     foreach ($disk['partitions'] as $partition) {
         $mounted = is_mounted($partition['device']);
         echo "<tr class='{$odd}'><td></td><td><div>";
         $fscheck = sprintf(get_fsck_commands($partition['fstype'])['ro'], $partition['device']);
         $icon = "<i class='glyphicon glyphicon-th-large partition'></i>";
         $fscheck = !$mounted ? "<a class='exec' onclick='openWindow(\"{$fscheck}\",\"Check filesystem\",600,900);'>{$icon}{$partition[part]}</a>" : "{$icon}{$partition[part]}";
         echo "{$fscheck}<i class='glyphicon glyphicon-arrow-right'></i>";
         if ($mounted) {
             echo $partition['mountpoint'];
         } else {
             echo "<form method='POST' action='/plugins/{$plugin}/USBDevicesList.php?action=change_mountpoint&serial={$partition[serial]}&partition={$partition[part]}' target='progressFrame' style='display:inline;margin:0;padding:0;'>";
             echo "<span class='text exec'><a>{$partition[mountpoint]}</a></span><input class='input' type='text' name='mountpoint' value='{$partition[mountpoint]}' hidden />";
             echo "</form>";
         }
         echo "<td><span style='width:auto;text-align:right;'>" . ($mounted ? "<button type='button' style='padding:2px 7px 2px 7px;' onclick=\"usb_mount('/usr/local/sbin/usb_umount {$partition[device]}');\"><i class='glyphicon glyphicon-export'></i> Unmount</button>" : "<button type='button' style='padding:2px 7px 2px 7px;' onclick=\"usb_mount('/usr/local/sbin/usb_mount {$partition[device]}');\"><i class='glyphicon glyphicon-import'></i>  Mount</button>") . "</span></td>";
         echo "</div></td><td>-</td>";
         echo "<td >" . $partition['fstype'] . "</td>";
function make_mount_button($device)
{
    global $paths, $Preclear;
    $button = "<span style='width:auto;text-align:right;'><button type='button' device='{$device[device]}' class='array' context='%s' role='%s' %s><i class='%s'></i>  %s</button></span>";
    if (isset($device['partitions'])) {
        $mounted = in_array(TRUE, array_map(function ($ar) {
            return is_mounted($ar['device']);
        }, $device['partitions']));
        $disable = count(array_filter($device['partitions'], function ($p) {
            if (!empty($p['fstype']) && $p['fstype'] != "precleared") {
                return TRUE;
            }
        })) ? "" : "disabled";
        $format = isset($device['partitions']) && !count($device['partitions']) || $device['partitions'][0]['fstype'] == "precleared" ? true : false;
        $context = "disk";
    } else {
        $mounted = is_mounted($device['device']);
        $disable = !empty($device['fstype']) && $device['fstype'] != "precleared" ? "" : "disabled";
        $format = isset($device['fstype']) && empty($device['fstype']) || $device['fstype'] == "precleared" ? true : false;
        $context = "partition";
    }
    $is_mounting = array_values(preg_grep("@/mounting_" . basename($device['device']) . "@i", listDir(dirname($paths['mounting']))))[0];
    $is_mounting = time() - filemtime($is_mounting) < 300 ? TRUE : FALSE;
    $is_unmounting = array_values(preg_grep("@/unmounting_" . basename($device['device']) . "@i", listDir(dirname($paths['mounting']))))[0];
    $is_unmounting = time() - filemtime($is_unmounting) < 300 ? TRUE : FALSE;
    $dev = basename($device['device']);
    $preclearing = $Preclear ? $Preclear->isRunning(basename($device['device'])) : false;
    if ($device['size'] == 0) {
        $button = sprintf($button, $context, 'mount', 'disabled', 'glyphicon glyphicon-erase', 'Insert');
    } elseif ($format) {
        $disable = get_config("Config", "destructive_mode") == "enabled" ? "" : "disabled";
        $disable = $preclearing ? "disabled" : $disable;
        $button = sprintf($button, $context, 'format', $disable, 'glyphicon glyphicon-erase', 'Format');
    } elseif ($is_mounting) {
        $button = sprintf($button, $context, 'umount', 'disabled', 'fa fa-circle-o-notch fa-spin', 'Mounting...');
    } elseif ($is_unmounting) {
        $button = sprintf($button, $context, 'mount', 'disabled', 'fa fa-circle-o-notch fa-spin', 'Unmounting...');
    } elseif ($mounted) {
        $button = sprintf($button, $context, 'umount', '', 'glyphicon glyphicon-export', 'Unmount');
    } else {
        $disable = $preclearing ? "disabled" : $disable;
        $button = sprintf($button, $context, 'mount', $disable, 'glyphicon glyphicon-import', 'Mount');
    }
    return $button;
}
示例#4
0
function do_mount_iso($info)
{
    $dev = $info['device'];
    $dir = $info['mountpoint'];
    if (is_file($info['file'])) {
        if (!is_mounted($dev) || !is_mounted($dir, true)) {
            @mkdir($dir, 0777, TRUE);
            $cmd = "/sbin/mount -t iso9660 -o loop '{$dev}' '{$dir}'";
            unassigned_log("Mount iso command: mount -t iso9660 -o loop '{$dev}' '{$dir}'");
            $o = shell_exec($cmd . " 2>&1");
            foreach (range(0, 5) as $t) {
                if (is_mounted($dev)) {
                    @chmod($dir, 0777);
                    @chown($dir, 99);
                    @chgrp($dir, 100);
                    unassigned_log("Successfully mounted '{$dev}' on '{$dir}'.");
                    return TRUE;
                } else {
                    sleep(0.5);
                }
            }
            unassigned_log("Mount of '{$dev}' failed. Error message: {$o}");
            return FALSE;
        } else {
            unassigned_log("Share '{$dev}' already mounted...");
        }
    } else {
        unassigned_log("Mount of '{$dev}' failed. Iso file '{$info['file']}' is missing.");
        return FALSE;
    }
}
function do_unmount($dev, $dir) {
  if (is_mounted($dev) != 0){
    debug("Unmounting ${dev}...");
    $o = shell_exec("umount '${dev}' 2>&1");
    for ($i=0; $i < 10; $i++) {
      if (! is_mounted($dev)){
        if (is_dir($dir)) rmdir($dir);
        debug("Successfully unmounted '$dev'"); return TRUE;
      } else { sleep(0.5);}
    }
    debug("Unmount of ${dev} failed. Error message: $o"); return FALSE;
  }
}
示例#6
0
  }
  return "*";
}

if (isset($_POST['display'])) $display = $_POST['display'];

switch ($_POST['action']) {
  case 'get_content':
    $disks = get_all_disks_info();
    echo "<table class='preclear custom_head'><thead><tr><td>Device</td><td>Identification</td><td>Temp</td><td>Size</td><td>Preclear Status</td></tr></thead>";
    echo "<tbody>";
    if ( count($disks) ) {
      $odd="odd";
      foreach ($disks as $disk) {
        $disk_mounted = false;
        foreach ($disk['partitions'] as $p) if (is_mounted(realpath($p))) $disk_mounted = TRUE;
        $temp = my_temp($disk['temperature']);
        $disk_name = basename($disk['device']);
        $serial = $disk['serial'];
        echo "<tr class='$odd'>";
        printf( "<td><img src='/webGui/images/%s'> %s</td>", ( is_disk_running($disk['device']) ? "green-on.png":"green-blink.png" ), $disk_name);
        echo "<td><span class='toggle-hdd' hdd='{$disk_name}'><i class='glyphicon glyphicon-hdd hdd'></i>".($p?"<span style='margin:4px;'></span>":"<i class='glyphicon glyphicon-plus-sign glyphicon-append'></i>").$serial."</td>";
        echo "<td>{$temp}</td>";
        $status = $disk_mounted ? "Disk mounted" : "<a class='exec' onclick='start_preclear(\"".$serial."\",\"{$disk_name}\")'>Start Preclear</a>";
        if (tmux_is_session("preclear_disk_{$disk_name}")) {
          $status = "<a class='exec' onclick='openPreclear(\"{$disk_name}\");' title='Preview'><i class='glyphicon glyphicon-eye-open'></i></a>";
          $status = "{$status}<a title='Clear' style='color:#CC0000;' class='exec' onclick='remove_session(\"{$disk_name}\");'> <i class='glyphicon glyphicon-remove hdd'></i></a>";
        }
        if (is_file("/tmp/preclear_stat_{$disk_name}")) {
          $preclear = explode("|", file_get_contents("/tmp/preclear_stat_{$disk_name}"));
          if (count($preclear) > 3) {