version 1.9, 2003/08/18 10:25:46
|
version 1.12, 2003/08/18 11:08:07
|
Line 50
|
Line 50
|
# not the IP address of the host. |
# not the IP address of the host. |
# |
# |
# $Log$ |
# $Log$ |
|
# Revision 1.12 2003/08/18 11:08:07 foxr |
|
# Debug request building in Transact. |
|
# |
|
# Revision 1.11 2003/08/18 10:45:32 foxr |
|
# Felt strongly enough about hoisting ReadConfiguration into a separate sub |
|
# that I did it now before I forgot. |
|
# |
|
# Revision 1.10 2003/08/18 10:43:31 foxr |
|
# Code/test ValidHost. The hosts.tab and the perl variables are read in as |
|
# global hashes as a side effect. May later want to clean this up by making |
|
# a separate getconfig function and hoisting the config reads into that. |
|
# |
# Revision 1.9 2003/08/18 10:25:46 foxr |
# Revision 1.9 2003/08/18 10:25:46 foxr |
# Write ReinitProcess function in terms of ValidHost and Transact. |
# Write ReinitProcess function in terms of ValidHost and Transact. |
# |
# |
Line 80
|
Line 92
|
# Add usage and skeleton documentation. |
# Add usage and skeleton documentation. |
# |
# |
# |
# |
|
|
|
# Modules required: |
|
|
use strict; # Because it's good practice. |
use strict; # Because it's good practice. |
use English; # Cause I like meaningful names. |
use English; # Cause I like meaningful names. |
use Getopt::Long; |
use Getopt::Long; |
|
use LONCAPA::Configuration; # To handle configuration I/O. |
|
|
|
# File scoped variables: |
|
|
|
my %perlvar; # Perl variable defs from apache config. |
|
my %hostshash; # Host table as a host indexed hash. |
|
|
sub Usage { |
sub Usage { |
print "Usage:"; |
print "Usage:"; |
Line 187 sub ParseArgs {
|
Line 208 sub ParseArgs {
|
|
|
return @result; |
return @result; |
} |
} |
|
# |
|
# Read the loncapa configuration stuff. |
|
# |
|
sub ReadConfig { |
|
my $perlvarref = LONCAPA::Configuration::read_conf('loncapa.conf'); |
|
%perlvar = %{$perlvarref}; |
|
my $hoststab = LONCAPA::Configuration::read_hosts( |
|
"$perlvar{'lonTabDir'}/hosts.tab"); |
|
%hostshash = %{$hoststab}; |
|
|
|
} |
|
# |
|
# Determine if the target host is valid. |
|
# This is done by reading the current hosts.tab file. |
|
# For the host to be valid, it must be inthe file. |
|
# |
|
# Parameters: |
|
# host - Name of host to check on. |
|
# Returns: |
|
# true if host is valid. |
|
# false if host is invalid. |
|
# |
sub ValidHost { |
sub ValidHost { |
return 1; |
my $host = shift; |
|
|
|
ReadConfig; |
|
|
|
return defined $hostshash{$host}; |
|
|
} |
} |
|
# |
|
# Performs a transaction with lonc. |
|
# By the time this is called, the transaction has already been |
|
# validated by the caller. |
|
# |
|
# Parameters: |
|
# |
|
# host - hosts.tab name of the host whose lonc we'll be talking to. |
|
# command - The base command we'll be asking lond to execute. |
|
# body - [optional] If supplied, this is a command body that is a ref. |
|
# to an array of lines that will be appended to the |
|
# command. |
|
# |
|
# NOTE: |
|
# The command will be done as an encrypted operation. |
|
# |
sub Transact { |
sub Transact { |
|
my $host = shift; |
|
my $command = shift; |
|
my $haveBody= 0; |
|
my $body; |
|
my $i; |
|
|
|
if(scalar @ARG) { |
|
$body = shift; |
|
$haveBody = 1; |
|
} |
|
# Construct the command to send to the server: |
|
|
|
my $request = "encrypt\:"; # All requests are encrypted. |
|
$request .= $command; |
|
if($haveBody) { |
|
$request .= "\:"; |
|
my $bodylines = scalar @$body; |
|
for($i = 0; $i < $bodylines; $i++) { |
|
$request .= $$body[$i]; |
|
} |
|
} else { |
|
$request .= "\n"; |
|
} |
|
# Body is now built.. |
|
|
|
print "$request"; |
} |
} |
# |
# |
# Called to push a file to the remote system. |
# Called to push a file to the remote system. |
Line 231 sub PushFile {
|
Line 321 sub PushFile {
|
|
|
if( ($tablename eq "host") || |
if( ($tablename eq "host") || |
($tablename eq "domain")) { |
($tablename eq "domain")) { |
Transact($host, "pushfile:$tablename:",\@table); |
Transact($host, "pushfile:$tablename",\@table); |
} else { |
} else { |
die "EINVAL - Invalid parameter. tablename: $tablename must be host or domain"; |
die "EINVAL - Invalid parameter. tablename: $tablename must be host or domain"; |
} |
} |