innreport feature request ...

Fabien Tassin fta at oleane.net
Wed Sep 29 21:06:50 UTC 1999


According to The Hermit Hacker:
> 
> NNRP Readership Statistics are great...but how hard would it be to put a
> 'summary' report just over top of it, that took:
> 
> pm3-56k-24.tht.net
> pm3-56k-4.tht.net
> pm3-56k-7.tht.net
> 
> and summarized it as just *.tht.net, and gave totals for that? 

it's not very difficult.

Just try this (untested) patch.

-- 
Fabien Tassin -+- fta at oleane.net


-- Attached file included as plaintext by Listar --

*** innreport.conf.in.orig	Fri Jun 25 11:03:03 1999
--- innreport.conf.in	Wed Sep 29 23:00:32 1999
***************
*** 94,100 ****
  		};
  	};
  };
! 		
  section prog_type {
          # skip    true;                          # used to skip a section.
          title   "Log entries by program:";
--- 94,100 ----
  		};
  	};
  };
! 
  section prog_type {
          # skip    true;                          # used to skip a section.
          title   "Log entries by program:";
***************
*** 303,311 ****
                  name          "%Accpt";
  		format_name   "%6s";
  		format        "%4d%%";
! 		value         "$innd_offered{$key} == 0 ? 0 : 
                               $innd_accepted{$key} / $innd_offered{$key} * 100";
! 		total         "total(%innd_offered) == 0 ? 0 : 
                             total(%innd_accepted) / total(%innd_offered) * 100";
          };
          column {
--- 303,311 ----
                  name          "%Accpt";
  		format_name   "%6s";
  		format        "%4d%%";
! 		value         "$innd_offered{$key} == 0 ? 0 :
                               $innd_accepted{$key} / $innd_offered{$key} * 100";
! 		total         "total(%innd_offered) == 0 ? 0 :
                             total(%innd_accepted) / total(%innd_offered) * 100";
          };
          column {
***************
*** 378,384 ****
          column {
                  name          "%Size";
  		format_name   "%7s";
! 		value         "$inn_flow_size{$key} / 
                                            total(%inn_flow_size) * 100";
  		format        "%6.1f%%";
  		total         "100";
--- 378,384 ----
          column {
                  name          "%Size";
  		format_name   "%7s";
! 		value         "$inn_flow_size{$key} /
                                            total(%inn_flow_size) * 100";
  		format        "%6.1f%%";
  		total         "100";
***************
*** 386,392 ****
          column {
                  name          "KB/sec";
  		format_name   "%7s";
! 		value         "$inn_flow_size{$key} / 
  		                       $inn_flow_time{$key} / 1024";
  		format        "%7.2f";
  		total         "total(%inn_flow_size) /
--- 386,392 ----
          column {
                  name          "KB/sec";
  		format_name   "%7s";
! 		value         "$inn_flow_size{$key} /
  		                       $inn_flow_time{$key} / 1024";
  		format        "%7.2f";
  		total         "total(%inn_flow_size) /
***************
*** 468,474 ****
          column {
                  name          "KB/sec";
                  format_name   "%7s";
!                 value         "$cnfsstat_rate{$key} / 
                                         $cnfsstat_samples{$key} / 1024";
                  format        "%7.2f";
                  total         "total(%cnfsstat_rate) /
--- 468,474 ----
          column {
                  name          "KB/sec";
                  format_name   "%7s";
!                 value         "$cnfsstat_rate{$key} /
                                         $cnfsstat_samples{$key} / 1024";
                  format        "%7.2f";
                  total         "total(%cnfsstat_rate) /
***************
*** 1522,1528 ****
                  name          "Pct";
  		format_name   "%4s";
  		format        "%3d%%";
! 		value         "$innxmit_site{$key} ? 100 * 
  		               ($innxmit_site{$key} -
  			       ($innxmit_afail_host{$key} +
  			       $innxmit_hiload{$key} + $innxmit_nospace{$key} +
--- 1522,1528 ----
                  name          "Pct";
  		format_name   "%4s";
  		format        "%3d%%";
! 		value         "$innxmit_site{$key} ? 100 *
  		               ($innxmit_site{$key} -
  			       ($innxmit_afail_host{$key} +
  			       $innxmit_hiload{$key} + $innxmit_nospace{$key} +
***************
*** 1806,1811 ****
--- 1806,1874 ----
                  format        "%9s";
  		value         "time($nnrpd_times{$key})";
  		total         "time(total(%nnrpd_times))";
+         };
+ };
+ 
+ section nnrpd_dom_groups {
+         title   "NNRP readership statistics (by domain):";
+         data    "%nnrpd_dom_connect";
+         sort    "$nnrpd_dom_articles{$b} <=> $nnrpd_dom_articles{$a}";
+         numbering true;
+         column {
+                 name          "System";
+                 format        "%-30.30s";
+                 value         "$key";
+                 format_total  "TOTAL: %-23.23s";
+                 total         "$num";
+         };
+         column {
+                 name          "Conn";
+                 format_name   "%4s";
+                 format        "%4d";
+                 value         "$nnrpd_dom_connect{$key}";
+                 total         "total(%nnrpd_dom_connect)";
+         };
+         column {
+                 name          "Arts";
+                 format_name   "%6s";
+                 format        "%6d";
+                 value         "$nnrpd_dom_articles{$key}";
+                 total         "total(%nnrpd_dom_articles)";
+         };
+         column {
+                 name          "Size";
+                 format        "%9s";
+                 value         "bytes($nnrpd_dom_bytes{$key})";
+                 total         "bytes(total(%nnrpd_dom_bytes))";
+         };
+         column {
+                 name          "Groups";
+                 format_name   "%6s";
+                 format        "%6d";
+                 value         "$nnrpd_dom_groups{$key}";
+                 total         "total(%nnrpd_dom_groups)";
+         };
+         column {
+                 name          "Post";
+                 format_name   "%4s";
+                 format        "%4d";
+                 value         "$nnrpd_dom_post_ok{$key}";
+                 total         "total(%nnrpd_dom_post_ok)";
+         };
+         column {
+                 name          "Rej";
+                 format_name   "%4s";
+                 format        "%4d";
+                 value         "$nnrpd_dom_post_rej{$key} + $nnrpd_dom_post_error{$key}"\
+ ;
+                 total         "total(%nnrpd_dom_post_rej) +
+                                total(%nnrpd_dom_post_error)";
+         };
+         column {
+                 name          "Elapsed";
+                 format        "%9s";
+                 value         "time($nnrpd_dom_times{$key})";
+                 total         "time(total(%nnrpd_dom_times))";
          };
  };
  
*** innreport_inn.pm.orig	Wed Sep 29 22:28:00 1999
--- innreport_inn.pm	Wed Sep 29 22:56:16 1999
***************
*** 276,282 ****
      return 1 if $left =~ m/\S+ closed$/o;
      # checkpoint
      return 1 if $left =~ m/^\S+:\d+ checkpoint /o;
!     # if ($left =~ /(\S+):\d+ checkpoint seconds (\d+) accepted (\d+) 
      #     refused (\d+) rejected (\d+)$/) {
      #   # Skipped...
      #   my ($server, $seconds, $accepted, $refused, $rejected) =
--- 276,282 ----
      return 1 if $left =~ m/\S+ closed$/o;
      # checkpoint
      return 1 if $left =~ m/^\S+:\d+ checkpoint /o;
!     # if ($left =~ /(\S+):\d+ checkpoint seconds (\d+) accepted (\d+)
      #     refused (\d+) rejected (\d+)$/) {
      #   # Skipped...
      #   my ($server, $seconds, $accepted, $refused, $rejected) =
***************
*** 324,330 ****
      }
      # time (from the Greco's patch)
      # ME time X idle X(X) artwrite X(X) artlink X(X) hiswrite X(X) hissync
!     # X(X) sitesend X(X) artctrl X(X) artcncl X(X) hishave X(X) hisgrep X(X) 
      # perl X(X) python X(X)
      # Note : some parameters are optional because several versions of this
      # patch exist.
--- 324,330 ----
      }
      # time (from the Greco's patch)
      # ME time X idle X(X) artwrite X(X) artlink X(X) hiswrite X(X) hissync
!     # X(X) sitesend X(X) artctrl X(X) artcncl X(X) hishave X(X) hisgrep X(X)
      # perl X(X) python X(X)
      # Note : some parameters are optional because several versions of this
      # patch exist.
***************
*** 429,435 ****
  	      if $25 && $innd_time_min{'overview write'} > $24 / ($25 || 1);
  	    $innd_time_max{'overview write'} = $24 / ($25 || 1)
  	      if $25 && $innd_time_max{'overview write'} < $24 / ($25 || 1);
! 	  }  
          }
        }
        return 1;
--- 429,435 ----
  	      if $25 && $innd_time_min{'overview write'} > $24 / ($25 || 1);
  	    $innd_time_max{'overview write'} = $24 / ($25 || 1)
  	      if $25 && $innd_time_max{'overview write'} < $24 / ($25 || 1);
! 	  }
          }
        }
        return 1;
***************
*** 457,463 ****
      }
      # bad_hosts (appears after a "cant gesthostbyname" from a feed)
      return 1 if $left =~ m/\S+ bad_hosts /o;
