]> git.etc.gen.nz Git - spong.git/commitdiff
The group handling functions would have difficulties with group specifications
authorMichael Brown <michaelb@opentext.com>
Wed, 30 Jan 2002 16:54:39 +0000 (16:54 +0000)
committerMichael Brown <michaelb@opentext.com>
Wed, 30 Jan 2002 16:54:39 +0000 (16:54 +0000)
where a method was specified (i.e. slsgroup:email). Fixed.

We also handle the case when you have a spec such as group:email that includes
a member such as bob:pager. In this case, since the methods don't match, NO
page is sent to bob. Be aware!

src/spong-message.pl

index a09f3881283dda3ee2dfd13ba077b55fbe380357..15c21d82190d50cd2c5c2943a11e77df36d66987 100755 (executable)
@@ -12,7 +12,7 @@
 # (2) Added rules based paging (Stephen Johnson  Nov 14, 1998)
 # (3) Added checks against Acks and downtime (Stephen Johnson  Mar 17, 1999)
 #
-# $Id: spong-message.pl,v 1.31 2001/06/21 17:05:00 supermathie Exp $
+# $Id: spong-message.pl,v 1.32 2002/01/30 16:54:39 supermathie Exp $
 
 use lib "@@LIBDIR@@";
 
@@ -705,11 +705,17 @@ sub add_contact {
    &debug("Adding contact " . (ref($contact) eq 'HASH' ? "hash: " .
           $contact->{'rcpt'} : ": " . $contact));
    if ( ref($contact) eq 'HASH') {
-#      foreach $rcpt ( split /[, \t]+/, $contact->{'rcpt'} ) {
-         if ( $HUMANS{ $contact->{'rcpt'} }{'group'} ) {
+         $contact->{'rcpt'} =~ /^([^:]+)(:(.*))?/;
+         my($rcpt,$form) = ($1,$3);
+         if ( $HUMANS{$rcpt}{'group'} ) {
+            &debug("Found group: $rcpt");
             my $groupee;
-            foreach $groupee ( split /[, \t]+/,
-                                $HUMANS{ $contact->{'rcpt'} }{'group'} ) {
+            foreach $groupee ( split /[, \t]+/, $HUMANS{ $rcpt }{'group'} ) {
+               $groupee =~ /^([^:]+)(:(.*))?/;
+               my($groupee,$gform) = ($1,$3);
+               (defined $form and defined $gform and $form ne $gform) && next;
+               if (defined $form) { $groupee="$groupee:$form"; }
+               elsif (defined $gform) { $groupee="$groupee:$gform"; }
                my $newent = {'rcpt' => $groupee};
                if ( defined $contact->{'delay'} )
                   { $newent->{'delay'} = $contact->{'delay'}; }
@@ -723,13 +729,22 @@ sub add_contact {
             push @con, $contact;
          } 
 #      }
-   } elsif ( $HUMANS{$contact}->{'group'} ) {
-      my $groupee;
-      foreach $groupee ( split /[, \t]+/, $HUMANS{$contact}->{'group'} ) {
-         &add_contact(\@con, $groupee);
-      }
    } else {
-      push @con,$contact;
+      $contact =~ /^([^:]+)(:(.*))?/;
+      my($rcpt,$form) = ($1,$3);
+      if ( $HUMANS{$rcpt}->{'group'} ) {
+         my $groupee;
+         foreach $groupee ( split /[, \t]+/, $HUMANS{$rcpt}->{'group'} ) {
+            $groupee =~ /^([^:]+)(:(.*))?/;
+            my($groupee,$gform) = ($1,$3);
+            (defined $form and defined $gform and $form ne $gform) && next;
+            if (defined $form) { $groupee="$groupee:$form"; }
+            elsif (defined $gform) { $groupee="$groupee:$gform"; }
+            &add_contact(\@con, $groupee);
+         }
+      } else {
+         push @con,$contact;
+      }
    }
 }