Diff for /loncom/loncron between versions 1.103.2.14 and 1.103.2.17

version 1.103.2.14, 2024/07/10 02:52:38 version 1.103.2.17, 2024/10/24 22:24:26
Line 307  sub log_machine_info { Line 307  sub log_machine_info {
   
 sub start_logging {  sub start_logging {
     my $fh=IO::File->new(">$statusdir/newstatus.html");      my $fh=IO::File->new(">$statusdir/newstatus.html");
     my %simplestatus=();      %simplestatus=();
     my $now=time;      my $now=time;
     my $date=localtime($now);      my $date=localtime($now);
   
Line 968  sub log_simplestatus { Line 968  sub log_simplestatus {
     rename("$statusdir/newstatus.html","$statusdir/index.html");      rename("$statusdir/newstatus.html","$statusdir/index.html");
           
     my $sfh=IO::File->new(">$statusdir/loncron_simple.txt");      my $sfh=IO::File->new(">$statusdir/loncron_simple.txt");
     foreach (keys %simplestatus) {      if (defined($sfh)) {
  print $sfh $_.'='.$simplestatus{$_}.'&';          foreach my $key (keys(%simplestatus)) {
               print $sfh $key.'='.$simplestatus{$key}.'&';
           }
           print $sfh "\n";
           $sfh->close();
       } else {
           print "Could not write to $statusdir/loncron_simple.txt\n";
     }      }
     print $sfh "\n";  
     $sfh->close();  
 }  }
   
 sub write_loncaparevs {  sub write_loncaparevs {
Line 998  sub write_loncaparevs { Line 1002  sub write_loncaparevs {
         }          }
     }      }
     if ($output) {      if ($output) {
         if (open(my $fh,">$perlvar{'lonTabDir'}/loncaparevs.tab")) {          if (open(my $fh,'>',"$perlvar{'lonTabDir'}/loncaparevs.tab")) {
             print $fh $output;              print $fh $output;
             close($fh);              close($fh);
             &Apache::lonnet::load_loncaparevs();              &Apache::lonnet::load_loncaparevs();
           } else {
               print "Could not write to $perlvar{'lonTabDir'}/loncaparevs.tab\n";
         }          }
     }      }
     return;      return;
Line 1034  sub write_serverhomeIDs { Line 1040  sub write_serverhomeIDs {
         }          }
     }      }
     if ($output) {      if ($output) {
         if (open(my $fh,">$perlvar{'lonTabDir'}/serverhomeIDs.tab")) {          if (open(my $fh,'>',"$perlvar{'lonTabDir'}/serverhomeIDs.tab")) {
             print $fh $output;              print $fh $output;
             close($fh);              close($fh);
             &Apache::lonnet::load_serverhomeIDs();              &Apache::lonnet::load_serverhomeIDs();
           } else {
               print "Could not write to $perlvar{'lonTabDir'}/serverhomeIDs.tab\n";
         }          }
     }      }
     return;      return;
Line 1098  sub write_hostips { Line 1106  sub write_hostips {
             }              }
             close($fh);              close($fh);
             chmod(0644,$newfile);              chmod(0644,$newfile);
           } else {
               print "Could not write to $lontabdir/currhostips.tab\n";
         }          }
     }      }
     if (keys(%prevhosts) && keys(%currhosts)) {      if (keys(%prevhosts) && keys(%currhosts)) {
Line 1123  sub write_hostips { Line 1133  sub write_hostips {
                 }                  }
                 print $fh "\n*******************\n\n";                  print $fh "\n*******************\n\n";
                 close($fh);                  close($fh);
               } else {
                   print "Could not write to $perlvar{'lonDaemons'}/logs/hostip.log\n";
             }              }
             my $emailto = &Apache::loncommon::build_recipient_list(undef,              my $emailto = &Apache::loncommon::build_recipient_list(undef,
                                    'hostipmail',$defdom);                                     'hostipmail',$defdom);
