--- lib/Mail/SpamAssassin/Plugin/ImageInfo.pm.orig 2007-08-08 05:19:14.000000000 -0800
+++ lib/Mail/SpamAssassin/Plugin/ImageInfo.pm 2007-08-11 12:20:22.000000000 -0800
@@ -49,6 +49,11 @@
# body LARGE_IMAGE_AREA eval:pixel_coverage('all',150000)
# body SMALL_GIF_AREA eval:pixel_coverage('gif',1,40000)
#
+# image_name_regex() examples
+#
+# body CG_DOUBLEDOT_GIF eval:image_name_regex('/^\w{2,9}\.\.gif$/i') # catches double dot gifs abcd..gif
+#
+#
# See the ruleset for ways to meta image_count()
# and pixel_coverage() together.
#
@@ -80,6 +85,7 @@
$self->register_eval_rule ("image_size_exact");
$self->register_eval_rule ("image_size_range");
$self->register_eval_rule ("image_named");
+ $self->register_eval_rule ("image_name_regex");
$self->register_eval_rule ("image_to_text_ratio");
return $self;
@@ -275,6 +281,33 @@
}
# -----------------------------------------
+sub image_name_regex {
+ my ($self,$pms,$body,$re) = @_;
+ return unless (defined $re);
+
+ # make sure we have image data read in.
+ if (!exists $pms->{'imageinfo'}) {
+ $self->_get_images($pms);
+ }
+
+ return 0 unless (exists $pms->{'imageinfo'}->{"names_all"});
+
+ my $hit = 0;
+ foreach my $name (keys %{$pms->{'imageinfo'}->{"names_all"}}) {
+ dbg("imageinfo: checking image named $name against regex $re");
+ my $eval = 'if (q{'.$name.'} =~ ' . $re . ') { $hit = 1; } ';
+ eval $eval;
+ dbg("imageinfo: error in regex $re - $@") if $@;
+ if ($hit) {
+ dbg("imageinfo: image_name_regex hit on $name");
+ return 1;
+ }
+ }
+ return 0;
+
+ }
+
+# -----------------------------------------
sub image_to_text_ratio {
my ($self,$pms,$body,$type,$min,$max) = @_;
syntax highlighted by Code2HTML, v. 0.9.1