You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by fe...@apache.org on 2004/11/13 03:59:25 UTC

svn commit: rev 57555 - in spamassassin/trunk/lib/Mail: . SpamAssassin SpamAssassin/Plugin

Author: felicity
Date: Fri Nov 12 18:59:24 2004
New Revision: 57555

Modified:
   spamassassin/trunk/lib/Mail/SpamAssassin.pm
   spamassassin/trunk/lib/Mail/SpamAssassin/BayesStore.pm
   spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
   spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Razor2.pm
   spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/SPF.pm
Log:
bug 3777: instead of code (and plugins) accessing DEBUG and facilities variables from the Mail::SpamAssassin package directly, call dbg_check() and info_check() functions.  can optionally pass a facility to check, and if the facility is prepended by '+', the 'all' facility will be ignored (good for 'is facility X specifically enabled' ...)   also changed the Razor2 debugging to only show razor-agents debug only if the razor2 facility is enabled.

Modified: spamassassin/trunk/lib/Mail/SpamAssassin.pm
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin.pm	(original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin.pm	Fri Nov 12 18:59:24 2004
@@ -1656,6 +1656,26 @@
   }
 }
 
+# returns whether or not debugging is enabled in general or (if specified) for
+# a certain facility
+sub dbg_check {
+  my $facility = shift;
+  my $useall = 1;
+
+  if (defined $facility) {
+    if ($facility =~ /^(\+)(.+)$/) {
+      $facility = $2;
+      $useall = 0;
+    }
+    return($Mail::SpamAssassin::DEBUG && (
+      ($useall && $Mail::SpamAssassin::facilities{all}) ||
+      $Mail::SpamAssassin::facilities{$facility}
+      ));
+  }
+
+  return($Mail::SpamAssassin::DEBUG && $Mail::SpamAssassin::facilities{all});
+}
+
 # usage: info("facility: message")
 # This is used for informational messages indicating a normal, but
 # significant, condition.  This should be very infrequently called.
@@ -1673,6 +1693,31 @@
   if ($facilities{all} || $facilities{info} || $facilities{$facility}) {
     warn "info: $facility: $message\n";
   }
+}
+
+# returns whether or not info output is enabled in general or (if specified) for
+# a certain facility
+sub info_check {
+  my $facility = shift;
+  my $useall = 1;
+
+  if (defined $facility) {
+    if ($facility =~ /^(\+)(.+)$/) {
+      $facility = $2;
+      $useall = 0;
+    }
+    return($Mail::SpamAssassin::INFO && (
+      ($useall &&
+       ($Mail::SpamAssassin::facilities{all} ||
+        $Mail::SpamAssassin::facilities{info})) ||
+      $Mail::SpamAssassin::facilities{$facility}
+      ));
+  }
+
+  return($Mail::SpamAssassin::INFO && (
+    $Mail::SpamAssassin::facilities{all} ||
+    $Mail::SpamAssassin::facilities{info}
+  ));
 }
 
 # sa_die -- used to die with a useful exit code.

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/BayesStore.pm
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/BayesStore.pm	(original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/BayesStore.pm	Fri Nov 12 18:59:24 2004
@@ -319,7 +319,7 @@
     return 0 unless (%delta);
 
     # This will skip the for loop if debugging isn't enabled ...
-    if ($Mail::SpamAssassin::DEBUG) {
+    if (Mail::SpamAssassin::dbg_check('bayes')) {
       dbg("bayes: atime\ttoken reduction");
       dbg("bayes: ========\t===============");
       for(my $i = 1; $i<=$max_expire_mult; $i <<= 1) {

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm	(original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm	Fri Nov 12 18:59:24 2004
@@ -1459,13 +1459,14 @@
 
 sub ran_rule_debug_code {
   my ($self, $rulename, $ruletype, $bit) = @_;
+  my $dbgcache = Mail::SpamAssassin::dbg_check('rules');
 
-  return '' if (!$Mail::SpamAssassin::DEBUG && !$self->{save_pattern_hits});
+  return '' if (!$dbgcache && !$self->{save_pattern_hits});
 
   my $log_hits_code = '';
   my $save_hits_code = '';
 
-  if ($Mail::SpamAssassin::DEBUG) {
+  if ($dbgcache) {
     # note: keep this in 'single quotes' to avoid the $ & performance hit,
     # unless specifically requested by the caller.
     $log_hits_code = ': match=\'$&\'';
@@ -1833,7 +1834,7 @@
   $self->{uri_list} = \@uris;
 
   # list out the URLs for debugging ...
-  if ($Mail::SpamAssassin::DEBUG) {
+  if (Mail::SpamAssassin::dbg_check('uri')) {
     foreach my $nuri (@uris) {
       dbg("uri: uri found: $nuri");
     }
@@ -2256,7 +2257,7 @@
   my ($self, $evalhash, $prepend2desc, @extraevalargs) = @_;
   local ($_);
   
-  my $debugenabled = $Mail::SpamAssassin::DEBUG;
+  my $debugenabled = Mail::SpamAssassin::dbg_check();
 
   my $scoreset = $self->{conf}->get_score_set();
   while (my ($rulename, $test) = each %{$evalhash}) {
@@ -2354,8 +2355,6 @@
     return 0;
   }
   
-  my $debugenabled = $Mail::SpamAssassin::DEBUG;
-
   while (my ($rulename, $test) = each %{$evalhash}) {
     my $score = $self->{conf}->{scores}->{$rulename};
     next unless $score;

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Razor2.pm
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Razor2.pm	(original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Razor2.pm	Fri Nov 12 18:59:24 2004
@@ -125,14 +125,14 @@
   my $return = 0;
   my @results = ();
 
+  my $debug = $type eq 'check' ? 'razor2' : 'reporter';
+
   # razor also debugs to stdout. argh. fix it to stderr...
-  if ($Mail::SpamAssassin::DEBUG) {
+  if (Mail::SpamAssassin::dbg_check($debug)) {
     open (OLDOUT, ">&STDOUT");
     open (STDOUT, ">&STDERR");
   }
 
-  my $debug = $type eq 'check' ? 'razor2' : 'reporter';
-
   Mail::SpamAssassin::PerMsgStatus::enter_helper_run_mode($self);
 
     eval {
@@ -146,9 +146,7 @@
 
       if ($rc) {
         $rc->{opt} = {
-		   debug      => ($Mail::SpamAssassin::DEBUG &&
-				  ($Mail::SpamAssassin::facilities{all} ||
-				   $Mail::SpamAssassin::facilities{razor2})),
+		   debug      => Mail::SpamAssassin::dbg_check('+razor2'),
 		   foreground => 1,
 		   config     => $self->{main}->{conf}->{razor_config}
         };
@@ -291,7 +289,7 @@
   Mail::SpamAssassin::PerMsgStatus::leave_helper_run_mode($self);
 
   # razor also debugs to stdout. argh. fix it to stderr...
-  if ($Mail::SpamAssassin::DEBUG) {
+  if (Mail::SpamAssassin::dbg_check($debug)) {
     open (STDOUT, ">&OLDOUT");
     close OLDOUT;
   }

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/SPF.pm
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/SPF.pm	(original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/SPF.pm	Fri Nov 12 18:59:24 2004
@@ -208,7 +208,7 @@
     $query = Mail::SPF::Query->new (ip => $ip,
 				    sender => $sender,
 				    helo => $helo,
-				    debug => $Mail::SpamAssassin::DEBUG->{rbl},
+				    debug => Mail::SpamAssassin::dbg_check('+rbl'),
 				    trusted => 1);
   };