Line 1306  sub set_bracketed_paste_off { Line 1318  sub set_bracketed_paste_off {
     if (!-e $bash_www_cnf) {      if (!-e $bash_www_cnf) {
         system("touch $bash_www_cnf");          system("touch $bash_www_cnf");
         if (open(my $cfh,'>',$bash_www_cnf)) {          if (open(my $cfh,'>',$bash_www_cnf)) {
             print $cfh "set enable-bracketed-paste off\n";              print $cfh <<'END';
   $if R
       set enable-bracketed-paste off
   $endif
   
   $if maxima
       set enable-bracketed-paste off
   $endif
   END
             close($cfh);              close($cfh);
             $result = "Updated $bash_www_cnf";              $result = "Updated $bash_www_cnf so enable-bracketed-paste is off for R bash shell";
         } else {          } else {
             $result = "Could not open $bash_www_cnf to add 'set enable-bracketed-paste to off'";              $result = "Could not open $bash_www_cnf to add 'set enable-bracketed-paste to off'";
         }          }
Line 1318  sub set_bracketed_paste_off { Line 1338  sub set_bracketed_paste_off {
             chown($wwwuid,$wwwgid,$bash_www_cnf);              chown($wwwuid,$wwwgid,$bash_www_cnf);
         }          }
     } else {      } else {
         my ($bracketed_paste_on,$bracketed_paste_off,@preserve);          my (%bracketed_paste_on,%bracketed_paste_off,@preserve,$condition);
           $condition = '';
         if (open(my $cfh,'<',$bash_www_cnf)) {          if (open(my $cfh,'<',$bash_www_cnf)) {
             while (my $line=<$cfh>) {              while (my $line=<$cfh>) {
                 chomp($line);                  chomp($line);
                   if ($line =~ /^\$if\s+(\w+)\s*$/) {
                       if ($1 eq 'R') {
                           $condition = 'r';
                       } elsif ($1 eq 'maxima') {
                           $condition = 'maxima';
                       } else {
                           $condition = 'other';
                       }
                   } elsif ($line =~ /^\$endif\s*$/) {
                       $condition = '';
                   }
                 if ($line =~ /^\s*set\s+enable\-bracketed\-paste\s+(off|on)\s*$/) {                  if ($line =~ /^\s*set\s+enable\-bracketed\-paste\s+(off|on)\s*$/) {
                     if ($1 eq 'off') {                      if ($1 eq 'off') {
                         $bracketed_paste_off = 1;                          if ($condition ne '') {
                               $bracketed_paste_off{$condition} = 1;
                           } else {
                               $bracketed_paste_off{all} = 1;
                           }
                           push(@preserve,$line);
                     } else {                      } else {
                         $bracketed_paste_on = 1;                          if ($condition ne '') {
                               $bracketed_paste_on{$condition} = 1;
                               if (($condition eq 'r') || ($condition eq 'maxima')) {
                                   push(@preserve,'    set enable-bracketed-paste off');
                               } else {
                                   push(@preserve,$line);
                               }
                           } else {
                               $bracketed_paste_on{all} = 1;
                               push(@preserve,$line);
                           }
                     }                      }
                 } else {                  } else {
                     push(@preserve,$line);                      push(@preserve,$line);
                 }                  }
             }              }
             close($cfh);              close($cfh);
             if ($bracketed_paste_on || !$bracketed_paste_off) {          } else {
                 if (open(my $cfh,'>',$bash_www_cnf)) {              $result = "Could not open $bash_www_cnf to check if a value is included for 'enable-bracketed-paste'.";
                     print $cfh "set enable-bracketed-paste off\n";          }
                     if (@preserve) {          if (($bracketed_paste_on{r} || $bracketed_paste_on{maxima}) ||
                         foreach my $entry (@preserve) {              (!exists($bracketed_paste_off{r}) && !exists($bracketed_paste_on{r}) &&
                             print $cfh "$entry\n";               !exists($bracketed_paste_off{maxima}) && !exists($bracketed_paste_on{maxima}))) {
                         }              if (open(my $cfh,'>',$bash_www_cnf)) {
                   if (@preserve) {
                       foreach my $entry (@preserve) {
                           print $cfh "$entry\n";
                       }
                       if (!exists($bracketed_paste_off{r}) && !exists($bracketed_paste_on{r})) {
   print $cfh <<'END';
   $if R
       set enable-bracketed-paste off
   $endif
   END
                       }
                       if (!exists($bracketed_paste_off{r}) && !exists($bracketed_paste_on{r})) {
   print $cfh <<'END';
   $if maxima
       set enable-bracketed-paste off
   $endif
   END
                     }                      }
                     close($cfh);  
                     $result = "Updated $bash_www_cnf";  
                 } else {                  } else {
                     $result = "Could not open $bash_www_cnf to add 'set enable-bracketed-paste to off'";  print $cfh <<'END';
   $if R
       set enable-bracketed-paste off
   $endif
   
   $if maxima
       set enable-bracketed-paste off
   $endif
   END
                 }                  }
                   close($cfh);
                   $result = "Updated $bash_www_cnf";
             } else {              } else {
                 $result = "No action needed; $bash_www_cnf already includes 'set enable-bracketed-paste to off'";                  $result = "Could not open $bash_www_cnf to add 'set enable-bracketed-paste to off'";
             }              }
         } else {          } else {
             $result = "Could not open $bash_www_cnf to check if a value is included for 'enable-bracketed-paste'.";              $result = "No action needed; $bash_www_cnf already includes 'set enable-bracketed-paste to off'";
         }          }
     }      }
     return $result;      return $result;
Line 1378  sub send_mail { Line 1450  sub send_mail {
                       "Subject: ".$subj."\n".                        "Subject: ".$subj."\n".
                       "Content-type: text/html\; charset=UTF-8\n".                        "Content-type: text/html\; charset=UTF-8\n".
                       "MIME-Version: 1.0\n\n";                        "MIME-Version: 1.0\n\n";
     if (open(my $fh,"<$statusdir/index.html")) {      if (open(my $fh,'<',"$statusdir/index.html")) {
         while (<$fh>) {          while (<$fh>) {
             $loncronmail .= $_;              $loncronmail .= $_;
         }          }
Line 1494  sub main () { Line 1566  sub main () {
         my $now = time;          my $now = time;
         my $tmpfile = $perlvar{'lonDaemons'}.'/tmp/lciptables_iphost_'.          my $tmpfile = $perlvar{'lonDaemons'}.'/tmp/lciptables_iphost_'.
                       $now.$$.int(rand(10000));                        $now.$$.int(rand(10000));
         if (open(my $fh,">$tmpfile")) {          if (open(my $fh,'>',"$tmpfile")) {
             my %iphosts = &Apache::lonnet::get_iphost();              my %iphosts = &Apache::lonnet::get_iphost();
             foreach my $key (keys(%iphosts)) {              foreach my $key (keys(%iphosts)) {
                 print $fh "$key\n";                  print $fh "$key\n";
Line 1549  sub main () { Line 1621  sub main () {
     if (!$justcheckdaemons && !$justcheckconnections && !$justreload && !$justiptables) {      if (!$justcheckdaemons && !$justcheckconnections && !$justreload && !$justiptables) {
         my ($bracketed_warning,$check_bracketed_paste) = &check_bash_settings();          my ($bracketed_warning,$check_bracketed_paste) = &check_bash_settings();
         if ($check_bracketed_paste) {          if ($check_bracketed_paste) {
            &log($fh,'<hr /><a name="bashconf" /><h2>bash readline config</h2><h3>Brackedted Paste</h3>'.             &log($fh,'<hr /><a name="bashconf" /><h2>bash readline config</h2><h3>Bracketed Paste</h3>'.
                 '<p>Distros using bash readline library 8.1 or later need bracketed paste disabled for www, so R commands sent to lon daemon will be processed.</p>');                  '<p>Distros using bash readline library 8.1 or later need bracketed paste disabled for the R bash shell for the www user so R commands sent to lonr daemon will be processed.</p>');
            if ($bracketed_warning) {             my $bash_www_cnf = '/home/www/.inputrc';
              my $non_empty_conffile;
              unless ($bracketed_warning) {
                  if (-e $bash_www_cnf) {
                      my $filesize = (stat($bash_www_cnf))[7];
                      if ($filesize > 0) {
                          $non_empty_conffile = 1;
                      }
                  }
              }
              if (($bracketed_warning) || ($non_empty_conffile)) {
                my $bash_update = &set_bracketed_paste_off();                 my $bash_update = &set_bracketed_paste_off();
                if ($bash_update) {                 if ($bash_update) {
                    &log($fh,'<p>'.$bash_update.'</p>'."\n");                     &log($fh,'<p>'.$bash_update.'</p>'."\n");

Removed from v.1.103.2.14  
changed lines
  Added in v.1.103.2.17


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