#!/usr/bin/perl

$boardfile = "board";

print "Content-type: text/html\n\n";


# POST$B$,<B9T(B(Submit)$B$5$l$?>l9g$K%a%C%;!<%8$r%U%!%$%k$K=q$-9~$_$^$9!#(B
# CGI$B%9%/%j%W%H$,8F$S=P$5$l$?$@$1$N>l9g$O!"EE;R7G<(HD$rI=<($9$k$@$1(B
# $B$G$9!#(B

if ($ENV{'REQUEST_METHOD'} eq "POST") {

    %form = &read_input;

    $your_name = $form{'from'};
    $your_message = $form{'message'};

    open(BD, ">>$boardfile") || die "not board file";

    print(BD "<hr>\n");
    print(BD "<i>$your_name</i><br>\n");
    print(BD "$your_message\n");
    print(BD "\n");

    close(BD);

    &create_page;
}
else {
    &create_page;
}


# $B%Z!<%8:n@.$N%5%V%k!<%A%s(B

sub create_page
{
    print "<head>\n";
    print "<title>Electoric Board for WWW</title>\n";
    print "</head>\n";
    print "<body>\n";
    print "<h2>Electoric Board for WWW</h2>\n";
    print "\n";
    print "<hr>\n";
    print "\n";
    print "<form method=\"POST\" action=\"chat.cgi\">\n";
    print "Your name: <input name=\"from\"><p>\n";
    print "Your message:<p>\n";
    print "<textarea rows=5 cols=60 name=\"message\"></textarea><p>\n";
    print "\n";
    print "<input type=\"submit\" value=\"Post a mesasge\"><p>\n";
    print "</form>\n";
    print "\n";
    print "\n";

# $B%a%C%;!<%8%U%!%$%k$NFI$_9~$_$HI=<($r9T$$$^$9!#(B

    open(BOARD, "$boardfile") || die "not board file";
    while(<BOARD>) {
	print ;
    }
    close(BOARD);

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

}

sub read_input
{
    local ($buffer, @pairs, $pair, $name, $value, %FORM);
    # Read in text
    $ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
    if ($ENV{'REQUEST_METHOD'} eq "POST")
    {
	read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
    } else
    {
	$buffer = $ENV{'QUERY_STRING'};
    }
    @pairs = split(/&/, $buffer);
    foreach $pair (@pairs)
    {
	($name, $value) = split(/=/, $pair);
	$value =~ tr/+/ /;
	$value =~ s/%(..)/pack("C", hex($1))/eg;
	$FORM{$name} = $value;
    }
    %FORM;
}