!     # cant read 
      return 1 if $left =~ m/\S+ cant read/o;
      # cant write
      return 1 if $left =~ m/\S+ cant write/o;
--- 457,463 ----
      }
      # bad_hosts (appears after a "cant gesthostbyname" from a feed)
      return 1 if $left =~ m/\S+ bad_hosts /o;
!     # cant read
      return 1 if $left =~ m/\S+ cant read/o;
      # cant write
      return 1 if $left =~ m/\S+ cant write/o;
***************
*** 863,869 ****
        return 1 if $left =~ m/ cant chmod \S+\/innfeed.pid/o;
        return 1 if $left =~ m/ tape open failed /o;
        return 1 if $left =~ m/ oserr open checkpoint file:/o;
!       # ME finishing (quickly) 
        return 1 if $left =~ m/\(quickly\) /o;
        # ME config: value of streaming is not a boolean
        return 1 if $left =~ m/config: value of \S+ is not/o;
--- 863,869 ----
        return 1 if $left =~ m/ cant chmod \S+\/innfeed.pid/o;
        return 1 if $left =~ m/ tape open failed /o;
        return 1 if $left =~ m/ oserr open checkpoint file:/o;
!       # ME finishing (quickly)
        return 1 if $left =~ m/\(quickly\) /o;
        # ME config: value of streaming is not a boolean
        return 1 if $left =~ m/config: value of \S+ is not/o;
