Ports lists » '; $menu_options = ['basic' => 'Basic', 'detail' => 'Detail']; $sep = ''; foreach ($menu_options as $option => $text) { $displayLists .= $sep; if ($vars['format'] == 'list_' . $option) { $displayLists .= ''; } $displayLists .= '' . $text . ''; if ($vars['format'] == 'list_' . $option) { $displayLists .= ''; } $sep = ' | '; } $displayLists .= '  Graphs » '; $menu_options = ['bits' => 'Bits', 'upkts' => 'Unicast Packets', 'nupkts' => 'Non-Unicast Packets', 'errors' => 'Errors', ]; $sep = ''; foreach ($menu_options as $option => $text) { $displayLists .= $sep; if ($vars['format'] == 'graph_' . $option) { $displayLists .= ''; } $displayLists .= '' . $text . ''; if ($vars['format'] == 'graph_' . $option) { $displayLists .= ''; } $sep = ' | '; } $displayLists .= '
'; $displayLists .= 'Export CSV | Update URL | '; if (isset($vars['searchbar']) && $vars['searchbar'] == 'hide') { $displayLists .= 'Search'; } else { $displayLists .= 'Search'; } $displayLists .= ' | '; if (isset($vars['bare']) && $vars['bare'] == 'yes') { $displayLists .= 'Header'; } else { $displayLists .= 'Header'; } $displayLists .= ' | '; $displayLists .= 'Bulk actions »'; $displayLists .= ' Purge all deleted'; $displayLists .= '
'; if ((isset($vars['searchbar']) && $vars['searchbar'] != 'hide') || ! isset($vars['searchbar'])) { $output = "
"; $output .= "
"; $output .= addslashes(csrf_field()); $output .= "
"; $output .= "
"; $output .= " '; if (strlen($vars['hostname'])) { $hasvalue = "value='" . $vars['hostname'] . "'"; } else { $hasvalue = ''; } $output .= ""; $output .= '
 '; switch ($vars['state']) { case 'up': $isup = 'selected'; $isdown = ''; $admindown = ''; break; case 'down': $isup = ''; $isdown = 'selected'; $admindown = ''; break; case 'admindown': $isup = ''; $isdown = ''; $admindown = 'selected'; break; } $output .= "
