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 2024/12/09 09:19:30 UTC

svn commit: r1922393 - /spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/PDFInfo.pm

Author: gbechis
Date: Mon Dec  9 09:19:29 2024
New Revision: 1922393

URL: http://svn.apache.org/viewvc?rev=1922393&view=rev
Log:
add pdf_uri_count sub

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/PDFInfo.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/PDFInfo.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/PDFInfo.pm?rev=1922393&r1=1922392&r2=1922393&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/PDFInfo.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/PDFInfo.pm Mon Dec  9 09:19:29 2024
@@ -89,6 +89,12 @@ This plugin helps detected spam using at
         min: required, message contains at least x images in pdf attachments.
         max: optional, if specified, must not contain more than x pdf images
 
+  pdf_uri_count()
+
+     body RULENAME  eval:pdf_uri_count(<min>,[max])
+        min: required, message contains at least x uris in pdf attachments.
+        max: optional, if specified, must not contain more than x pdf uris
+
   pdf_pixel_coverage()
 
      body RULENAME  eval:pdf_pixel_coverage(<min>,[max])
@@ -183,6 +189,7 @@ sub new {
 
   $self->register_eval_rule ("pdf_count", $Mail::SpamAssassin::Conf::TYPE_BODY_EVALS);
   $self->register_eval_rule ("pdf_image_count", $Mail::SpamAssassin::Conf::TYPE_BODY_EVALS);
+  $self->register_eval_rule ("pdf_uri_count", $Mail::SpamAssassin::Conf::TYPE_BODY_EVALS);
   $self->register_eval_rule ("pdf_pixel_coverage", $Mail::SpamAssassin::Conf::TYPE_BODY_EVALS);
   $self->register_eval_rule ("pdf_image_size_exact", $Mail::SpamAssassin::Conf::TYPE_BODY_EVALS);
   $self->register_eval_rule ("pdf_image_size_range", $Mail::SpamAssassin::Conf::TYPE_BODY_EVALS);
@@ -209,6 +216,7 @@ sub parsed_metadata {
   # initialize
   $pms->{pdfinfo}->{count_pdf} = 0;
   $pms->{pdfinfo}->{count_pdf_images} = 0;
+  $pms->{pdfinfo}->{count_pdf_uris} = 0;
 
   my @parts = $pms->{msg}->find_parts(qr@^(image|application)/(pdf|octet\-stream)$@, 1);
   my $part_count = scalar @parts;
@@ -232,6 +240,7 @@ sub parsed_metadata {
 
   _set_tag($pms, 'PDFCOUNT',  $pms->{pdfinfo}->{count_pdf});
   _set_tag($pms, 'PDFIMGCOUNT', $pms->{pdfinfo}->{count_pdf_images});
+  _set_tag($pms, 'PDFURICOUNT', $pms->{pdfinfo}->{count_pdf_uris});
 }
 
 sub _get_pdf_details {
@@ -345,6 +354,7 @@ sub _get_pdf_details {
       if (!exists $uris{$location}) {
         $uris{$location} = 1;
         dbg("pdfinfo: found URI: $location");
+        $pms->{pdfinfo}->{count_pdf_uris}++;
         $pms->add_uri_detail_list($location);
       }
     }
@@ -518,6 +528,12 @@ sub pdf_image_count {
   return _result_check($min, $max, $pms->{pdfinfo}->{count_pdf_images});
 }
 
+sub pdf_uri_count {
+  my ($self, $pms, $body, $min, $max) = @_;
+
+  return _result_check($min, $max, $pms->{pdfinfo}->{count_pdf_uris});
+}
+
 sub pdf_pixel_coverage {
   my ($self,$pms,$body,$min,$max) = @_;