From 6e01f6516fa005d4153d654d7d450851f065e94a Mon Sep 17 00:00:00 2001 From: Jordi Sanfeliu Date: Tue, 29 Aug 2017 11:05:37 +0200 Subject: [PATCH] redirect all the output into an array to support parallelizing in 'serv.pm' --- lib/serv.pm | 85 +++++++++++++++++++++++++++-------------------------- 1 file changed, 43 insertions(+), 42 deletions(-) diff --git a/lib/serv.pm b/lib/serv.pm index 9b95cd3..4669641 100644 --- a/lib/serv.pm +++ b/lib/serv.pm @@ -1,7 +1,7 @@ # # Monitorix - A lightweight system monitoring tool. # -# Copyright (C) 2005-2016 by Jordi Sanfeliu +# Copyright (C) 2005-2017 by Jordi Sanfeliu # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -629,6 +629,7 @@ sub serv_update { sub serv_cgi { my ($package, $config, $cgi) = @_; + my @output; my $serv = $config->{serv}; my @rigid = split(',', ($serv->{rigid} || "")); @@ -674,22 +675,22 @@ sub serv_cgi { # if(lc($config->{iface_mode}) eq "text") { if($title) { - main::graph_header($title, 2); - print(" \n"); - print(" \n"); + push(@output, main::graph_header($title, 2)); + push(@output, " \n"); + push(@output, " \n"); } my (undef, undef, undef, $data) = RRDs::fetch("$rrd", "--start=-$tf->{nwhen}$tf->{twhen}", "AVERAGE", "-r $tf->{res}"); $err = RRDs::error; - print("ERROR: while fetching $rrd: $err\n") if $err; - print("
\n");
+		push(@output, "ERROR: while fetching $rrd: $err\n") if $err;
+		push(@output, "    
\n");
 		if(lc($serv->{mode}) eq "i") {
-			print "Values expressed as incremental or cumulative hits.\n";
+			push(@output, "Values expressed as incremental or cumulative hits.\n");
 		}
-		print("Time    SSH     FTP  Telnet   Samba     Fax    CUPS     F2B    IMAP    POP3    SMTP    Spam   Virus\n");
-		print("--------------------------------------------------------------------------------------------------- \n");
+		push(@output, "Time    SSH     FTP  Telnet   Samba     Fax    CUPS     F2B    IMAP    POP3    SMTP    Spam   Virus\n");
+		push(@output, "--------------------------------------------------------------------------------------------------- \n");
 		my $line;
 		my @row;
 		my $time;
@@ -705,19 +706,19 @@ sub serv_cgi {
 			my ($ssh, $ftp, $telnet, $imap, $smb, $fax, $cups, $pop3, $smtp, $spam, $virus, $f2b) = @$line[$from..$to];
 			@row = ($ssh, $ftp, $telnet, $imap, $smb, $fax, $cups, $f2b, $pop3, $smtp, $spam, $virus);
 			if(lc($serv->{mode}) eq "i") {
-				printf(" %2d$tf->{tc} %6d  %6d  %6d  %6d  %6d  %6d  %6d  %6d  %6d  %6d  %6d  %6d\n", $time, @row);
+				push(@output, sprintf(" %2d$tf->{tc} %6d  %6d  %6d  %6d  %6d  %6d  %6d  %6d  %6d  %6d  %6d  %6d\n", $time, @row));
 			} elsif(lc($serv->{mode}) eq "l") {
-				printf(" %2d$tf->{tc} %6.2f  %6.2f  %6.2f  %6.2f  %6.2f  %6.2f  %6.2f  %6.2f  %6.2f  %6.2f  %6.2f  %6.2f\n", $time, @row);
+				push(@output, sprintf(" %2d$tf->{tc} %6.2f  %6.2f  %6.2f  %6.2f  %6.2f  %6.2f  %6.2f  %6.2f  %6.2f  %6.2f  %6.2f  %6.2f\n", $time, @row));
 			}
 		}
-		print("    
\n"); + push(@output, "
\n"); if($title) { - print(" \n"); - print(" \n"); - main::graph_footer(); + push(@output, " \n"); + push(@output, " \n"); + push(@output, main::graph_footer()); } - print("
\n"); - return; + push(@output, "
\n"); + return @output; } @@ -748,7 +749,7 @@ sub serv_cgi { } if($title) { - main::graph_header($title, 2); + push(@output, main::graph_header($title, 2)); } @riglim = @{setup_riglim($rigid[0], $limit[0])}; if(lc($serv->{mode}) eq "l") { @@ -879,8 +880,8 @@ sub serv_cgi { } if($title) { - print(" \n"); - print(" \n"); + push(@output, " \n"); + push(@output, " \n"); } ($width, $height) = split('x', $config->{graph_size}->{main}); if($silent =~ /imagetag/) { @@ -922,7 +923,7 @@ sub serv_cgi { @CDEF, @tmp); $err = RRDs::error; - print("ERROR: while graphing $IMG_DIR" . "$IMG1: $err\n") if $err; + push(@output, "ERROR: while graphing $IMG_DIR" . "$IMG1: $err\n") if $err; if(lc($config->{enable_zoom}) eq "y") { ($width, $height) = split('x', $config->{graph_size}->{zoom}); $picz = $rrd{$version}->("$IMG_DIR" . "$IMG1z", @@ -956,12 +957,12 @@ sub serv_cgi { @CDEF, @tmpz); $err = RRDs::error; - print("ERROR: while graphing $IMG_DIR" . "$IMG1z: $err\n") if $err; + push(@output, "ERROR: while graphing $IMG_DIR" . "$IMG1z: $err\n") if $err; } if($title || ($silent =~ /imagetag/ && $graph =~ /serv1/)) { if(lc($config->{enable_zoom}) eq "y") { if(lc($config->{disable_javascript_void}) eq "y") { - print(" {url} . "/" . $config->{imgs_dir} . $IMG1z . "\">\n"); + push(@output, " {url} . "/" . $config->{imgs_dir} . $IMG1z . "\">\n"); } else { if($version eq "new") { $picz_width = $picz->{image_width} * $config->{global_zoom}; @@ -970,16 +971,16 @@ sub serv_cgi { $picz_width = $width + 115; $picz_height = $height + 100; } - print(" {url} . "/" . $config->{imgs_dir} . $IMG1z . "','','width=" . $picz_width . ",height=" . $picz_height . ",scrollbars=0,resizable=0'))\">\n"); + push(@output, " {url} . "/" . $config->{imgs_dir} . $IMG1z . "','','width=" . $picz_width . ",height=" . $picz_height . ",scrollbars=0,resizable=0'))\">\n"); } } else { - print(" \n"); + push(@output, " \n"); } } if($title) { - print(" \n"); - print(" \n"); + push(@output, " \n"); + push(@output, " \n"); } @riglim = @{setup_riglim($rigid[1], $limit[1])}; undef(@tmp); @@ -1044,7 +1045,7 @@ sub serv_cgi { @CDEF, @tmp); $err = RRDs::error; - print("ERROR: while graphing $IMG_DIR" . "$IMG2: $err\n") if $err; + push(@output, "ERROR: while graphing $IMG_DIR" . "$IMG2: $err\n") if $err; if(lc($config->{enable_zoom}) eq "y") { ($width, $height) = split('x', $config->{graph_size}->{zoom}); $picz = $rrd{$version}->("$IMG_DIR" . "$IMG2z", @@ -1067,12 +1068,12 @@ sub serv_cgi { @CDEF, @tmpz); $err = RRDs::error; - print("ERROR: while graphing $IMG_DIR" . "$IMG2z: $err\n") if $err; + push(@output, "ERROR: while graphing $IMG_DIR" . "$IMG2z: $err\n") if $err; } if($title || ($silent =~ /imagetag/ && $graph =~ /serv2/)) { if(lc($config->{enable_zoom}) eq "y") { if(lc($config->{disable_javascript_void}) eq "y") { - print(" {url} . "/" . $config->{imgs_dir} . $IMG2z . "\">\n"); + push(@output, " {url} . "/" . $config->{imgs_dir} . $IMG2z . "\">\n"); } else { if($version eq "new") { $picz_width = $picz->{image_width} * $config->{global_zoom}; @@ -1081,10 +1082,10 @@ sub serv_cgi { $picz_width = $width + 115; $picz_height = $height + 100; } - print(" {url} . "/" . $config->{imgs_dir} . $IMG2z . "','','width=" . $picz_width . ",height=" . $picz_height . ",scrollbars=0,resizable=0'))\">\n"); + push(@output, " {url} . "/" . $config->{imgs_dir} . $IMG2z . "','','width=" . $picz_width . ",height=" . $picz_height . ",scrollbars=0,resizable=0'))\">\n"); } } else { - print(" \n"); + push(@output, " \n"); } } @@ -1165,7 +1166,7 @@ sub serv_cgi { @CDEF, @tmp); $err = RRDs::error; - print("ERROR: while graphing $IMG_DIR" . "$IMG3: $err\n") if $err; + push(@output, "ERROR: while graphing $IMG_DIR" . "$IMG3: $err\n") if $err; if(lc($config->{enable_zoom}) eq "y") { undef(@tmp); ($width, $height) = split('x', $config->{graph_size}->{zoom}); @@ -1191,12 +1192,12 @@ sub serv_cgi { @CDEF, @tmpz); $err = RRDs::error; - print("ERROR: while graphing $IMG_DIR" . "$IMG3z: $err\n") if $err; + push(@output, "ERROR: while graphing $IMG_DIR" . "$IMG3z: $err\n") if $err; } if($title || ($silent =~ /imagetag/ && $graph =~ /serv3/)) { if(lc($config->{enable_zoom}) eq "y") { if(lc($config->{disable_javascript_void}) eq "y") { - print(" {url} . "/" . $config->{imgs_dir} . $IMG3z . "\">\n"); + push(@output, " {url} . "/" . $config->{imgs_dir} . $IMG3z . "\">\n"); } else { if($version eq "new") { $picz_width = $picz->{image_width} * $config->{global_zoom}; @@ -1205,20 +1206,20 @@ sub serv_cgi { $picz_width = $width + 115; $picz_height = $height + 100; } - print(" {url} . "/" . $config->{imgs_dir} . $IMG3z . "','','width=" . $picz_width . ",height=" . $picz_height . ",scrollbars=0,resizable=0'))\">\n"); + push(@output, " {url} . "/" . $config->{imgs_dir} . $IMG3z . "','','width=" . $picz_width . ",height=" . $picz_height . ",scrollbars=0,resizable=0'))\">\n"); } } else { - print(" \n"); + push(@output, " \n"); } } if($title) { - print(" \n"); - print(" \n"); - main::graph_footer(); + push(@output, " \n"); + push(@output, " \n"); + push(@output, main::graph_footer()); } - print("
\n"); - return; + push(@output, "
\n"); + return @output; } 1;