***************
*** 904,910 ****
        return 1;
      }
      # 437 Unwanted site ... in path
!     if ($left =~ 
        /(\S+) rejected [^\s]+ \(.*?\) 437 Unwanted site (\S+) in path$/o) {
        my ($server, $site) = ($1, $2);
        $server = lc $server unless $CASE_SENSITIVE;
--- 904,910 ----
        return 1;
      }
      # 437 Unwanted site ... in path
!     if ($left =~
        /(\S+) rejected [^\s]+ \(.*?\) 437 Unwanted site (\S+) in path$/o) {
        my ($server, $site) = ($1, $2);
        $server = lc $server unless $CASE_SENSITIVE;
***************
*** 914,920 ****
        return 1;
      }
      # 437 Unwanted newsgroup "..."
!     if ($left =~ 
        /(\S+) rejected [^\s]+ \(.*?\) 437 Unwanted newsgroup \"(\S+)\"$/o) {
        my ($server, $group) = ($1, $2);
        $server = lc $server unless $CASE_SENSITIVE;
--- 914,920 ----
        return 1;
      }
      # 437 Unwanted newsgroup "..."
!     if ($left =~
        /(\S+) rejected [^\s]+ \(.*?\) 437 Unwanted newsgroup \"(\S+)\"$/o) {
        my ($server, $group) = ($1, $2);
        $server = lc $server unless $CASE_SENSITIVE;
***************
*** 924,930 ****
        return 1;
      }
      # 437 Unwanted distribution "..."
