version 1.488, 2012/04/11 01:07:18
|
version 1.490, 2012/04/11 21:32:28
|
Line 34 use strict;
|
Line 34 use strict;
|
use lib '/home/httpd/lib/perl/'; |
use lib '/home/httpd/lib/perl/'; |
use LONCAPA; |
use LONCAPA; |
use LONCAPA::Configuration; |
use LONCAPA::Configuration; |
|
use LONCAPA::Lond; |
|
|
use IO::Socket; |
use IO::Socket; |
use IO::File; |
use IO::File; |
Line 3260 sub dump_profile_database {
|
Line 3261 sub dump_profile_database {
|
sub dump_with_regexp { |
sub dump_with_regexp { |
my ($cmd, $tail, $client) = @_; |
my ($cmd, $tail, $client) = @_; |
|
|
|
#TODO encapsulate $clientname and $clientversion in a object. |
|
my $res = LONCAPA::Lond::dump_with_regexp($cmd, $tail, $clientname, $clientversion); |
|
|
|
if ($res =~ /^error:/) { |
|
Failure($client, \$res, "$cmd:$tail"); |
|
} else { |
|
Reply($client, \$res, "$cmd:$tail"); |
|
} |
|
return 1; |
|
|
my $userinput = "$cmd:$tail"; |
my $userinput = "$cmd:$tail"; |
|
|
Line 3365 sub dump_with_regexp {
|
Line 3375 sub dump_with_regexp {
|
# |
# |
if (($namespace eq 'roles') && (!$skipcheck)) { |
if (($namespace eq 'roles') && (!$skipcheck)) { |
if (keys(%homecourses) > 0) { |
if (keys(%homecourses) > 0) { |
$qresult .= &check_homecourses(\%homecourses,$udom,$regexp,$count, |
$qresult .= &check_homecourses(\%homecourses,$regexp,$count, |
$range,$start,$end,$major,$minor); |
$range,$start,$end,$major,$minor); |
} |
} |
} |
} |
Line 6319 sub Debug {
|
Line 6329 sub Debug {
|
# reply - Text to send to client. |
# reply - Text to send to client. |
# request - Original request from client. |
# request - Original request from client. |
# |
# |
|
#NOTE $reply must be terminated by exactly *one* \n. If $reply is a reference |
|
#this is done automatically ($$reply must not contain any \n in this case). |
|
#If $reply is a string the caller has to ensure this. |
sub Reply { |
sub Reply { |
my ($fd, $reply, $request) = @_; |
my ($fd, $reply, $request) = @_; |
if (ref($reply)) { |
if (ref($reply)) { |
Line 7517 sub releasereqd_check {
|
Line 7530 sub releasereqd_check {
|
if (ref($ids) eq 'ARRAY') { |
if (ref($ids) eq 'ARRAY') { |
if (grep(/^\Q$home\E$/,@{$ids})) { |
if (grep(/^\Q$home\E$/,@{$ids})) { |
if (ref($homecourses) eq 'HASH') { |
if (ref($homecourses) eq 'HASH') { |
if (ref($homecourses->{$hashid}) eq 'ARRAY') { |
if (ref($homecourses->{$cdom}) eq 'HASH') { |
push(@{$homecourses->{$hashid}},{$key=>$value}); |
if (ref($homecourses->{$cdom}{$cnum}) eq 'HASH') { |
|
if (ref($homecourses->{$cdom}{$cnum}) eq 'ARRAY') { |
|
push(@{$homecourses->{$cdom}{$cnum}},{$key=>$value}); |
|
} else { |
|
$homecourses->{$cdom}{$cnum} = [{$key=>$value}]; |
|
} |
|
} else { |
|
$homecourses->{$cdom}{$cnum} = [{$key=>$value}]; |
|
} |
} else { |
} else { |
$homecourses->{$hashid} = [{$key=>$value}]; |
$homecourses->{$cdom}{$cnum} = [{$key=>$value}]; |
} |
} |
} |
} |
return; |
return; |
Line 7595 sub get_courseinfo_hash {
|
Line 7616 sub get_courseinfo_hash {
|
# |
# |
|
|
sub check_homecourses { |
sub check_homecourses { |
my ($homecourses,$udom,$regexp,$count,$range,$start,$end,$major,$minor) = @_; |
my ($homecourses,$regexp,$count,$range,$start,$end,$major,$minor) = @_; |
my ($result,%addtocache); |
my ($result,%addtocache); |
my $yesterday = time - 24*3600; |
my $yesterday = time - 24*3600; |
if (ref($homecourses) eq 'HASH') { |
if (ref($homecourses) eq 'HASH') { |
my (%okcourses,%courseinfo,%recent); |
my (%okcourses,%courseinfo,%recent); |
my $hashref = &tie_domain_hash($udom, "nohist_courseids", &GDBM_WRCREAT()); |
foreach my $domain (keys(%{$homecourses})) { |
if ($hashref) { |
my $hashref = |
while (my ($key,$value) = each(%$hashref)) { |
&tie_domain_hash($domain, "nohist_courseids", &GDBM_WRCREAT()); |
my $unesc_key = &unescape($key); |
if (ref($hashref) eq 'HASH') { |
if ($unesc_key =~ /^lasttime:(\w+)$/) { |
while (my ($key,$value) = each(%$hashref)) { |
my $cid = $1; |
my $unesc_key = &unescape($key); |
$cid =~ s/_/:/; |
if ($unesc_key =~ /^lasttime:(\w+)$/) { |
if ($value > $yesterday ) { |
my $cid = $1; |
$recent{$cid} = 1; |
$cid =~ s/_/:/; |
|
if ($value > $yesterday ) { |
|
$recent{$cid} = 1; |
|
} |
|
next; |
} |
} |
next; |
my $items = &Apache::lonnet::thaw_unescape($value); |
} |
if (ref($items) eq 'HASH') { |
my $items = &Apache::lonnet::thaw_unescape($value); |
my ($cdom,$cnum) = split(/_/,$unesc_key); |
if (ref($items) eq 'HASH') { |
my $hashid = $cdom.':'.$cnum; |
my $hashid = $unesc_key; |
$courseinfo{$hashid} = $items; |
$hashid =~ s/_/:/; |
if (ref($homecourses->{$cdom}{$cnum}) eq 'ARRAY') { |
$courseinfo{$hashid} = $items; |
my ($reqdmajor,$reqdminor) = split(/\./,$items->{'releaserequired'}); |
if (ref($homecourses->{$hashid}) eq 'ARRAY') { |
if (&useable_role($reqdmajor,$reqdminor,$major,$minor)) { |
my ($reqdmajor,$reqdminor) = split(/\./,$items->{'releaserequired'}); |
$okcourses{$hashid} = 1; |
if (&useable_role($reqdmajor,$reqdminor,$major,$minor)) { |
} |
$okcourses{$hashid} = 1; |
|
} |
} |
} |
} |
} |
} |
|
unless (&untie_domain_hash($hashref)) { |
|
&logthis("Failed to untie tied hash for nohist_courseids.db for $domain"); |
|
} |
|
} else { |
|
&logthis("Failed to tie hash for nohist_courseids.db for $domain"); |
} |
} |
unless (&untie_domain_hash($hashref)) { |
|
&logthis('Failed to untie tied hash for nohist_courseids.db'); |
|
} |
|
} else { |
|
&logthis('Failed to tie hash for nohist_courseids.db'); |
|
return; |
|
} |
} |
foreach my $hashid (keys(%recent)) { |
foreach my $hashid (keys(%recent)) { |
my ($result,$cached)=&Apache::lonnet::is_cached_new('courseinfo',$hashid); |
my ($result,$cached)=&Apache::lonnet::is_cached_new('courseinfo',$hashid); |
Line 7638 sub check_homecourses {
|
Line 7661 sub check_homecourses {
|
&Apache::lonnet::do_cache_new('courseinfo',$hashid,$courseinfo{$hashid},600); |
&Apache::lonnet::do_cache_new('courseinfo',$hashid,$courseinfo{$hashid},600); |
} |
} |
} |
} |
foreach my $hashid (keys(%{$homecourses})) { |
foreach my $cdom (keys(%{$homecourses})) { |
next if ($recent{$hashid}); |
if (ref($homecourses->{$cdom}) eq 'HASH') { |
&Apache::lonnet::do_cache_new('courseinfo',$hashid,$courseinfo{$hashid},600); |
foreach my $cnum (keys(%{$homecourses->{$cdom}})) { |
|
my $hashid = $cdom.':'.$cnum; |
|
next if ($recent{$hashid}); |
|
&Apache::lonnet::do_cache_new('courseinfo',$hashid,$courseinfo{$hashid},600); |
|
} |
|
} |
} |
} |
foreach my $hashid (keys(%okcourses)) { |
foreach my $hashid (keys(%okcourses)) { |
if (ref($homecourses->{$hashid}) eq 'ARRAY') { |
my ($cdom,$cnum) = split(/:/,$hashid); |
foreach my $role (@{$homecourses->{$hashid}}) { |
if ((ref($homecourses->{$cdom}) eq 'HASH') && |
|
(ref($homecourses->{$cdom}{$cnum}) eq 'ARRAY')) { |
|
foreach my $role (@{$homecourses->{$cdom}{$cnum}}) { |
if (ref($role) eq 'HASH') { |
if (ref($role) eq 'HASH') { |
while (my ($key,$value) = each(%{$role})) { |
while (my ($key,$value) = each(%{$role})) { |
if ($regexp eq '.') { |
if ($regexp eq '.') { |
Line 8014 Authen::Krb5
|
Line 8044 Authen::Krb5
|
|
|
=head1 COREQUISITES |
=head1 COREQUISITES |
|
|
|
none |
|
|
=head1 OSNAMES |
=head1 OSNAMES |
|
|
linux |
linux |
Line 8101 or the CA's certificate in the call to l
|
Line 8133 or the CA's certificate in the call to l
|
<error> is the textual reason this failed. Usual reasons: |
<error> is the textual reason this failed. Usual reasons: |
|
|
=over 2 |
=over 2 |
|
|
=item Apache config file for loncapa incorrect: |
=item Apache config file for loncapa incorrect: |
|
|
one of the variables |
one of the variables |
lonCertificateDirectory, lonnetCertificateAuthority, or lonnetCertificate |
lonCertificateDirectory, lonnetCertificateAuthority, or lonnetCertificate |
undefined or incorrect |
undefined or incorrect |
Line 8222 Could not rewrite the
|
Line 8254 Could not rewrite the
|
internal password file for a user |
internal password file for a user |
|
|
=item Result of password change for <user> : <result> |
=item Result of password change for <user> : <result> |
|
|
A unix password change for <user> was attempted |
A unix password change for <user> was attempted |
and the pipe returned <result> |
and the pipe returned <result> |
|
|
Line 8251 lond has been asked to exit by its clien
|
Line 8283 lond has been asked to exit by its clien
|
client systemand <input> is the full exit command sent to the server. |
client systemand <input> is the full exit command sent to the server. |
|
|
=item Red CRITICAL: ABNORMAL EXIT. child <pid> for server <hostname> died through a crass with this error->[<message>]. |
=item Red CRITICAL: ABNORMAL EXIT. child <pid> for server <hostname> died through a crass with this error->[<message>]. |
|
|
A lond child terminated. NOte that this termination can also occur when the |
A lond child terminated. NOte that this termination can also occur when the |
child receives the QUIT or DIE signals. <pid> is the process id of the child, |
child receives the QUIT or DIE signals. <pid> is the process id of the child, |
<hostname> the host lond is working for, and <message> the reason the child died |
<hostname> the host lond is working for, and <message> the reason the child died |
Line 8335 file when sent it's USR1 signal. That p
|
Line 8367 file when sent it's USR1 signal. That p
|
assumed to be hung in some un-fixable way. |
assumed to be hung in some un-fixable way. |
|
|
=item Finished checking children |
=item Finished checking children |
|
|
Master processs's USR1 processing is cojmplete. |
Master processs's USR1 processing is cojmplete. |
|
|
=item (Red) CRITICAL: ------- Starting ------ |
=item (Red) CRITICAL: ------- Starting ------ |
Line 8349 Started a new child process for <client>
|
Line 8381 Started a new child process for <client>
|
connected to the child. This was as a result of a TCP/IP connection from a client. |
connected to the child. This was as a result of a TCP/IP connection from a client. |
|
|
=item Unable to determine who caller was, getpeername returned nothing |
=item Unable to determine who caller was, getpeername returned nothing |
|
|
In child process initialization. either getpeername returned undef or |
In child process initialization. either getpeername returned undef or |
a zero sized object was returned. Processing continues, but in my opinion, |
a zero sized object was returned. Processing continues, but in my opinion, |
this should be cause for the child to exit. |
this should be cause for the child to exit. |
Line 8360 In child process initialization. The pe
|
Line 8392 In child process initialization. The pe
|
The client address is stored as "Unavailable" and processing continues. |
The client address is stored as "Unavailable" and processing continues. |
|
|
=item (Yellow) INFO: Connection <ip> <name> connection type = <type> |
=item (Yellow) INFO: Connection <ip> <name> connection type = <type> |
|
|
In child initialization. A good connectionw as received from <ip>. |
In child initialization. A good connectionw as received from <ip>. |
|
|
=over 2 |
=over 2 |
Line 8410 The client (<client> is the peer's name
|
Line 8442 The client (<client> is the peer's name
|
negotiated an SSL connection with this child process. |
negotiated an SSL connection with this child process. |
|
|
=item (Green) Successful insecure authentication with <client> |
=item (Green) Successful insecure authentication with <client> |
|
|
|
|
The client has successfully negotiated an insecure connection withthe child process. |
The client has successfully negotiated an insecure connection withthe child process. |
|
|