#! /bin/sh

tabela=$1

(
cat <<'END'
#!/bin/sh
#
# da' o devido encaminhamento a cada mensagem que chega
#

msg=/tmp/msg.$$

cat >$msg

home=${STOLFIHOME}/ortho
ortho=$home/remote
log=$ortho/log/ortho-log
#lib=$home/PUB/notPUB
lib=$ortho/lib
redlist=$lib/redlist
greenlist=$lib/greenlist

PATH=$ortho/bin:$PATH

export PATH

# separa cabeca e corpo

cabeca=/tmp/cabeca.$$
corpo=/tmp/corpo.$$
minhead=/tmp/minhead.$$

cat $msg |
sed -e '
/^$/ q' 2>&1 >$cabeca

cat $cabeca |
sed -n -e '
/^From: / p
/^Date: / p
/^To: / p
/^Subject: / p' >$minhead

cat $msg |
sed -n -e '
/^$/,$ p' >$corpo

# obtem from, subject, to, sender

## From

from=/tmp/from.$$

cat $minhead |
sed -n -e '
/^From: / p' >$from

################
#
# 	checkpoint
#	
#	verifica se remetente tem
#	autorizacao para usar servico
#

if 
  cat $from | egrep -is -f $redlist
then
  # esta na lista vermelha... ignora mensagem
  rm /tmp/*.$$
  exit 1
fi

if
  cat $from | egrep -vs -f $greenlist
then
  # nao est'a na lista verde...  avisa remetente...
  reject-ortho $minhead
  rm /tmp/*.$$
  exit 2
fi

# continua fluxo normal...

## Subject
 
subject=/tmp/subject.$$
  
cat $minhead |
sed -n -e '
/^Subject: / p' >$subject
 
## To, Cc
 
to=/tmp/to.$$
 
cat $minhead |
sed -n -e '
/^To: / p' >$to

# prepara um pequeno log

( cat $minhead ) >>$log

# agora comeca o processamento propriamente dito

END

cat $tabela | 
/usr/bin/nawk -F: '
        /^#/  { next }

	/^to/ { print "if"
                print "	/usr/bin/fgrep -si \"" $2 "\" $to"
                print "then"
                print "	echo \"--- to	" $2 "\" >>$log"
                print "	cat $msg |"
                print "	" $3

                print "	rm -f /tmp/*.$$"

                print "	exit"

                print "fi"
               }

	/^from/ { print "if"
                print "	/usr/bin/fgrep -si \"" $2 "\" $from"
                print "then"
                print "	echo \"--- from	" $2 "\" >>$log"
                print "	cat $msg |"
                print "	" $3

                print "	rm -f /tmp/*.$$"

                print "	exit"

                print "fi"
               }

	/^subject/ { print "if"
                print "	/usr/bin/fgrep -si \"" $2 "\" $subject"
                print "then"
                print "	echo \"--- subject	" $2 "\" >>$log"
                print "	cat $msg |"
                print "	" $3

                print "	rm -f /tmp/*.$$"

                print "	exit"

                print "fi"
               }

	/^default/ { 
                print "	echo \"--- subject	" $1 "\" >>$log"
                print "	cat $msg |"
                print "	" $3

                print "	rm -f /tmp/*.$$"

               }

              '
) >processa.n

cp processa processa.o

cp processa.n processa

exit 
