Skip to content

Commit 89be300

Browse files
committed
Some restructuring for future updates
1 parent 06c6c94 commit 89be300

3 files changed

Lines changed: 120 additions & 80 deletions

File tree

arrays.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -494,10 +494,10 @@
494494
'sourceip' => array(
495495
'friendly_name' => __('Source IP', 'flowview'),
496496
'description' => __('Filter on the select Source IP for in the Filter. This can be a comma delimited list of IPv4 or IPv6 addresses, or a comma delimited list of IPv4 or IPv6 address ranges in CIDR format (eg. 192.168.1.0/24).', 'flowview'),
497-
'method' => 'textbox',
497+
'method' => 'textarea',
498498
'value' => '|arg1:sourceip|',
499-
'max_length' => '20',
500-
'size' => '14'
499+
'textarea_rows' => '2',
500+
'textarea_cols' => '80'
501501
),
502502
'sourceport' => array(
503503
'friendly_name' => __('Source Ports', 'flowview'),
@@ -519,17 +519,17 @@
519519
'friendly_name' => __('Source AS', 'flowview'),
520520
'description' => __('Filter on the select Destination AS for in the Filter. This can be a comma delimited list of Source AS\'s', 'flowview'),
521521
'method' => 'textbox',
522-
'value' => '|arg1:destas|',
522+
'value' => '|arg1:sourceas|',
523523
'max_length' => '20',
524524
'size' => '14'
525525
),
526526
'destip' => array(
527527
'friendly_name' => __('Dest IP', 'flowview'),
528528
'description' => __('Filter on the select Destination IP for in the Filter. This can be a comma delimited list of IPv4 or IPv6 addresses, or a comma delimited list of IPv4 or IPv6 address ranges in CIDR format (eg. 192.168.1.0/24).', 'flowview'),
529-
'method' => 'textbox',
529+
'method' => 'textarea',
530530
'value' => '|arg1:destip|',
531-
'max_length' => '20',
532-
'size' => '14'
531+
'textarea_rows' => '2',
532+
'textarea_cols' => '80'
533533
),
534534
'destport' => array(
535535
'friendly_name' => __('Dest Ports', 'flowview'),

flowview.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ function flowview_request_vars() {
195195
'default' => '0'
196196
),
197197
'sortfield' => array(
198-
'filter' => FILTER_VALIDATE_INT,
198+
'filter' => FILTER_DEFAULT,
199199
'default' => ''
200200
),
201201
'sortvalue' => array(
@@ -323,5 +323,7 @@ function flowview_request_vars() {
323323

324324
validate_store_request_vars($filters, 'sess_fv');
325325
/* ================= input validation ================= */
326+
327+
cacti_session_close();
326328
}
327329

functions.php

Lines changed: 110 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ function applyTimespan() {
145145
$.getJSON(returnPage+'?action=gettimespan&predefined_timespan='+$('#predefined_timespan').val(), function(data) {
146146
$('#date1').val(data['current_value_date1']);
147147
$('#date2').val(data['current_value_date2']);
148+
Pace.stop();
148149
});
149150
}
150151

@@ -163,6 +164,7 @@ function applyFilter() {
163164
} else {
164165
$('#row_sortfield').show();
165166
}
167+
Pace.stop();
166168
});
167169
}
168170

@@ -869,6 +871,8 @@ function flowview_display_filter($data) {
869871
}
870872
}
871873
});
874+
875+
Pace.stop();
872876
});
873877

874878
break;
@@ -916,6 +920,8 @@ function flowview_display_filter($data) {
916920
}
917921
}
918922
});
923+
924+
Pace.stop();
919925
});
920926

921927
break;
@@ -963,10 +969,11 @@ function flowview_display_filter($data) {
963969
}
964970
}
965971
});
972+
973+
Pace.stop();
966974
});
967975

