doc/en/cgi/dosendpr.cgi
Dima Dorfman 0ea6a64950 Be a good web email interface and include the originator's IP address
in the headers.  Although this information can be gleaned from the web
server logs, it should not be necessary to have access to the web
server in order to know who sent in a PR.
2002-05-20 07:14:41 +00:00

108 lines
3.1 KiB
Perl
Executable file

#!/usr/bin/perl
#
# Send-pr perl script to send a pr.
#
# Copyright (c) 1996 Free Range Media
#
# Copying and distribution permitted under the conditions of the
# GNU General Public License Version 2.
# (http://www.gnu.ai.mit.edu/copyleft/gpl.html)
#
# $FreeBSD$
require "html.pl";
sub prerror {
&html_title ("Problem Report Error");
&html_body();
print "There is an error in the configuration of the problem\n",
"report form genator. Please back up one page and report\n",
"the problem to the owner of that page. Report @_[0].";
&html_end();
exit (1);
}
&www_content ("text","html");
&cgi_form_in();
$gndb = $cgi_data{'gndb'};
if ($gndb =~ /^[a-z]+$/ && -e "$gndb.def")
{ require "$gndb.def"; }
else
{ &prerror("gndb problem"); }
&prerror("request method problem") if $ENV{'REQUEST_METHOD'} eq 'GET';
# Configuration
if ($gnhow eq "mail")
{
if (-e "/usr/lib/sendmail")
{ $submitprog = "/usr/lib/sendmail -t" };
if (-e "/usr/sbin/sendmail")
{ $submitprog = "/usr/sbin/sendmail -t" };
}
else
{ if (-e "$gnroot/queue-pr")
{ $submitprog = "$gnroot/queue-pr -q" };
}
if (!$submitprog) { &prerror("submit program problem"); }
&html_title ($gnspreptitle);
&html_body ($gnsprepbody);
# Verify the data ...
if (!$cgi_data{'email'} || !$cgi_data{'originator'} ||
!$cgi_data{'synopsis'}) {
if ($gnsprepbad && -e $gnsprepbad )
{ print `cat $gnsprepbad`; }
else {
print "<h1>Bad Data</h1>\nYou need to specify at least your ",
"electronic mail address, your name and a synopsis of the ",
"of the problem.\n Please return to the form and add the ",
"missing information. Thank you.\n";
}
&html_end();
exit(1);
}
# Build the PR.
$pr = "To: $gnemail\n" .
"From: $cgi_data{'originator'} <$cgi_data{'email'}>\n" .
"Subject: $cgi_data{'synopsis'}\n" .
"X-Originating-IP: $ENV{'REMOTE_ADDR'}\n" .
"X-Send-Pr-Version: www-1.0\n\n" .
">Submitter-Id:\t$cgi_data{'submitterid'}\n" .
">Originator:\t$cgi_data{'originator'}\n" .
">Organization:\t$cgi_data{'organization'}\n" .
">Confidential:\t$cgi_data{'confidential'}\n" .
">Synopsis:\t$cgi_data{'synopsis'}\n" .
">Severity:\t$cgi_data{'severity'}\n" .
">Priority:\t$cgi_data{'priority'}\n" .
">Category:\t$cgi_data{'category'}\n" .
">Class:\t\t$cgi_data{'class'}\n" .
">Release:\t$cgi_data{'release'}\n" .
">Environment:\t$cgi_data{'environment'}\n" .
">Description:\n$cgi_data{'description'}\n" .
">How-To-Repeat:\n$cgi_data{'howtorepeat'}\n" .
">Fix:\n$cgi_data{'fix'}\n";
# remove any carrage returns that appear in the report.
$pr =~ s/\r//g;
#print "<PRE>$submitprog\n\n$pr\n</PRE>";
if (open (SUBMIT, "|$submitprog")){
print SUBMIT $pr;
close (SUBMIT);
if ($gnspreppage && -e $gnspreppage )
{ print `cat $gnspreppage`; }
else
{ print "<h1>Thank You</h1>",
"Thank you for the problem report. You should receive confirmation",
" of your report by electronic mail within a day."; }
} else {
print "<h1>Error</h1>An error occured processing your problem report.";
}
&html_end();