version 1.151, 2003/10/03 15:11:03
|
version 1.156, 2003/10/13 08:49:54
|
Line 59
|
Line 59
|
# - pushing /home/httpd/lonTabs/domain.tab |
# - pushing /home/httpd/lonTabs/domain.tab |
# 09/08/2003 Ron Fox: Told lond to take care of change logging so we |
# 09/08/2003 Ron Fox: Told lond to take care of change logging so we |
# don't have to remember it: |
# don't have to remember it: |
# $Log$ |
|
# Revision 1.151 2003/10/03 15:11:03 albertel |
|
# - if we fail to fetch an update to the file, don't blow away the old one |
|
# (this was the BUG that blew away that one default.sequence that Matthew |
|
# ended up restoring from data.) |
|
# |
|
# Revision 1.150 2003/09/30 10:16:06 foxr |
|
# Added invocation of apachereload in ReloadApache sub. |
|
# This completes the addtion of the reinit functionality. |
|
# |
|
# Revision 1.149 2003/09/30 09:44:13 foxr |
|
# Tested UpdateHosts ability to |
|
# - Remove live children for hosts that are no longer in the hosts.tab |
|
# - Remove live children for hosts whose IPs have changed in the hosts.tab |
|
# |
|
# Revision 1.148 2003/09/29 10:09:18 foxr |
|
# Put in logic to reinit lond itself (except for apache reload). I don't believe |
|
# this logic works correctly yet, however lond still does everything it used to doso I'll do the commit anyway. |
|
# |
|
# Revision 1.147 2003/09/23 11:23:31 foxr |
|
# Comlplete implementation of reinit functionality. Must still implement |
|
# the actual initialization functionality, but the process can now |
|
# receive the request and either invoke the appropriate internal function or |
|
# signal the correct lonc. |
|
# |
|
# Revision 1.146 2003/09/16 10:28:14 foxr |
|
# ReinitProcess - decode the process selector and produce the associated pid |
|
# filename. Note: While it is possible to test that valid process selectors are |
|
# handled properly I am not able to test that invalid process selectors produce |
|
# the appropriate error as lonManage also blocks the use of invalid process selectors. |
|
# |
|
# Revision 1.145 2003/09/16 10:13:20 foxr |
|
# Added ReinitProcess function to oversee the parsing and processing of the |
|
# reinit:<process> client request. |
|
# |
|
# Revision 1.144 2003/09/16 09:47:01 foxr |
|
# Added skeletal support for SIGUSR2 (update hosts.tab) |
|
# |
|
# Revision 1.143 2003/09/15 10:03:52 foxr |
|
# Completed and tested code for pushfile. |
|
# |
|
# Revision 1.142 2003/09/09 20:47:46 www |
|
# Permanently store chatroom entries in chatroom.log |
|
# |
|
# Revision 1.141 2003/09/08 10:32:07 foxr |
|
# Added PushFile sub This sub oversees the push of a new configuration table file |
|
# Currently supported files are: |
|
# - hosts.tab (transaction pushfile:hosts:contents) |
|
# - domain.tab (transaction pushfile:domain:contents) |
|
# |
# |
|
|
|
|
Line 148 my $thisserver;
|
Line 99 my $thisserver;
|
my %hostid; |
my %hostid; |
my %hostdom; |
my %hostdom; |
my %hostip; |
my %hostip; |
|
my %managers; # If defined $managers{hostname} is a manager |
my %perlvar; # Will have the apache conf defined perl vars. |
my %perlvar; # Will have the apache conf defined perl vars. |
|
|
# |
# |
Line 178 my @adderrors = ("ok",
|
Line 130 my @adderrors = ("ok",
|
"lcuseradd Incorrect number of stdinput lines, must be 3", |
"lcuseradd Incorrect number of stdinput lines, must be 3", |
"lcuseradd Too many other simultaneous pwd changes in progress", |
"lcuseradd Too many other simultaneous pwd changes in progress", |
"lcuseradd User does not exist", |
"lcuseradd User does not exist", |
"lcuseradd Unabel to mak ewww member of users's group", |
"lcuseradd Unable to make www member of users's group", |
"lcuseradd Unable to su to root", |
"lcuseradd Unable to su to root", |
"lcuseradd Unable to set password", |
"lcuseradd Unable to set password", |
"lcuseradd Usrname has invbalid charcters", |
"lcuseradd Usrname has invalid characters", |
"lcuseradd Password has an invalid character", |
"lcuseradd Password has an invalid character", |
"lcuseradd User already exists", |
"lcuseradd User already exists", |
"lcuseradd Could not add user.", |
"lcuseradd Could not add user.", |
Line 204 sub GetCertificate {
|
Line 156 sub GetCertificate {
|
|
|
return $clientip; |
return $clientip; |
} |
} |
|
# |
|
# ReadManagerTable: Reads in the current manager table. For now this is |
|
# done on each manager authentication because: |
|
# - These authentications are not frequent |
|
# - This allows dynamic changes to the manager table |
|
# without the need to signal to the lond. |
|
# |
|
|
|
sub ReadManagerTable { |
|
|
|
# Clean out the old table first.. |
|
|
|
foreach my $key (keys %managers) { |
|
delete $managers{$key}; |
|
} |
|
|
|
my $tablename = $perlvar{'lonTabDir'}."/managers.tab"; |
|
if (!open (MANAGERS, $tablename)) { |
|
logthis('<font color="red">No manager table. Nobody can manage!!</font>'); |
|
return; |
|
} |
|
while(my $host = <MANAGERS>) { |
|
chomp($host); |
|
if (!defined $hostip{$host}) { |
|
logthis('<font color="red"> manager '.$host. |
|
" not in hosts.tab, rejected as manager</font>"); |
|
} else { |
|
$managers{$host} = $hostip{$host}; # Whatever for now. |
|
} |
|
} |
|
} |
|
|
# |
# |
# ValidManager: Determines if a given certificate represents a valid manager. |
# ValidManager: Determines if a given certificate represents a valid manager. |
Line 216 sub GetCertificate {
|
Line 198 sub GetCertificate {
|
sub ValidManager { |
sub ValidManager { |
my $certificate = shift; |
my $certificate = shift; |
|
|
my $hostentry = $hostid{$certificate}; |
ReadManagerTable; |
if ($hostentry ne undef) { |
|
&logthis('<font color="yellow">Authenticating manager'. |
my $hostname = $hostid{$certificate}; |
" $hostentry</font>"); |
|
return 1; |
|
|
if ($hostname ne undef) { |
|
if($managers{$hostname} ne undef) { |
|
&logthis('<font color="yellow">Authenticating manager'. |
|
" $hostname</font>"); |
|
return 1; |
|
} else { |
|
&logthis('<font color="red" failed manager authentication '. |
|
$hostname." is not a valid manager host</font>"); |
|
return 0; |
|
} |
} else { |
} else { |
&logthis('<font color="red"> Failed manager authentication '. |
&logthis('<font color="red"> Failed manager authentication '. |
"$certificate </font>"); |
"$certificate </font>"); |
|
return 0; |
} |
} |
} |
} |
# |
# |
Line 675 sub checkchildren {
|
Line 668 sub checkchildren {
|
} |
} |
} |
} |
$SIG{ALRM} = 'DEFAULT'; |
$SIG{ALRM} = 'DEFAULT'; |
$SIG{__DIE__} = \&cathcexception; |
$SIG{__DIE__} = \&catchexception; |
} |
} |
|
|
# --------------------------------------------------------------------- Logging |
# --------------------------------------------------------------------- Logging |