--- loncom/lond 2002/01/20 18:28:31 1.64 +++ loncom/lond 2002/02/06 14:18:09 1.68.2.1 @@ -2,7 +2,7 @@ # The LearningOnline Network # lond "LON Daemon" Server (port "LOND" 5663) # -# $Id: lond,v 1.64 2002/01/20 18:28:31 www Exp $ +# $Id: lond,v 1.68.2.1 2002/02/06 14:18:09 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -47,7 +47,7 @@ # 12/20 Scott Harrison # 12/22 Gerd Kortemeyer # YEAR=2002 -# 01/20/02 Gerd Kortemeyer +# 01/20/02,02/05 Gerd Kortemeyer ### # based on "Perl Cookbook" ISBN 1-56592-243-3 @@ -163,9 +163,13 @@ $children = 0; # cu sub REAPER { # takes care of dead children $SIG{CHLD} = \&REAPER; my $pid = wait; - $children --; - &logthis("Child $pid died"); - delete $children{$pid}; + if (defined($children{$pid})) { + &logthis("Child $pid died"); + $children --; + delete $children{$pid}; + } else { + &logthis("Unknown Child $pid died"); + } } sub HUNTSMAN { # signal handler for SIGINT @@ -204,7 +208,12 @@ sub checkchildren { foreach (sort keys %children) { unless (-e "$docdir/lon-status/londchld/$_.txt") { &logthis('Child '.$_.' did not respond'); - kill 9 => $_; + kill 9 => $_; + $emailto="$perlvar{'lonAdmEMail'},$perlvar{'lonSysEMail'}"; + $subj="LON: $perlvar{'lonHostID'} killed lond process $_"; + my $result=`echo 'Killed lond process $_.' | mailto $emailto -s '$subj' > /dev/null`; + $execdir=$perlvar{'lonDaemons'}; + $result=`/bin/cp $execdir/logs/lond.log $execdir/logs/lond.log.$_` } } } @@ -525,6 +534,7 @@ sub make_new_child { while (my $userinput=<$client>) { chomp($userinput); &status('Processing '.$hostid{$clientip}.': '.$userinput); + &logthis('Processing '.$hostid{$clientip}.': '.$userinput); my $wasenc=0; alarm(120); # ------------------------------------------------------------ See if encrypted @@ -541,7 +551,9 @@ sub make_new_child { $userinput=substr($userinput,0,$cmdlength); $wasenc=1; } - } + &logthis('Decrypted '.$hostid{$clientip}.': '.$userinput); + } + # ------------------------------------------------------------- Normal commands # ------------------------------------------------------------------------ ping if ($userinput =~ /^ping/) { @@ -705,7 +717,7 @@ sub make_new_child { $fpnow.='/'.$fpparts[$i]; unless (-e $fpnow) { unless (mkdir($fpnow,0777)) { - $fperror="error:$!\n"; + $fperror="error:$!"; } } } @@ -1365,6 +1377,7 @@ sub make_new_child { # -------------------------------------------------------------------- complete alarm(0); &status('Listening to '.$hostid{$clientip}); + &logthis('Completed '.$userinput.' Listening to '.$hostid{$clientip}); } # --------------------------------------------- client unknown or fishy, refuse } else {