#! /usr/bin/perl -w
# Generate a TMDA Pending Mail Summary email to the specified user.

#use CGI; # Only need this if we decide to use escapeHTML
use strict;

if ( $#ARGV != 2 )
   {
   die "Usage: tmda-pending-mail \"Full Name\" LoginID HostName\n";
   }

exit 0 if ( ! -d $ENV{"HOME"} . "/Maildir/.Pending" );

my $FullName = shift;
my $User = shift;
my $HostName = shift;

my $date = `date '+%a, %d %b %Y %H:%M:%S %z'`;
chop $date;
my $tmda_pending = "/usr/bin/tmda-pending";
my $flags = "-C -T -b";
my $release_addr = "$User-tmda-release\@$HostName";
my $whitelist_addr = "$User-tmda-whitelist\@$HostName";
my $sendmail = "/usr/sbin/sendmail -t";
my $mail_from = "\"$FullName\" <$User\@$HostName>";
my $mail_to = "$User\@$HostName";
my $subject = "TMDA Pending Summary";
my $mime_boundary; # = "---TMDA-PENDING-SUMMARY---";

# Set up for dropping mail file into user's qmail Maildir INBOX.
my $MailDir = $ENV{"HOME"} . "/Maildir";
my $TmpDir = "$MailDir/tmp";
my $NewDir = "$MailDir/new";
my $TmpExt = time . ".$$." . $HostName;
my $TmpFile = "$TmpDir/$TmpExt";
my $NewFile = "$NewDir/$TmpExt";

my $out = "SENDMAIL";
#my $out = "STDOUT";

my $msg_id;
my $desc;
my $pending_output = 0; # True if there is any output from the pending command.

open (TMDA_PENDING, "-|", "$tmda_pending $flags")
	or die "Can't open $tmda_pending $flags: $!";

if ($out eq "SENDMAIL")
   {
   #open (OUT, "| $sendmail") or die "Can't open sendmail: $!";
   open( OUT, ">$TmpFile" ) or die "Can't open $TmpFile\n";
   print OUT "From: ", $mail_from, "\n";
   print OUT "To: ", $mail_to, "\n";
   print OUT "Date: $date\n";
   print OUT "Subject: ", $subject, "\n";
   print OUT "Mime-Version: 1.0\n";
   if ( $mime_boundary )
      {
      print OUT "Content-Type: multipart/alternative; boundary=\"",
         $mime_boundary, "\"\n";
      }

   print OUT "Content-Type: text/html; charset=\"iso-8859-1\"\n";
   #print OUT "Content-Transfer-Encoding: quoted-printable\n";
   print OUT "\n";

   if ( $mime_boundary )
      {
      print OUT $mime_boundary, "\n";
      }
   }
 else
   {
   open OUT, ">&", file STDOUT;
   }

my @msg_id;
my @desc;
my $max_index = 0;

while(<TMDA_PENDING>)
   {
   chop;
   ($msg_id, $desc) = split(/	/, $_, 2);
   $desc = "" if ( ! $desc );
   $msg_id[ $max_index ] = $msg_id;
   $desc[ $max_index   ] = $desc;
   $max_index++;
   }

close (TMDA_PENDING);

# Now build output file/email.

print OUT "<HTML>\n";
print OUT "<HEAD><TITLE>$subject</TITLE></HEAD>\n";
print OUT "<BODY>\n";
print OUT "<CENTER><H1><a href=\"https://\@$HostName/tmda\">$subject</a></H1></CENTER>\n";
print OUT "<FONT COLOR=\"black\" SIZE=\"1\" FACE=\"Arial\">\n";
print OUT "<BR>\n";
print OUT "Number of new messages in queue: $max_index<BR>\n";
print OUT "<A HREF=\"mailto:$User-tmda-get-summary\@$HostName\">[Get Summary]</A><BR>\n";
print OUT "<A HREF=\"mailto:$User-tmda-get-whitelist\@$HostName\">[Get Whitelist]</A><BR>\n";
print OUT "<A HREF=\"mailto:$User-tmda-get-whitelist-confirmed\@$HostName\">[Get Whitelist Confirmed]</A><BR>\n";
print OUT "<P></P>\n";
print OUT "<TABLE>\n";

my $index;

for ( $index = 0; $index < $max_index; $index++ )
   {
   $msg_id = $msg_id[ $index ];
   $desc   = $desc[ $index   ];
   print OUT "<TR>\n";
   print OUT "<TD><A HREF=\"mailto:$release_addr?subject=$msg_id\">[Release]</A></TD>\n";
   print OUT "<TD><A HREF=\"mailto:$whitelist_addr?subject=$msg_id\">[Whitelist]</A></TD>\n";
   print OUT "<TD> $desc</TD>\n";
   print OUT "</TR>\n";

   $pending_output = 1; # Note that there is output from the command.
   }

print OUT "</TABLE>\n";
print OUT "</BODY>\n";
print OUT "</HTML>\n";

close( OUT ) || die "Can't close output.\n";

if ($out eq "SENDMAIL")
   {
   if ( $mime_boundary )
      {
      print OUT "$mime_boundary\n";
      }

   # If there is output then go ahead and "send" the mail.
   if ( $pending_output )
      {
      rename $TmpFile, $NewFile;
      }
    else # No output so we can zap the temporary file.
      {
      unlink $TmpFile;
      }
   }


exit 0;