968976
break;
969-
break;
970977
}
971978
});
972979
});
@@ -1019,6 +1026,8 @@ function initTimespan() {
10191026
'&predefined_timespan='+$('#predefined_timespan').val(), function(data) {
10201027
$('#date1').val(data['current_value_date1']);
10211028
$('#date2').val(data['current_value_date2']);
1029+
1030+
Pace.stop();
10221031
});
10231032
}
10241033
}
@@ -1031,6 +1040,8 @@ function applyTimespan() {
10311040
$('#date1').val(data['current_value_date1']);
10321041
$('#date2').val(data['current_value_date2']);
10331042
applyFilter();
1043+
1044+
Pace.stop();
10341045
});
10351046
}
10361047
}
@@ -1135,23 +1146,18 @@ function plugin_flowview_run_schedule($id) {
11351146
$date2 = time();
11361147
$date1 = $date2 - $schedule['sendinterval'];
11371148

1138-
set_request_var('schedule', $id);
1139-
set_request_var('query', $schedule['query_id']);
1140-
set_request_var('date1', date('Y-m-d H:i:s', $date1));
1141-
set_request_var('date2', date('Y-m-d H:i:s', $date2));
1142-
11431149
$body = "<body style='margin:10px;'>" . PHP_EOL;
11441150
$body .= "<style type='text/css'>" . PHP_EOL;
11451151
$body .= file_get_contents($config['base_path'] . '/include/themes/modern/main.css');
11461152
$body .= '</style>' . PHP_EOL;
11471153

11481154
$body .= '<center>' . PHP_EOL;
11491155
$body .= '<h1>' . html_escape($schedule['title']) . '</h1>' . PHP_EOL;
1150-
$body .= '<h2>From ' . get_request_var('date1') . ' to ' . get_request_var('date2') . '</h2>' . PHP_EOL;
1156+
$body .= '<h2>From ' . date('Y-m-d H:i:s', $date1) . ' to ' . date('Y-m-d H:i:s', $date2) . '</h2>' . PHP_EOL;
11511157
$body .= '<h2>Using Query \'' . html_escape($query['name']) . '\'</h2>' . PHP_EOL;
11521158
$body .= '</center>' . PHP_EOL;
11531159

1154-
$data = load_data_for_filter();
1160+
$data = load_data_for_filter($schedule['query_id'], $date1, $date2);
11551161
if ($data !== false) {
11561162
$body .= $data['table'];
11571163
}
@@ -1176,7 +1182,7 @@ function plugin_flowview_run_schedule($id) {
11761182
* This function creates the NetFlow Report for the UI. It presents this in a table
11771183
* format and returns as a test string to the calling function.
11781184
*/
1179-
function load_data_for_filter($session = false) {
1185+
function load_data_for_filter($id = 0, $start = false, $end = false) {
11801186
global $config;
11811187

11821188
$output = '';
@@ -1185,89 +1191,111 @@ function load_data_for_filter($session = false) {
11851191
$histogram = false;
11861192
$time = time();
11871193
$data = array();
1188-
$start = strtotime(get_request_var('date1'));
1189-
$end = strtotime(get_request_var('date2'));
11901194

1191-
if ($session && isset($_SESSION['sess_flowdata'])) {
1192-
return $_SESSION['sess_flowdata'];
1195+
if ($id > 0) {
1196+
$query_id = $id;
1197+
$session = false;
1198+
} elseif (isset_request_var('query')) {
1199+
$query_id = get_request_var('query');
1200+
$start = strtotime(get_request_var('date1'));
1201+
$end = strtotime(get_request_var('date2'));
1202+
$key = md5($query_id . '_' . $start . '_' . $end);
1203+
$session = true;
1204+
} else {
1205+
return false;
1206+
}
1207+
1208+
$key = md5($query_id . '_' . $start . '_' . $end);
1209+
1210+
if ($session && isset($_SESSION['sess_flowdata'][$key])) {
1211+
return $_SESSION['sess_flowdata'][$key];
11931212
}
11941213

11951214
/* let's calculate the title and then session id */
11961215
if ($title == '') {
11971216
if (isset_request_var('query') && get_filter_request_var('query') > 0) {
1198-
$title = db_fetch_cell('SELECT name FROM plugin_flowview_queries WHERE id=' . get_request_var('query'));
1217+
$title = db_fetch_cell_prepared('SELECT name
1218+
FROM plugin_flowview_queries
1219+
WHERE id = ?',
1220+
array($query_id));
11991221
} else {
12001222
$title = __('New Flow', 'flowview');
12011223
}
12021224
}
12031225

1204-
if (get_request_var('query') > 0) {
1205-
if (get_request_var('statistics') != 0) {
1206-
$histogram = true;
1207-
}
1226+
if ($query_id > 0) {
1227+
if ($session) {
1228+
if (get_request_var('statistics') != 0) {
1229+
$histogram = true;
1230+
}
12081231

1209-
/* source ip filter */
1210-
if (get_request_var('sourceip') != '') {
1211-
$sql_where = get_ip_filter($sql_where, get_request_var('sourceip'), 'src_addr');
1212-
}
1232+
/* source ip filter */
1233+
if (get_request_var('sourceip') != '') {
1234+
$sql_where = get_ip_filter($sql_where, get_request_var('sourceip'), 'src_addr');
1235+
}
12131236

1214-
/* source interface filter */
1215-
if (get_request_var('sourceinterface') != '') {
1216-
$sql_where = get_numeric_filter($sql_where, get_request_var('sourceinterface'), 'src_if');
1217-
}
1237+
/* source interface filter */
1238+
if (get_request_var('sourceinterface') != '') {
1239+
$sql_where = get_numeric_filter($sql_where, get_request_var('sourceinterface'), 'src_if');
1240+
}
12181241

1219-
/* source port filter */
1220-
if (get_request_var('sourceport') != '') {
1221-
$sql_where = get_numeric_filter($sql_where, get_request_var('sourceport'), 'src_port');
1222-
}
1242+
/* source port filter */
1243+
if (get_request_var('sourceport') != '') {
1244+
$sql_where = get_numeric_filter($sql_where, get_request_var('sourceport'), 'src_port');
1245+
}
12231246

1224-
/* source as filter */
1225-
if (get_request_var('sourceas') != '') {
1226-
$sql_where = get_numeric_filter($sql_where, get_request_var('sourceas'), 'src_as');
1227-
}
1247+
/* source as filter */
1248+
if (get_request_var('sourceas') != '') {
1249+
$sql_where = get_numeric_filter($sql_where, get_request_var('sourceas'), 'src_as');
1250+
}
12281251

1229-
/* destination ip filter */
1230-
if (get_request_var('destip') != '') {
1231-
$sql_where = get_ip_filter($sql_where, get_request_var('destip'), 'dest_sddr');
1232-
}
1252+
/* destination ip filter */
1253+
if (get_request_var('destip') != '') {
1254+
$sql_where = get_ip_filter($sql_where, get_request_var('destip'), 'dst_addr');
1255+
}
12331256

1234-
/* destination interface filter */
1235-
if (get_request_var('destinterface') != '') {
1236-
$sql_where = get_numeric_filter($sql_where, get_request_var('destinterface'), 'dest_if');
1237-
}
1257+
/* destination interface filter */
1258+
if (get_request_var('destinterface') != '') {
1259+
$sql_where = get_numeric_filter($sql_where, get_request_var('destinterface'), 'dst_if');
1260+
}
12381261

1239-
/* destination port filter */
1240-
if (get_request_var('destport') != '') {
1241-
$sql_where = get_numeric_filter($sql_where, get_request_var('destport'), 'dst_port');
1242-
}
1262+
/* destination port filter */
1263+
if (get_request_var('destport') != '') {
1264+
$sql_where = get_numeric_filter($sql_where, get_request_var('destport'), 'dst_port');
1265+
}
12431266

1244-
/* destination as filter */
1245-
if (get_request_var('destas') != '') {
1246-
$sql_where = get_numeric_filter($sql_where, get_request_var('destas'), 'dest_as');
1247-
}
1267+
/* destination as filter */
1268+
if (get_request_var('destas') != '') {
1269+
$sql_where = get_numeric_filter($sql_where, get_request_var('destas'), 'dst_as');
1270+
}
12481271

1249-
/* protocols filter */
1250-
if (get_request_var('protocols') != '' && get_request_var('protocols') != '0') {
1251-
$sql_where = get_numeric_filter($sql_where, get_request_var('protocols'), 'protocol');
1252-
}
1272+
/* protocols filter */
1273+
if (get_request_var('protocols') != '' && get_request_var('protocols') != '0') {
1274+
$sql_where = get_numeric_filter($sql_where, get_request_var('protocols'), 'protocol');
1275+
}
12531276

1254-
/* tcp flags filter */
1255-
if (get_request_var('tcpflags') != '') {
1256-
$sql_where = get_numeric_filter($sql_where, get_request_var('tcpflags'), 'flags');
1257-
}
1277+
/* tcp flags filter */
1278+
if (get_request_var('tcpflags') != '') {
1279+
$sql_where = get_numeric_filter($sql_where, get_request_var('tcpflags'), 'flags');
1280+
}
12581281

1259-
/* tos filter */
1260-
if (get_request_var('tosfields') != '') {
1261-
$sql_where = get_numeric_filter($sql_where, get_request_var('tosfields'), 'tos');
1262-
}
1282+
/* tos filter */
1283+
if (get_request_var('tosfields') != '') {
1284+
$sql_where = get_numeric_filter($sql_where, get_request_var('tosfields'), 'tos');
1285+
}
12631286

1264-
/* date time range */
1265-
$sql_where = get_date_filter($sql_where, get_request_var('date1'), get_request_var('date2'), get_request_var('includeif'));
1287+
/* date time range */
1288+
$sql_where = get_date_filter($sql_where, get_request_var('date1'), get_request_var('date2'), get_request_var('includeif'));
1289+
} else {
1290+
$sql_where = '';
1291+
}
12661292

12671293
/* Run the query */
1268-
$data = run_flow_query(get_request_var('query'), $title, $sql_where, $start, $end);
1294+
$data = run_flow_query($query_id, $title, $sql_where, $start, $end);
12691295

1270-
$_SESSION['sess_flowdata'] = $data;
1296+
if ($session) {
1297+
$_SESSION['sess_flowdata'][$key] = $data;
1298+
}
12711299
} else {
12721300
$data['id'] = 0;
12731301
}
@@ -1300,20 +1328,31 @@ function get_numeric_filter($sql_where, $value, $column) {
13001328
}
13011329

13021330
function get_ip_filter($sql_where, $value, $column) {
1331+
return $sql_where;
13031332
if ($value != '') {
13041333
$values = array();
13051334
$parts = explode(',', $value);
1335+
$i = 0;
1336+
1337+
$sql_where .= ($sql_where != '' ? ' AND ':'WHERE ') . '(';
13061338

13071339
foreach($parts as $part) {
13081340
$part = trim($part);
13091341

1310-
if (strpos('/', $part) !== false) {
1342+
if (strpos($part, '/') !== false) {
1343+
$pp = explode('/', $part);
1344+
$sql_where .= ($i == 0 ? '':' OR ') . "$column & INET6_ATON('" . $pp[0] . "')";
13111345
} else {
1346+
$sql_where .= ($i == 0 ? '':' OR ') . "$column = INET6_ATON('$part')";
13121347
}
1348+
1349+
$i++;
13131350
}
13141351

1352+
$sql_where .= ')';
1353+
13151354
if (cacti_sizeof($values)) {
1316-
return ($sql_where != '' ? ' AND ':'WHERE ') . '`' . $column . '` IN (' . implode(',', $values) . ')';
1355+
// return ($sql_where != '' ? ' AND ':'WHERE ') . '`' . $column . '` IN (' . implode(',', $values) . ')';
13171356
}
13181357
}
13191358

@@ -1570,9 +1609,8 @@ function run_flow_query($query_id, $title, $sql_where, $start, $end) {
15701609
$data['printed'] = trim(get_nfilter_request_var('report'), 'sp');
15711610
$data['statistics'] = 0;
15721611
}
1573-
} else {
1574-
$data['statistics'] = 0;
1575-
$data['printed'] = 0;
1612+
} elseif (!sizeof($data)) {
1613+
return false;
15761614
}
15771615

15781616
// Handle Sort Field Override
@@ -1941,7 +1979,7 @@ function run_flow_query($query_id, $title, $sql_where, $start, $end) {
19411979

19421980
$sql = "$sql_query FROM ($sql) AS rs $sql_groupby $sql_having $sql_order $sql_limit";
19431981

1944-
//cacti_log(str_replace("\n", " ", str_replace("\t", '', $sql)));
1982+
cacti_log(str_replace("\n", " ", str_replace("\t", '', $sql)));
19451983

19461984
if ($data['statistics'] == 99) {
19471985
$results = db_fetch_row($sql);

0 commit comments

Comments
 (0)