[Mimedefang] Improvement of re_match
    Steffen Kaiser 
    skmimedefang at smail.inf.fh-bonn-rhein-sieg.de
       
    Thu Jan  5 10:30:13 EST 2006
    
    
  
Hello,
I would like to suggest an improvement of re_match in order to get to know 
_why_ the filename is bad, the following function is modelled after 
re_match:
===
sub ska_match ($$) {
     my($entity, $regexp) = @_;
     my($head) = $entity->head;
     my($guess) = $head->mime_attr("Content-Disposition.filename");
     if(defined($guess)) {
         $guess = decode_mimewords($guess);
         if(my @result = decode_mimewords($guess) =~ /$regexp/i) {
             return @result;     # return the match
         }
     }
     $guess = $head->mime_attr("Content-Type.name");
     if (defined($guess)) {
         $guess = decode_mimewords($guess);
         if(my @result = decode_mimewords($guess) =~ /$regexp/i) {
             return @result;     # return the match
         }
     }
     $guess = $head->mime_attr("Content-Description");
     if (defined($guess)) {
         $guess = decode_mimewords($guess);
         if(my @result = decode_mimewords($guess) =~ /$regexp/i) {
             return @result;     # return the match
         }
     }
     return ();  # No match found
}
====
if(re_match(...)) {
}
works as usual; but you get to know, what match (usually the $bad_exts), 
because the n'th item in the array corresponds to the (n+1)'th '(' block 
of the regex (aka $1, $2 a.s.o).
E.g.:
if(my @bad = re_match(...)) {
    return action_bounce('Attachments of type ' . $bad[0] . ' are 
blocked');
}
Bye,
-- 
Steffen Kaiser
    
    
More information about the MIMEDefang
mailing list