#!/usr/bin/perl

%METHOD = ( 'sane', 'Nur anmelden', 'ebusiness', 'Automatische Aufnahme', 'zero', '(Nur anmelden)' );
%ZAHLUNG= ( 'zero', '(Am Treff)', 'direkt', 'Am Treff', 'einzahlungsschein', 'Einzahlungsschein', 'elektronisch', 'Elektronisch/Internet' );
%REQFIELDS= ( 'NAME', 'Name', 'STRASSE', 'Strasse', 'ORT', 'PLZ/Ort', 'E-MAIL', 'E-Mail' );

# Get the input
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
 
# Split the name-value pairs
@pairs = split(/&/, $buffer);
 
 
foreach $pair (@pairs) {
 
        ($name, $value) = split(/=/, $pair);
 
# Un-Webify plus signs and %-encoding
 
        $value =~ tr/+/ /;
        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        chomp($value);
 
# Stop people from using subshells to execute commands
# Not a big deal when using sendmail, but very important
# when using UCB mail (aka mailx).
 
        $value =~ s/~!/ ~!/g;
        $value =~ tr/\\\^\$\*//d;
 
# Uncomment for debugging purposes
#       print STDERR "$name:$value X\n";
        unless($value eq '' or $value eq ' ' or $value eq '  ' or $value =~ 'Weiter') {
               $FORM{$name} = $value;
        }
 
}                   
$PATH=$ENV{'PATH'}="/bin:/usr/bin";

$MAILTO="lugbevs\@lugbe.ch";
$MAILER="/usr/sbin/sendmail";

print "Content-type: text/html\n\n";
unless($ENV{'REQUEST_METHOD'} =~ /post/i)  {
    print "<html><head><title>Method Error></title></head><body><h2>Sorry, only POST operations allowed here!</h2><br><br>\n";
    print "$ENV{'SERVER_SIGNATURE'}\n";
    print "</body></html>\n";
    exit(0);
}

foreach $VAL (keys %REQFIELDS) {
    if (!(defined $FORM{$VAL}) || (($VAL eq 'E-MAIL') && !($FORM{$VAL} =~ /.*\@.*\..*/))) {
        print "<html><head><title>Da fehlt noch was</title><style> p {color:black; font-family:arial,helvetica,sans-serif,lucida; font-size:12pt } </style></head><body bgcolor=#ffffff>\n";
        print "<font face=arial,helvetica,sans-serif size=6>Fehlender Eintrag!<br><br>\n";
        print "<p>Bitte gehe zur&uuml;ck und f&uuml;lle alle mit einem <font color=red>*<font color=black> gekennzeichneten Felder aus.<br><br> Fehlendes Feld:<font color=red> $REQFIELDS{$VAL}<font color=black><br><br>\n";
        if ($FORM{'HASJS'} =~ /true/i) {
            
            print "<form><input type=button value='  Zur&uuml;ck  ' onclick=history.go(-1)></form>\n";
        }
        print "</body></html>\n";
        exit(0);
    }
}

