You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by gb...@apache.org on 2019/01/23 07:48:46 UTC
svn commit: r1851889 - in /spamassassin:
branches/3.4/lib/Mail/SpamAssassin/Plugin/Phishing.pm
trunk/lib/Mail/SpamAssassin/Plugin/Phishing.pm
Author: gbechis
Date: Wed Jan 23 07:48:46 2019
New Revision: 1851889
URL: http://svn.apache.org/viewvc?rev=1851889&view=rev
Log:
more speed improvements
Modified:
spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin/Phishing.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Phishing.pm
Modified: spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin/Phishing.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin/Phishing.pm?rev=1851889&r1=1851888&r2=1851889&view=diff
==============================================================================
--- spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin/Phishing.pm (original)
+++ spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin/Phishing.pm Wed Jan 23 07:48:46 2019
@@ -1,6 +1,6 @@
#
# Author: Giovanni Bechis <gb...@apache.org>
-# Copyright 2018 Giovanni Bechis
+# Copyright 2018,2019 Giovanni Bechis
#
# <@LICENSE>
# Licensed to the Apache Software Foundation (ASF) under one or more
@@ -92,35 +92,28 @@ sub set_config {
$conf->{parser}->register_commands(\@cmds);
}
-#prepare the plugin
-sub check_start{
- my ($self, $params) = @_;
- my $pms = $params->{permsgstatus};
-
- # initialize the PHISHING data structure
- $pms->{PHISHING} = {};
-
- #read the configuration info
- $self->_read_configfile($params);
+sub finish_parsing_end {
+ my ($self, $opts) = @_;
+ $self->_read_configfile($self);
}
sub _read_configfile {
- my ($self, $params) = @_;
- my $pms = $params->{permsgstatus};
+ my ($self) = @_;
+ my $conf = $self->{main}->{registryboundaries}->{conf};
my @phtank_ln;
local *F;
- if ( defined($pms->{conf}->{phishing_openphish_feed}) && ( -f $pms->{conf}->{phishing_openphish_feed} ) ) {
- open(F, '<', $pms->{conf}->{phishing_openphish_feed});
+ if ( defined($conf->{phishing_openphish_feed}) && ( -f $conf->{phishing_openphish_feed} ) ) {
+ open(F, '<', $conf->{phishing_openphish_feed});
for ($!=0; <F>; $!=0) {
chomp;
#lines that start with pound are comments
next if(/^\s*\#/);
- my $phishdomain = $self->{main}->{registryboundaries}->uri_to_domain($_);
- if ( defined $phishdomain ) {
- push @{$pms->{PHISHING}->{$_}->{phishdomain}}, $phishdomain;
- push @{$pms->{PHISHING}->{$_}->{phishinfo}->{$phishdomain}}, "OpenPhish";
- }
+ my $phishdomain = $self->{main}->{registryboundaries}->uri_to_domain($_);
+ if ( defined $phishdomain ) {
+ push @{$self->{PHISHING}->{$_}->{phishdomain}}, $phishdomain;
+ push @{$self->{PHISHING}->{$_}->{phishinfo}->{$phishdomain}}, "OpenPhish";
+ }
}
defined $_ || $!==0 or
@@ -129,8 +122,8 @@ sub _read_configfile {
close(F) or die "error closing config file: $!";
}
- if ( defined($pms->{conf}->{phishing_phishtank_feed}) && (-f $pms->{conf}->{phishing_phishtank_feed} ) ) {
- open(F, '<', $pms->{conf}->{phishing_phishtank_feed});
+ if ( defined($conf->{phishing_phishtank_feed}) && (-f $conf->{phishing_phishtank_feed} ) ) {
+ open(F, '<', $conf->{phishing_phishtank_feed});
for ($!=0; <F>; $!=0) {
#skip first line
next if ( $. eq 1);
@@ -139,18 +132,12 @@ sub _read_configfile {
next if(/^\s*\#/);
@phtank_ln = split(/,/, $_);
-
- # XXX Exclude a Phishing category
- #
- # Count commas to get last field
- # my $cnt_comma = ($_ =~ tr/\,//);
- # next if( $phtank_ln[$cnt_comma] eq "Other" );
-
$phtank_ln[1] =~ s/\"//g;
+
my $phishdomain = $self->{main}->{registryboundaries}->uri_to_domain($phtank_ln[1]);
if ( defined $phishdomain ) {
- push @{$pms->{PHISHING}->{$phtank_ln[1]}->{phishdomain}}, $phishdomain;
- push @{$pms->{PHISHING}->{$phtank_ln[1]}->{phishinfo}->{$phishdomain}}, "PhishTank";
+ push @{$self->{PHISHING}->{$phtank_ln[1]}->{phishdomain}}, $phishdomain;
+ push @{$self->{PHISHING}->{$phtank_ln[1]}->{phishinfo}->{$phishdomain}}, "PhishTank";
}
}
@@ -179,14 +166,14 @@ sub check_phishing {
if (($info->{types}->{a}) || ($info->{types}->{parsed})) {
# check url
foreach my $cluri (@{$info->{cleaned}}) {
- if ( exists $pms->{PHISHING}->{$cluri} ) {
- $domain = $self->{main}->{registryboundaries}->uri_to_domain($cluri);
- $feedname = $pms->{PHISHING}->{$cluri}->{phishinfo}->{$domain}[0];
- dbg("HIT! $domain [$cluri] found in $feedname feed");
- $pms->test_log("$feedname ($domain)");
- $pms->got_hit($rulename, "", ruletype => 'eval');
- return 1;
- }
+ if ( exists $self->{PHISHING}->{$cluri} ) {
+ $domain = $self->{main}->{registryboundaries}->uri_to_domain($cluri);
+ $feedname = $self->{PHISHING}->{$cluri}->{phishinfo}->{$domain}[0];
+ dbg("HIT! $domain [$cluri] found in $feedname feed");
+ $pms->test_log("$feedname ($domain)");
+ $pms->got_hit($rulename, "", ruletype => 'eval');
+ return 1;
+ }
}
}
}
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Phishing.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Phishing.pm?rev=1851889&r1=1851888&r2=1851889&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Phishing.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Phishing.pm Wed Jan 23 07:48:46 2019
@@ -1,6 +1,6 @@
#
# Author: Giovanni Bechis <gb...@apache.org>
-# Copyright 2018 Giovanni Bechis
+# Copyright 2018,2019 Giovanni Bechis
#
# <@LICENSE>
# Licensed to the Apache Software Foundation (ASF) under one or more
@@ -92,35 +92,28 @@ sub set_config {
$conf->{parser}->register_commands(\@cmds);
}
-#prepare the plugin
-sub check_start{
- my ($self, $params) = @_;
- my $pms = $params->{permsgstatus};
-
- # initialize the PHISHING data structure
- $pms->{PHISHING} = {};
-
- #read the configuration info
- $self->_read_configfile($params);
+sub finish_parsing_end {
+ my ($self, $opts) = @_;
+ $self->_read_configfile($self);
}
sub _read_configfile {
- my ($self, $params) = @_;
- my $pms = $params->{permsgstatus};
+ my ($self) = @_;
+ my $conf = $self->{main}->{registryboundaries}->{conf};
my @phtank_ln;
local *F;
- if ( defined($pms->{conf}->{phishing_openphish_feed}) && ( -f $pms->{conf}->{phishing_openphish_feed} ) ) {
- open(F, '<', $pms->{conf}->{phishing_openphish_feed});
+ if ( defined($conf->{phishing_openphish_feed}) && ( -f $conf->{phishing_openphish_feed} ) ) {
+ open(F, '<', $conf->{phishing_openphish_feed});
for ($!=0; <F>; $!=0) {
chomp;
#lines that start with pound are comments
next if(/^\s*\#/);
- my $phishdomain = $self->{main}->{registryboundaries}->uri_to_domain($_);
- if ( defined $phishdomain ) {
- push @{$pms->{PHISHING}->{$_}->{phishdomain}}, $phishdomain;
- push @{$pms->{PHISHING}->{$_}->{phishinfo}->{$phishdomain}}, "OpenPhish";
- }
+ my $phishdomain = $self->{main}->{registryboundaries}->uri_to_domain($_);
+ if ( defined $phishdomain ) {
+ push @{$self->{PHISHING}->{$_}->{phishdomain}}, $phishdomain;
+ push @{$self->{PHISHING}->{$_}->{phishinfo}->{$phishdomain}}, "OpenPhish";
+ }
}
defined $_ || $!==0 or
@@ -129,8 +122,8 @@ sub _read_configfile {
close(F) or die "error closing config file: $!";
}
- if ( defined($pms->{conf}->{phishing_phishtank_feed}) && (-f $pms->{conf}->{phishing_phishtank_feed} ) ) {
- open(F, '<', $pms->{conf}->{phishing_phishtank_feed});
+ if ( defined($conf->{phishing_phishtank_feed}) && (-f $conf->{phishing_phishtank_feed} ) ) {
+ open(F, '<', $conf->{phishing_phishtank_feed});
for ($!=0; <F>; $!=0) {
#skip first line
next if ( $. eq 1);
@@ -139,18 +132,12 @@ sub _read_configfile {
next if(/^\s*\#/);
@phtank_ln = split(/,/, $_);
-
- # XXX Exclude a Phishing category
- #
- # Count commas to get last field
- # my $cnt_comma = ($_ =~ tr/\,//);
- # next if( $phtank_ln[$cnt_comma] eq "Other" );
-
$phtank_ln[1] =~ s/\"//g;
+
my $phishdomain = $self->{main}->{registryboundaries}->uri_to_domain($phtank_ln[1]);
if ( defined $phishdomain ) {
- push @{$pms->{PHISHING}->{$phtank_ln[1]}->{phishdomain}}, $phishdomain;
- push @{$pms->{PHISHING}->{$phtank_ln[1]}->{phishinfo}->{$phishdomain}}, "PhishTank";
+ push @{$self->{PHISHING}->{$phtank_ln[1]}->{phishdomain}}, $phishdomain;
+ push @{$self->{PHISHING}->{$phtank_ln[1]}->{phishinfo}->{$phishdomain}}, "PhishTank";
}
}
@@ -179,14 +166,14 @@ sub check_phishing {
if (($info->{types}->{a}) || ($info->{types}->{parsed})) {
# check url
foreach my $cluri (@{$info->{cleaned}}) {
- if ( exists $pms->{PHISHING}->{$cluri} ) {
- $domain = $self->{main}->{registryboundaries}->uri_to_domain($cluri);
- $feedname = $pms->{PHISHING}->{$cluri}->{phishinfo}->{$domain}[0];
- dbg("HIT! $domain [$cluri] found in $feedname feed");
- $pms->test_log("$feedname ($domain)");
- $pms->got_hit($rulename, "", ruletype => 'eval');
- return 1;
- }
+ if ( exists $self->{PHISHING}->{$cluri} ) {
+ $domain = $self->{main}->{registryboundaries}->uri_to_domain($cluri);
+ $feedname = $self->{PHISHING}->{$cluri}->{phishinfo}->{$domain}[0];
+ dbg("HIT! $domain [$cluri] found in $feedname feed");
+ $pms->test_log("$feedname ($domain)");
+ $pms->got_hit($rulename, "", ruletype => 'eval');
+ return 1;
+ }
}
}
}