Browse Source

simplify - to be tested

Pi 1 năm trước cách đây
mục cha
commit
71923103b3

+ 20 - 9
filters/cropswap-members@shandan.one

@@ -1,11 +1,3 @@
-if ($FORWARD)
-{
-   FROM=$ALIAS
-   gdbmopen($MLIST, "R")
-   TO=gdbmfetch($TOALIAS)
-   gdbmclose
-   to "!"
-}
 if (!$CONTINUE)
 {
    foreach /^(To|Cc):\s+(.*)\s+\<$MEMBERGROUPREGEX\>$/
@@ -21,12 +13,31 @@ elsif ($CONTINUE)
 {
    gdbmopen($MLIST, "R")
    ALIAS=gdbmfetch(tolower($FROM))
+   gdbmclose
    if ($ALIAS eq "")
    {
-      gdbmclose
       EXITCODE=$UNREGISTERED
       exit
    }
+
+   #
+   # Registered senders only
+   include "$FILTERDIR/subscriptions"
+
+   gdbmopen($SLIST, "R")
+   if (gdbmfetch(tolower($FROM)) ne "SUBSCRIBE")
+   {
+      gdbmclose
+      cc "|$DEBUGMAIL no-forward"
+      EXITCODE=$UNSUBSCRIBED
+      exit
+   }
    gdbmclose
+
+   #
+   # Subscribesd senders only
+   NOFORWARD=$FROM
+   FROM=$ALIAS
+   to "!"
 }
 

+ 43 - 30
filters/cropswap@shandan.one

@@ -1,26 +1,3 @@
-if($FORWARD)
-{
-   MLIST="$LISTDIR/alist"
-   gdbmopen($MLIST, "R")
-   ORGANIZER=gdbmfetch(tolower($FROM))
-   gdbmclose
-
-   if ($ORGANIZER eq "")
-   {
-      SLIST="$LISTDIR/alist"
-      to "!"
-   }
-
-   #
-   # ORGANIZERS ONLY
-   #
-   FROM=$ORGANIZER
-   MLIST="$LISTDIR/mlist"
-   gdbmopen($MLIST, "R")
-   TO=gdbmfetch($TOALIAS)
-   gdbmclose
-   to "!"
-}
 if (!$CONTINUE)
 {
    foreach /^(To|Cc):\s+(.*)\s+\<$ORGANIZERGROUPREGEX\>$/
@@ -30,20 +7,56 @@ if (!$CONTINUE)
    CONTINUE=1
    TOORGANIZER=1
    MAILGROUP=$ORGANIZERGROUP
-   SUBJECT="Crop Swap Notice"
 }
 elsif($CONTINUE)
 {
+   NOFORWARD=$FROM
+   SUBJECT="Crop Swap Query"
+   SLIST="$LISTDIR/alist"
+
    gdbmopen($MLIST, "R")
    ALIAS=gdbmfetch(tolower($FROM))
+   gdbmclose
    if ($ALIAS eq "")
    {
-       gdbmclose
-       #
-       # TODO: test this works at all
-       FROM=$FROM
-       SLIST="$LISTDIR/alist"
-       to "!"
+      #
+      # TODO: test this works at all
+      # should at least drop list headers
+      FROM=$FROM
+      to "!"
    }
+
+   #
+   # Registered senders only
+   include "$FILTERDIR/subscriptions"
+
+   gdbmopen($SLIST, "R")
+   if (gdbmfetch(tolower($FROM)) ne "SUBSCRIBE")
+   {
+      gdbmclose
+      #
+      # TODO: test this works at all
+      # should at least drop list headers
+      FROM=$FROM
+      to "!"
+   }
+   gdbmclose
+
+   MLIST="$LISTDIR/alist"
+   gdbmopen($MLIST, "R")
+   ORGANIZER=gdbmfetch(tolower($FROM))
    gdbmclose
+
+   if ($ORGANIZER eq "")
+   {
+      FROM=$ALIAS
+      to "!"
+   }
+
+   #
+   # Organizers only
+   FROM=$ORGANIZER
+   SUBJECT="Crop Swap Notice"
+   SLIST="$LISTDIR/slist"
+   to "!"
 }

+ 9 - 18
filters/postmaster@localhost

@@ -1,24 +1,15 @@
 if (!$CONTINUE)
 {
-   flock $STAGE {
-      if (gdbmopen($STAGE, "W"))
-      {
-         cc "|$DEBUGMAIL progress-$POSTMASTER-fail"
-         EXITCODE=$FATAL
-         exit
-      }
-       if (/^X\-GROUP:\s*$ORGANIZERGROUPREGEX\s*$/)
-      {
-         gdbmstore("TOORGANIZER", "YES")
-      }
-      if (/^X\-GROUP:\s*$MEMBERGROUPREGEX\s*$/)
-      {
-         gdbmstore("TOMEMBER", "YES")
-      }
-      gdbmstore("TOPOSTMASTER", "YES")
-      gdbmstore("CONTINUE", "YES")
-      gdbmclose
+   if (/^X\-GROUP:\s*$ORGANIZERGROUPREGEX\s*$/)
+   {
+      TOORGANIZER=1
+   }
+   if (/^X\-GROUP:\s*$MEMBERGROUPREGEX\s*$/)
+   {
+      TOMEMBER=1
    }
+   TOPOSTMASTER=1
+   CONTINUE=1
 }
 elsif ($CONTINUE)
 {

+ 22 - 0
filters/subscriptions

@@ -0,0 +1,22 @@
+if (/^Subject:\s*\[(SUBSCRIBE|UNSUBSCRIBE)\]\s*$/)
+{
+   SUBSCRIBE=$MATCH1
+}
+
+if ($SUBSCRIBE ne "")
+{
+   gdbmopen($SLIST, "W")
+   if (gdbmstore(tolower($FROM), $SUBSCRIBE) == 0)
+   {
+      gdbmclose
+      system "$SUBUNSUB '$SUBSCRIBE' '$ALIAS' '$FROM'"
+      to "|$MAILBOT -N -t $SUBSCRIBERESP -A 'From: $MAILGROUP' -f$FROM /usr/sbin/sendmail $FROM"
+   }
+   else
+   {
+      gdbmclose
+      cc "|$DEBUGMAIL subunsub-fail"
+      EXITCODE=$FATAL
+      exit
+   }
+}

+ 3 - 48
maildroprc

@@ -34,9 +34,6 @@ ORGANIZERGROUPREGEX=escape($ORGANIZERGROUP)
 ANYGROUPREGEX="$MEMBERGROUPREGEX|$ORGANIZERGROUPREGEX"
 HANDLEDREGEX="($POSTMASTERREGEX|$ANYGROUPREGEX)"
 
-FORWARD=0
-SUBSCRIBE=""
-
 UNHANDLED=5
 BADREQUEST=4
 UNREGISTERED=3
@@ -52,7 +49,6 @@ foreach /^(To|Cc):.*/
    }
 }
 
-
 if (!$CONTINUE)
 {
    cc "|$DEBUGMAIL no-continue"
@@ -78,6 +74,9 @@ LISTDIR="/var/mail/maildrop/$MAILGROUP"
 MLIST="$LISTDIR/mlist"
 SLIST="$LISTDIR/slist"
 
+gdbmopen($MLIST, "R")
+TO=gdbmfetch($TOALIAS)
+gdbmclose
 
 if ($TOPOSTMASTER)
 {
@@ -88,50 +87,6 @@ else
    include "$FILTERDIR/$MAILGROUP"
 }
 
-
-#
-# REGISTERED USERS ONLY
-#
-if (/^Subject:\s*\[(SUBSCRIBE|UNSUBSCRIBE)\]\s*$/)
-{
-   SUBSCRIBE=$MATCH1
-}
-
-if ($SUBSCRIBE ne "")
-{
-   gdbmopen($SLIST, "W")
-   if (gdbmstore(tolower($FROM), $SUBSCRIBE) == 0)
-   {
-      gdbmclose
-      system "$SUBUNSUB '$SUBSCRIBE' '$ALIAS' '$FROM'"
-      to "|$MAILBOT -N -t $SUBSCRIBERESP -A 'From: $MAILGROUP' -f$FROM /usr/sbin/sendmail $FROM"
-   }
-   else
-   {
-      gdbmclose
-      EXITCODE=$FATAL
-      exit
-   }
-}
-
-
-gdbmopen($SLIST, "R")
-FORWARD=(gdbmfetch(tolower($FROM)) eq "SUBSCRIBE")
-gdbmclose
-
-
-if (!$FORWARD)
-{
-   EXITCODE=$UNSUBSCRIBED
-   exit
-}
-
-#
-# SUBSCRIBED USERS
-#
-NOFORWARD=$FROM
-include "$FILTERDIR/$MAILGROUP"
-
 cc "|$DEBUGMAIL unhandled"
 EXITCODE=$UNHANDLED
 exit