@@ -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
13021330function 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