Example #1
0
function mikrotik_queues()
{
    global $config, $colors, $item_rows;
    /* ================= input validation ================= */
    input_validate_input_number(get_request_var_request('page'));
    input_validate_input_number(get_request_var_request('rows'));
    input_validate_input_number(get_request_var_request('device'));
    /* ==================================================== */
    /* clean up sort_column */
    if (isset($_REQUEST['sort_column'])) {
        $_REQUEST['sort_column'] = sanitize_search_string(get_request_var_request('sort_column'));
    }
    /* clean up sort_direction */
    if (isset($_REQUEST['sort_direction'])) {
        $_REQUEST['sort_direction'] = sanitize_search_string(get_request_var_request('sort_direction'));
    }
    /* clean up filter string */
    if (isset($_REQUEST['filter'])) {
        $_REQUEST['filter'] = sanitize_search_string(get_request_var_request('filter'));
    }
    /* clean up sincereset string */
    if (isset($_REQUEST['sincereset'])) {
        $_REQUEST['sincereset'] = sanitize_search_string(get_request_var_request('sincereset'));
    }
    if (isset($_REQUEST['reset'])) {
        kill_session_var('sess_mikrotik_queues_sort_column');
        kill_session_var('sess_mikrotik_queues_sort_direction');
        kill_session_var('sess_mikrotik_queues_filter');
        kill_session_var('sess_mikrotik_queues_sincereset');
        kill_session_var('sess_default_rows');
        kill_session_var('sess_mikrotik_queues_device');
        kill_session_var('sess_mikrotik_queues_current_page');
    } elseif (isset($_REQUEST['clear'])) {
        kill_session_var('sess_mikrotik_queues_sort_column');
        kill_session_var('sess_mikrotik_queues_sort_direction');
        kill_session_var('sess_mikrotik_queues_filter');
        kill_session_var('sess_mikrotik_queues_sincereset');
        kill_session_var('sess_default_rows');
        kill_session_var('sess_mikrotik_queues_device');
        kill_session_var('sess_mikrotik_queues_current_page');
        unset($_REQUEST['sort_column']);
        unset($_REQUEST['sort_direction']);
        unset($_REQUEST['filter']);
        unset($_REQUEST['sincereset']);
        unset($_REQUEST['rows']);
        unset($_REQUEST['device']);
        unset($_REQUEST['page']);
    } else {
        /* if any of the settings changed, reset the page number */
        $changed = false;
        $changed += mikrotik_check_changed('filter', 'sess_mikrotik_queues_filter');
        $changed += mikrotik_check_changed('sincereset', 'sess_mikrotik_queues_sincereset');
        $changed += mikrotik_check_changed('rows', 'sess_default_rows');
        $changed += mikrotik_check_changed('device', 'sess_mikrotik_queues_device');
        if ($changed) {
            $_REQUEST['page'] = '1';
        }
    }
    load_current_session_value('page', 'sess_mikrotik_queues_current_page', '1');
    load_current_session_value('rows', 'sess_default_rows', read_config_option('num_rows_table'));
    load_current_session_value('device', 'sess_mikrotik_queues_device', '-1');
    load_current_session_value('sort_column', 'sess_mikrotik_queues_sort_column', 'name');
    load_current_session_value('sort_direction', 'sess_mikrotik_queues_sort_direction', 'ASC');
    load_current_session_value('filter', 'sess_mikrotik_queues_filter', '');
    load_current_session_value('sincereset', 'sess_mikrotik_queues_sincereset', '');
    ?>
	<script type='text/javascript'>
	function applyFilter() {
		strURL  = '?action=queues';
		strURL += '&filter='     + $('#filter').val();
		strURL += '&sincereset=' + $('#sincereset').is(':checked');
		strURL += '&rows='       + $('#rows').val();
		strURL += '&device='     + $('#device').val();
		strURL += '&header=false';
		loadPageNoHeader(strURL);
	}

	function clearFilter() {
		strURL  = '?action=queues&clear=&header=false';
		loadPageNoHeader(strURL);
	}

	$(function() {
		$('#form_queues').submit(function(event) {
			event.preventDefault();
			applyFilter();
		});
	});
	</script>
	<?php 
    html_start_box('<strong>Queue Status</strong>', '100%', $colors['header'], '3', 'center', '');
    ?>
	<tr class='even noprint'>
		<td>
		<form id='form_queues' action='mikrotik.php?action=queues'>
			<table class='filterTable'>
				<tr>
					<td>
						Search
					</td>
					<td>
						<input id='filter' type='text' size='25' value='<?php 
    print get_request_var_request('filter');
    ?>
'>
					</td>
					<td>
						Device
					</td>
					<td>
						<select id='device' onChange='applyFilter()'>
							<option value='-1'<?php 
    if (get_request_var_request('device') == '-1') {
        ?>
 selected<?php 
    }
    ?>
>All</option>
							<?php 
    $hosts = db_fetch_assoc('SELECT DISTINCT h.id, h.description
								FROM plugin_mikrotik_system AS hrs
								INNER JOIN host AS h
								ON hrs.host_id=h.id
								ORDER BY description');
    if (sizeof($hosts)) {
        foreach ($hosts as $h) {
            echo "<option value='" . $h['id'] . "' " . (get_request_var_request('device') == $h['id'] ? 'selected' : '') . '>' . $h['description'] . '</option>';
        }
    }
    ?>
						</select>
					</td>
					<td>
						Queues
					</td>
					<td>
						<select id='rows' onChange='applyFilter()'>
							<option value='-1'<?php 
    if (get_request_var_request('rows') == '-1') {
        ?>
 selected<?php 
    }
    ?>
>Default</option>
							<?php 
    if (sizeof($item_rows)) {
        foreach ($item_rows as $key => $name) {
            echo "<option value='" . $key . "' " . (get_request_var_request('rows') == $key ? 'selected' : '') . '>' . $name . '</option>';
        }
    }
    ?>
						</select>
					</td>
					<td>
						<label for='sincereset'>Since Reset</label>
					</td>
					<td>
						<input id='sincereset' type='checkbox' <?php 
    print $_REQUEST['sincereset'] == 'true' ? 'checked' : '';
    ?>
 onClick='applyFilter()'>
					</td>
					<td>
						<input id='refresh' type='button' onClick='applyFilter()' value='Go'>
					</td>
					<td>
						<input id='clear' type='button' onClick='clearFilter()' value='Clear'>
					</td>
				</tr>
			</table>
			<input type='hidden' id='page' name='page' value='<?php 
    print $_REQUEST['page'];
    ?>
'>
		</form>
		</td>
	</tr>
	<?php 
    html_end_box();
    html_start_box('', '100%', $colors['header'], '3', 'center', '');
    if ($_REQUEST['rows'] == '-1') {
        $num_rows = read_config_option('num_rows_table');
    } else {
        $num_rows = get_request_var_request('rows');
    }
    $limit = ' LIMIT ' . $num_rows * (get_request_var_request('page') - 1) . ',' . $num_rows;
    $sql_where = "WHERE mtq.name!='' AND mtq.name!='System Idle Process'";
    $sort_column = get_request_var_request('sort_column');
    if ($_REQUEST['sincereset'] == 'true') {
        $pref = '';
        if (strpos($sort_column, 'cur') !== false) {
            $sort_column = str_replace('cur', '', $sort_column);
        }
    } else {
        $pref = 'cur';
        if (strpos($sort_column, 'cur') === false) {
            switch ($sort_column) {
                case 'description':
                case 'name':
                case 'last_seen':
                case 'srcAddr':
                case 'dstAddr':
                    break;
                default:
                    $sort_column = $pref . $sort_column;
            }
        }
    }
    if ($_REQUEST['device'] != '-1') {
        $sql_where .= (strlen($sql_where) ? ' AND' : 'WHERE') . ' h.id=' . $_REQUEST['device'];
    }
    if ($_REQUEST['filter'] != '') {
        $sql_where .= (strlen($sql_where) ? ' AND' : 'WHERE') . " (h.description LIKE '%" . $_REQUEST['filter'] . "%' OR\n\t\t\tmtq.name LIKE '%" . $_REQUEST['filter'] . "%' OR\n\t\t\th.hostname LIKE '%" . $_REQUEST['filter'] . "%')";
    }
    $sql = "SELECT mtq.*, h.hostname, h.description, h.disabled\n\t\tFROM plugin_mikrotik_queues AS mtq\n\t\tINNER JOIN host AS h\n\t\tON h.id=mtq.host_id\n\t\tINNER JOIN plugin_mikrotik_system AS hrs\n\t\tON hrs.host_id=h.id\n\t\t{$sql_where}\n\t\tORDER BY " . $sort_column . " " . get_request_var_request("sort_direction") . " " . $limit;
    //echo $sql;
    $rows = db_fetch_assoc($sql);
    $total_rows = db_fetch_cell("SELECT COUNT(*)\n\t\tFROM plugin_mikrotik_queues AS mtq\n\t\tINNER JOIN host AS h\n\t\tON h.id=mtq.host_id\n\t\tINNER JOIN plugin_mikrotik_system AS hrs\n\t\tON hrs.host_id=h.id\n\t\t{$sql_where}");
    $nav = html_nav_bar('mikrotik.php?action=queues', MAX_DISPLAY_PAGES, get_request_var_request('page'), $num_rows, $total_rows, 14, 'Queues', 'page', 'main');
    print $nav;
    $display_text = array('nosort' => array('display' => 'Actions', 'sort' => '', 'align' => 'left'), 'description' => array('display' => 'Hostname', 'sort' => 'ASC', 'align' => 'left'), 'name' => array('display' => 'Name', 'sort' => 'DESC', 'align' => 'left'), 'srcAddr' => array('display' => 'Src Addr/Mask', 'sort' => 'DESC', 'align' => 'left'), 'dstAddr' => array('display' => 'Dst Addr/Mask', 'sort' => 'DESC', 'align' => 'left'), $pref . 'BytesIn' => array('display' => 'Bytes In', 'sort' => 'DESC', 'align' => 'right'), $pref . 'BytesOut' => array('display' => 'Bytes Out', 'sort' => 'DESC', 'align' => 'right'), $pref . 'PacketsIn' => array('display' => 'Pkts In', 'sort' => 'DESC', 'align' => 'right'), $pref . 'PacketsOut' => array('display' => 'Pkts Out', 'sort' => 'DESC', 'align' => 'right'), $pref . 'QueuesIn' => array('display' => 'Qs In', 'sort' => 'DESC', 'align' => 'right'), $pref . 'QueuesOut' => array('display' => 'Qs Out', 'sort' => 'DESC', 'align' => 'right'), $pref . 'DroppedIn' => array('display' => 'Drps In', 'sort' => 'DESC', 'align' => 'right'), $pref . 'DroppedOut' => array('display' => 'Drps Out', 'sort' => 'DESC', 'align' => 'right'), 'last_seen' => array('display' => 'Last Seen', 'sort' => 'ASC', 'align' => 'right'));
    html_header_sort($display_text, $sort_column, get_request_var_request('sort_direction'), false, 'mikrotik.php?action=queues');
    if (sizeof($rows)) {
        foreach ($rows as $row) {
            form_alternate_row();
            if (api_plugin_user_realm_auth('host.php')) {
                $host_url = "<a class='hyperLink' href='" . htmlspecialchars($config['url_path'] . 'host.php?action=edit&id=' . $row['host_id']) . "' title='Edit Hosts'>" . $row['hostname'] . "</a>\n";
            } else {
                $host_url = $row['hostname'];
            }
            $srcNet = mikrotik_get_network($row['srcMask']);
            $dstNet = mikrotik_get_network($row['dstMask']);
            $srcAM = $row['srcAddr'] . ($srcNet != 32 ? '/' . $srcNet : '');
            $dstAM = $row['dstAddr'] . ($dstNet != 32 ? '/' . $dstNet : '');
            echo "<td style='width:60px;'></td>";
            echo "<td style='text-align:left;white-space:nowrap;'><strong>" . (strlen($_REQUEST['filter']) ? preg_replace('/(' . preg_quote(get_request_var_request('filter'), '/') . ')/i', "<span class='filteredValue'>\\1</span>", htmlspecialchars($row['description']) . '</strong> [' . $host_url . ']') : htmlspecialchars($row['description']) . '</strong> [' . $host_url . ']') . '</td>';
            echo "<td style='text-align:left;'>" . (strlen($_REQUEST['filter']) ? preg_replace('/(' . preg_quote(get_request_var_request('filter'), '/') . ')/i', "<span class='filteredValue'>\\1</span>", htmlspecialchars($row['name'])) : htmlspecialchars($row['name'])) . '</td>';
            echo "<td style='text-align:left;'>" . (strlen($_REQUEST['filter']) ? preg_replace('/(' . preg_quote(get_request_var_request('filter'), '/') . ')/i', "<span class='filteredValue'>\\1</span>", $srcAM) : $srcAM) . '</td>';
            echo "<td style='text-align:left;'>" . (strlen($_REQUEST['filter']) ? preg_replace('/(' . preg_quote(get_request_var_request('filter'), '/') . ')/i', "<span class='filteredValue'>\\1</span>", $dstAM) : $dstAM) . '</td>';
            echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'BytesIn']) . '</td>';
            echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'BytesOut']) . '</td>';
            echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'PacketsIn']) . '</td>';
            echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'PacketsOut']) . '</td>';
            echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'QueuesIn']) . '</td>';
            echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'QueuesOut']) . '</td>';
            echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'DroppedIn']) . '</td>';
            echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'DroppedOut']) . '</td>';
            echo "<td style='text-align:right;'>" . (strlen($_REQUEST['filter']) ? preg_replace('/(' . preg_quote(get_request_var_request('filter'), '/') . ')/i', "<span class='filteredValue'>\\1</span>", $row['last_seen']) : $row['last_seen']) . '</td>';
            form_end_row();
        }
        print $nav;
    } else {
        print '<tr><td colspan="5"><em>No Simple Queues Found</em></td></tr>';
    }
    html_end_box();
}
Example #2
0
function mikrotik_queues()
{
    global $config, $item_rows, $queue_hashes;
    /* ================= input validation and session storage ================= */
    $filters = array('rows' => array('filter' => FILTER_VALIDATE_INT, 'pageset' => true, 'default' => read_config_option('num_rows_table')), 'page' => array('filter' => FILTER_VALIDATE_INT, 'default' => '1'), 'device' => array('filter' => FILTER_VALIDATE_INT, 'pageset' => true, 'default' => '-1'), 'active' => array('filter' => FILTER_CALLBACK, 'pageset' => true, 'default' => 'true', 'options' => array('options' => 'sanitize_search_string')), 'sincereset' => array('filter' => FILTER_CALLBACK, 'pageset' => true, 'default' => '', 'options' => array('options' => 'sanitize_search_string')), 'filter' => array('filter' => FILTER_CALLBACK, 'pageset' => true, 'default' => '', 'options' => array('options' => 'sanitize_search_string')), 'sort_column' => array('filter' => FILTER_CALLBACK, 'default' => 'name', 'options' => array('options' => 'sanitize_search_string')), 'sort_direction' => array('filter' => FILTER_CALLBACK, 'default' => 'ASC', 'options' => array('options' => 'sanitize_search_string')));
    validate_store_request_vars($filters, 'sess_mtq');
    /* ================= input validation ================= */
    ?>
	<script type='text/javascript'>
	function applyFilter() {
		strURL  = '?action=queues';
		strURL += '&filter='     + $('#filter').val();
		strURL += '&active='     + $('#active').is(':checked');
		strURL += '&sincereset=' + $('#sincereset').is(':checked');
		strURL += '&rows='       + $('#rows').val();
		strURL += '&device='     + $('#device').val();
		strURL += '&header=false';
		loadPageNoHeader(strURL);
	}

	function clearFilter() {
		strURL  = '?action=queues&clear=&header=false';
		loadPageNoHeader(strURL);
	}

	$(function() {
		$('#form_queues').submit(function(event) {
			event.preventDefault();
			applyFilter();
		});
	});
	</script>
	<?php 
    html_start_box(__('Queue Status'), '100%', '', '3', 'center', '');
    ?>
	<tr class='even noprint'>
		<td>
		<form id='form_queues' action='mikrotik.php?action=queues'>
			<table class='filterTable'>
				<tr>
					<td>
						<?php 
    print __('Search');
    ?>
					</td>
					<td>
						<input id='filter' type='text' size='25' value='<?php 
    print get_request_var('filter');
    ?>
'>
					</td>
					<td>
						<?php 
    print __('Device');
    ?>
					</td>
					<td>
						<select id='device' onChange='applyFilter()'>
							<option value='-1'<?php 
    if (get_request_var('device') == '-1') {
        ?>
 selected<?php 
    }
    ?>
><?php 
    print __('All');
    ?>
</option>
							<?php 
    $hosts = db_fetch_assoc('SELECT DISTINCT h.id, h.description
								FROM plugin_mikrotik_system AS hrs
								INNER JOIN host AS h
								ON hrs.host_id=h.id
								ORDER BY description');
    if (sizeof($hosts)) {
        foreach ($hosts as $h) {
            echo "<option value='" . $h['id'] . "' " . (get_request_var('device') == $h['id'] ? 'selected' : '') . '>' . $h['description'] . '</option>';
        }
    }
    ?>
						</select>
					</td>
					<td>
						<?php 
    print __('Queues');
    ?>
					</td>
					<td>
						<select id='rows' onChange='applyFilter()'>
							<option value='-1'<?php 
    if (get_request_var('rows') == '-1') {
        ?>
 selected<?php 
    }
    ?>
><?php 
    print __('Default');
    ?>
</option>
							<?php 
    if (sizeof($item_rows)) {
        foreach ($item_rows as $key => $name) {
            echo "<option value='" . $key . "' " . (get_request_var('rows') == $key ? 'selected' : '') . '>' . $name . '</option>';
        }
    }
    ?>
						</select>
					</td>
					<td>
						<label for='active'><?php 
    print __('Active');
    ?>
</label>
					</td>
					<td>
						<input id='active' type='checkbox' <?php 
    print get_request_var('active') == 'true' ? 'checked' : '';
    ?>
 onClick='applyFilter()'>
					</td>
					<td>
						<label for='sincereset'><?php 
    print __('Since Reset');
    ?>
</label>
					</td>
					<td>
						<input id='sincereset' type='checkbox' <?php 
    print get_request_var('sincereset') == 'true' ? 'checked' : '';
    ?>
 onClick='applyFilter()'>
					</td>
					<td>
						<input id='refresh' type='button' onClick='applyFilter()' value='<?php 
    print __('Go');
    ?>
'>
					</td>
					<td>
						<input id='clear' type='button' onClick='clearFilter()' value='<?php 
    print __('Clear');
    ?>
'>
					</td>
				</tr>
			</table>
			<input type='hidden' id='page' name='page' value='<?php 
    print get_request_var('page');
    ?>
'>
		</form>
		</td>
	</tr>
	<?php 
    html_end_box();
    if (get_request_var('rows') == '-1') {
        $num_rows = read_config_option('num_rows_table');
    } else {
        $num_rows = get_request_var('rows');
    }
    $limit = ' LIMIT ' . $num_rows * (get_request_var('page') - 1) . ',' . $num_rows;
    $sql_where = "WHERE mtq.name!=''";
    $sort_column = get_request_var('sort_column');
    if (get_request_var('sincereset') == 'true') {
        if (get_request_var('active') == 'true') {
            $sql_where .= (strlen($sql_where) ? ' AND' : 'WHERE') . ' (BytesIn>0 or BytesOut>0)';
        }
        $pref = '';
        if (strpos($sort_column, 'cur') !== false) {
            $sort_column = str_replace('cur', '', $sort_column);
        }
    } else {
        if (get_request_var('active') == 'true') {
            $sql_where .= (strlen($sql_where) ? ' AND' : 'WHERE') . ' (curBytesIn>0 or curBytesOut>0)';
        }
        $pref = 'cur';
        if (strpos($sort_column, 'cur') === false) {
            switch ($sort_column) {
                case 'description':
                case 'name':
                case 'last_seen':
                case 'srcAddr':
                case 'dstAddr':
                    break;
                default:
                    $sort_column = $pref . $sort_column;
            }
        }
    }
    if (get_request_var('device') != '-1') {
        $sql_where .= (strlen($sql_where) ? ' AND' : 'WHERE') . ' h.id=' . get_request_var('device');
    }
    if (get_request_var('filter') != '') {
        $sql_where .= (strlen($sql_where) ? ' AND' : 'WHERE') . " (h.description LIKE '%" . get_request_var('filter') . "%' OR\n\t\t\tmtq.name LIKE '%" . get_request_var('filter') . "%' OR\n\t\t\th.hostname LIKE '%" . get_request_var('filter') . "%')";
    }
    $sql = "SELECT mtq.*, h.hostname, h.description, h.disabled\n\t\tFROM plugin_mikrotik_queues AS mtq\n\t\tINNER JOIN host AS h\n\t\tON h.id=mtq.host_id\n\t\tINNER JOIN plugin_mikrotik_system AS hrs\n\t\tON hrs.host_id=h.id\n\t\t{$sql_where}\n\t\tORDER BY " . $sort_column . " " . get_request_var("sort_direction") . " " . $limit;
    //echo $sql;
    $rows = db_fetch_assoc($sql);
    $total_rows = db_fetch_cell("SELECT COUNT(*)\n\t\tFROM plugin_mikrotik_queues AS mtq\n\t\tINNER JOIN host AS h\n\t\tON h.id=mtq.host_id\n\t\tINNER JOIN plugin_mikrotik_system AS hrs\n\t\tON hrs.host_id=h.id\n\t\t{$sql_where}");
    $nav = html_nav_bar('mikrotik.php?action=queues', MAX_DISPLAY_PAGES, get_request_var('page'), $num_rows, $total_rows, 14, __('Queues'), 'page', 'main');
    print $nav;
    html_start_box('', '100%', '', '3', 'center', '');
    $display_text = array('nosort' => array('display' => __('Actions'), 'sort' => '', 'align' => 'left'), 'description' => array('display' => __('Hostname'), 'sort' => 'ASC', 'align' => 'left'), 'name' => array('display' => __('Name'), 'sort' => 'DESC', 'align' => 'left'), 'srcAddr' => array('display' => __('Src Addr/Mask'), 'sort' => 'DESC', 'align' => 'left'), 'dstAddr' => array('display' => __('Dst Addr/Mask'), 'sort' => 'DESC', 'align' => 'left'), $pref . 'BytesIn' => array('display' => __('Bytes In'), 'sort' => 'DESC', 'align' => 'right'), $pref . 'BytesOut' => array('display' => __('Bytes Out'), 'sort' => 'DESC', 'align' => 'right'), $pref . 'PacketsIn' => array('display' => __('Pkts In'), 'sort' => 'DESC', 'align' => 'right'), $pref . 'PacketsOut' => array('display' => __('Pkts Out'), 'sort' => 'DESC', 'align' => 'right'), $pref . 'QueuesIn' => array('display' => __('Qs In'), 'sort' => 'DESC', 'align' => 'right'), $pref . 'QueuesOut' => array('display' => __('Qs Out'), 'sort' => 'DESC', 'align' => 'right'), $pref . 'DroppedIn' => array('display' => __('Drps In'), 'sort' => 'DESC', 'align' => 'right'), $pref . 'DroppedOut' => array('display' => __('Drps Out'), 'sort' => 'DESC', 'align' => 'right'), 'last_seen' => array('display' => __('Last Seen'), 'sort' => 'ASC', 'align' => 'right'));
    html_header_sort($display_text, $sort_column, get_request_var('sort_direction'), false, 'mikrotik.php?action=queues');
    if (sizeof($rows)) {
        foreach ($rows as $row) {
            form_alternate_row();
            $graphs = mikrotik_graphs_url_by_template_hashs($queue_hashes, $row['host_id'], str_replace(' ', '%', $row['name']));
            if (api_plugin_user_realm_auth('host.php')) {
                $host_url = "<a class='hyperLink' href='" . htmlspecialchars($config['url_path'] . 'host.php?action=edit&id=' . $row['host_id']) . "' title='Edit Device'>" . (strlen(get_request_var('filter')) ? preg_replace('/(' . preg_quote(get_request_var('filter'), '/') . ')/i', "<span class='filteredValue'>\\1</span>", $row['description']) : $row['description']) . '</a>';
            } else {
                $host_url = $row['hostname'];
            }
            $srcNet = mikrotik_get_network($row['srcMask']);
            $dstNet = mikrotik_get_network($row['dstMask']);
            $srcAM = $row['srcAddr'] . ($srcNet != 32 ? '/' . $srcNet : '');
            $dstAM = $row['dstAddr'] . ($dstNet != 32 ? '/' . $dstNet : '');
            echo "<td style='width:60px;'>{$graphs}</td>";
            echo "<td style='text-align:left;white-space:nowrap;'>" . $host_url . '</td>';
            echo "<td style='text-align:left;'>" . (strlen(get_request_var('filter')) ? preg_replace('/(' . preg_quote(get_request_var('filter'), '/') . ')/i', "<span class='filteredValue'>\\1</span>", htmlspecialchars($row['name'])) : htmlspecialchars($row['name'])) . '</td>';
            echo "<td style='text-align:left;'>" . (strlen(get_request_var('filter')) ? preg_replace('/(' . preg_quote(get_request_var('filter'), '/') . ')/i', "<span class='filteredValue'>\\1</span>", $srcAM) : $srcAM) . '</td>';
            echo "<td style='text-align:left;'>" . (strlen(get_request_var('filter')) ? preg_replace('/(' . preg_quote(get_request_var('filter'), '/') . ')/i', "<span class='filteredValue'>\\1</span>", $dstAM) : $dstAM) . '</td>';
            echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'BytesIn']) . '</td>';
            echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'BytesOut']) . '</td>';
            echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'PacketsIn']) . '</td>';
            echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'PacketsOut']) . '</td>';
            echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'QueuesIn']) . '</td>';
            echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'QueuesOut']) . '</td>';
            echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'DroppedIn']) . '</td>';
            echo "<td style='text-align:right;'>" . mikrotik_memory($row[$pref . 'DroppedOut']) . '</td>';
            echo "<td style='text-align:right;'>" . (strlen(get_request_var('filter')) ? preg_replace('/(' . preg_quote(get_request_var('filter'), '/') . ')/i', "<span class='filteredValue'>\\1</span>", $row['last_seen']) : $row['last_seen']) . '</td>';
            form_end_row();
        }
    } else {
        print '<tr><td colspan="5"><em>' . __('No Simple Queues Found') . '</em></td></tr>';
    }
    html_end_box();
    if (sizeof($rows)) {
        print $nav;
    }
    echo '<script type="text/javascript">$(function() { $("a.hyperLink, img").tooltip(); });</script>';
}