--- loncom/loncron 2019/02/10 03:02:10 1.103.2.2 +++ loncom/loncron 2017/10/20 11:54:54 1.105 @@ -2,7 +2,7 @@ # Housekeeping program, started by cron, loncontrol and loncron.pl # -# $Id: loncron,v 1.103.2.2 2019/02/10 03:02:10 raeburn Exp $ +# $Id: loncron,v 1.105 2017/10/20 11:54:54 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -41,6 +41,8 @@ use IO::File; use IO::Socket; use HTML::Entities; use Getopt::Long; +use GDBM_File; +use Storable qw(thaw); #globals use vars qw (%perlvar %simplestatus $errors $warnings $notices $totalcount); @@ -111,21 +113,18 @@ sub checkon_daemon { my $result; &log($fh,'
');
printf("%-15s ",$daemon);
- if ($fh) {
- if (-e "$perlvar{'lonDaemons'}/logs/$daemon.log"){
- if (open(DFH,"tail -n25 $perlvar{'lonDaemons'}/logs/$daemon.log|")) {
- while (my $line=
Unable to start $daemon
"); } } - if ($fh) { - if (-e "$perlvar{'lonDaemons'}/logs/$daemon.log"){ - &log($fh,""); - if (open(DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/$daemon.log|")) { - while (my $line="); - } - } + + if (-e "$perlvar{'lonDaemons'}/logs/$daemon.log"){ + &log($fh,") { - &log($fh,"$line"); - if ($line=~/WARNING/) { $notices++; } - if ($line=~/CRITICAL/) { $notices++; } - } - close (DFH); - } - &log($fh,"
"); + open (DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/$daemon.log|"); + while (my $line="); + } } my $fname="$perlvar{'lonDaemons'}/logs/$daemon.log"; @@ -824,6 +821,127 @@ sub write_checksums { return; } +sub write_connection_config { + my ($isprimary,$domconf,$url,%connectssl); + my $primaryLibServer = &Apache::lonnet::domain($perlvar{'lonDefDomain'},'primary'); + if ($primaryLibServer eq $perlvar{'lonHostID'}) { + $isprimary = 1; + } elsif ($primaryLibServer ne '') { + my $protocol = $Apache::lonnet::protocol{$primaryLibServer}; + my $hostname = &Apache::lonnet::hostname($primaryLibServer); + unless ($protocol eq 'https') { + $protocol = 'http'; + } + $url = $protocol.'://'.$hostname.'/cgi-bin/listdomconfig.pl'; + } + my $domconf = &get_domain_config($perlvar{'lonDefDomain'},$primaryLibServer,$isprimary, + $url); + if (ref($domconf) eq 'HASH') { + if (ref($domconf->{'ssl'}) eq 'HASH') { + foreach my $connect ('connto','connfrom') { + if (ref($domconf->{'ssl'}->{$connect}) eq 'HASH') { + my ($sslreq,$sslnoreq,$currsetting); + my %contypes; + foreach my $type ('dom','intdom','other') { + $connectssl{$connect.'_'.$type} = $domconf->{'ssl'}->{$connect}->{$type}; + } + } + } + } + if (keys(%connectssl)) { + if (open(my $fh,">$perlvar{'lonTabDir'}/connectionrules.tab")) { + my $count = 0; + foreach my $key (sort(keys(%connectssl))) { + print $fh "$key=$connectssl{$key}\n"; + $count ++; + } + close($fh); + print "Completed writing SSL options for lonc/lond for $count items.\n"; + } + } else { + print "Writing of SSL options skipped - no connection rules in domain configuration.\n"; + } + } else { + print "Retrieval of SSL options for lonc/lond skipped - no configuration data available for domain.\n"; + } +} + +sub get_domain_config { + my ($dom,$primlibserv,$isprimary,$url) = @_; + my %confhash; + if ($isprimary) { + my $lonusersdir = $perlvar{'lonUsersDir'}; + my $fname = $lonusersdir.'/'.$dom.'/configuration.db'; + if (-e $fname) { + my $dbref=&LONCAPA::locking_hash_tie($fname,&GDBM_READER()); + if (ref($dbref) eq 'HASH') { + foreach my $key (sort(keys(%{$dbref}))) { + my $value = $dbref->{$key}; + if ($value =~ s/^__FROZEN__//) { + $value = thaw(&LONCAPA::unescape($value)); + } else { + $value = &LONCAPA::unescape($value); + } + $confhash{$key} = $value; + } + &LONCAPA::locking_hash_untie($dbref); + } + } + } else { + if (open(PIPE,"wget --no-check-certificate '$url?primary=$primlibserv&format=raw' |")) { + my $config = ''; + while () { + &log($fh,"$line"); + if ($line=~/WARNING/) { $notices++; } + if ($line=~/CRITICAL/) { $notices++; } + }; + close (DFH); + &log($fh,"