#!/usr/mesh/bin/perl # # program name : checkmsg.cgi(Check Submitted Message) # # function : Show input data to user and reconfirm to submit the message. # # programmer : makoto takenaka (takesoft@mxs.meshnet.or.jp) # # copyright : (c) 1996, 1997 by Takesoft # # version(date) : # 1.0 (Dec 7, 1996) # 1.1 (Jan 24, 1997) Limit the length of message and add notes. # 1.2 (Jan 29, 1997) Fix (5.3) $name quotation process, # correct $msg_file[0], $msg_file[1] and # add $addmsg_cgi, $commsg_cgi. # 1.3 (Jan 31, 1997) Add sub wrap to word-wrap $message for the other # browsers except Netscape Navigator 2.0/3.0 # 1.4 (Feb 12, 1997) Change (" & < >) to escape codes after sub wrap # in case of $message. # #(1) Send header lines to browser and prepare jcode.pl. # print "Content-type: text/html\n\n"; require 'jcode.pl'; # #(2) set constants. # $msg_limit = 2000; # Limit of length of message(bytes) $line_limit = 77; # limit of bytes in a line $base_dir = "./"; # base directory of CLWB $home_url = "../index.html"; # URL of first Web page $clwb_cgi = "./clwb.cgi"; # URL of clwb.cgi $addmsg_cgi = "./addmsg.cgi"; # URL of addmsg.cgi $commsg_cgi = "./commsg.cgi"; # URL of commsg.cgi $password = 'clwb777'; # password for owner mode $owner_name = 'Boadmaster'; # owner name(assign by input code) $owner_url = 'http://www2a.meshnet.or.jp/~user-id/'; $owner_mail = 'user-id@mxs.meshnet.or.jp'; $web_code = 'euc'; #Japanese code of title/msg file:'sjis', 'euc', 'jis' $san = 'san'; # san in $web_code $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 # # $owner_mode = ""; # = 1; if owner mode. $line_limit = $line_limit - 1; # Adjust $line_limit $textarea_limit = $line_limit - 6; # limit of bytes in line for hard wrap # #(3) get parameters from input 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 if($pname ne 'message') { $value =~ s/&/&/g; # Change & to & $value =~ s/\x22/"/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'}; # #(4) Check owner mode and length of the message. # if($name =~ /^$password\b/) { $owner_mode = 1; $name = $owner_name; if(!$url || ($url eq "http://")) {$url = $owner_url;} unless($mail) {$mail = $owner_mail;} } # if(length($message) > $msg_limit) {$message = substr($message, 0, $msg_limit);} # Cut long message. # # Wrap $message if characters in a line is greater than $line_limit. # &wrap(*message, $line_limit, $web_code); # $message =~ s/&/&/g; # Change & to & $message =~ s/\x22/"/g; # Change " to " $message =~ s//>/g; # Change > to > # #(5) Get user $name, $url and $mail if inputted $name is message number. # #(5.1) Check $name is message number or not. # if(!$name){$name_is_number = 0;} elsif($name =~ /[^\d\s]/){$name_is_number = 0;} else {$name_is_number = 1;} # if($name_is_number && ($name > 0)) { $tname = $name; $tname =~ s/^\s+//; # Trim $name. $tname =~ s/\s+$//; # #(5.2) Find message file of number $tname messge. # foreach $i (0 .. $#msg_from) { if($msg_from[$i] > $tname) { $n = $i - 1; last; } $n = $i; } # $msg_html = $msg_file[$n]; # #(5.3) Find message number. # open(MSG_FILE, "$msg_html") || &error_message("(5.3):Unable to open $msg_html"); # $found = 0; while() { if(/