#!/usr/bin/perl
#
# Webschnittstelle fuer Majordomo
# Alle Kommandos lassen sich per Formular auf einer Webseite
# absetzen.
#
$| = 1;

use strict;

# Folgende Angaben bitte anpassen
# Mailprogramm:
my $mailprogram = "/usr/lib/sendmail -oi -t";
# Mailadresse Majordomo:
my $mailthis = "To: majordomo\@host.domain\n";

# Ab hier nichts mehr aendern

my @pairs = ();
my ($buffer,$pair,$name,$value,$temp);
my %FORM = ();

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) 
  {
  ($name, $value) = split(/=/, $pair);
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $FORM{$name} = $value;
  }
print "Content-type: text/html\n\n";

# make sure the user entered a valid email address.

$temp = $FORM{'email'};
$temp =~ s/_/a/g;
$temp =~ s/-/a/g;
unless ($temp =~ /\w+@\w+\.\w\w+/) 
  {
  print "<html><head><title>E-Mail-Adresse eingeben</title></head>\n";
  print "<body bgcolor=\"#FFFFFF\"><br><center><font size=5 color=\"#FF0000\">\n";
  print "Bitte geben Sie die vollst&auml;ndige E-Mail-Adresse ein.\n";
  print "Bitte klicken Sie auf den \"Back\"- oder \"Zur&uuml;ck\"-Button Ihres Browsers.\n";
  print "</body></html>\n";
  exit;
  }

$mailthis .= "From: $FORM{'email'}\n";
$mailthis .= "Subject: WWW majordomo commands\n\n";
$mailthis .= "$FORM{'action'}";
if ($FORM{'list'}) { $mailthis .= " $FORM{'list'}"; }
if ($FORM{'file'}) { $mailthis .= " $FORM{'file'}"; }

open(MAIL,"|$mailprogram");
print MAIL "$mailthis\n";        
close(MAIL);

print "<html><head><title>Danke!</title></head><body>\n";
print "<h1 align=center>O.K.</h1><P>Die Kommandos wurden an Majordomo abgeschickt.\n";
print "<A HREF=\"$FORM{'origin'}\"><H3>Zur&uuml;ck</H3></A>\n";
print "</body></html>\n";
