********BJSubmit******** #!/bin/perl # # BJsumbit - perl script which allows submittals # of "Big Johnson" T-shirt phrases # # by: Eric Hall # unshift(@INC,'/usr/local/etc/httpd/cgi-bin'); # Get the input read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); # Split the name-value pairs @pairs = split(/&/, $buffer); # Uncommend for debugging purposes #print "Content-type: text/html\n\n"; 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; #want to skip submissions of default values next if (grep(/\?\?\?\?\?/,$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; # Uncomment for debugging purposes #print "Setting $name to $value

"; $FORM{$name} = $value; } # If the comments are blank, then give a "blank form" response &blank_response unless $FORM{'name'}; &blank_response unless $FORM{'phrase'}; # Print a title and initial heading print "Content-type: text/html\n\n"; print "Thank you\n"; print "

Thank you

\n"; print "

Big Johnson is greatly appreciative of your suggestion.
\n"; print "Click here to see it active.\n"; $BJdir = "/usr/local/etc/httpd/htdocs/duck"; rename("$BJdir/BigJohn.html","$BJdir/BigJohn.old"); open (INS,"$BJdir/BigJohn.old"); open (OUTS,">$BJdir/BigJohn.html"); #echo original to new while() { #only when we've reached the end do we tack on the new stuff if(grep(/--the end--/,$_)) { print OUTS "

  • $FORM{'name'} -\n"; print OUTS "$FORM{'phrase'}\n\n"; } print OUTS; } #end while close(INS); close(OUTS); chmod 0666, "$BJdir/BigJohn.old"; chmod 0666, "$BJdir/BigJohn.html"; exit;