version 1.277, 2005/02/06 07:39:49
|
version 1.281, 2005/04/03 19:33:34
|
Line 472 sub CopyFile {
|
Line 472 sub CopyFile {
|
|
|
my ($oldfile, $newfile) = @_; |
my ($oldfile, $newfile) = @_; |
|
|
# The file must exist: |
if (! copy($oldfile,$newfile)) { |
|
return 0; |
if(-e $oldfile) { |
|
|
|
# Read the old file. |
|
|
|
my $oldfh = IO::File->new("< $oldfile"); |
|
if(!$oldfh) { |
|
return 0; |
|
} |
|
my @contents = <$oldfh>; # Suck in the entire file. |
|
|
|
# write the backup file: |
|
|
|
my $newfh = IO::File->new("> $newfile"); |
|
if(!(defined $newfh)){ |
|
return 0; |
|
} |
|
my $lines = scalar @contents; |
|
for (my $i =0; $i < $lines; $i++) { |
|
print $newfh ($contents[$i]); |
|
} |
|
|
|
$oldfh->close; |
|
$newfh->close; |
|
|
|
chmod(0660, $newfile); |
|
|
|
return 1; |
|
|
|
} else { |
|
return 0; |
|
} |
} |
|
chmod(0660, $newfile); |
|
return 1; |
} |
} |
# |
# |
# Host files are passed out with externally visible host IPs. |
# Host files are passed out with externally visible host IPs. |
Line 1409 sub du_handler {
|
Line 1381 sub du_handler {
|
®ister_handler("du", \&du_handler, 0, 1, 0); |
®ister_handler("du", \&du_handler, 0, 1, 0); |
|
|
# |
# |
|
# The ls_handler routine should be considered obosolete and is retained |
|
# for communication with legacy servers. Please see the ls2_handler. |
|
# |
# ls - list the contents of a directory. For each file in the |
# ls - list the contents of a directory. For each file in the |
# selected directory the filename followed by the full output of |
# selected directory the filename followed by the full output of |
# the stat function is returned. The returned info for each |
# the stat function is returned. The returned info for each |
Line 1425 sub du_handler {
|
Line 1400 sub du_handler {
|
# The reply is written to $client. |
# The reply is written to $client. |
# |
# |
sub ls_handler { |
sub ls_handler { |
|
# obsoleted by ls2_handler |
my ($cmd, $ulsdir, $client) = @_; |
my ($cmd, $ulsdir, $client) = @_; |
|
|
my $userinput = "$cmd:$ulsdir"; |
my $userinput = "$cmd:$ulsdir"; |
Line 1471 sub ls_handler {
|
Line 1447 sub ls_handler {
|
} |
} |
®ister_handler("ls", \&ls_handler, 0, 1, 0); |
®ister_handler("ls", \&ls_handler, 0, 1, 0); |
|
|
|
# |
|
# Please also see the ls_handler, which this routine obosolets. |
|
# ls2_handler differs from ls_handler in that it escapes its return |
|
# values before concatenating them together with ':'s. |
|
# |
|
# ls2 - list the contents of a directory. For each file in the |
|
# selected directory the filename followed by the full output of |
|
# the stat function is returned. The returned info for each |
|
# file are separated by ':'. The stat fields are separated by &'s. |
|
# Parameters: |
|
# $cmd - The command that dispatched us (ls). |
|
# $ulsdir - The directory path to list... I'm not sure what this |
|
# is relative as things like ls:. return e.g. |
|
# no_such_dir. |
|
# $client - Socket open on the client. |
|
# Returns: |
|
# 1 - indicating that the daemon should not disconnect. |
|
# Side Effects: |
|
# The reply is written to $client. |
|
# |
|
sub ls2_handler { |
|
my ($cmd, $ulsdir, $client) = @_; |
|
|
|
my $userinput = "$cmd:$ulsdir"; |
|
|
|
my $obs; |
|
my $rights; |
|
my $ulsout=''; |
|
my $ulsfn; |
|
if (-e $ulsdir) { |
|
if(-d $ulsdir) { |
|
if (opendir(LSDIR,$ulsdir)) { |
|
while ($ulsfn=readdir(LSDIR)) { |
|
undef $obs, $rights; |
|
my @ulsstats=stat($ulsdir.'/'.$ulsfn); |
|
#We do some obsolete checking here |
|
if(-e $ulsdir.'/'.$ulsfn.".meta") { |
|
open(FILE, $ulsdir.'/'.$ulsfn.".meta"); |
|
my @obsolete=<FILE>; |
|
foreach my $obsolete (@obsolete) { |
|
if($obsolete =~ m|(<obsolete>)(on)|) { $obs = 1; } |
|
if($obsolete =~ m|(<copyright>)(default)|) { |
|
$rights = 1; |
|
} |
|
} |
|
} |
|
my $tmp = $ulsfn.'&'.join('&',@ulsstats); |
|
if ($obs eq '1') { $tmp.="&1"; } else { $tmp.="&0"; } |
|
if ($rights eq '1') { $tmp.="&1"; } else { $tmp.="&0"; } |
|
$ulsout.= &escape($tmp).':'; |
|
} |
|
closedir(LSDIR); |
|
} |
|
} else { |
|
my @ulsstats=stat($ulsdir); |
|
$ulsout.=$ulsfn.'&'.join('&',@ulsstats).':'; |
|
} |
|
} else { |
|
$ulsout='no_such_dir'; |
|
} |
|
if ($ulsout eq '') { $ulsout='empty'; } |
|
&Reply($client, "$ulsout\n", $userinput); # This supports debug logging. |
|
return 1; |
|
} |
|
®ister_handler("ls2", \&ls2_handler, 0, 1, 0); |
|
|
# Process a reinit request. Reinit requests that either |
# Process a reinit request. Reinit requests that either |
# lonc or lond be reinitialized so that an updated |
# lonc or lond be reinitialized so that an updated |
# host.tab or domain.tab can be processed. |
# host.tab or domain.tab can be processed. |
Line 4282 sub ReadHostTable {
|
Line 4324 sub ReadHostTable {
|
if ($configline !~ /^\s*\#/ && $configline !~ /^\s*$/ ) { |
if ($configline !~ /^\s*\#/ && $configline !~ /^\s*$/ ) { |
my ($id,$domain,$role,$name)=split(/:/,$configline); |
my ($id,$domain,$role,$name)=split(/:/,$configline); |
$name=~s/\s//g; |
$name=~s/\s//g; |
my (undef,undef,undef,undef,$ip) = gethostbyname($name); |
my $ip = gethostbyname($name); |
if (length($ip) ne 4) { |
if (length($ip) ne 4) { |
&logthis("Skipping host $id name $name no IP $ip found\n"); |
&logthis("Skipping host $id name $name no IP $ip found\n"); |
next; |
next; |
Line 4741 sub make_new_child {
|
Line 4783 sub make_new_child {
|
|
|
ReadManagerTable; # May also be a manager!! |
ReadManagerTable; # May also be a manager!! |
|
|
my $clientrec=($hostid{$clientip} ne undef); |
my $outsideip=$clientip; |
my $ismanager=($managers{$clientip} ne undef); |
if ($clientip eq '127.0.0.1') { |
|
$outsideip=$hostip{$perlvar{'lonHostID'}}; |
|
} |
|
|
|
my $clientrec=($hostid{$outsideip} ne undef); |
|
my $ismanager=($managers{$outsideip} ne undef); |
$clientname = "[unknonwn]"; |
$clientname = "[unknonwn]"; |
if($clientrec) { # Establish client type. |
if($clientrec) { # Establish client type. |
$ConnectionType = "client"; |
$ConnectionType = "client"; |
$clientname = $hostid{$clientip}; |
$clientname = $hostid{$outsideip}; |
if($ismanager) { |
if($ismanager) { |
$ConnectionType = "both"; |
$ConnectionType = "both"; |
} |
} |
} else { |
} else { |
$ConnectionType = "manager"; |
$ConnectionType = "manager"; |
$clientname = $managers{$clientip}; |
$clientname = $managers{$outsideip}; |
} |
} |
my $clientok; |
my $clientok; |
|
|