!     if ($left =~ 
        /(\S+) rejected [^\s]+ \(.*?\) 437 Unwanted distribution \"(\S+)\"$/o) {
        my ($server, $dist) = ($1, $2);
        $server = lc $server unless $CASE_SENSITIVE;
--- 924,930 ----
        return 1;
      }
      # 437 Unwanted distribution "..."
!     if ($left =~
        /(\S+) rejected [^\s]+ \(.*?\) 437 Unwanted distribution \"(\S+)\"$/o) {
        my ($server, $dist) = ($1, $2);
        $server = lc $server unless $CASE_SENSITIVE;
***************
*** 1288,1311 ****
      return 1 if $left =~ /perl filtering enabled$/o;
      # connect
      if ($left =~ /(\S+) connect$/o) {
!       my $server = $1;
!       $server = lc $server unless $CASE_SENSITIVE;
!       $nnrpd_connect{$server}++;
        return 1;
      }
      # group
      if ($left =~ /(\S+) group (\S+) (\d+)$/o) {
!       my ($server, $group, $num) = ($1, $2, $3);
!       if ($num != 0) {
  	$nnrpd_group{$group} += $num;
  	my ($hierarchy) = $group =~ /^([^\.]+).*$/o;
  	$nnrpd_hierarchy{$hierarchy} += $num;
        }
        return 1;
      }
!     # post failed 
      if ($left =~ /(\S+) post failed (.*)$/o) {
!       my ($server, $error) = ($1, $2);
        $nnrpd_post_error{$error}++;
        return 1;
      }
--- 1288,1313 ----
      return 1 if $left =~ /perl filtering enabled$/o;
      # connect
      if ($left =~ /(\S+) connect$/o) {
!       my $cust = $1;
!       $cust = lc $cust unless $CASE_SENSITIVE;
!       my $dom = &host2dom($cust);
!       $nnrpd_dom_connect{$dom}++;
!       $nnrpd_connect{$cust}++;
        return 1;
      }
      # group
      if ($left =~ /(\S+) group (\S+) (\d+)$/o) {
!       my ($cust, $group, $num) = ($1, $2, $3);
!       if ($num) {
  	$nnrpd_group{$group} += $num;
  	my ($hierarchy) = $group =~ /^([^\.]+).*$/o;
  	$nnrpd_hierarchy{$hierarchy} += $num;
        }
        return 1;
      }
!     # post failed
      if ($left =~ /(\S+) post failed (.*)$/o) {
!       my ($cust, $error) = ($1, $2);
        $nnrpd_post_error{$error}++;
        return 1;
      }
***************
*** 1313,1411 ****
      return 1 if $left =~ /\S+ post ok/o;
      # posts
      if ($left =~ /(\S+) posts received (\d+) rejected (\d+)$/o) {
!       my ($server, $received, $rejected) = ($1, $2, $3);
!       $server = lc $server unless $CASE_SENSITIVE;
!       $nnrpd_post_ok{$server} += $received;
!       $nnrpd_post_rej{$server} += $rejected;
        return 1;
      }
      # noperm post without permission
      if ($left =~ /(\S+) noperm post without permission/o) {
!       my $server = $1;
!       $server = lc $server unless $CASE_SENSITIVE;
!       $nnrpd_post_rej{$server} ++;
        return 1;
      }
      # no_permission
      if ($left =~ /(\S+) no_(permission|access)$/o) {
!       my $server = $1;
!       $server = lc $server unless $CASE_SENSITIVE;
!       $nnrpd_no_permission{$server}++;
        return 1;
      }
      # bad_auth
      if ($left =~ /(\S+) bad_auth$/o) {
!       my $server = $1;
!       $server = lc $server unless $CASE_SENSITIVE;
!       $nnrpd_no_permission{$server}++;
        return 1;
      }
      # unrecognized + command
      if ($left =~ /(\S+) unrecognized (.*)$/o) {
!       my ($server, $error) = ($1, $2);
!       $server = lc $server unless $CASE_SENSITIVE;
        $error = "_null command_" if ($error !~ /\S/);
        $error =~ s/^(xmotd) .*$/$1/i if ($error =~ /^xmotd .*$/i);
!       $nnrpd_unrecognized{$server}++;
        $nnrpd_unrecogn_cmd{$error}++;
        return 1;
      }
      # exit
      if ($left =~ /(\S+) exit articles (\d+) groups (\d+)$/o) {
!       my ($server, $articles, $groups) = ($1, $2, $3);
!       $server = lc $server unless $CASE_SENSITIVE;
!       $nnrpd_connect{$server}++ if ($server eq '?');
!       $nnrpd_groups{$server} += $groups;
!       $nnrpd_articles{$server} += $articles;
        return 1;
      }
      # times
      if ($left =~ /(\S+) times user (\S+) system (\S+) elapsed (\S+)$/o) {
!       my ($server, $user, $system, $elapsed) = ($1, $2, $3, $4);
!       $server = lc $server unless $CASE_SENSITIVE;
!       $nnrpd_times{$server} += $elapsed;
        return 1;
      }
      # artstats
      if ($left =~ /(\S+) artstats get (\d+) time (\d+) size (\d+)$/o) {
!       my ($server, $articles, $time, $bytes) = ($1, $2, $3, $4);
!       $server = lc $server unless $CASE_SENSITIVE;
!       $nnrpd_bytes{$server} += $bytes;
        return 1;
      }
      # timeout
      if ($left =~ /(\S+) timeout$/o) {
!       my $server = $1;
!       $server = lc $server unless $CASE_SENSITIVE;
!       $nnrpd_timeout{$server}++;
        return 1;
      }
      # timeout in post
      if ($left =~ /(\S+) timeout in post$/o) {
!       my $server = $1;
!       $server = lc $server unless $CASE_SENSITIVE;
!       $nnrpd_timeout{$server}++;
        return 1;
      }
      # cant read Connection timed out
      if ($left =~ /(\S+) cant read Connection timed out$/o) {
!       my $server = $1;
!       $server = lc $server unless $CASE_SENSITIVE;
!       $nnrpd_timeout{$server}++;
        return 1;
      }
      # cant read Operation timed out
      if ($left =~ /(\S+) cant read Operation timed out$/o) {
!       my $server = $1;
!       $server = lc $server unless $CASE_SENSITIVE;
!       $nnrpd_timeout{$server}++;
        return 1;
      }
      # cant read Connection reset by peer
      if ($left =~ /(\S+) cant read Connection reset by peer$/o) {
!       my $server = $1;
!       $server = lc $server unless $CASE_SENSITIVE;
!       $nnrpd_reset_peer{$server}++;
        return 1;
      }
      # gethostbyaddr: xxx.yyy.zzz != a.b.c.d
--- 1315,1441 ----
      return 1 if $left =~ /\S+ post ok/o;
      # posts
      if ($left =~ /(\S+) posts received (\d+) rejected (\d+)$/o) {
!       my ($cust, $received, $rejected) = ($1, $2, $3);
!       $cust = lc $cust unless $CASE_SENSITIVE;
!       my $dom = &host2dom($cust);
!       $nnrpd_dom_post_ok{$dom} += $received;
!       $nnrpd_dom_post_rej{$dom} += $rejected;
!       $nnrpd_post_ok{$cust} += $received;
!       $nnrpd_post_rej{$cust} += $rejected;
        return 1;
      }
      # noperm post without permission
      if ($left =~ /(\S+) noperm post without permission/o) {
!       my $cust = $1;
!       $cust = lc $cust unless $CASE_SENSITIVE;
!       my $dom = &host2dom($cust);
!       $nnrpd_dom_post_rej{$dom} ++;
!       $nnrpd_post_rej{$cust} ++;
        return 1;
      }
      # no_permission
      if ($left =~ /(\S+) no_(permission|access)$/o) {
!       my $cust = $1;
!       $cust = lc $cust unless $CASE_SENSITIVE;
!       my $dom = &host2dom($cust);
!       $nnrpd_no_permission{$cust}++;
!       $nnrpd_dom_no_permission{$dom}++;
        return 1;
      }
      # bad_auth
      if ($left =~ /(\S+) bad_auth$/o) {
!       my $cust = $1;
!       $cust = lc $cust unless $CASE_SENSITIVE;
!       my $dom = &host2dom($cust);
!       $nnrpd_dom_no_permission{$dom}++;
!       $nnrpd_no_permission{$cust}++;
        return 1;
      }
      # unrecognized + command
      if ($left =~ /(\S+) unrecognized (.*)$/o) {
!       my ($cust, $error) = ($1, $2);
!       $cust = lc $cust unless $CASE_SENSITIVE;
!       my $dom = &host2dom($cust);
        $error = "_null command_" if ($error !~ /\S/);
        $error =~ s/^(xmotd) .*$/$1/i if ($error =~ /^xmotd .*$/i);
!       $nnrpd_dom_unrecognized{$dom}++;
!       $nnrpd_unrecognized{$cust}++;
        $nnrpd_unrecogn_cmd{$error}++;
        return 1;
      }
      # exit
      if ($left =~ /(\S+) exit articles (\d+) groups (\d+)$/o) {
!       my ($cust, $articles, $groups) = ($1, $2, $3);
!       $cust = lc $cust unless $CASE_SENSITIVE;
!       my $dom = &host2dom($cust) || '?';
!       $nnrpd_connect{$cust}++, $nnrpd_dom_connect{$dom}++ if $cust eq '?';
!       $nnrpd_groups{$cust} += $groups;
!       $nnrpd_dom_groups{$dom} += $groups;
!       $nnrpd_articles{$cust} += $articles;
!       $nnrpd_dom_articles{$dom} += $articles;
        return 1;
      }
      # times
      if ($left =~ /(\S+) times user (\S+) system (\S+) elapsed (\S+)$/o) {
!       my ($cust, $user, $system, $elapsed) = ($1, $2, $3, $4);
!       $cust = lc $cust unless $CASE_SENSITIVE;
!       my $dom = &host2dom($cust);
!       $nnrpd_times{$cust} += $elapsed;
!       $nnrpd_dom_times{$dom} += $elapsed;
        return 1;
      }
      # artstats
      if ($left =~ /(\S+) artstats get (\d+) time (\d+) size (\d+)$/o) {
!       my ($cust, $articles, $time, $bytes) = ($1, $2, $3, $4);
!       $cust = lc $cust unless $CASE_SENSITIVE;
!       my $dom = &host2dom($cust);
!       $nnrpd_bytes{$cust} += $bytes;
!       $nnrpd_dom_bytes{$cust} += $bytes;
        return 1;
      }
      # timeout
      if ($left =~ /(\S+) timeout$/o) {
!       my $cust = $1;
!       $cust = lc $cust unless $CASE_SENSITIVE;
!       my $dom = &host2dom($cust);
!       $nnrpd_dom_timeout{$dom}++;
!       $nnrpd_timeout{$cust}++;
        return 1;
      }
      # timeout in post
      if ($left =~ /(\S+) timeout in post$/o) {
!       my $cust = $1;
!       $cust = lc $cust unless $CASE_SENSITIVE;
!       my $dom = &host2dom($cust);
!       $nnrpd_dom_timeout{$dom}++;
!       $nnrpd_timeout{$cust}++;
        return 1;
      }
      # cant read Connection timed out
      if ($left =~ /(\S+) cant read Connection timed out$/o) {
!       my $cust = $1;
!       $cust = lc $cust unless $CASE_SENSITIVE;
!       my $dom = &host2dom($cust);
!       $nnrpd_dom_timeout{$dom}++;
!       $nnrpd_timeout{$cust}++;
        return 1;
      }
      # cant read Operation timed out
      if ($left =~ /(\S+) cant read Operation timed out$/o) {
!       my $cust = $1;
!       $cust = lc $cust unless $CASE_SENSITIVE;
!       my $dom = &host2dom($cust);
!       $nnrpd_dom_timeout{$dom}++;
!       $nnrpd_timeout{$cust}++;
        return 1;
      }
      # cant read Connection reset by peer
      if ($left =~ /(\S+) cant read Connection reset by peer$/o) {
!       my $cust = $1;
!       $cust = lc $cust unless $CASE_SENSITIVE;
!       my $dom = &host2dom($cust);
!       $nnrpd_dom_reset_peer{$dom}++;
!       $nnrpd_reset_peer{$cust}++;
        return 1;
      }
      # gethostbyaddr: xxx.yyy.zzz != a.b.c.d
***************
*** 1707,1713 ****
          $added = $used - $cnfsstat_used{$buffer};
          if ($cycles > $cnfsstat_cycles{$buffer}) {
            $added += $size * ($cycles - $cnfsstat_cycles{$buffer});
!         } 
          if ($added > 0) {
            $cnfsstat_rate{$buffer} += $added / $period;
            $cnfsstat_samples{$buffer}++;
--- 1737,1743 ----
          $added = $used - $cnfsstat_used{$buffer};
          if ($cycles > $cnfsstat_cycles{$buffer}) {
            $added += $size * ($cycles - $cnfsstat_cycles{$buffer});
!         }
          if ($added > 0) {
            $cnfsstat_rate{$buffer} += $added / $period;
            $cnfsstat_samples{$buffer}++;
***************
*** 1816,1822 ****
        foreach $key (keys (%innd_time_min)) {
  	$innd_time_min{$key} = 0 if ($innd_time_min{$key} == $MIN);
  	$innd_time_max{$key} = 0 if ($innd_time_max{$key} == $MAX);
! 	
  	#$innd_time_min{$key} /= 1000;
  	#$innd_time_max{$key} /= 1000;
        }
--- 1846,1852 ----
        foreach $key (keys (%innd_time_min)) {
  	$innd_time_min{$key} = 0 if ($innd_time_min{$key} == $MIN);
  	$innd_time_max{$key} = 0 if ($innd_time_max{$key} == $MAX);
! 
  	#$innd_time_min{$key} /= 1000;
  	#$innd_time_max{$key} /= 1000;
        }
***************
*** 1833,1839 ****
      # adjust the crosspost stats.
      if (%crosspost) {
        foreach $key (keys (%crosspost)) {
! 	$crosspost_times{$key} = $crosspost_time ? 
  	  sprintf "%.2f", $crosspost{$key} / $crosspost_time * 60 : "?";
        }
      }
--- 1863,1869 ----
      # adjust the crosspost stats.
      if (%crosspost) {
        foreach $key (keys (%crosspost)) {
! 	$crosspost_times{$key} = $crosspost_time ?
  	  sprintf "%.2f", $crosspost{$key} / $crosspost_time * 60 : "?";
        }
      }
***************
*** 1873,1883 ****
  	  my $t = sprintf "%02d", $j;
  	  $inn_flow{"$prev_dd $t"} = 0;
  	}
! 	
  	# all the days between (if any)
  	# well, we can forget them as it is supposed to be a tool
  	# launched daily.
! 	
  	# the beginning of the last day..
  	for ($j = 0; $j < $h; $j++) {
  	  my $t = sprintf "%02d", $j;
--- 1903,1913 ----
  	  my $t = sprintf "%02d", $j;
  	  $inn_flow{"$prev_dd $t"} = 0;
  	}
! 
  	# all the days between (if any)
  	# well, we can forget them as it is supposed to be a tool
  	# launched daily.
! 
  	# the beginning of the last day..
  	for ($j = 0; $j < $h; $j++) {
  	  my $t = sprintf "%02d", $j;
***************
*** 2084,2089 ****
--- 2114,2127 ----
    $date1 += substr($a, 7, 2);
    $date2 += substr($b, 7, 2);
    $date1 - $date2;
+ }
+ 
+ sub host2dom {
+   my $host = shift;
+ 
+   $host =~ m/^[^\.]+(.*)/;
+   $host =~ m/^[\d\.]+$/ ? "unresolved" : "*$1";
+ 
  }
  
  1;




More information about the inn-workers mailing list