freebsd-ports/mail/p5-Mail-SpamAssassin/files/patch-ImageInfo.pm
Cheng-Lung Sung bda9441c6a - SpamAssassin has been updated to 3.2.0
See http://spamassassin.apache.org
This is mostly a maintenance and features update.

There are however a couple of FreeBsd specific issues:

1) sa-update now puts files into /var/db/spamassassin/{version} where it
   belongs rather than in the non-standard /var/lib/spamassassin.
   Thanks to uhlar@fantomas.sk (see PR: ports/108934
2) security, version minimum updates:
   Compress-Zlib needs to be minimum 1.04, HTML-Parser, 3.3.1, Tar.pm,
   1.2.3, gnupg >=1.4.7 (gnupg 2.x preferred)
3) additional files needed: Detect.pm for encoding, p5-Mail-SPF replaces
   p5-Mail-SPF-Query, newer DKIM replaces DomainKeys
4) sa-compile is broken (need re2c >=.11.3 or it segfaults)
5) tools directory removed (find it in SVN if you need it)
6) patch files added: patch-ImageInfo.pm and patch-sa-compile.raw
7) patch files REMOVED (ports, please note:
   don't need patch-sa-learn-raw anymore!

PR:		ports/112502
Submitted by:	maintainer (Michael Scheidell)
2007-06-02 07:09:46 +00:00

147 lines
5 KiB
Perl

--- ImageInfo.pm.orig Tue May 1 09:54:09 2007
+++ lib/Mail/SpamAssassin/Plugin/ImageInfo.pm Thu May 3 16:08:29 2007
@@ -1,10 +1,9 @@
# <@LICENSE>
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to you under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at:
+# Copyright 2004 Apache Software Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
@@ -16,6 +15,36 @@
# </@LICENSE>
#
# -------------------------------------------------------
+# ImageInfo Plugin for SpamAssassin
+# Version: 0.7
+# Current Home: http://www.rulesemporium.com/plugins.htm#imageinfo
+# Created: 2006-08-02
+# Modified: 2007-01-17
+# By: Dallas Engelken <dallase@uribl.com>
+#
+# Changes:
+# 0.7 - added image_name_regex to allow pattern matching on the image name
+# - added support for image/pjpeg content types (progressive jpeg)
+# - updated imageinfo.cf with a few sample rules for using image_name_regex()
+# 0.6 - fixed dems_ bug in image_size_range_
+# 0.5 - added image_named and image_to_text_ratio
+# 0.4 - added image_size_exact and image_size_range
+# 0.3 - added jpeg support
+# 0.2 - optimized by theo
+# 0.1 - added gif/png support
+#
+# Files:
+# ImageInfo.pm (plugin) - http://www.rulesemporium.com/plugins/ImageInfo.pm
+# imageinfo.cf (ruleset) - http://www.rulesemporium.com/plugins/imageinfo.cf
+#
+# Install:
+# 1) place ruleset in your local config dir
+# 2) place plugin in your plugins dir
+# 3) add to init.pre (or v310.pre) the following line
+# loadplugin Mail::SpamAssassin::Plugin::ImageInfo
+# or if not in plugin dir..
+# loadplugin Mail::SpamAssassin::Plugin::ImageInfo /path/to/plugin
+# 4) restart spamd (if necessary)
#
# Usage:
# image_count()
@@ -27,7 +56,7 @@
# max: optional, if specified, message must not
# contain more than this number of images
#
-# examples
+# image_count() examples
#
# body ONE_IMAGE eval:image_count('all',1,1)
# body ONE_OR_MORE_IMAGES eval:image_count('all',1)
@@ -44,13 +73,24 @@
# max: optional, if specified, message must not
# contain more than this much pixel area
#
-# examples
+# pixel_coverage() examples
+#
+# body LARGE_IMAGE_AREA eval:pixel_coverage('all',150000) # catches any images that are 150k pixel/sq or higher
+# body SMALL_GIF_AREA eval:pixel_coverage('gif',1,40000) # catches only gifs that 1 to 40k pixel/sql
+#
+# image_name_regex()
+#
+# body RULENAME eval:image_name_regex(<regex>)
+# regex: full quoted regexp, see examples below
+#
+# image_name_regex() examples
+#
+# body CG_DOUBLEDOT_GIF eval:image_name_regex('/^\w{2,9}\.\.gif$/i') # catches double dot gifs abcd..gif
#
-# body LARGE_IMAGE_AREA eval:pixel_coverage('all',150000)
-# body SMALL_GIF_AREA eval:pixel_coverage('gif',1,40000)
+# See the ruleset for more examples that arent documented here.
#
-# See the ruleset for ways to meta image_count()
-# and pixel_coverage() together.
+# New functions added in v0.5+ need some documentation here. Or just
+# see .cf for sample rules.
#
# -------------------------------------------------------
@@ -80,6 +120,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;
@@ -244,6 +285,34 @@
# -----------------------------------------
+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_count {
my ($self,$pms,$body,$type,$min,$max) = @_;
@@ -323,7 +392,8 @@
$self->_get_images($pms);
}
- return unless (exists $pms->{'imageinfo'}->{"dems_$type"});
+ my $name = 'dems_'.$type;
+ return unless (exists $pms->{'imageinfo'}->{$name});
foreach my $dem ( keys %{$pms->{'imageinfo'}->{"dems_$type"}}) {
my ($h,$w) = split(/x/,$dem);