"; $output .= " '; $output .= " '; $output .= '
'; $output .= "
"; $output .= " '; $output .= " '; $output .= '
'; $output .= "
"; if (strlen($vars['ifAlias'])) { $ifaliasvalue = "value='" . $vars['ifAlias'] . "'"; } $output .= '
'; $output .= '
'; $output .= "
"; $output .= " "; $output .= " '; if ($vars['ignore']) { $ignorecheck = 'checked'; } else { $ignorecheck = ''; } if ($vars['disabled']) { $disabledcheck = 'checked'; } else { $disabledcheck = ''; } if ($vars['deleted']) { $deletedcheck = 'checked'; } else { $deletedcheck = ''; } $output .= " "; $output .= " '; $output .= " "; $output .= " '; $output .= " "; $output .= " '; $output .= " "; $output .= " 'ports', 'section' => $vars['section'], 'bare' => $vars['bare']]) . "' title='Reset critera to default.'>Reset"; $output .= '
'; $output .= '
'; $output .= '
'; } $param = []; if (! isset($vars['ignore'])) { $vars['ignore'] = '0'; } if (! isset($vars['disabled'])) { $vars['disabled'] = '0'; } if (! isset($vars['deleted'])) { $vars['deleted'] = '0'; } $where = ''; $ignore_filter = 0; $disabled_filter = 0; foreach ($vars as $var => $value) { if ($value != '') { switch ($var) { case 'hostname': $where .= ' AND D.hostname LIKE ?'; $param[] = '%' . $value . '%'; break; case 'location': if (is_int($value)) { $where .= ' AND L.id = ?'; $param[] = $value; } else { $where .= ' AND L.location LIKE ?'; $param[] = '%' . $value . '%'; } break; case 'device_id': $where .= ' AND D.device_id = ?'; $param[] = $value; break; case 'deleted': if ($value == 1 || $value == 'yes') { $where .= ' AND `I`.`deleted` = 1'; $ignore_filter = 1; } break; case 'ignore': if ($value == 1 || $value == 'yes') { $where .= ' AND (I.ignore = 1 OR D.ignore = 1) AND I.deleted = 0'; $ignore_filter = 1; } break; case 'disabled': if ($value == 1 || $value == 'yes') { $where .= ' AND `I`.`disabled` = 1 AND `I`.`deleted` = 0'; $disabled_filter = 1; } break; case 'ifSpeed': if (is_numeric($value)) { $where .= " AND I.$var = ?"; $param[] = $value; } break; case 'ifType': $where .= " AND I.$var = ?"; $param[] = $value; break; case 'ifAlias': case 'port_descr_type': $where .= " AND I.$var LIKE ?"; $param[] = '%' . $value . '%'; break; case 'errors': if ($value == 1 || $value == 'yes') { $where .= " AND (I.`ifInErrors_delta` > '0' OR I.`ifOutErrors_delta` > '0')"; } break; case 'state': if ($value == 'down') { $where .= ' AND I.ifAdminStatus = ? AND I.ifOperStatus = ?'; $param[] = 'up'; $param[] = 'down'; } elseif ($value == 'up') { $where .= ' AND I.ifAdminStatus = ? AND I.ifOperStatus = ?'; $param[] = 'up'; $param[] = 'up'; } elseif ($value == 'admindown') { $where .= ' AND I.ifAdminStatus = ? AND D.ignore = 0'; $param[] = 'down'; } break; case 'purge': if ($vars['purge'] === 'all') { Port::hasAccess(Auth::user())->with(['device' => function ($query) { $query->select('device_id', 'hostname'); }])->isDeleted()->chunk(100, function ($ports) { foreach ($ports as $port) { $port->delete(); } }); } else { try { Port::hasAccess(Auth::user())->where('port_id', $vars['purge'])->firstOrFail()->delete(); } catch (ModelNotFoundException $e) { echo "
Port ID {$vars['purge']} not found! Could not purge port.
"; } } break; } } } if ($ignore_filter == 0 && $disabled_filter == 0) { $where .= ' AND `I`.`ignore` = 0 AND `I`.`disabled` = 0 AND `I`.`deleted` = 0'; } $query = 'SELECT * FROM `ports` AS I, `devices` AS D LEFT JOIN `locations` AS L ON D.location_id = L.id WHERE I.device_id = D.device_id' . $where . ' ' . $query_sort; $row = 1; [$format, $subformat] = explode('_', basename($vars['format'])); // only grab list of ports for graph pages, table uses ajax $ports = $format == 'graph' ? dbFetchRows($query, $param) : []; switch ($vars['sort']) { case 'traffic': $ports = array_sort_by_column($ports, 'ifOctets_rate', SORT_DESC); break; case 'traffic_in': $ports = array_sort_by_column($ports, 'ifInOctets_rate', SORT_DESC); break; case 'traffic_out': $ports = array_sort_by_column($ports, 'ifOutOctets_rate', SORT_DESC); break; case 'packets': $ports = array_sort_by_column($ports, 'ifUcastPkts_rate', SORT_DESC); break; case 'packets_in': $ports = array_sort_by_column($ports, 'ifInUcastOctets_rate', SORT_DESC); break; case 'packets_out': $ports = array_sort_by_column($ports, 'ifOutUcastOctets_rate', SORT_DESC); break; case 'errors': $ports = array_sort_by_column($ports, 'ifErrors_rate', SORT_DESC); break; case 'speed': $ports = array_sort_by_column($ports, 'ifSpeed', SORT_DESC); break; case 'port': $ports = array_sort_by_column($ports, 'ifDescr', SORT_ASC); break; case 'media': $ports = array_sort_by_column($ports, 'ifType', SORT_ASC); break; case 'descr': $ports = array_sort_by_column($ports, 'ifAlias', SORT_ASC); break; case 'device': default: $ports = array_sort_by_column($ports, 'hostname', SORT_ASC); } if (file_exists('includes/html/pages/ports/' . $format . '.inc.php')) { require 'includes/html/pages/ports/' . $format . '.inc.php'; }