if ($FORM{'STEP'} == 1) {
    $FORM{'STEP'}=2;
    open(PAGE, "< ../goodies.html") or print "<html><head><title>File Error</title><body>Can't open file goodies.html<br><br>$ENV{'SERVER_SIGNATURE'}\n;</body></html>";
    while ($line=<PAGE>) {
        if (($line =~ /<input type=text name=subscribeat size=30 maxlength=50>/) && defined $FORM{'E-MAIL'}) {
            $line="<input type=text name=subscribeat value=$FORM{'E-MAIL'} size=30 maxlength=50>";
        }    
        if ($line =~ /<!-- CONFIRM -->/) {
            print "<table><tr><td><p>Name:&nbsp;</td><td><p>$FORM{'NAME'}</td></tr>\n";
            print "<tr><td><p>Strasse:&nbsp;</td><td><p>$FORM{'STRASSE'}</td></tr>\n";
            print "<tr><td><p>PLZ\/Ort:&nbsp;</td><td><p>$FORM{'ORT'}</td></tr>\n";
            print "<tr><td><p>E-Mail:&nbsp;</td><td><p>$FORM{'E-MAIL'}</td></tr>\n";
            print "<tr><td><p>Tel:&nbsp;<br><br></td><td><p>$FORM{'TEL'}<br><br></td></tr>\n";
            if (defined $FORM{'method'} && $FORM{'method'} ne 'zero') {
                print "<tr><td><p>Anmeldung:&nbsp;</td><td><p>$METHOD{$FORM{'method'}}</td></tr>\n";
            }
            else {
                print "<tr><td><p>Anmeldung:&nbsp;</td><td><p>$METHOD{$FORM{'methode'}}</td></tr>\n";
            }
            print "<tr><td><p>Zahlungweise:&nbsp;<br><br></td><td><p>$ZAHLUNG{$FORM{'zahlung'}}<br><br></td></tr>\n";
            print "<tr><td><p>Mitteilungen:&nbsp;</td><td><p>$FORM{'COMMENT'}<br>\n";
            print "</table><hr><br>\n";
            next;
        }    
        if ($line =~ /<!-- DATA -->/) {
            foreach $VAL (keys %FORM) {
                print "<input type=hidden name=$VAL value=\"$FORM{$VAL}\">\n";
            }
            next;
        }    
        if (($line =~ /<!-- BACK -->/) && $FORM{'HASJS'} =~ /true/i) {
            print "<input type=button name=back value='  Zur&uuml;ck  ' onclick=history.go(-1);>\n";
            next;
        }
        if ($line =~ /<!-- T-ZAHLUNG -->/) {
           if ($FORM{'method'} =~ /ebusiness/i || $FORM{'methode'} =~ /ebusiness/) {
               $line="<td>\n<p>Bezahlung:&nbsp;\n</td>\n
      <td>\n<p><input type=radio name=t-zahlung value=zusammen>&nbsp;&nbsp;Zusammen mit dem Mitgliedsbeitrag<br>\n
        <input type=radio name=t-zahlung value=direkt>&nbsp;&nbsp;Beim Abholen<br></td>";
           }
           else {
              $line="<td></td><td></td>";
           }
        }
        print "$line";
    }
}
elsif ($FORM{'STEP'} == 2) {

    my $price=0;
    if ((defined $FORM{'t-number'}) && $FORM{'t-number'} =~ /[1-9]/ ) {
        $price = int($FORM{'t-number'})*25;
        unless(defined $FORM{'t-size'}) {
            print "<html><head><title>Da fehlt noch was</title>
<style> 
p { color:black; font-family:arial,helvetica,sans-serif,lucida; font-size:12pt }
h1 { color:black; font-family:arial,helvetica,sans-serif,lucida; font-size:18pt }
</style>
</head><body bgcolor=#ffffff>\n";
            print "<h1>Fehlender Eintrag!</h1>\n";
            print "<p>Bitte gehe zur&uuml;ck und f&uuml;lle alle fehlenden Felder aus<br>\nFehlendes Feld:<font color=red> T-Shirt-Gr&ouml;sse <font color=black><br><br>\n";
            if ($FORM{'HASJS'} =~ /true/i) {

                print "<form><input type=button value='  Zur&uuml;ck  ' onclick=history.go(-1)></form>\n";
            }
            print "</body></html>\n";
            exit(0);
        }
    }
    print "<html><head><title>Geschafft!</title>
<style>
p { color:black; font-family:arial,helvetica,sans-serif,lucida; font-size:12pt }
h1 { color:black; font-family:arial,helvetica,sans-serif,lucida; font-size:18pt }
h2 { color:black; font-family:arial,helvetica,sans-serif,lucida; font-size:14pt }
</style>
</head><body bgcolor=#ffffff><h1>\n
    Du hast's geschafft!</h1>
<h2>\n$FORM{'NAME'} - Herzlich willkommen bei LugBE!</h2>\n
    <br><p> Deine Anmeldung/Bestellung ist unterwegs!<br>\n";
    print "Ein Best&auml;tigungs-Mail mit deinen Daten ist unterwegs an <b>$FORM{'E-MAIL'}</b>.<br><br>\n";

    if ($FORM{'method'} =~ /(ebusiness|einzahlungsschein)/i || $FORM{'methode'} =~ /(ebusiness|einzahlungsschein)/i) {
        print "Bitte &uuml;berweise den <b>Mitgliedsbeitrag</b> (30 Franken)";
        
        if(($FORM{'t-zahlung'} =~ /zusammen/i) && ($price > 0)) {
            print " und den <b>T-Shirt-Preis</b> ($price Franken) zusammen";
        }
        print " <br><br>an <b>PostKonto Nr. 30-724006-6<br>LUGBE-Linux User Group Bern</b>.<br><br>\n";
      #  if((($FORM{'t-zahlung'} =~ /direkt/i) || !(defined $FORM{'t-zahlung'})) && ($price > 0)) {
      #          ($FORM{'t-number'} > 1) ? print "<br>Die <b>T-Shirts</b> " : print "<br>Das <b>T-Shirt</b> ";
      #          print "kannst du dann am n&auml;chsten Treff zahlen ($price Franken) und abholen.<br><br>";
      #      }
    }

    else {
        print "Bitte bring den <b>Mitgliedsbeitrag</b> (30 Franken) ";

               if ( $price > 0 && $FORM{'t-number'} >= 1) {
                        print "zusammen mit dem <b>T-Shirt-Preis</b> ($price Franken) ";
                   }
        print "ans n&auml;chste Treffen mit.<br><br>";
    }
     if ( $price > 0) {
        ($FORM{'t-number'} > 1) ? print "Die <b>bezahlten T-Shirts</b> " : print "Das <b>bezahlte T-Shirt</b> ";
        if($FORM{'t-zahlung'} =~ /direkt/i) {
            print "($price Franken) ";
        }
        print "kannst du dann ";
        unless($FORM{'method'} =~ /sane/i || $FORM{'methode'} =~ /sane/i) {
            print "am n&auml;chsten Treff ";
        }
        print "gleich mitnehmen.<br><br>\n";
     }
    print "Die Daten des n&auml;chsten LugBE-Hocks findest du <a href=/action/nexttreff>hier</a>. <br>Prinzipiell findet er jeden ersten Donnerstag im Monat im <b>Rest. Beaulieu</b>, Erlachstr. 3, Bern, statt.<br><br><b><i>Welcome Penguin!</i></b>\n";

    print "</body></html>\n";

    $DATE=(localtime);


    open (MAIL, "| $MAILER $FORM{'E-MAIL'}, $MAILTO");
    print MAIL "From: \"LugBE Daemon\" <lugbed\@wernig.net>\n";
    print MAIL "To: \"$FORM{'NAME'}\" <$FORM{'E-MAIL'}>\n";
    print MAIL "BCC: \"LugBE Vorstand\" <$MAILTO>\n";
    print MAIL "Subject: Anmeldung bei der LugBE / Bestellung\n\n";
    print MAIL "Folgende Anmeldung wurde heute ($DATE) abgeschickt:\n\n";
    print MAIL "Name: $FORM{'NAME'}\n";
    print MAIL "Strasse: $FORM{'STRASSE'}\n";
    print MAIL "PLZ\/Ort: $FORM{'ORT'}\n";
    print MAIL "E-Mail: $FORM{'E-MAIL'}\n";
    print MAIL "Tel: $FORM{'TEL'}\n\n";
    if (defined $FORM{'method'} && $FORM{'method'} ne 'zero') {
        print MAIL "Anmeldung: $METHOD{$FORM{'method'}}\n";
    }
    else {
        print MAIL "Anmeldung: $METHOD{$FORM{'methode'}}\n";
    }
    print MAIL "Zahlungweise: $ZAHLUNG{$FORM{'zahlung'}}\n\n";
    print MAIL "Bestellte T-Shirts: $FORM{'t-number'}\n";
    print MAIL "Groesse: $FORM{'t-size'}\n";
    print MAIL "Zahlung: $FORM{'t-zahlung'}\n\n";
    print MAIL "Abonnierte Listen:\n";
    foreach $list("linux-misc", "linux-news", "lugbe", "linux-support", "linux-news-heise", "linux-news-slashdot") {
        if($FORM{$list} =~ /subscribe/i) {
            print MAIL "\t $list\n";
        }
    }
    print MAIL "\nMitteilungen: $FORM{'COMMENT'}\n\n";
    print MAIL "\n*****************************\n
Sollte diese Anmeldung nicht in Ihrem Sinne sein, hat sich wohl jemand einen Scherz mit Ihnen erlaubt.
In diesem Fall muessen Sie nichts mehr tun, und die Anmeldung wird dann von selbst verfallen.\n\n";

    unless($FORM{'method'} =~ /sane/i || $FORM{'methode'} =~ /sane/i) {
        print MAIL "Falls Sie der LugBE beitreten ";
            if ($price > 0) {
                print MAIL "und die schoenen LugBE-T-Shirts bestellen ";
            }
        print MAIL "wollen, schicken Sie dieses Mail\nbitte UNVERAENDERT an den Absender zurueck (Reply-to).
Ohne diese Antwort koennen wir Ihre Anmeldung leider nicht weiterbearbeiten.\n\n";
        print MAIL "Den Mitgliedsbeitrag (30 Franken)";
        if ($price > 0 && $FORM{'t-zahlung'} =~ /zusammen/i) {
                print MAIL " und T-Shirt-Preis ($price Franken)";
            }
        print MAIL " ueberweisen Sie bitte an
PostKonto Nr. 30-724006-6
LUGBE - Linux User Group Bern\n\n";
     }
     print MAIL "Ansonsten herzlich willkommen bei der LugBE - Linux User Group Bern!
Wir freuen uns schon auf dein Kommen!\n\n";


    print MAIL "Mit freundlichen Gruessen

Linux User Group Bern\n
mailto:info\@lugbe.ch\n";


    close MAIL;

    foreach $list("linux-misc", "linux-news", "lugbe", "linux-support", "linux-news-heise", "linux-news-slashdot") {
        if($FORM{$list} =~ /subscribe/i) {
            open (MAIL, "| $MAILER majordomo\@lugbe.ch");
            print MAIL "From: \"LugBE Daemon\" <lugbed\@wernig.net>\n";
            print MAIL "To: \"Majordomo\" <majordomo\@lugbe.ch>\n";
            print MAIL "Subject: Anmeldung\n\n";
            print MAIL "subscribe $list $FORM{'E-MAIL'}\n";
            close MAIL;
        }
    }
}
else {
    print "<html><head><title>Logical Error</title><body><h2>You must first complete <a href=http://www.lugbe.ch/anmeldung.html>Step 1</a></h2><br><br>$ENV{'SERVER_SIGNATURE'}\n;</body></html>";
}
exit(0);
