Diff for /loncom/loncron between versions 1.109 and 1.113

version 1.109, 2018/10/25 02:48:56 version 1.113, 2018/11/06 15:37:42
Line 113  sub checkon_daemon { Line 113  sub checkon_daemon {
     my $result;      my $result;
     &log($fh,'<hr /><a name="'.$daemon.'" /><h2>'.$daemon.'</h2><h3>Log</h3><p style="white-space: pre;"><tt>');      &log($fh,'<hr /><a name="'.$daemon.'" /><h2>'.$daemon.'</h2><h3>Log</h3><p style="white-space: pre;"><tt>');
     printf("%-15s ",$daemon);      printf("%-15s ",$daemon);
     if (-e "$perlvar{'lonDaemons'}/logs/$daemon.log"){      if ($fh) {
  open (DFH,"tail -n25 $perlvar{'lonDaemons'}/logs/$daemon.log|");          if (-e "$perlvar{'lonDaemons'}/logs/$daemon.log"){
  while (my $line=<DFH>) {       if (open(DFH,"tail -n25 $perlvar{'lonDaemons'}/logs/$daemon.log|")) {
     &log($fh,"$line");          while (my $line=<DFH>) { 
     if ($line=~/INFO/) { $notices++; }              &log($fh,"$line");
     if ($line=~/WARNING/) { $notices++; }              if ($line=~/INFO/) { $notices++; }
     if ($line=~/CRITICAL/) { $warnings++; }              if ($line=~/WARNING/) { $notices++; }
  };              if ($line=~/CRITICAL/) { $warnings++; }
  close (DFH);          }
           close (DFH);
               }
           }
           &log($fh,"</tt></p>");
     }      }
     &log($fh,"</tt></p>");  
           
     my $pidfile="$perlvar{'lonDaemons'}/logs/$daemon.pid";      my $pidfile="$perlvar{'lonDaemons'}/logs/$daemon.pid";
           
Line 169  sub checkon_daemon { Line 172  sub checkon_daemon {
             &clean_lonc_childpids();              &clean_lonc_childpids();
         }          }
  &log($fh,"<h3>$daemon not running, trying to start</h3>");   &log($fh,"<h3>$daemon not running, trying to start</h3>");
   
  if (&start_daemon($fh,$daemon,$pidfile,$args)) {   if (&start_daemon($fh,$daemon,$pidfile,$args)) {
     &log($fh,"<h3>$daemon at pid $daemonpid responding</h3>");      &log($fh,"<h3>$daemon at pid $daemonpid responding</h3>");
     $simplestatus{$daemon}='restarted';      $simplestatus{$daemon}='restarted';
Line 194  sub checkon_daemon { Line 197  sub checkon_daemon {
  &log($fh,"<p>Unable to start $daemon</p>");   &log($fh,"<p>Unable to start $daemon</p>");
     }      }
  }   }
           if ($fh) {
  if (-e "$perlvar{'lonDaemons'}/logs/$daemon.log"){      if (-e "$perlvar{'lonDaemons'}/logs/$daemon.log"){
     &log($fh,"<p><pre>");          &log($fh,"<p><pre>");
     open (DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/$daemon.log|");          if (open(DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/$daemon.log|")) {
     while (my $line=<DFH>) {               while (my $line=<DFH>) { 
  &log($fh,"$line");          &log($fh,"$line");
  if ($line=~/WARNING/) { $notices++; }          if ($line=~/WARNING/) { $notices++; }
  if ($line=~/CRITICAL/) { $notices++; }          if ($line=~/CRITICAL/) { $notices++; }
     };              }
     close (DFH);              close (DFH);
     &log($fh,"</pre></p>");                  }
           &log($fh,"</pre></p>");
               }
  }   }
     }      }
           
