#!/usr/mesh/bin/perl
#
# program name : commsg.cgi(comment message form)
#
# function : Show comment message input form to user.
#
# programmer : makoto takenaka (takesoft@mxs.meshnet.or.jp)
#
# copyright : (c) 1996, 1997 by Takesoft
#
# version(date) :
# 1.0 (Nov 20, 1996)
# 1.1 (Jan 24, 1997) Add conversion process of Japnese code and
# (" & < >).
# 1.2 (Jan 29, 1997) Change $cgi_dir to $commsg_cgi
# 1.3 (Feb 3, 1997) Bug fix of title quoting process in (5.3)
#
#(1) Send header lines to browser and prepare jcode.pl.
#
print "Content-type: text/html\n\n";
require 'jcode.pl';
#
#(2) set constants.
#
$web_code = "euc"; # "euc", "sjis" or "jis"
$base_dir = "./"; # base directory of CLWB
$commsg_cgi = "./commsg.cgi"; # URL of commsg.cgi
$top_html = "${base_dir}top.html"; # top part of Web page
$form_html = "${base_dir}form.html"; # message input form
$msg_from[0] = 1; # first message number of $msg_file[0]
$msg_file[0] = "${base_dir}msg001.html"; # first message file
# $msg_from[1] = 201; # sample of second message file
# $msg_file[1] = "${base_dir}msg002.html"; # sample of second message file
#
#(3) get parameters from sent data.
#
if ($ENV{'REQUEST_METHOD'} eq "POST")
{
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}
else
{
$buffer = $ENV{'QUERY_STRING'};
}
#
@pairs = split(/&/, $buffer);
#
foreach $pair (@pairs)
{
($pname, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
#
&jcode'convert(*value, $web_code); # Convert to $web_code
$value =~ s/&/&/go; # Change & to &
$value =~ s/\x22/"/g; # Change " to "
$value =~ s/</g; # Change < to <
$value =~ s/>/>/g; # Change > to >
$value =~ s/\x0D\x0A/\x0A/g; # Change CR LF to LF
$value =~ s/\x0D/\x0A/g; # Change CR to LF
#
$parameters{$pname} = $value;
}
#
$owner_mode = $parameters{'owner_mode'};
$to = $parameters{'to'};
$name = $parameters{'name'};
$url = $parameters{'url'};
$mail = $parameters{'mail'};
$title = $parameters{'title'};
$message = $parameters{'message'};
# $quote_code = $parameters{'quote_code'};
$quote_part = $parameters{'quote_part'};
#
#(4) Top part of page
#
open(HTML_FILE, $top_html)
||&error_message("(4.1)Unable to open $top_html");
#
print Comment to Message $to
\n
\n";
foreach $i (0 .. $#msg_from)
{
if($msg_from[$i] > $to)
{
$n = $i - 1;
last;
}
$n = $i;
}
#
$msg_html = $msg_file[$n];
#
#(5.2) Find $to message and show it on browser.
#
open(MSG_FILE, "$msg_html")
|| &error_message("(5.2):Unable to open $msg_html");
#
$set_quote_message = 0;
$set_quote_title = 0;
$found = 0;
while((.*)/)
{
$message = $1;
if($message =~ /(.*)\<\/PRE\>/ )
{
$message = $1;
$set_quote_message = 2;
}
else
{$set_quote_message = 1;}
}
elsif($set_quote_message == 1)
{
if(/(.*)\<\/PRE\>/)
{
$message = $message.$1;
$set_quote_message = 2;
}
else
{$message = $message.$_;}
}
}
}
if( /\<\!--BM:MSGN=/ || /\<\!--EM:MSGN=/ )
{
$found = 1;
last;
}
print $_;
}
}
if($found) {last;}
}
close(MSG_FILE);
#
#(5.4) Convert japanese code.
#
# if($set_quote_title > 0){&jcode'convert(*title, $quote_code, $web_code);}
# if($set_quote_message > 1){&jcode'convert(*message, $quote_code, $web_code);}
#
#(5.5) Show quote form.
#
print <