--- loncom/cgi/takeoffline.pl 2003/09/11 20:54:11 1.2 +++ loncom/cgi/takeoffline.pl 2008/11/28 20:50:25 1.3 @@ -1,7 +1,8 @@ #!/usr/bin/perl +$|=1; # Take machine offline, reroute traffic # -# $Id: takeoffline.pl,v 1.2 2003/09/11 20:54:11 www Exp $ +# $Id: takeoffline.pl,v 1.3 2008/11/28 20:50:25 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -26,31 +27,71 @@ # http://www.lon-capa.org/ # -print "Content-type: text/html\n\n". - "

Take Offline

"; -unless ($ENV{'QUERY_STRING'}) { - print 'No reroute server given, taking completely offline.'; - &dead(); -} else { - ($otherserver,$domain)=split(/\&/,$ENV{'QUERY_STRING'}); - print 'Rerouting to '.$otherserver; - &reroute(); -} -open (STATUS,'>/home/httpd/html/lon-status/reroute.txt'); -print STATUS "status=rerouting&server=$otherserver&domain=$domain&time=".time."\n"; -close(STATUS); +use strict; +use lib '/home/httpd/lib/perl/'; +use Apache::lonlocal; +use LONCAPA::loncgi; + +print "Content-type: text/html\n\n"; + +&main(); + +sub main { + if (!&LONCAPA::loncgi::check_ipbased_access('takeoffline')) { + if (!&LONCAPA::loncgi::check_cookie_and_load_env()) { + &Apache::lonlocal::get_language_handle(); + print(&LONCAPA::loncgi::missing_cookie_msg()); + return; + } -print ""; + if (!&LONCAPA::loncgi::can_view('takeoffline')) { + &Apache::lonlocal::get_language_handle(); + print(&LONCAPA::loncgi::unauthorized_msg('takeoffline')); + return; + } + } + + &Apache::lonlocal::get_language_handle(); + + print '

'.&Apache::lonlocal::mt('Take Offline').'

'; + my $statusmsg; + if ($ENV{'QUERY_STRING'}) { + my ($otherserver,$domain)=split(/\&/,$ENV{'QUERY_STRING'}); + if (&reroute($otherserver,$domain)) { + print &Apache::lonlocal::mt('Rerouting to [_1]',$otherserver); + $statusmsg = "status=rerouting&server=$otherserver&domain=$domain&time=".time. + "by=$Apache::lonnet::env{'user.name'}:$Apache::lonnet::env{'user.domain'}"; + } + } else { + if (&dead()) { + print &Apache::lonlocal::mt('No reroute server given, taking completely offline.'); + $statusmsg = 'status=offline&time='.time."by=$Apache::lonnet::env{'user.name'}:$Apache::lonnet::env{'user.domain'}" + } + } + print ""; + if ($statusmsg) { + if (open (STATUS,'>/home/httpd/html/lon-status/reroute.txt')) { + print STATUS "$statusmsg\n"; + close(STATUS); + } else { + print &Apache::lonlocal::mt('Logging of status change to [_1] failed.','reroute.txt'); + } + } +} sub dead { - open (OUT,'>/home/httpd/html/index.html'); - print OUT 'This LON-CAPA server is currently offline.'; - close(OUT); + if (open (OUT,'>/home/httpd/html/index.html')) { + print OUT &Apache::lonlocal::mt('This LON-CAPA server is currently offline.'); + close(OUT); + return 'ok'; + } + return; } sub reroute { - open (OUT,'>/home/httpd/html/index.html'); - print OUT (</home/httpd/html/index.html')) { + print OUT (< Welcome to the LearningOnline Network with CAPA @@ -63,5 +104,8 @@ sub reroute { ENDNEWINDEX - close(OUT); + close(OUT); + return 'ok'; + } + return; }