You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by mm...@apache.org on 2010/06/24 18:54:54 UTC

svn commit: r957624 - in /spamassassin/trunk/lib/Mail/SpamAssassin: Conf.pm Conf/Parser.pm Plugin/WLBLEval.pm

Author: mmartinec
Date: Thu Jun 24 16:54:54 2010
New Revision: 957624

URL: http://svn.apache.org/viewvc?rev=957624&view=rev
Log:
Bug 6458: fix handling user_prefs for uri wblisting

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/WLBLEval.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm?rev=957624&r1=957623&r2=957624&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm Thu Jun 24 16:54:54 2010
@@ -669,10 +669,8 @@ previous blacklist_uri_host and whitelis
     type => $CONF_TYPE_ADDRLIST,
     code => sub {
       my($conf, $key, $value, $line) = @_;
-      my $listname = $self->{parser}{scoresonly} ? 'wblist_uri_host_userprefs'
-                                                 : 'wblist_uri_host';
-      my $listref = $conf->{$listname};
-      $conf->{$listname} = $listref = {}  if !$listref;
+      my $listref = $conf->{wblist_uri_host};
+      $conf->{wblist_uri_host} = $listref = {}  if !$listref;
       $listref->{$_} = +1  for split(' ', lc $value);
     }
   });
@@ -690,10 +688,8 @@ See blacklist_uri_host directive for det
     type => $CONF_TYPE_ADDRLIST,
     code => sub {
       my($conf, $key, $value, $line) = @_;
-      my $listname = $self->{parser}{scoresonly} ? 'wblist_uri_host_userprefs'
-                                                 : 'wblist_uri_host';
-      my $listref = $conf->{$listname};
-      $conf->{$listname} = $listref = {}  if !$listref;
+      my $listref = $conf->{wblist_uri_host};
+      $conf->{wblist_uri_host} = $listref = {}  if !$listref;
       $listref->{$_} = -1  for split(' ', lc $value);
     }
   });
@@ -711,12 +707,9 @@ URI domains. Removing an unlisted name i
     type => $CONF_TYPE_ADDRLIST,
     code => sub {
       my($conf, $key, $value, $line) = @_;
-      my $listname = $self->{parser}{scoresonly} ? 'wblist_uri_host_userprefs'
-                                                 : 'wblist_uri_host';
-      my $listref = $conf->{$listname};
-      $conf->{$listname} = $listref = {}  if !$listref;
-      $listref->{$_} = 0  for split(' ', lc $value);
-      # choosing 0 instead of deletion allows userprefs to override a global
+      my $listref = $conf->{wblist_uri_host};
+      $conf->{wblist_uri_host} = $listref = {}  if !$listref;
+      delete $listref->{$_}  for split(' ', lc $value);
     }
   });
 

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm?rev=957624&r1=957623&r2=957624&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm Thu Jun 24 16:54:54 2010
@@ -217,7 +217,6 @@ sub parse {
 
   my $conf = $self->{conf};
   $self->{scoresonly} = $scoresonly;
-  delete $conf->{wblist_uri_host_userprefs}  if $scoresonly;  # start afresh
 
   # Language selection:
   # See http://www.gnu.org/manual/glibc-2.2.5/html_node/Locale-Categories.html

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/WLBLEval.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/WLBLEval.pm?rev=957624&r1=957623&r2=957624&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/WLBLEval.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/WLBLEval.pm Thu Jun 24 16:54:54 2010
@@ -363,8 +363,7 @@ sub check_uri_host_in_blacklist {
   my ($self, $pms) = @_;
   my $conf = $self->{main}{conf};
   my($host_bl, $host_wl) =
-    $self->_check_uri_wblist($pms, $conf->{wblist_uri_userprefs},
-                                   $conf->{wblist_uri_host});
+    $self->_check_uri_wblist($pms, $conf->{wblist_uri_host});
   if (defined $host_bl) {
     dbg("rules: uri host blacklisted: $host_bl");
     $pms->test_log("URI: $host_bl");
@@ -377,8 +376,7 @@ sub check_uri_host_in_whitelist {
   my ($self, $pms) = @_;
   my $conf = $self->{main}{conf};
   my($host_bl, $host_wl) =
-    $self->_check_uri_wblist($pms, $conf->{wblist_uri_userprefs},
-                                   $conf->{wblist_uri_host});
+    $self->_check_uri_wblist($pms, $conf->{wblist_uri_host});
   if (defined $host_wl) {
     dbg("rules: uri host whitelisted: $host_wl");
     $pms->test_log("URI: $host_wl");
@@ -388,22 +386,20 @@ sub check_uri_host_in_whitelist {
 }
 
 sub _check_uri_wblist {
-  my ($self, $pms, $usr_wb_hashref, $sys_wb_hashref) = @_;
+  my ($self, $pms, $wb_hashref) = @_;
 
   if ($pms->{'uri_wblisted'}) {
     # just provide a cached result
-  } elsif ( (!$usr_wb_hashref || !%$usr_wb_hashref) &&
-            (!$sys_wb_hashref || !%$sys_wb_hashref) ) {
+  } elsif (!$wb_hashref || !%$wb_hashref) {
     $pms->{'uri_wblisted'} = [ undef, undef ];
   } else {
     my $host_blacklisted;
     my $host_whitelisted;
-    $usr_wb_hashref = {}  if !$usr_wb_hashref;
-    $sys_wb_hashref = {}  if !$sys_wb_hashref;
-    dbg("rules: check_uri_wblist usr: %s",
-      join(', ', map { $_.'='.$usr_wb_hashref->{$_} } keys %$usr_wb_hashref));
-    dbg("rules: check_uri_wblist sys: %s",
-      join(', ', map { $_.'='.$sys_wb_hashref->{$_} } keys %$sys_wb_hashref));
+    $wb_hashref = {}  if !$wb_hashref;
+    if (would_log("dbg","rules")) {
+      dbg("rules: check_uri_wblist: %s",
+        join(', ', map { $_.'='.$wb_hashref->{$_} } sort keys %$wb_hashref));
+    }
     # obtain a full list of html-parsed domains
     my $uris = $pms->get_uri_detail_list();
     my %seen;
@@ -431,8 +427,7 @@ sub _check_uri_wblist {
         my $wb_verdict;  # positive=blacklisted; negative=whitelisted
         my $match;
         for my $q (@query_keys) {
-          $wb_verdict = $usr_wb_hashref->{$q};
-          $wb_verdict = $sys_wb_hashref->{$q}  if !$wb_verdict;
+          $wb_verdict = $wb_hashref->{$q};
           if ($wb_verdict) { $match = $q; last }
         }
         if (!$wb_verdict) {