Line 708  sub check_delayed_msg { Line 713  sub check_delayed_msg {
 }  }
   
 sub finish_logging {  sub finish_logging {
     my ($fh)=@_;      my ($fh,%weights)=@_;
     &log($fh,"<a name='errcount' />\n");      &log($fh,"<a name='errcount' />\n");
     $totalcount=$notices+4*$warnings+100*$errors;      $totalcount=($weights{'N'}*$notices)+($weights{'W'}*$warnings)+($weights{'E'}*$errors);
     &errout($fh);      &errout($fh);
     &log($fh,"<h1>Total Error Count: $totalcount</h1>");      &log($fh,"<h1>Total Error Count: $totalcount</h1>");
     my $now=time;      my $now=time;
Line 856  sub clean_lonc_childpids { Line 861  sub clean_lonc_childpids {
 }  }
   
 sub write_connection_config {  sub write_connection_config {
     my ($isprimary,$domconf,$url,%connectssl,%changes);      my ($domconf,%connectssl,%changes);
     my $primaryLibServer = &Apache::lonnet::domain($perlvar{'lonDefDomain'},'primary');      $domconf = &get_domain_config();
     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) eq 'HASH') {
         if (ref($domconf->{'ssl'}) eq 'HASH') {          if (ref($domconf->{'ssl'}) eq 'HASH') {
             foreach my $connect ('connto','connfrom') {              foreach my $connect ('connto','connfrom') {
Line 922  sub write_connection_config { Line 915  sub write_connection_config {
 }  }
   
 sub get_domain_config {  sub get_domain_config {
     my ($dom,$primlibserv,$isprimary,$url) = @_;      my ($dom,$primlibserv,$isprimary,$url,%confhash);
     my %confhash;      $dom = $perlvar{'lonDefDomain'};
       $primlibserv = &Apache::lonnet::domain($dom,'primary');
       if ($primlibserv eq $perlvar{'lonHostID'}) {
           $isprimary = 1;
       } elsif ($primlibserv ne '') {
           my $protocol = $Apache::lonnet::protocol{$primlibserv};
           my $hostname = &Apache::lonnet::hostname($primlibserv);
           unless ($protocol eq 'https') {
               $protocol = 'http';
           }
           $url = $protocol.'://'.$hostname.'/cgi-bin/listdomconfig.pl';
       }
     if ($isprimary) {      if ($isprimary) {
         my $lonusersdir = $perlvar{'lonUsersDir'};          my $lonusersdir = $perlvar{'lonUsersDir'};
         my $fname = $lonusersdir.'/'.$dom.'/configuration.db';          my $fname = $lonusersdir.'/'.$dom.'/configuration.db';
Line 1083  sub reset_nosslverify_pids { Line 1087  sub reset_nosslverify_pids {
 }  }
   
 sub send_mail {  sub send_mail {
       my ($sysmail,$reportstatus) = @_;
     my $defdom = $perlvar{'lonDefDomain'};      my $defdom = $perlvar{'lonDefDomain'};
     my $origmail = $perlvar{'lonAdmEMail'};      my $origmail = $perlvar{'lonAdmEMail'};
     my $emailto = &Apache::loncommon::build_recipient_list(undef,      my $emailto = &Apache::loncommon::build_recipient_list(undef,
                                    'lonstatusmail',$defdom,$origmail);                                     'lonstatusmail',$defdom,$origmail);
     if ($totalcount>2500) {      if (($totalcount>$sysmail) && ($reportstatus)) {
  $emailto.=",$perlvar{'lonSysEMail'}";   $emailto.=",$perlvar{'lonSysEMail'}";
     }      }
     my $from;      my $from;
Line 1171  sub main () { Line 1176  sub main () {
  chop $hostname;   chop $hostname;
  $hostname=~s/[^\w\.]//g; # make sure is safe to pass through shell   $hostname=~s/[^\w\.]//g; # make sure is safe to pass through shell
  my $subj="LON: Unconfigured machine $hostname";   my $subj="LON: Unconfigured machine $hostname";
  system("echo 'Unconfigured machine $hostname.' |\   system("echo 'Unconfigured machine $hostname.' |".
  mailto $emailto -s '$subj' > /dev/null");                 " mail -s '$subj' $emailto > /dev/null");
  exit 1;   exit 1;
     }      }
   
Line 1182  sub main () { Line 1187  sub main () {
  print("User ID mismatch. This program must be run as user 'www'.\n");   print("User ID mismatch. This program must be run as user 'www'.\n");
  my $emailto="$perlvar{'lonAdmEMail'},$perlvar{'lonSysEMail'}";   my $emailto="$perlvar{'lonAdmEMail'},$perlvar{'lonSysEMail'}";
  my $subj="LON: $perlvar{'lonHostID'} User ID mismatch";   my $subj="LON: $perlvar{'lonHostID'} User ID mismatch";
  system("echo 'User ID mismatch. loncron must be run as user www.' |\   system("echo 'User ID mismatch. loncron must be run as user www.' |".
  mailto $emailto -s '$subj' > /dev/null");                 " mail -s '$subj' $emailto > /dev/null");
  exit 1;   exit 1;
     }      }
   
Line 1282  sub main () { Line 1287  sub main () {
             &checkon_daemon($fh,'lond',40000,'USR2');              &checkon_daemon($fh,'lond',40000,'USR2');
             &reset_nosslverify_pids($fh,%sslrem);              &reset_nosslverify_pids($fh,%sslrem);
         }          }
         &finish_logging($fh);          my $domconf = &get_domain_config();
  if ($totalcount>200 && !$noemail) { &send_mail(); }          my ($defaults,$names) = &Apache::loncommon::lon_status_items();
           my (%weights,$threshold);
           foreach my $type ('E','W','N') {
               $weights{$type} = $defaults->{$type};
           }
           my $threshold = $defaults->{'threshold'};
           my $sysmail = $defaults->{'sysmail'};
           my $reportstatus = 1;
           if (ref($domconf->{'contacts'}) eq 'HASH') {
               if ($domconf->{'contacts'}{'reportstatus'} == 0) {
                   $reportstatus = 0;
               }
               if (ref($domconf->{'contacts'}{'lonstatus'}) eq 'HASH') {
                   if (ref($domconf->{'contacts'}{'lonstatus'}{weights}) eq 'HASH') {
                       foreach my $type ('E','W','N') {
                           if (exists($domconf->{'contacts'}{'lonstatus'}{weights}{$type})) {
                               $weights{$type} = $domconf->{'contacts'}{'lonstatus'}{weights}{$type};
                           }
                       }
                   }
               }
               if (exists($domconf->{'contacts'}{'lonstatus'}{'threshold'})) {
                   $threshold = $domconf->{'contacts'}{'lonstatus'}{'threshold'};
               }
               if (exists($domconf->{'contacts'}{'lonstatus'}{'sysmail'})) {
                   $sysmail = $domconf->{'contacts'}{'lonstatus'}{'sysmail'};
               }
           }
           &finish_logging($fh,%weights);
    if ($totalcount>$threshold && !$noemail) { &send_mail($sysmail,$reportstatus); }
     }      }
 }  }
   

Removed from v.1.109  
changed lines
  Added in v.1.113


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>