Issues (2963)

includes/html/reports/ports.csv.inc.php (1 issue)

1
<?php
2
3
$param = [];
4
5
if (! isset($vars['ignore'])) {
6
    $vars['ignore'] = 0;
7
}
8
9
if (! isset($vars['disabled'])) {
10
    $vars['disabled'] = 0;
11
}
12
13
if (! isset($vars['deleted'])) {
14
    $vars['deleted'] = 0;
15
}
16
17
$where = '';
18
19
foreach ($vars as $var => $value) {
20
    $value = trim($value);
21
    if ($value != '') {
22
        switch ($var) {
23
            case 'hostname':
24
                $where .= ' AND D.hostname LIKE ?';
25
                $param[] = '%' . $value . '%';
26
                break;
27
28
            case 'location':
29
                $where .= ' AND D.location LIKE ?';
30
                $param[] = '%' . $value . '%';
31
                break;
32
33
            case 'device_id':
34
                $where .= ' AND D.device_id = ?';
35
                $param[] = $value;
36
                break;
37
38
            case 'deleted':
39
                if ($value == 1 || $value == 'yes') {
40
                    $where .= ' AND I.deleted = 1';
41
                }
42
                break;
43
44
            case 'disabled':
45
                if ($value == 1 || $value == 'yes') {
46
                    $where .= ' AND I.disabled = 1';
47
                }
48
                break;
49
50
            case 'ignore':
51
                if ($value == 1 || $value == 'yes') {
52
                    $where .= ' AND (I.ignore = 1 OR D.ignore = 1)';
53
                }
54
                break;
55
56
            case 'disable':
57
            case 'ifSpeed':
58
                if (is_numeric($value)) {
59
                    $where .= " AND I.$var = ?";
60
                    $param[] = $value;
61
                }
62
                break;
63
64
            case 'ifType':
65
                $where .= " AND I.$var = ?";
66
                $param[] = $value;
67
                break;
68
69
            case 'ifAlias':
70
            case 'port_descr_type':
71
                $where .= " AND I.$var LIKE ?";
72
                $param[] = '%' . $value . '%';
73
                break;
74
75
            case 'errors':
76
                if ($value == 1 || $value = 'yes') {
77
                    $where .= " AND (I.`ifInErrors_delta` > '0' OR I.`ifOutErrors_delta` > '0')";
78
                }
79
                break;
80
81
            case 'state':
82
                if ($value == 'down') {
83
                    $where .= ' AND I.ifAdminStatus = ? AND I.ifOperStatus = ?';
84
                    $param[] = 'up';
85
                    $param[] = 'down';
86
                } elseif ($value == 'up') {
87
                    $where .= ' AND I.ifAdminStatus = ? AND I.ifOperStatus = ?  AND I.ignore = 0 AND D.ignore = 0 AND I.deleted = 0';
88
                    $param[] = 'up';
89
                    $param[] = 'up';
90
                } elseif ($value == 'admindown') {
91
                    $where .= ' AND I.ifAdminStatus = ? AND D.ignore = 0';
92
                    $param[] = 'down';
93
                }
94
                break;
95
        }//end switch
96
    }//end if
97
}//end foreach
98
99
$query = 'SELECT * FROM `ports` AS I, `devices` AS D WHERE I.device_id = D.device_id ' . $where . ' ' . $query_sort;
100
101
$row = 1;
102
103
[$format, $subformat] = explode('_', $vars['format']);
0 ignored issues
show
Comprehensibility Best Practice introduced by
This list assign is not used and could be removed.
Loading history...
104
105
$ports = dbFetchRows($query, $param);
106
107
switch ($vars['sort']) {
108
    case 'traffic':
109
        $ports = array_sort_by_column($ports, 'ifOctets_rate', SORT_DESC);
110
        break;
111
112
    case 'traffic_in':
113
        $ports = array_sort_by_column($ports, 'ifInOctets_rate', SORT_DESC);
114
        break;
115
116
    case 'traffic_out':
117
        $ports = array_sort_by_column($ports, 'ifOutOctets_rate', SORT_DESC);
118
        break;
119
120
    case 'packets':
121
        $ports = array_sort_by_column($ports, 'ifUcastPkts_rate', SORT_DESC);
122
        break;
123
124
    case 'packets_in':
125
        $ports = array_sort_by_column($ports, 'ifInUcastOctets_rate', SORT_DESC);
126
        break;
127
128
    case 'packets_out':
129
        $ports = array_sort_by_column($ports, 'ifOutUcastOctets_rate', SORT_DESC);
130
        break;
131
132
    case 'errors':
133
        $ports = array_sort_by_column($ports, 'ifErrors_rate', SORT_DESC);
134
        break;
135
136
    case 'speed':
137
        $ports = array_sort_by_column($ports, 'ifSpeed', SORT_DESC);
138
        break;
139
140
    case 'port':
141
        $ports = array_sort_by_column($ports, 'ifDescr', SORT_ASC);
142
        break;
143
144
    case 'media':
145
        $ports = array_sort_by_column($ports, 'ifType', SORT_ASC);
146
        break;
147
148
    case 'descr':
149
        $ports = array_sort_by_column($ports, 'ifAlias', SORT_ASC);
150
        break;
151
152
    case 'device':
153
    default:
154
        $ports = array_sort_by_column($ports, 'hostname', SORT_ASC);
155
}//end switch
156
157
$csv[] = [
158
    'Device',
159
    'Port',
160
    'Speed',
161
    'Down',
162
    'Up',
163
    'Media',
164
    'Description',
165
];
166
167
foreach ($ports as $port) {
168
    if (port_permitted($port['port_id'], $port['device_id'])) {
169
        $speed = \LibreNMS\Util\Number::formatSi($port['ifSpeed'], 2, 3, 'bps');
170
        $type = \LibreNMS\Util\Rewrite::normalizeIfType($port['ifType']);
171
        $port['in_rate'] = \LibreNMS\Util\Number::formatSi(($port['ifInOctets_rate'] * 8), 2, 3, 'bps');
172
        $port['out_rate'] = \LibreNMS\Util\Number::formatSi(($port['ifOutOctets_rate'] * 8), 2, 3, 'bps');
173
        $port = cleanPort($port, $device);
174
        $csv[] = [
175
            format_hostname($port, $port['hostname']),
176
            \LibreNMS\Util\Rewrite::normalizeIfName($port['label']),
177
            $speed,
178
            $port['in_rate'],
179
            $port['out_rate'],
180
            $type,
181
            \LibreNMS\Util\Clean::html($port['ifAlias'], []),
182
        ];
183
    }
184
}
185