#!/bin/sh

##  Author:
##      Werner Reisberger     <werner at pure dot ch> 
##  Description:
##    confirm_add allows subscriptions to mailing lists running with  
##    SmartList  depending on a confirmation. If automatic subscription is 
##    not allowed the confirmation can be done by the list maintainer(s).
##---------------------------------------------------------------------------##
##    
##    Copyright (C) 1998-2002   Werner Reisberger  <werner at pure dot ch>
##    Copyright (C) 1997        Michelle Dick <artemis@rahul.net> and
##                              Werner Reisberger  <werner at pure dot ch>
##
##    This program is free software; you can redistribute it and/or modify
##    it under the terms of the GNU General Public License as published by
##    the Free Software Foundation; either version 2 of the License, or
##    (at your option) any later version.
##
##    This program is distributed in the hope that it will be useful,
##    but WITHOUT ANY WARRANTY; without even the implied warranty of
##    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
##    GNU General Public License for more details.
##
##    You should have received a copy of the GNU General Public License
##    along with this program; if not, write to the Free Software
##    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
##---------------------------------------------------------------------------##

test=test		# /bin/test
echo=echo		# /bin/echo
cat=cat			# /bin/cat
sed=sed			# /bin/sed
grep=grep		# /bin/grep
date=date		# /bin/date
ls=ls                   # /bin/ls
rm=rm                   # /bin/rm
mkdir=mkdir             # /bin/mkdir
formail=formail		# /usr/local/bin/formail

$test -z "$listaddr" &&
 $echo "Don't start this script directly, it is used in rc.request" && exit 64

tmprequest=tmp.request
tmpfrom=tmp.from
confirmtxt=confirm.txt
subscraddr=$1
US=$2

$test -d cookies || $mkdir cookies

case "$X_ENVELOPE_TO" in
  *$list-request*) wrongaddress="" ;;
  *) wrongaddress="WARNING:
	Please try to use '$listreq'
	the next time when issuing subscribe requests.
" ;;
esac


if $test -f subscreen
then
  ./subscreen "$subscraddr" || exit 1
fi

# create a fairly unique cookie...this is the date plus the pid
COOKIE="s`$date +%m%d%H%M%S`$$"

# log the attempt
$echo "$0: subscription request from $fromaddr for"
$echo "`cat $tmpfrom` - assigned cookie $COOKIE" >> log

# create cookie file in cookies directory containing the address
# to be subscribed
$echo $subscraddr > cookies/$COOKIE

$grep '^Subject: Re:' <$tmprequest >/dev/null &&
  wrongaddress="${wrongaddress}WARNING:
	Send in a new mail, INSTEAD OF REPLYING
	the next time when issuing (un)subscribe requests.
"
  
if [ "$US" = "sv" ]; then

  authaddr=`$echo $maintainer|sed 's/,/ /g'`
  
else

  authaddr=$subscraddr

fi

( $formail -i"From: SmartList <$listreq>" -rtA"X-Loop: $listaddr" \
           -I"Subject: CONFIRM $COOKIE" <$tmprequest 

  $test ! -z "$wrongaddress" && $echo "$wrongaddress" && wrongaddress=""

  $echo "It has been requested that the following address:"
  $echo ""
  $echo "       $subscraddr"
  $echo ""
  $echo "should be added to the $list mailing list."
  $echo ""
  $echo "The address has NOT yet been subscribed to the mailing list."
  $echo "To subscribe you need to confirm the subscription"
  $echo "request by sending an email to the address:"
  $echo ""
  $echo "        $listreq"
  $echo ""
  $echo "with the Subject string:"
  $echo ""
  $echo "         CONFIRM $COOKIE"
  $echo ""
  $echo "With a reasonable good email program a reply to this" 
  $echo "message should be sufficient"
  $echo ""

  $cat $confirmtxt
  $echo ""

  $rm -f _dummy_ `$ls -td cookies/* | $sed -e '1,'$maxcookies' d' `

  $sed -e 's/^/>/' $tmprequest
) | $SENDMAIL $sendmailOPT $authaddr
