ports/94692: [patch] couriergraph won't record imap login + update to version "1.10stack"
Patrick PRONIEWSKI
patpro at patpro.net
Sun Mar 19 14:20:14 UTC 2006
>Number: 94692
>Category: ports
>Synopsis: [patch] couriergraph won't record imap login + update to version "1.10stack"
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sun Mar 19 14:20:13 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator: Patrick PRONIEWSKI
>Release: 5.4-RELEASE-p10
>Organization:
Université Louis Lumière Lyon 2
>Environment:
FreeBSD my-host 5.4-RELEASE-p10 FreeBSD 5.4-RELEASE-p10 #0: Fri Jan 27 10:21:28 CET 2006 patpro at my-host:/usr/obj/usr/src/sys/PATPRO-20050829 i386
>Description:
couriergraph is a port based on Mailgraph that draw graphs for login stats of POP, POP-SSL, IMAP, IMAP-SSL services.
couriergraph as it's provided in FreeBSD Ports can't record imap login due to a typo in the file patch-couriergraph.pl :
line 37 reads
" + elsif ($prog eq 'imap') {"
where it should reads
" + elsif ($prog eq 'imapd') {"
Other modifications leading to version "1.10stack" are made available through the diffs output below
>How-To-Repeat:
>Fix:
too diffs :
--- couriergraph.cgi Mon Oct 24 11:21:38 2005
+++ couriergraph.cgi.new Sun Mar 19 14:54:18 2006
@@ -1,16 +1,16 @@
#!/usr/bin/perl -w
# couriergraph -- a postfix statistics rrdtool frontend
-# copyright (c) 2002-2004 Ralf Hildebrandt <ralf.hildebrandt at charite.de>
+# copyright (c) 2002-2006 Ralf Hildebrandt <ralf.hildebrandt at charite.de>
# based upon mailgraph, which is
# mailgraph -- a postfix statistics rrdtool frontend
-# copyright (c) 2000-2004 David Schweikert <dws at ee.ethz.ch>
+# copyright (c) 2000-2006 David Schweikert <dws at ee.ethz.ch>
# released under the GNU General Public License
use RRDs;
use POSIX qw(uname);
-my $VERSION = "1.10";
+my $VERSION = "1.10stack";
my $host = (POSIX::uname())[1];
my $scriptname = 'couriergraph.cgi';
@@ -18,9 +18,9 @@
my $points_per_sample = 3;
my $ypoints = 160;
my $ypoints_err = 96;
-my $rrd = '/etc/postfix/couriergraph.rrd'; # path to where the RRD database is
-my $rrd_virus = '/etc/postfix/mailgraph_virus.rrd'; # path to where the Virus RRD database is
+my $rrd = '/var/db/couriergraph/couriergraph.rrd'; # path to where the RRD database is
my $tmp_dir = '/tmp/couriergraph'; # temporary directory where to store the images
+my $rrdtool_1_0 = ($RRDs::VERSION < 1.199908);
my @graphs = (
{ title => 'Day Graphs', seconds => 3600*24, },
@@ -29,15 +29,6 @@
{ title => 'Year Graphs', seconds => 3600*24*365, },
);
-my %color = (
- sent => '000099', # rrggbb in hex
- received => '009900',
- rejected => 'AA0000',
- bounced => '000000',
- virus => 'DDBB00',
- spam => '999999',
-);
-
sub graph($$$)
{
my $range = shift;
@@ -59,80 +50,57 @@
'--color', 'SHADEA#ffffff',
'--color', 'SHADEB#ffffff',
'--color', 'BACK#ffffff',
-
- $rrdtool_1_0 ? () : (
- '--slope-mode'
+
+ $RRDs::VERSION < 1.2002 ? () : (
+ '--slope-mode'
),
"DEF:pop3d_login=$rrd:pop3d_login:AVERAGE",
"DEF:mpop3d_login=$rrd:pop3d_login:MAX",
- "DEF:imapd_login=$rrd:imapd_login:AVERAGE",
- "DEF:mimapd_login=$rrd:imapd_login:MAX",
+ "DEF:pop3d_ssl_login=$rrd:pop3d_ssl_login:AVERAGE",
+ "DEF:mpop3d_ssl_login=$rrd:pop3d_ssl_login:MAX",
+
"CDEF:rpop3d_login=pop3d_login,60,*",
"CDEF:vpop3d_login=pop3d_login,UN,0,pop3d_login,IF,$range,*",
"CDEF:rmpop3d_login=mpop3d_login,60,*",
- "CDEF:rimapd_login=imapd_login,60,*",
- "CDEF:vimapd_login=imapd_login,UN,0,imapd_login,IF,$range,*",
- "CDEF:rmimapd_login=mimapd_login,60,*",
- 'LINE2:rpop3d_login#BB0000:pop3',
- 'GPRINT:vpop3d_login:AVERAGE:total\: %.0lf logins',
- 'GPRINT:rmpop3d_login:MAX:max\: %.0lf logins/min\l',
- 'LINE2:rimapd_login#009900:imap',
- 'GPRINT:vimapd_login:AVERAGE:total\: %.0lf logins',
- 'GPRINT:rmimapd_login:MAX:max\: %.0lf logins/min\l',
- 'HRULE:0#000000',
- 'COMMENT:\s',
- 'COMMENT:['.$date.']\r',
- );
- my $ERR=RRDs::error;
- die "ERROR: $ERR\n" if $ERR;
-}
-sub graph_ssl($$$)
-{
- my $range = shift;
- my $file = shift;
- my $title = shift;
- my $step = $range*$points_per_sample/$xpoints;
- my $date = localtime(time);
- $date =~ s|:|\\:|g unless $rrdtool_1_0;
-
- my ($graphret,$xs,$ys) = RRDs::graph($file,
- '--imgformat', 'PNG',
- '--width', $xpoints,
- '--height', $ypoints_err,
- '--start', "-$range",
- '--vertical-label', 'logins/hour',
- '--lower-limit', 0,
- '--units-exponent', 0, # don't show milli-messages/s
- '--lazy',
- '--color', 'SHADEA#ffffff',
- '--color', 'SHADEB#ffffff',
- '--color', 'BACK#ffffff',
-
- $rrdtool_1_0 ? () : (
- '--slope-mode'
- ),
+ "CDEF:rpop3d_ssl_login=pop3d_ssl_login,60,*",
+ "CDEF:vpop3d_ssl_login=pop3d_ssl_login,UN,0,pop3d_ssl_login,IF,$range,*",
+ "CDEF:rmpop3d_ssl_login=mpop3d_ssl_login,60,*",
- "DEF:pop3d_ssl_login=$rrd:pop3d_ssl_login:AVERAGE",
- "DEF:mpop3d_ssl_login=$rrd:pop3d_ssl_login:MAX",
+ "DEF:imapd_login=$rrd:imapd_login:AVERAGE",
+ "DEF:mimapd_login=$rrd:imapd_login:MAX",
"DEF:imapd_ssl_login=$rrd:imapd_ssl_login:AVERAGE",
"DEF:mimapd_ssl_login=$rrd:imapd_ssl_login:MAX",
- "CDEF:rpop3d_ssl_login=pop3d_ssl_login,3600,*",
- "CDEF:vpop3d_ssl_login=pop3d_ssl_login,UN,0,pop3d_ssl_login,IF,$range,*",
- "CDEF:rmpop3d_ssl_login=mpop3d_ssl_login,3600,*",
- "CDEF:rimapd_ssl_login=imapd_ssl_login,3600,*",
- "CDEF:rmimapd_ssl_login=mimapd_ssl_login,3600,*",
-
-"CDEF:vimapd_ssl_login=imapd_ssl_login,UN,0,imapd_ssl_login,IF,$range,*",
- 'LINE2:rpop3d_ssl_login#000000:pop3',
- 'GPRINT:vpop3d_ssl_login:AVERAGE:total\: %.0lf logins',
- 'GPRINT:rmpop3d_ssl_login:MAX:max\: %.0lf logins/hour\l',
- 'LINE2:rimapd_ssl_login#000099:imap',
- 'GPRINT:vimapd_ssl_login:AVERAGE:total\: %.0lf logins',
- 'GPRINT:rmimapd_ssl_login:MAX:max\: %.0lf logins/hour\l',
+
+ "CDEF:rimapd_login=imapd_login,60,*",
+ "CDEF:vimapd_login=imapd_login,UN,0,imapd_login,IF,$range,*",
+ "CDEF:rmimapd_login=mimapd_login,60,*",
+
+ "CDEF:rimapd_ssl_login=imapd_ssl_login,60,*",
+ "CDEF:rmimapd_ssl_login=mimapd_ssl_login,60,*",
+ "CDEF:vimapd_ssl_login=imapd_ssl_login,UN,0,imapd_ssl_login,IF,$range,*",
+
+ 'LINE:rpop3d_login#DD0000:pop3 ',
+ 'GPRINT:vpop3d_login:AVERAGE:total\: %8.0lf logins',
+ 'GPRINT:rmpop3d_login:MAX:max\: %4.0lf logins/min\l',
+ 'HRULE:0#000000',
+
+ 'LINE:rpop3d_ssl_login#770000:pop3/ssl:STACK',
+ 'GPRINT:vpop3d_ssl_login:AVERAGE:total\: %8.0lf logins',
+ 'GPRINT:rmpop3d_ssl_login:MAX:max\: %4.0lf logins/min\l',
'HRULE:0#000000',
+ 'LINE:rimapd_login#00DD00:imap ',
+ 'GPRINT:vimapd_login:AVERAGE:total\: %8.0lf logins',
+ 'GPRINT:rmimapd_login:MAX:max\: %4.0lf logins/min\l',
+ 'HRULE:0#000000',
+
+ 'LINE:rimapd_ssl_login#007700:imap/ssl:STACK',
+ 'GPRINT:vimapd_ssl_login:AVERAGE:total\: %8.0lf logins',
+ 'GPRINT:rmimapd_ssl_login:MAX:max\: %4.0lf logins/min\l',
+
+ 'COMMENT:\s',
'COMMENT:['.$date.']\r',
);
my $ERR=RRDs::error;
@@ -160,7 +128,6 @@
print "<H2>$graphs[$n]{title}</H2>\n";
print "</div>\n";
print "<P><IMG BORDER=\"0\" SRC=\"$scriptname?${n}-n\" ALT=\"couriergraph\">\n";
- print "<P><IMG BORDER=\"0\" SRC=\"$scriptname?${n}-e\" ALT=\"couriergraph\">\n";
}
print <<FOOTER;
@@ -209,11 +176,6 @@
graph($graphs[$1]{seconds}, $file, $graphs[$1]{title});
send_image($file);
}
- elsif($img =~ /^(\d+)-e$/) {
- my $file = "$tmp_dir/$uri/couriergraph_$1_err.png";
- graph_ssl($graphs[$1]{seconds}, $file, $graphs[$1]{title});
- send_image($file);
- }
else {
die "ERROR: invalid argument\n";
}
@@ -224,3 +186,4 @@
}
main;
+
---------------------
--- couriergraph.pl Tue Dec 7 11:33:12 2004
+++ couriergraph.pl.new Sun Mar 19 14:54:48 2006
@@ -314,11 +314,11 @@
my $daemon_logfile = '/var/log/couriergraph.log';
my $daemon_pidfile = '/var/run/couriergraph.pid';
-my $daemon_rrd_dir = '/var/log';
+my $daemon_rrd_dir = '/var/db/couriergraph';
# global variables
my $logfile;
-my $rrd = "/etc/postfix/couriergraph.rrd";
+my $rrd = "couriergraph.rrd";
my $year;
my $this_minute;
my %sum = ( imapd_ssl_login => 0, imapd_login => 0, pop3d_ssl_login => 0, pop3d_login => 0 );
@@ -350,7 +350,7 @@
print " --host=HOST use only entries for HOST (regexp) in syslog\n";
print " -d, --daemon start in the background\n";
print " --daemon-pid=FILE write PID to FILE instead of /var/run/mailgraph.pid\n";
- print " --daemon-rrd=DIR write RRDs to DIR instead of /var/log\n";
+ print " --daemon-rrd=DIR write RRDs to DIR instead of /var/db/couriergraph\n";
print " --daemon-log=FILE write verbose-log to FILE instead of /var/log/mailgraph.log\n";
print " --rrd-name=NAME use NAME.rrd for the rrd files\n";
@@ -473,12 +473,12 @@
my $prog = $sl->[2];
my $text = $sl->[4];
- if ($prog eq 'courierpop3login') {
+ if ($prog eq 'pop3d') {
if($text =~ /LOGIN,/) {
event($time, 'pop3d_login');
}
}
- elsif ($prog eq 'imaplogin') {
+ elsif ($prog eq 'imapd') {
if($text =~ /LOGIN,/) {
event($time, 'imapd_login');
}
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list