chiark / gitweb /
Make noack honoured for approvals too
[modbot-mtm.git] / stump / bin / processApproved
1 #!/bin/bash
2
3 set -ex
4 set -o pipefail
5
6 NEWSBIN=/var/lib/newsbin; export NEWSBIN
7 shift
8 DATE_STAMP="`date +%y%m%d%H%M%S`"
9
10 TMPFILE=$TMP/pa.$DATE_STAMP.$$
11
12 if [ $PGP = "none" ]; then
13   PMAPP_PROG=cat
14 else
15   PMAPP_PROG="$PMAPP $NEWSGROUP"
16 fi
17
18 echo Action: processApproved 1>&2
19
20 cat > $TMPFILE
21
22 save() { 
23
24   ( 
25     cat $TMPFILE
26   ) | procmail -f- $MNG_ROOT/etc/procmail/save-approved
27 }
28
29 post() {
30   FAILED=$TMP/failed.$$
31   (
32     echo Path: "$PATH_SUFFIX"
33
34     perl <$MNG_ROOT/etc/added-headers -ne '
35         next unless m/\:/;
36         s/\[REFERENCE\]/[$ENV{"WEBSTUMP_MESSAGENUM"}]/g
37             if defined $ENV{"WEBSTUMP_MESSAGENUM"};
38         print or die $!;
39     '
40     # I do grep above because a lot of users inserts empty
41     # lines in the added headers.
42
43     echo Date: `date -R`
44     cat $TMPFILE                                        \
45       | formail -f -a "Newsgroups: $NEWSGROUP"          \
46             -I Path:                                    \
47             -I X-Moderate-For:                          \
48             -I Return-Path:                             \
49             -I X-Mailer:                                \
50             -I "Date:"                                  \
51             -I "X-400-Received:"                        \
52             -I Received: -I "From "                     \
53             -a "Approved: $PMUSER_APPROVAL"             \
54             -I Lines:                                   \
55             -I Cc:                                      \
56             -I To: -I Status:                           \
57             -I "X-Delivered-To:"                        \
58             -I "X-Envelope-To:"                         \
59             -I "X-Forwarding-To:"                       \
60             -I "X-Gradwell-Mailfilter:"                 \
61             -I "Delivered-To:"                          \
62             -I "Envelope-To:"                           \
63             -I "X-Priority:"                            \
64             -I "X-Priority:"                            \
65             -I "X-Priority:"                            \
66             -I "X-MSMail-Priority:"                     \
67             -I "X-MimeOLE:"                             \
68             -I "X-RBL-Warning:"                         \
69             -I "X-Scanner:"                             \
70             -I "X-Spam-Checker-Version:"                \
71             -I "X-Spam-Flag:"                           \
72             -I "X-Spam-Level:"                          \
73             -I "X-Spam-Report"                          \
74             -I "X-Spam-Score:"                          \
75             -I "X-Spam-Status:"                         \
76             -I "X-Scanned-By:"                          \
77             -I "X-Virus-Scanned:"                       \
78             -I "X-Virus-Status:"                        \
79             -I "X-Original-To:"                         \
80             -I "X-UID:"                                 \
81             -I "Delivered-To:"                          \
82             -I "DomainKey-Signature:"                   \
83             -I "Thread-Index:"                          \
84             -I "X-X-Sender:"                            \
85             -I "X-PMX-Version:"                         \
86
87     if [ -f $MNG_ROOT/etc/added-footer ] ; then
88       cat $MNG_ROOT/etc/added-footer
89     fi
90
91   )                                                     \
92     | $PMAPP_PROG                                       \
93     | tee $FAILED                                       \
94     | $RNEWS
95   if [ "$?" = "0" ] ; then
96     /bin/rm $FAILED
97   else
98     echo IHAVE failed. Look at $FAILED. 1>&2
99   fi
100 }
101
102 PMUSER="$PMUSER_APPROVAL"; export PMUSER
103 ROBOMOD="$ROBOMOD_APPROVAL"; export ROBOMOD
104 save
105 post
106
107 if needAck < $TMPFILE; then
108   modack.approved $TMPFILE
109 fi
110
111 rm $TMPFILE