$local $hostdom{$local} ($hostname{$local}; $hostrole{$local})
$domaindescription{$hostdom{$local}}
|
ENDHEADER
&login($local);&server($local);&users($local);&versions($local);
&loncron($local);&lond($local);&lonc($local);&runloncron($local);
print " |
";
# load
if (($host{$local.'_load_doomed'}>0.5) || ($mode eq 'load_doomed')) {
print " Load: ".$host{$local.'_load'}
}
# users
if (($host{$local.'_users_doomed'}>10) || ($mode eq 'users_doomed')) {
print " Active Users: ".$host{$local.'_users'}
}
# checkrpms
if ($host{$local.'_checkrpms'}) {
print " RPMs: ".$host{$local.'_checkrpms'}
}
# mysql
if ($host{$local.'_mysql'}) {
print " MySQL Database: ".$host{$local.'_mysql'}
}
print " |
";
}
# =========================================================== Doomedness sorted
sub doomedness {
my $crit=shift;
my %alldoomed=();
my @allhosts=();
foreach (keys %host) {
if ($_=~/^(\w+)\_$crit$/) {
if ($host{$_}) {
push (@allhosts,$1);
$alldoomed{$1}=$host{$_};
}
}
}
return sort { $alldoomed{$b} <=> $alldoomed{$a} } @allhosts;
}
# ====================================================================== Status
sub statuslist {
my ($local,$what)=@_;
print
"\n";
}
#
# Main program
#
# ========================================================= Get form parameters
my $buffer;
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
my @pairs=split(/&/,$buffer);
my $pair; my $name; my $value;
undef %FORM;
%FORM=();
foreach $pair (@pairs) {
($name,$value) = split(/=/,$pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$FORM{$name}=$value;
}
$buffer=$ENV{'QUERY_STRING'};
@pairs=split(/&/,$buffer);
foreach $pair (@pairs) {
($name,$value) = split(/=/,$pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$FORM{$name}=$value;
}
# ====================================================== Determine refresh rate
my $refresh=(($FORM{'refresh'}=~/^\d+$/)?$FORM{'refresh'}:60);
if ($refresh<30) { $refresh=30; }
my $starttime=time;
# ============================================================== Determine mode
my %modes=('trouble' => 'Trouble',
'users_doomed' => 'Doomed: Users',
'loncron_doomed' => 'Doomed: General (loncron)',
'mysql_doomed' => 'Doomed: Database (mysql)',
'notconnected_doomed' => 'Doomed: Connections',
'checkrpms_doomed' => 'Doomed: RPMs',
'load_doomed' => 'Doomed: Load',
'unresponsive_doomed' => 'Doomed: Status could not be determined',
'users' => 'User Report',
'connections' => 'Connections Matrix');
$mode=$FORM{'mode'};
unless ($modes{$mode}) { $mode='trouble'; }
# ================================================================ Send Headers
print "Content-type: text/html\n\n".
"\n";
# -------------------- Read loncapa.conf (and by default, loncapa_apache.conf).
my $perlvarref=LONCAPA::Configuration::read_conf('loncapa.conf');
%perlvar=%{$perlvarref};
undef $perlvarref; # remove since sensitive and not needed
delete $perlvar{'lonReceipt'}; # remove since sensitive and not needed
delete $perlvar{'lonSqlAccess'}; # remove since sensitive and not needed
# ------------------------------------------------------------- Read hosts file
{
my $config=IO::File->new("$perlvar{'lonTabDir'}/hosts.tab");
$total=0;
while (my $configline=<$config>) {
$configline=~s/#.*$//;
unless ($configline=~/\w/) { next; }
my ($id,$domain,$role,$name,$ip)=split(/:/,$configline);
$hostname{$id}=$name;
$hostdom{$id}=$domain;
$hostrole{$id}=$role;
$hostip{$id}=$ip;
$total++;
if (($role eq 'library') && ($id ne $perlvar{'lonHostID'})) {
$libserv{$id}=$name;
}
}
}
# ------------------------------------------------------------ Read domain file
{
my $fh=IO::File->new($perlvar{'lonTabDir'}.'/domain.tab');
%domaindescription = ();
%domain_auth_def = ();
%domain_auth_arg_def = ();
if ($fh) {
while (<$fh>) {
next if (/^(\#|\s*$)/);
chomp;
my ($domain, $domain_description, $def_auth, $def_auth_arg)
= split(/:/,$_,4);
$domain_auth_def{$domain}=$def_auth;
$domain_auth_arg_def{$domain}=$def_auth_arg;
$domaindescription{$domain}=$domain_description;
}
}
}
print "LON-CAPA Cluster Status ".localtime()."
";
print "\n";;
print "";
exit 0;