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