[LON-CAPA-cvs] cvs: loncom /interface lonerrorhandler.pm
www
lon-capa-cvs@mail.lon-capa.org
Fri, 08 Jul 2005 21:21:59 -0000
www Fri Jul 8 17:21:59 2005 EDT
Modified files:
/loncom/interface lonerrorhandler.pm
Log:
Bug #3256: don't rely on client.
Server probably save enough, bugs tend to be more localized than initially
assumed.
Index: loncom/interface/lonerrorhandler.pm
diff -u loncom/interface/lonerrorhandler.pm:1.7 loncom/interface/lonerrorhandler.pm:1.8
--- loncom/interface/lonerrorhandler.pm:1.7 Thu Apr 7 02:56:23 2005
+++ loncom/interface/lonerrorhandler.pm Fri Jul 8 17:21:56 2005
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Internal Server Error Handler
#
-# $Id: lonerrorhandler.pm,v 1.7 2005/04/07 06:56:23 albertel Exp $
+# $Id: lonerrorhandler.pm,v 1.8 2005/07/08 21:21:56 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -32,6 +32,7 @@
use Apache::Constants qw(:common);
use Apache::loncommon;
use Apache::lonnet;
+use Apache::lonmsg;
sub handler {
my $r = shift;
@@ -39,61 +40,104 @@
$r->send_http_header;
return OK if $r->header_only;
-# ------------------------------------------------------------- Get environment
- my $envkey;
- my $env='';
-
- foreach $envkey (sort(keys(%env))) {
- $env.="$envkey: $env{$envkey}\n";
- }
- foreach $envkey (sort(keys(%ENV))) {
- $env.="$envkey: $ENV{$envkey}\n";
- }
-
- $env=~s/\"/\'\'/g;
- my $recipients=$r->dir_config('lonAdmEMail').','.
- $r->dir_config('lonSysEMail');
-
- my $version=$r->dir_config('lonVersion');
-
- my $req=$r->as_string();
- $req=~s/\"/\'\'/g;
+ &Apache::loncommon::get_posted_cgi($r);
my $html=&Apache::lonxml::xmlbegin();
- my $bodytag=&Apache::loncommon::bodytag('Could Not Process Request');
-# --------------------------------------------------- Print login screen header
- $r->print(<<ENDDOCUMENT);
+ my $bodytag=&Apache::loncommon::bodytag($env{'form.sendinfo'}?'Sending Error Report':'Could Not Process Request');
+ $r->print(<<ENDHEADER);
$html
<head>
<title>The LearningOnline Network with CAPA</title>
</head>
$bodytag
+ENDHEADER
+
+ if ($env{'form.sendinfo'}) {
+ my $repro='no';
+# ------------------------------------------------------------------ Mail stuff
+ if ($env{'form.reproducible'}) {
+ $repro='yes';
+ }
+ my $message=(<<ENDMESSAGE);
+LON-CAPA Error Message
+Reproducible: $repro
+Version: $env{'form.version'}
+Syllabus:
+$env{'form.syllabus'}
+
+Prior Action:
+$env{'form.prioraction'}
+
+Guesses:
+$env{'form.guesses'}
+
+Environment:
+$env{'form.environment'}
+ENDMESSAGE
+ my $recipients=$r->dir_config('lonAdmEMail').','.
+ $r->dir_config('lonSysEMail');
+
+ &Apache::lonmsg::sendemail($recipients,'ERROR REPORT',$message);
+ $r->print('<h2>Report submitted</h2>Thank you!</body></html>');
+ } else {
+# ------------------------------------------------------------- Get environment
+ my $envkey;
+ my $env='';
+ my $syllabus='';
+
+ foreach $envkey (sort(keys(%env))) {
+ $env.="$envkey: $env{$envkey}\n";
+ }
+ foreach $envkey (sort(keys(%ENV))) {
+ $env.="$envkey: $ENV{$envkey}\n";
+ if ($envkey=~/REDIRECT\_(REQUEST_URI|SCRIPT|ERROR)/) {
+ $syllabus.="\n$1:\n$ENV{$envkey}";
+ }
+ }
+
+ $env=~s/\"/\'\'/g;
+
+ my $version=$r->dir_config('lonVersion');
+
+# ----------------------------------------------------------- Print error form
+ $r->print(<<ENDDOCUMENT);
<h2>Somewhere something went wrong - please help us to find out what.</h2>
Please take a moment to fill out the form below. Your information, together
with internal debugging information, will be emailed to the system and server
administrators.
-<form action="mailto:$recipients" method=get enctype="text/plain">
-<input type=submit value="Send Information">
+<form action="/adm/errorhandler" method="post">
+<input type="submit" value="Send Information">
<h3>Please describe what you did just before this screen came up</h3>
-<input type=hidden name=req value="$req">
-<textarea name=prioraction cols=50 rows=5>
+<textarea name="prioraction" cols="50" rows="5">
</textarea>
<h3>Is this problem reproducible?</h3>
-<input type=checkbox name=reproducible value=yes> Yes!
+<label>
+<input type="checkbox" name="reproducible" value="yes"> Yes!
+</label>
<h3>Do you have any guesses why this might have happened?</h3>
-<textarea name=guesses cols=50 rows=5>
+<textarea name="guesses" cols="50" rows="5">
</textarea>
-<input type=hidden name=version value="$version">
-<input type=hidden name=environment value="$env"><p>
-<input type=submit value="Send Information">
+<input type="hidden" name="version" value="$version" />
+<input type="hidden" name="environment" value="$env" />
+<input type="hidden" name="syllabus" value="$syllabus" />
+<input type="hidden" name="sendinfo" value="1" />
+<p>
+<input type="submit" value="Send Information">
+</p>
</form>
<h1>Thank you for your help!</h1>
+<font size="-1">
+<pre>
+Internal info:
+$syllabus
+</pre>
+</font>
</body>
</html>
ENDDOCUMENT
# -------------------------- Better terminate this in case something was sticky
- $r->child_terminate();
-
+ $r->child_terminate();
+ }
return OK;
}