3241 |
rexy |
1 |
<!DOCTYPE html>
|
|
|
2 |
<html lang="en">
|
|
|
3 |
<head>
|
|
|
4 |
<meta charset="utf-8">
|
|
|
5 |
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
|
6 |
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
|
7 |
<title>nfsen-ng</title>
|
|
|
8 |
<script src="js/jquery.min.js"></script>
|
|
|
9 |
<script src="js/popper.min.js"></script>
|
|
|
10 |
<script src="js/bootstrap.min.js"></script>
|
|
|
11 |
<script src="js/ion.rangeSlider.min.js"></script>
|
|
|
12 |
<script src="js/dygraph.min.js"></script>
|
|
|
13 |
<script src="js/footable.min.js"></script>
|
|
|
14 |
<link rel="stylesheet" type="text/css" href="css/dygraph.css" />
|
|
|
15 |
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css" />
|
|
|
16 |
<link rel="stylesheet" type="text/css" href="css/ion.rangeSlider.css" />
|
|
|
17 |
<link rel="stylesheet" type="text/css" href="css/footable.bootstrap.min.css" />
|
|
|
18 |
<link rel="stylesheet" type="text/css" href="css/nfsen-ng.css" />
|
|
|
19 |
</head>
|
|
|
20 |
|
|
|
21 |
<body class="p-2">
|
|
|
22 |
<header>
|
|
|
23 |
<a class="position-absolute link-secondary" style="text-decoration: none;" href="https://github.com/mbolli/nfsen-ng" target="_blank">
|
|
|
24 |
nfsen-ng <span id="version"></span>
|
|
|
25 |
</a>
|
|
|
26 |
<ul id="viewList" class="nav nav-tabs justify-content-end" role="tablist">
|
|
|
27 |
<li role="presentation" class="nav-item align-self-center">
|
|
|
28 |
<a href="#" class="reload px-3"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-door-fill" viewBox="0 0 16 16">
|
|
|
29 |
<path d="M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5"/>
|
|
|
30 |
</svg></a>
|
|
|
31 |
</li>
|
|
|
32 |
<li role="presentation" class="nav-item">
|
|
|
33 |
<a class="nav-link active" data-view="graphs" href="#">Graphs <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-graph-up" viewBox="0 0 16 16">
|
|
|
34 |
<path fill-rule="evenodd" d="M0 0h1v15h15v1H0zm14.817 3.113a.5.5 0 0 1 .07.704l-4.5 5.5a.5.5 0 0 1-.74.037L7.06 6.767l-3.656 5.027a.5.5 0 0 1-.808-.588l4-5.5a.5.5 0 0 1 .758-.06l2.609 2.61 4.15-5.073a.5.5 0 0 1 .704-.07"/>
|
|
|
35 |
</svg>
|
|
|
36 |
</a>
|
|
|
37 |
</li>
|
|
|
38 |
<li role="presentation" class="nav-item">
|
|
|
39 |
<a class="nav-link" data-view="flows" href="#">Flows <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-zoom-in" viewBox="0 0 16 16">
|
|
|
40 |
<path fill-rule="evenodd" d="M6.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11M13 6.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0"/>
|
|
|
41 |
<path d="M10.344 11.742q.044.06.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1 1 0 0 0-.115-.1 6.5 6.5 0 0 1-1.398 1.4z"/>
|
|
|
42 |
<path fill-rule="evenodd" d="M6.5 3a.5.5 0 0 1 .5.5V6h2.5a.5.5 0 0 1 0 1H7v2.5a.5.5 0 0 1-1 0V7H3.5a.5.5 0 0 1 0-1H6V3.5a.5.5 0 0 1 .5-.5"/>
|
|
|
43 |
</svg>
|
|
|
44 |
</a>
|
|
|
45 |
</li>
|
|
|
46 |
<li role="presentation" class="nav-item">
|
|
|
47 |
<a class="nav-link" data-view="statistics" href="#">Statistics <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-list-columns" viewBox="0 0 16 16">
|
|
|
48 |
<path fill-rule="evenodd" d="M0 .5A.5.5 0 0 1 .5 0h9a.5.5 0 0 1 0 1h-9A.5.5 0 0 1 0 .5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2A.5.5 0 0 1 .5 2h8a.5.5 0 0 1 0 1h-8a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2A.5.5 0 0 1 .5 4h10a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2A.5.5 0 0 1 .5 6h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2A.5.5 0 0 1 .5 8h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-13 2a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5m13 0a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5"/>
|
|
|
49 |
</svg>
|
|
|
50 |
</a>
|
|
|
51 |
</li>
|
3242 |
rexy |
52 |
</ul>
|
3241 |
rexy |
53 |
</header>
|
|
|
54 |
<div id="filterContainer" class="container-fluid tab-content">
|
|
|
55 |
<form autocomplete="off">
|
|
|
56 |
<div id="filter" class="filter row align-items-start bg-light border-bottom py-3" style="flex-direction: row">
|
|
|
57 |
<div class="date_selection col-12 p-3 mb-4 border-bottom">
|
|
|
58 |
<div class="mb-3">
|
|
|
59 |
<input type="text" name="date_range" id="date_range"/>
|
|
|
60 |
</div>
|
|
|
61 |
|
|
|
62 |
<div class="float-end">
|
|
|
63 |
<div class="btn-group" id="date_slot" data-bs-toggle="buttons">
|
|
|
64 |
<input type="radio" class="btn-check" name="range" data-unit="h" id="dateSlotH" value="3600000">
|
|
|
65 |
<label class="btn btn-outline-primary" for="dateSlotH">1 hour</label>
|
|
|
66 |
<input type="radio" class="btn-check" name="range" data-unit="d" id="dateSlotD" value="86400000">
|
|
|
67 |
<label class="btn btn-outline-primary" for="dateSlotD">24 hours</label>
|
|
|
68 |
<input type="radio" class="btn-check" name="range" data-unit="w" id="dateSlotW" value="604800000">
|
|
|
69 |
<label class="btn btn-outline-primary" for="dateSlotW">Week</label>
|
|
|
70 |
<input type="radio" class="btn-check" name="range" data-unit="m" id="dateSlotM" value="2592000000">
|
|
|
71 |
<label class="btn btn-outline-primary" for="dateSlotM">Month</label>
|
|
|
72 |
<input type="radio" class="btn-check" name="range" data-unit="y" id="dateSlotY" value="31536000000">
|
|
|
73 |
<label class="btn btn-outline-primary" for="dateSlotY">Year</label>
|
|
|
74 |
</div>
|
|
|
75 |
|
|
|
76 |
<div class="btn-group" id="date_slot_nav">
|
|
|
77 |
<button type="button" class="btn btn-outline-primary prev" disabled><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-left" viewBox="0 0 16 16">
|
|
|
78 |
<path fill-rule="evenodd" d="M15 8a.5.5 0 0 0-.5-.5H2.707l3.147-3.146a.5.5 0 1 0-.708-.708l-4 4a.5.5 0 0 0 0 .708l4 4a.5.5 0 0 0 .708-.708L2.707 8.5H14.5A.5.5 0 0 0 15 8"/>
|
|
|
79 |
</svg></button>
|
|
|
80 |
<button type="button" class="btn btn-outline-primary next" disabled><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-right" viewBox="0 0 16 16">
|
|
|
81 |
<path fill-rule="evenodd" d="M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8"/>
|
|
|
82 |
</svg></button>
|
|
|
83 |
</div>
|
|
|
84 |
|
|
|
85 |
<div class="btn-group" id="date_syncing" data-view="graphs">
|
|
|
86 |
<button type="button" class="btn btn-outline-primary sync-date" disabled>Copy from graph <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-repeat" viewBox="0 0 16 16">
|
|
|
87 |
<path d="M11.534 7h3.932a.25.25 0 0 1 .192.41l-1.966 2.36a.25.25 0 0 1-.384 0l-1.966-2.36a.25.25 0 0 1 .192-.41m-11 2h3.932a.25.25 0 0 0 .192-.41L2.692 6.23a.25.25 0 0 0-.384 0L.342 8.59A.25.25 0 0 0 .534 9"/>
|
|
|
88 |
<path fill-rule="evenodd" d="M8 3c-1.552 0-2.94.707-3.857 1.818a.5.5 0 1 1-.771-.636A6.002 6.002 0 0 1 13.917 7H12.9A5 5 0 0 0 8 3M3.1 9a5.002 5.002 0 0 0 8.757 2.182.5.5 0 1 1 .771.636A6.002 6.002 0 0 1 2.083 9z"/>
|
|
|
89 |
</svg></button>
|
|
|
90 |
</div>
|
|
|
91 |
</div>
|
|
|
92 |
</div>
|
|
|
93 |
<div id="filterDisplay" class="d-none col-xs-6 col-sm-2" data-view="graphs">
|
|
|
94 |
<p class="h6">Display</p>
|
|
|
95 |
|
|
|
96 |
<div class="form-group">
|
|
|
97 |
<select id="filterDisplaySelect" class="form-control form-select">
|
|
|
98 |
<option value="sources">Sources</option>
|
|
|
99 |
<option value="protocols">Protocols</option>
|
|
|
100 |
<option value="ports">Ports</option>
|
|
|
101 |
</select>
|
|
|
102 |
</div>
|
|
|
103 |
</div>
|
|
|
104 |
|
|
|
105 |
<div id="filterPorts" class="d-none col-xs-6 col-sm-2 col-md-1" data-view="graphs" data-display="ports">
|
|
|
106 |
<p class="h6">Ports</p>
|
|
|
107 |
|
|
|
108 |
<div class="form-group">
|
|
|
109 |
<select id="filterPortsSelect" multiple class="form-control form-select"></select>
|
|
|
110 |
</div>
|
|
|
111 |
</div>
|
|
|
112 |
|
|
|
113 |
<div id="filterSources" class="d-none col-xs-6 col-sm-3 col-md-2" data-view="graphs flows statistics" data-display="sources protocols ports">
|
|
|
114 |
<p class="h6">Sources</p>
|
|
|
115 |
|
|
|
116 |
<div class="form-group">
|
|
|
117 |
<select id="filterSourcesSelect" multiple class="form-control form-select">
|
|
|
118 |
<option value="any">Any</option>
|
|
|
119 |
</select>
|
|
|
120 |
</div>
|
|
|
121 |
</div>
|
|
|
122 |
|
|
|
123 |
<div id="filterProtocols" class="d-none col-xs-12 col-sm-6 col-md-4 col-lg-3" data-view="graphs" data-display="sources protocols ports">
|
|
|
124 |
<p class="h6">Protocols</p>
|
|
|
125 |
|
|
|
126 |
<div id="filterProtocolButtons" class="btn-group btn-group-md" data-bs-toggle="buttons">
|
|
|
127 |
<input type="radio" class="btn-check" name="protocol[]" value="any" id="filterProtocolAny">
|
|
|
128 |
<label class="btn btn-outline-primary" for="filterProtocolAny">Any</label>
|
|
|
129 |
<input type="radio" class="btn-check" name="protocol[]" value="tcp" id="filterProtocolTcp">
|
|
|
130 |
<label class="btn btn-outline-primary" for="filterProtocolTcp">TCP</label>
|
|
|
131 |
<input type="radio" class="btn-check" name="protocol[]" value="udp" id="filterProtocolUdp">
|
|
|
132 |
<label class="btn btn-outline-primary" for="filterProtocolUdp">UDP</label>
|
|
|
133 |
<input type="radio" class="btn-check" name="protocol[]" value="icmp" id="filterProtocolIcmp">
|
|
|
134 |
<label class="btn btn-outline-primary" for="filterProtocolIcmp">ICMP</label>
|
|
|
135 |
<input type="radio" class="btn-check" name="protocol[]" value="other" id="filterProtocolOther">
|
|
|
136 |
<label class="btn btn-outline-primary" for="filterProtocolOther">Others</label>
|
|
|
137 |
</div>
|
|
|
138 |
</div>
|
|
|
139 |
|
|
|
140 |
<div id="filterTypes" class="d-none col-xs-12 col-sm-6 col-md-3 col-lg-2" data-view="graphs" data-display="sources protocols ports">
|
|
|
141 |
<p class="h6">Data Type</p>
|
|
|
142 |
|
|
|
143 |
<div class="btn-group btn-group-md" data-bs-toggle="buttons">
|
|
|
144 |
<input type="radio" class="btn-check" name="datatype" value="traffic" id="dataTypeTraffic" checked>
|
|
|
145 |
<label class="btn btn-outline-primary" for="dataTypeTraffic">Traffic</label>
|
|
|
146 |
<input type="radio" class="btn-check" name="datatype" value="packets" id="dataTypePackets">
|
|
|
147 |
<label class="btn btn-outline-primary" for="dataTypePackets">Packets</label>
|
|
|
148 |
<input type="radio" class="btn-check" name="datatype" value="flows" id="dataTypeFlows">
|
|
|
149 |
<label class="btn btn-outline-primary" for="dataTypeFlows">Flows</label>
|
|
|
150 |
</div>
|
|
|
151 |
</div>
|
|
|
152 |
|
|
|
153 |
<div id="trafficUnit" class="d-none col-xs-6 col-sm-3 col-md-2 col-lg-2" data-view="graphs" data-display="sources protocols ports">
|
|
|
154 |
<p class="h6">Traffic unit</p>
|
|
|
155 |
|
|
|
156 |
<div class="btn-group btn-group-md" data-bs-toggle="buttons">
|
|
|
157 |
<input type="radio" class="btn-check" name="trafficUnit" value="bits" id="trafficUnitBits" checked>
|
|
|
158 |
<label class="btn btn-outline-primary" for="trafficUnitBits">Bits</label>
|
|
|
159 |
<input type="radio" class="btn-check" name="trafficUnit" value="bytes" id="trafficUnitBytes">
|
|
|
160 |
<label class="btn btn-outline-primary" for="trafficUnitBytes">Bytes</label>
|
|
|
161 |
</div>
|
|
|
162 |
</div>
|
|
|
163 |
|
|
|
164 |
<div id="filterFlowsLimit" class="d-none col-xs-6 col-sm-2 col-md-2 col-lg-1" data-view="flows">
|
|
|
165 |
<p class="h6">Limit Flows</p>
|
|
|
166 |
|
|
|
167 |
<div class="form-group">
|
|
|
168 |
<select id="flowsFilterLimitSelection" class="form-control form-select">
|
|
|
169 |
<option value="20">20</option>
|
|
|
170 |
<option value="50" >50</option>
|
|
|
171 |
<option value="100" >100</option>
|
|
|
172 |
<option value="500" >500</option>
|
|
|
173 |
<option value="1000" >1000</option>
|
|
|
174 |
<option value="10000" >10000</option>
|
|
|
175 |
</select>
|
|
|
176 |
</div>
|
|
|
177 |
</div>
|
|
|
178 |
|
|
|
179 |
<div id="filterStatisticsTop" class="d-none col-xs-6 col-sm-2 col-md-2 col-lg-1" data-view="statistics">
|
|
|
180 |
<p class="h6">Top records</p>
|
|
|
181 |
<div class="form-group">
|
|
|
182 |
<select id="statsFilterTopSelection" class="form-control form-select">
|
|
|
183 |
<option value="10" selected>10</option>
|
|
|
184 |
<option value="20">20</option>
|
|
|
185 |
<option value="50">50</option>
|
|
|
186 |
<option value="100">100</option>
|
|
|
187 |
<option value="200">200</option>
|
|
|
188 |
<option value="500">500</option>
|
|
|
189 |
</select>
|
|
|
190 |
</div>
|
|
|
191 |
</div>
|
|
|
192 |
|
|
|
193 |
|
|
|
194 |
<div id="filterNfdump" class="d-none col-xs-12 col-sm-7 col-md-5" data-view="graphs flows statistics">
|
|
|
195 |
|
|
|
196 |
<p class="h6">NFDUMP filter <span aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="right" title="The filter syntax is similar to the well known pcap library used by tcpdump. All keywords are case-independent. Example: dst port 80"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-info-circle-fill" viewBox="0 0 16 16">
|
|
|
197 |
<path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2"/>
|
|
|
198 |
</svg></span></p>
|
|
|
199 |
|
|
|
200 |
<div class="form-group">
|
|
|
201 |
<textarea class="form-control" id="filterNfdumpTextarea" rows="3" autocomplete="on"></textarea>
|
|
|
202 |
</div>
|
|
|
203 |
|
|
|
204 |
<div class="btn-group">
|
|
|
205 |
<div id="filterFilters" class="form-group">
|
|
|
206 |
<label class="form-control" >Filters</label>
|
|
|
207 |
<select id="filterFiltersSelect" class="form-control form-select" title="Filters" style="">
|
|
|
208 |
<option value="" disabled selected>Select your filter</option>
|
|
|
209 |
</select>
|
|
|
210 |
</div>
|
|
|
211 |
|
|
|
212 |
<button id="filterFiltersButtonRemove" type="button" class="btn btn-outline-primary" >Delete filter (server)</button>
|
|
|
213 |
<button id="filterFiltersButtonSave" type="button" class="btn btn-outline-primary" >Save filter (server)</button>
|
|
|
214 |
</div>
|
|
|
215 |
|
|
|
216 |
</div>
|
|
|
217 |
|
|
|
218 |
<div id="filterFlowAggregation" class="col">
|
|
|
219 |
<div class="d-none" data-view="flows">
|
|
|
220 |
|
|
|
221 |
<p class="h6">Global Aggregation</p>
|
|
|
222 |
<div class="btn-group btn-group-md" data-bs-toggle="buttons" id="filterFlowAggregationGlobal">
|
|
|
223 |
<input type="checkbox" class="btn-check" name="bidirectional" id="filterFlowAggregationGlobalBi">
|
|
|
224 |
<label class="btn btn-outline-primary" for="filterFlowAggregationGlobalBi">Bi-directional</label>
|
|
|
225 |
|
|
|
226 |
<input data-disable-on="bi-directional" type="checkbox" class="btn-check" name="proto" id="filterFlowAggregationGlobalProto">
|
|
|
227 |
<label class="btn btn-outline-primary" for="filterFlowAggregationGlobalProto">Protocol</label>
|
|
|
228 |
</div>
|
|
|
229 |
|
|
|
230 |
</div>
|
|
|
231 |
<div class="d-none" data-view="flows">
|
|
|
232 |
<p class="h6">Port Aggregation</p>
|
|
|
233 |
<div class="btn-group btn-group-md" data-bs-toggle="buttons" id="filterFlowAggregationPort">
|
|
|
234 |
<input data-disable-on="bi-directional" type="checkbox" class="btn-check" name="srcport" id="filterFlowAggregationPortSrc">
|
|
|
235 |
<label class="btn btn-outline-primary" for="filterFlowAggregationPortSrc">Source port</label>
|
|
|
236 |
|
|
|
237 |
<input data-disable-on="bi-directional" type="checkbox" class="btn-check" name="dstport" id="filterFlowAggregationPortDst">
|
|
|
238 |
<label class="btn btn-outline-primary" for="filterFlowAggregationPortDst">Destination port</label>
|
|
|
239 |
</div>
|
|
|
240 |
</div>
|
|
|
241 |
|
|
|
242 |
<div class="d-none" data-view="flows">
|
|
|
243 |
<p class="h6">IP Aggregation</p>
|
|
|
244 |
<div class="row">
|
|
|
245 |
<div class="col-xs-6 col-sm-6">
|
|
|
246 |
<label>Source</label><br>
|
|
|
247 |
<div class="form-group">
|
|
|
248 |
<select data-disable-on="bi-directional" data-kind="source" name="srcip" id="filterFlowAggregationSourceAddressSelect" class="form-control form-select float-start" style="width: 70%">
|
|
|
249 |
<option value="none">No aggregation</option>
|
|
|
250 |
<option value="srcip">IP</option>
|
|
|
251 |
<option value="srcip4">IPv4 subnets</option>
|
|
|
252 |
<option value="srcip6">IPv6 subnets</option>
|
|
|
253 |
</select>
|
|
|
254 |
<div id="sourceCIDRPrefixDiv" class="d-none float-start" style="width:30%">
|
|
|
255 |
<input data-disable-on="bi-directional" id="sourceCIDRPrefix" placeholder="24" name="srcipprefix" type="text" class="form-control">
|
|
|
256 |
</div>
|
|
|
257 |
</div>
|
|
|
258 |
</div>
|
|
|
259 |
|
|
|
260 |
<div class="col-xs-6 col-sm-6">
|
|
|
261 |
<label>Destination</label>
|
|
|
262 |
<div class="form-group">
|
|
|
263 |
<select data-disable-on="bi-directional" data-kind="destination" name="dstip" id="filterFlowAggregationDestinationAddressSelect" class="form-control form-select float-start" style="width: 70%">
|
|
|
264 |
<option value="none">No aggregation</option>
|
|
|
265 |
<option value="dstip">IP</option>
|
|
|
266 |
<option value="dstip4">IPv4 subnets</option>
|
|
|
267 |
<option value="dstip6">IPv6 subnets</option>
|
|
|
268 |
</select>
|
|
|
269 |
<div id="destinationCIDRPrefixDiv" class="d-none float-start" style="width:30%">
|
|
|
270 |
<input data-disable-on="bi-directional" id="destinationCIDRPrefix" placeholder="24" name="dstipprefix" type="text" class="form-control">
|
|
|
271 |
</div>
|
|
|
272 |
</div>
|
|
|
273 |
</div>
|
|
|
274 |
</div>
|
|
|
275 |
</div><!-- flowsFilterAggregationDiv -->
|
|
|
276 |
</div>
|
|
|
277 |
|
|
|
278 |
<div id="statsLimitDiv" class="d-none col-xs-6 col-sm-6 col-md-2" data-view="statistics">
|
|
|
279 |
<p class="h6">Data Limit</p>
|
|
|
280 |
<div class="form-group">
|
|
|
281 |
<select id="statsLimitSelect" class="form-control form-select" data-view="statistics" disabled>
|
|
|
282 |
<option value="none">No limit</option>
|
|
|
283 |
<option value="">Packets</option>
|
|
|
284 |
<option value="">Bytes</option>
|
|
|
285 |
</select>
|
|
|
286 |
</div>
|
|
|
287 |
</div>
|
|
|
288 |
|
|
|
289 |
<div id="filterStatsProperties" class="d-none col-xs-6 col-sm-6 col-md-4 col-lg-2" data-view="statistics">
|
|
|
290 |
|
|
|
291 |
<p class="h6">Statistic properties</p>
|
|
|
292 |
|
|
|
293 |
<div class="form-group">
|
|
|
294 |
<label for="statsFilterForSelection">Statistic for</label>
|
|
|
295 |
<select id="statsFilterForSelection" class="form-control form-select">
|
|
|
296 |
<option value="record" selected>Flow Records</option>
|
|
|
297 |
<option value="ip">Any IP address</option>
|
|
|
298 |
<option value="srcip">Src IP address</option>
|
|
|
299 |
<option value="dstip">Dst IP address</option>
|
|
|
300 |
<option value="port">Any port</option>
|
|
|
301 |
<option value="srcport">Src port</option>
|
|
|
302 |
<option value="dstport">Dst port</option>
|
|
|
303 |
<option value="if">Any interface</option>
|
|
|
304 |
<option value="inif">IN interface</option>
|
|
|
305 |
<option value="outif">OUT interface</option>
|
|
|
306 |
<option value="as">Any AS</option>
|
|
|
307 |
<option value="srcas">Src AS</option>
|
|
|
308 |
<option value="dstas">Dst AS</option>
|
|
|
309 |
<option value="nhip">Next Hop IP</option>
|
|
|
310 |
<option value="nhbip">Next Hop BGP IP</option>
|
|
|
311 |
<option value="router">Router IP</option>
|
|
|
312 |
<option value="proto">Proto</option>
|
|
|
313 |
<option value="dir">Direction</option>
|
|
|
314 |
<option value="srctos">Src TOS</option>
|
|
|
315 |
<option value="dsttos">Dst TOS</option>
|
|
|
316 |
<option value="tos">Tos</option>
|
|
|
317 |
<option value="mask">Any Mask Bits</option>
|
|
|
318 |
<option value="srcmask">Src Mask Bits</option>
|
|
|
319 |
<option value="dstmask">Dst Mask Bits</option>
|
|
|
320 |
<option value="vlan">Any VLAN ID</option>
|
|
|
321 |
<option value="srcvlan">Src VLAN ID</option>
|
|
|
322 |
<option value="dstvlan">Dst VLAN ID</option>
|
|
|
323 |
<option value="srcmac">Src MAC</option>
|
|
|
324 |
<option value="dstmac">Dst MAC</option>
|
|
|
325 |
<option value="inmac">IN MAC</option>
|
|
|
326 |
<option value="outmac">OUT MAC</option>
|
|
|
327 |
<option value="insrcmac">IN src MAC</option>
|
|
|
328 |
<option value="outdstmac">OUT dst MAC</option>
|
|
|
329 |
<option value="indstmac">IN dst MAC</option>
|
|
|
330 |
<option value="outsrcmac">OUT src MAC</option>
|
|
|
331 |
<option value="mpls1">MPLS Label 1</option>
|
|
|
332 |
<option value="mpls2">MPLS Label 2</option>
|
|
|
333 |
<option value="mpls3">MPLS Label 3</option>
|
|
|
334 |
<option value="mpls4">MPLS Label 4</option>
|
|
|
335 |
<option value="mpls5">MPLS Label 5</option>
|
|
|
336 |
<option value="mpls6">MPLS Label 6</option>
|
|
|
337 |
<option value="mpls7">MPLS Label 7</option>
|
|
|
338 |
<option value="mpls8">MPLS Label 8</option>
|
|
|
339 |
<option value="mpls9">MPLS Label 9</option>
|
|
|
340 |
<option value="mpls10">MPLS Label 10</option>
|
|
|
341 |
</select>
|
|
|
342 |
</div>
|
|
|
343 |
|
|
|
344 |
<div class="form-group">
|
|
|
345 |
<label for="statsFilterOrderBySelection">Order by</label>
|
|
|
346 |
<select id="statsFilterOrderBySelection" class="form-control form-select">
|
|
|
347 |
<option value="flows" selected>Flows</option>
|
|
|
348 |
<option value="packets">Packets</option>
|
|
|
349 |
<option value="bytes">Bytes</option>
|
|
|
350 |
<option value="pps">Packets per second</option>
|
|
|
351 |
<option value="bps">Bits per second</option>
|
|
|
352 |
<option value="bpp">Bytes per packet</option>
|
|
|
353 |
</select>
|
|
|
354 |
</div>
|
|
|
355 |
|
|
|
356 |
</div><!-- statsFilterPropertiesDiv -->
|
|
|
357 |
|
|
|
358 |
<div id="filterOutput" class="hidden col-xs-12 col-sm-6 col-md-4 col-lg-4" data-view="flows statistics">
|
|
|
359 |
|
|
|
360 |
<p class="h6">Output</p>
|
|
|
361 |
<div class="row">
|
|
|
362 |
<div class="form-group col-xs-6 col-sm-6">
|
|
|
363 |
<label for="filterOutputSelection">Output type</label>
|
|
|
364 |
<select id="filterOutputSelection" name="filterOutputSelection" class="form-control form-select">
|
|
|
365 |
<option value="line">Line</option>
|
|
|
366 |
<option value="long">Long</option>
|
|
|
367 |
<option value="extended">Extended</option>
|
|
|
368 |
<option value="full">Full</option>
|
|
|
369 |
<option value="custom">Custom</option>
|
|
|
370 |
</select>
|
|
|
371 |
</div>
|
|
|
372 |
|
|
|
373 |
<div class="form-group col-xs-6 col-sm-6">
|
|
|
374 |
<label>Other options</label>
|
|
|
375 |
<br>
|
|
|
376 |
<div class="" id="flowsFilterOther" data-bs-toggle="buttons">
|
|
|
377 |
<input type="checkbox" class="btn-check" name="ordertstart" value="true" id="flowsFilterOtherOrderTstart">
|
|
|
378 |
<label class="btn btn-outline-primary" data-view="flows" for="flowsFilterOtherOrderTstart">Order by tstart</label>
|
|
|
379 |
</div>
|
|
|
380 |
</div>
|
|
|
381 |
</div>
|
|
|
382 |
|
|
|
383 |
<div id="customListOutputFormat" class="form-group hidden">
|
|
|
384 |
<label for="customListOutputFormatValue">Custom output format
|
|
|
385 |
<span aria-hidden="true" data-bs-toggle="tooltip" data-bs-placement="right" title="Specify output format in nfdump-style. E.g. %ts %tr %pr"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-info-circle-fill" viewBox="0 0 16 16">
|
|
|
386 |
<path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2"/>
|
|
|
387 |
</svg></span></label>
|
|
|
388 |
<input id="customListOutputFormatValue" type="text" class="form-control">
|
|
|
389 |
</div>
|
|
|
390 |
</div>
|
|
|
391 |
|
|
|
392 |
<div id="filterCommands" class="hidden col-xs-12 col-sm-6 col-md-3" data-view="flows statistics">
|
|
|
393 |
<p class="h6">Commands</p>
|
|
|
394 |
<div class="btn-group btn-group-md" data-bs-toggle="buttons">
|
|
|
395 |
<button type="button" class="btn btn-outline-primary submit">Process data</button>
|
|
|
396 |
<button type="button" class="btn btn-success csv">Get CSV</button>
|
|
|
397 |
<button type="button" class="btn btn-outline-primary reset">Reset filters</button>
|
|
|
398 |
</div>
|
|
|
399 |
</div>
|
|
|
400 |
</div><!-- statsFilterDiv -->
|
|
|
401 |
</form>
|
|
|
402 |
|
|
|
403 |
</div><!-- filterDiv -->
|
|
|
404 |
|
|
|
405 |
<div id="error"></div>
|
|
|
406 |
|
|
|
407 |
<div id="contentDiv">
|
|
|
408 |
|
|
|
409 |
<div id="graphsContentDiv" data-view="graphs" class="content container-fluid">
|
|
|
410 |
|
|
|
411 |
<div class="col-sm-12 my-4">
|
|
|
412 |
<div id="flowDiv" style="width: 100%;"></div>
|
|
|
413 |
</div>
|
|
|
414 |
|
|
|
415 |
<div id="graphOptions" class="row">
|
|
|
416 |
<div class="col-xs-6 col-sm-3">
|
|
|
417 |
<p class="h6">Graph Scale</p>
|
|
|
418 |
<div class="btn-group" role="group" id="graph_linlog">
|
|
|
419 |
<input type="radio" class="btn-check" name="scale" autocomplete="off" value="linear" checked id="graph_linlog_linear">
|
|
|
420 |
<label for="graph_linlog_linear" class="btn btn-outline-primary">Linear</label>
|
|
|
421 |
|
|
|
422 |
<input id="graph_linlog_log" type="radio" class="btn-check" name="scale" autocomplete="off" value="logarithmic">
|
|
|
423 |
<label for="graph_linlog_log" class="btn btn-outline-primary">Logarithmic</label>
|
|
|
424 |
</div>
|
|
|
425 |
</div>
|
|
|
426 |
|
|
|
427 |
<div class="col-xs-6 col-sm-3">
|
|
|
428 |
<p class="h6">Series display</p>
|
|
|
429 |
<div class="btn-group" data-bs-toggle="buttons" id="graph_linestacked">
|
|
|
430 |
<input type="radio" class="btn-check" name="type" autocomplete="off" value="stacked" checked id="graph_linestacked_stacked">
|
|
|
431 |
<label class="btn btn-outline-primary" for="graph_linestacked_stacked">Stacked</label>
|
|
|
432 |
|
|
|
433 |
<input type="radio" class="btn-check" name="type" autocomplete="off" value="line" id="graph_linestacked_line">
|
|
|
434 |
<label class="btn btn-outline-primary" for="graph_linestacked_line">Line</label>
|
|
|
435 |
</div>
|
|
|
436 |
|
|
|
437 |
<div class="btn-group" data-bs-toggle="buttons" id="graph_lineplot">
|
|
|
438 |
<input type="radio" class="btn-check" name="lineplot" autocomplete="off" value="step" id="graph_lineplot_step" checked>
|
|
|
439 |
<label class="btn btn-outline-primary" for="graph_lineplot_step">Step plot</label>
|
|
|
440 |
|
|
|
441 |
<input type="radio" class="btn-check" name="lineplot" autocomplete="off" value="curve" id="graph_lineplot_curve">
|
|
|
442 |
<label class="btn btn-outline-primary" for="graph_lineplot_curve">Curve plot</label>
|
|
|
443 |
</div>
|
|
|
444 |
</div>
|
|
|
445 |
|
|
|
446 |
<div class="col-xs-6 col-sm-3 accordion">
|
|
|
447 |
<p class="h6" data-bs-toggle="collapse" data-bs-target="#series" role="button" aria-expanded="true">Series</p>
|
|
|
448 |
<div class="collapse show" id="series"></div>
|
|
|
449 |
</div>
|
|
|
450 |
|
|
|
451 |
<div class="col-xs-6 col-sm-3 accordion">
|
|
|
452 |
<p class="h6" data-bs-toggle="collapse" data-bs-target="#legend" role="button" aria-expanded="true">Values</p>
|
|
|
453 |
<div class="collapse show" id="legend"></div>
|
|
|
454 |
</div>
|
|
|
455 |
</div>
|
|
|
456 |
</div>
|
|
|
457 |
<div id="flowsContentDiv" data-view="flows" class="content">
|
|
|
458 |
<table class="table" data-paging="true" data-paging-limit="10" data-paging-size="50" data-filtering="true" data-sorting="true"></table>
|
|
|
459 |
</div><!-- flowsContentDiv -->
|
|
|
460 |
|
|
|
461 |
<div id="statisticsContentDiv" data-view="statistics" class="content">
|
|
|
462 |
<table class="table" data-paging="true" data-paging-limit="10" data-paging-size="50" data-filtering="true" data-sorting="true"></table>
|
|
|
463 |
</div><!-- statsContentDiv -->
|
|
|
464 |
|
|
|
465 |
</div><!-- contentDiv -->
|
|
|
466 |
|
|
|
467 |
<div class="modal fade" id="modal" tabindex="-1" aria-labelledby="modalLabel" aria-hidden="true">
|
|
|
468 |
<div class="modal-dialog">
|
|
|
469 |
<div class="modal-content">
|
|
|
470 |
<div class="modal-header">
|
|
|
471 |
<h1 class="modal-title fs-5" id="modalLabel">Modal title</h1>
|
|
|
472 |
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
|
473 |
</div>
|
|
|
474 |
<div class="modal-body"></div>
|
|
|
475 |
<div class="modal-loader d-none text-center">
|
|
|
476 |
<div class="spinner-border" role="status">
|
|
|
477 |
<span class="visually-hidden">Loading</span>
|
|
|
478 |
</div>
|
|
|
479 |
</div>
|
|
|
480 |
<div class="modal-footer">
|
|
|
481 |
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
|
|
482 |
</div>
|
|
|
483 |
</div>
|
|
|
484 |
</div>
|
|
|
485 |
</div>
|
|
|
486 |
<script src="js/nfsen-ng.js"></script>
|
|
|
487 |
</body>
|
|
|
488 |
</html>
|