Revision: 7462 http://sourceforge.net/p/ipcop/svn/7462 Author: owes Date: 2014-04-11 16:21:41 +0000 (Fri, 11 Apr 2014) Log Message: ----------- Replace squid-graphs with our own graphs. Does not require logging activated. After some longer testing add new translation texts.
Modified Paths: -------------- ipcop/trunk/html/cgi-bin/proxygraphs.cgi ipcop/trunk/src/scripts/makegraphs.pl ipcop/trunk/updates/2.1.5/ROOTFILES.i486-2.1.5 Modified: ipcop/trunk/html/cgi-bin/proxygraphs.cgi =================================================================== --- ipcop/trunk/html/cgi-bin/proxygraphs.cgi 2014-04-11 16:18:49 UTC (rev 7461) +++ ipcop/trunk/html/cgi-bin/proxygraphs.cgi 2014-04-11 16:21:41 UTC (rev 7462) @@ -17,47 +17,102 @@ #use CGI::Carp 'fatalsToBrowser'; require '/usr/lib/ipcop/general-functions.pl'; -require "/usr/lib/ipcop/lang.pl"; -require "/usr/lib/ipcop/header.pl"; +require '/usr/lib/ipcop/lang.pl'; +require '/usr/lib/ipcop/header.pl'; +my %cgiparams=(); +my @cgigraphs=(); my @graphs = (); +my $graphdir = '/home/httpd/html/graphs'; &Header::showhttpheaders(); -my $dir = "/home/httpd/html/sgraph"; -my $sgraphdir = "/home/httpd/html/sgraph"; +$ENV{'QUERY_STRING'} =~ s/&//g; +@cgigraphs = split(/graph=/,$ENV{'QUERY_STRING'}); +$cgigraphs[1] = '' unless defined $cgigraphs[1]; &Header::openpage($Lang::tr{'proxy access graphs'}, 1, ''); &Header::openbigbox('100%', 'left'); -&Header::openbox('100%', 'left', $Lang::tr{'proxy access graphs'}); +if ($cgigraphs[1] =~ /(squid-requests|squid-hits)/) { + # Display 1 specific graph -if (open(IPACHTML, "$sgraphdir/index.html")) { - my $skip = 1; - while (<IPACHTML>) { - $skip = 1 if /^<HR>$/; - if ($skip) { - $skip = 0 if /<H1>/; - next; - } - s/<IMG SRC=([^"'>]+)>/<img src='\/sgraph\/$1' alt='Graph' \/>/; - s/<HR>/<hr \/>/g; - s/<BR>/<br \/>/g; - s/<([^>]*)>/\L<$1>\E/g; - s/(size|align|border|color)=([^'"> ]+)/$1='$2'/g; - # strip out size=-1 from font tags - s/ size=\'-1\'//g; - print; + my $graph = $cgigraphs[1]; + my ($graphname, $count) = split('_', lc($graph)); + my $back = ''; + my $title = ''; + $title = $Lang::tr{'squid requests'} if ($graph eq 'squid-requests'); + $title = $Lang::tr{'squid hits'} if ($graph eq 'squid-hits'); + + &Header::openbox('100%', 'center', "$title $Lang::tr{'graph'}"); + + if (-e "$graphdir/${graph}-day.png") { + print <<END +<table width='100%'><tr> + <td width='10%'><a href='/cgi-bin/proxygraphs.cgi'><img src='/images/back.png' alt='$Lang::tr{'back'}' title='$Lang::tr{'back'}' /></a></td> + <td> </td> +</tr></table> +<hr /> +<img src='/graphs/${graph}-day.png' border='0' alt='${graph}-$Lang::tr{'day'}' /><hr /> +<img src='/graphs/${graph}-week.png' border='0' alt='${graph}-$Lang::tr{'week'}' /><hr /> +<img src='/graphs/${graph}-month.png' border='0' alt='${graph}-$Lang::tr{'month'}' /><hr /> +<img src='/graphs/${graph}-year.png' border='0' alt='${graph}-$Lang::tr{'year'}' /> +END + ; + } + else { + print $Lang::tr{'no information available'}; } - close(IPACHTML); + + print <<END +<hr /> +<table width='100%'><tr> + <td width='10%'><a href='/cgi-bin/proxygraphs.cgi'><img src='/images/back.png' alt='$Lang::tr{'back'}' title='$Lang::tr{'back'}' /></a></td> + <td> </td> +</tr></table> +END + ; + &Header::closebox(); } else { - print $Lang::tr{'no information available'}; + &disp_graph("$Lang::tr{'proxy access graphs'}", "squid-requests", "squid-requests-$Lang::tr{'day'}"); + &disp_graph("$Lang::tr{'proxy access graphs'}", "squid-hits", "squid-hits-$Lang::tr{'day'}"); } -&Header::closebox(); - &Header::closebigbox(); &Header::closepage(); + + +sub disp_graph +{ + my $title = shift; + my $file = shift; + my $alt = shift; + + &Header::openbox('100%', 'center', $title); + if (-e "$graphdir/$file-day.png") { + print "<a href='/cgi-bin/proxygraphs.cgi?graph=$file'>"; + print "<img src='/graphs/$file-day.png' alt='$alt' border='0' />"; + print "</a><br />"; + } else { + print $Lang::tr{'no information available'}; + } + + if ( $file eq 'cpu' ) { + print<<END +<table width='100%'> +<tr> + <td class='comment1button'> </td> + <td class='button1button'> </td> + <td class='onlinehelp'> + <a href='${General::adminmanualurl}/status-proxy-graphs.html' target='_blank'><img src='/images/web-support.png' alt='$Lang::tr{'online help en'}' title='$Lang::tr{'online help en'}' /></a> + </td> +</tr> +</table> +END + ; + } + &Header::closebox(); +} Modified: ipcop/trunk/src/scripts/makegraphs.pl =================================================================== --- ipcop/trunk/src/scripts/makegraphs.pl 2014-04-11 16:18:49 UTC (rev 7461) +++ ipcop/trunk/src/scripts/makegraphs.pl 2014-04-11 16:21:41 UTC (rev 7462) @@ -353,7 +353,7 @@ "$rrdlog/diskuse.rrd", "--step=300", "DS:root:GAUGE:600:0:1000", "DS:varlog:GAUGE:600:0:1000", "RRA:AVERAGE:0.5:1:576", "RRA:AVERAGE:0.5:6:672", - "RRA:AVERAGE:0.5:24:732", "RRA:AVERAGE:0.5:144:1460" + "RRA:AVERAGE:0.5:24:732", "RRA:AVERAGE:0.5:144:1460" ); $ERROR = RRDs::error; print "Error in RRD::create for diskuse: $ERROR\n" if $ERROR; @@ -495,11 +495,59 @@ print "Error in RRD::update for $interface: $ERROR\n" if $ERROR; } +sub updatesquidgraph { + my $period = $_[0]; + my @rrd = (); + + push @rrd, @{&rrd_header("squid-requests", $period, "proxy requests ($Lang::tr{$period})", -1, -1)}; + + push @rrd, "DEF:requests=$rrdlog/squid_requests.rrd:requests:AVERAGE"; + push @rrd, "LINE2:requests#00FF00:proxy requests per second\\j"; + push @rrd, "GPRINT:requests:MAX:$Lang::tr{'maximal'}\\:%8.0lf"; + push @rrd, "GPRINT:requests:AVERAGE:$Lang::tr{'average'}\\:%8.0lf"; + push @rrd, "GPRINT:requests:LAST:$Lang::tr{'current'}\\:%8.0lf\\j"; + + push @rrd, @{&rrd_lastupdate()}; + RRDs::graph (@rrd); + + $ERROR = RRDs::error; + print "Error in RRD::graph for squid requests: $ERROR\n" if $ERROR; + + @rrd = (); + + push @rrd, @{&rrd_header("squid-hits", $period, "hits percentage ($Lang::tr{$period})", -1, -1)}; + + push @rrd, "DEF:hits_per=$rrdlog/squid_requests.rrd:hits_per:AVERAGE"; + push @rrd, "LINE2:hits_per#00FF00:hits percentage\\j"; + push @rrd, "GPRINT:hits_per:MAX:$Lang::tr{'maximal'}\\:%8.0lf"; + push @rrd, "GPRINT:hits_per:AVERAGE:$Lang::tr{'average'}\\:%8.0lf"; + push @rrd, "GPRINT:hits_per:LAST:$Lang::tr{'current'}\\:%8.0lf\\j"; + + push @rrd, @{&rrd_lastupdate()}; + RRDs::graph (@rrd); + + $ERROR = RRDs::error; + print "Error in RRD::graph for squid hits: $ERROR\n" if $ERROR; +} + sub updatesquiddata { my $sock; my $host = "127.0.0.1"; my $port = "82"; + if (!-e "$rrdlog/squid_requests.rrd") { + RRDs::create( + "$rrdlog/squid_requests.rrd", + "--step=300", + "DS:requests:DERIVE:600:0:U", + "DS:hits_per:GAUGE:600:0:U", + "RRA:AVERAGE:0.5:1:576", "RRA:AVERAGE:0.5:6:672", + "RRA:AVERAGE:0.5:24:732", "RRA:AVERAGE:0.5:144:1460" + ); + $ERROR = RRDs::error; + print "Error in RRD::create for squid requests: $ERROR\n" if $ERROR; + } + if (!($sock = IO::Socket::INET->new(PeerAddr => scalar($host), PeerPort => $port, Proto => 'tcp'))) { print "Could not connect to proxy manager. Proxy probably disabled.\n"; return; @@ -509,21 +557,23 @@ my @result = <$sock>; close $sock; + my %vals; open(FILE, ">/var/log/squid/info"); foreach(@result) { print FILE $_; + $vals{requests} = $1 if (/Number of HTTP requests received:\s+(\d+)/); + $vals{hits_per} = $1 if (/Hits as % of all requests:\s+5min:\s+([^%]+)%,\s+60min:\s+([^%]+)%/); } close(FILE); -} +# print "$vals{requests} $vals{hits_per}\n"; -### -### Squid Graphs -### -if (-e "/var/log/squid/access.log") { - system("/usr/bin/squid-graph -o=/home/httpd/html/sgraph --tcp-only < /var/log/squid/access.log >/dev/null 2>&1"); + RRDs::update("$rrdlog/squid_requests.rrd", "-t", "requests:hits_per", "N:$vals{requests}:$vals{hits_per}"); + $ERROR = RRDs::error; + print "Error in RRD::update for squid: $ERROR\n" if $ERROR; } + ### ### utf8 conversion ### @@ -622,3 +672,8 @@ } updatesquiddata(); +updatesquidgraph("hour"); +updatesquidgraph("day"); +updatesquidgraph("week"); +updatesquidgraph("month"); +updatesquidgraph("year"); Modified: ipcop/trunk/updates/2.1.5/ROOTFILES.i486-2.1.5 =================================================================== --- ipcop/trunk/updates/2.1.5/ROOTFILES.i486-2.1.5 2014-04-11 16:18:49 UTC (rev 7461) +++ ipcop/trunk/updates/2.1.5/ROOTFILES.i486-2.1.5 2014-04-11 16:21:41 UTC (rev 7462) @@ -3,6 +3,7 @@ /home/httpd/cgi-bin/ddns.cgi /home/httpd/cgi-bin/index.cgi /home/httpd/cgi-bin/iptablesgui.cgi +/home/httpd/cgi-bin/proxygraphs.cgi /home/httpd/cgi-bin/upload.cgi /usr/local/bin/makegraphs.pl /usr/local/bin/upgrade.sh This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Put Bad Developers to Shame Dominate Development with Jenkins Continuous Integration Continuously Automate Build, Test & Deployment Start a new project now. Try Jenkins in the cloud. http://p.sf.net/sfu/13600_Cloudbees _______________________________________________ Ipcop-svn mailing list Ipcop-svn@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ipcop-svn