--- loncom/LondConnection.pm 2003/10/28 10:47:44 1.14 +++ loncom/LondConnection.pm 2003/11/04 11:22:48 1.17 @@ -1,7 +1,7 @@ # This module defines and implements a class that represents # a connection to a lond daemon. # -# $Id: LondConnection.pm,v 1.14 2003/10/28 10:47:44 foxr Exp $ +# $Id: LondConnection.pm,v 1.17 2003/11/04 11:22:48 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -46,6 +46,13 @@ my %hostshash; my %perlvar; # +# Set debugging level +# +sub SetDebug { + $DebugLevel = shift; +} + +# # The config read is done in this way to support the read of # the non-default configuration file in the # event we are being used outside of loncapa. @@ -63,11 +70,42 @@ sub ReadConfig { "$perlvar{'lonTabDir'}/hosts.tab") || die "Can't read host table!!"; %hostshash = %{$hoststab}; + $ConfigRead = 1; - close(CONFIG); } +# +# Read a foreign configuration. +# This sub is intended for the cases where the package +# will be read from outside the LonCAPA environment, in that case +# the client will need to explicitly provide: +# - A file in hosts.tab format. +# - Some idea of the 'lonCAPA' name of the local host (for building +# the encryption key). +# +# Parameters: +# MyHost - Name of this host as far as LonCAPA is concerned. +# Filename - Name of a hosts.tab formatted file that will be used +# to build up the hosts table. +# +sub ReadForeignConfig { + my $MyHost = shift; + my $Filename = shift; + + &Debug(4, "ReadForeignConfig $MyHost $Filename\n"); + + $perlvar{lonHostID} = $MyHost; # Rmember my host. + my $hosttab = read_hosts($Filename) || + die "Can't read hosts table!!"; + %hostshash = %{$hosttab}; + if($DebugLevel > 3) { + foreach my $host (keys %hostshash) { + print "host $host => $hostshash{$host}\n"; + } + } + $ConfigRead = 1; +} sub Debug { my $level = shift; @@ -153,6 +191,7 @@ sub new { # LoncapaHim fields of the object respectively. # if (!exists $hostshash{$Hostname}) { + &Debug(8, "No Such host $Hostname"); return undef; # No such host!!! } my @ConfigLine = @{$hostshash{$Hostname}}; @@ -774,7 +813,7 @@ sub read_hosts { my $Filename = shift; my %HostsTab; - open(CONFIG,'<'.$Filename) or die("Can't read $Filename"); + open(CONFIG,'<'.$Filename) or die("Can't read $Filename"); while (my $line = ) { if (!($line =~ /^\s*\#/)) { my @items = split(/:/, $line);