--- loncom/LondConnection.pm 2004/06/17 09:26:09 1.31 +++ loncom/LondConnection.pm 2004/09/21 10:51:42 1.35 @@ -1,7 +1,7 @@ # This module defines and implements a class that represents # a connection to a lond daemon. # -# $Id: LondConnection.pm,v 1.31 2004/06/17 09:26:09 foxr Exp $ +# $Id: LondConnection.pm,v 1.35 2004/09/21 10:51:42 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -42,7 +42,7 @@ use LONCAPA::lonssl; -my $DebugLevel=11; +my $DebugLevel=0; my %hostshash; my %perlvar; my $LocalDns = ""; # Need not be defined for managers. @@ -153,9 +153,18 @@ Dump the internal state of the object: F sub Dump { my $self = shift; + my $level = shift; + my $now = time; + my $local = localtime($now); + + if ($level <= $DebugLevel) { + return; + } + + my $key; my $value; - print STDERR "Dumping LondConnectionObject:\n"; + print STDERR "[ $local ] Dumping LondConnectionObject:\n"; while(($key, $value) = each %$self) { print STDERR "$key -> $value\n"; } @@ -253,8 +262,8 @@ sub new { return undef; # Inidicates the socket could not be made. } my $socket = $self->{Socket}; # For local use only. - # If we are local, we'll first try local auth mode, otherwise, we'll try the - # ssl auth mode: + # If we are local, we'll first try local auth mode, otherwise, we'll try + # the ssl auth mode: Debug(8, "Connecting to $DnsName I am $LocalDns"); my $key; @@ -284,10 +293,29 @@ sub new { return undef; } - } + } else { - $self->{AuthenticationMode} = "ssl"; - $self->{TransactionRequest} = "init:ssl\n"; + # Remote peer: I'd like to do ssl, but if my host key or certificates + # are not all installed, my only choice is insecure, if that's + # allowed: + + my ($ca, $cert) = lonssl::CertificateFile; + my $sslkeyfile = lonssl::KeyFile; + + if((defined $ca) && (defined $cert) && (defined $sslkeyfile)) { + + $self->{AuthenticationMode} = "ssl"; + $self->{TransactionRequest} = "init:ssl\n"; + } else { + if($InsecureOk) { # Allowed to do insecure: + $self->{AuthenticationMode} = "insecure"; + $self->{TransactionRequest} = "init\n"; + } + else { # Not allowed to do insecure... + $socket->close; + return undef; + } + } } # @@ -315,7 +343,7 @@ sub new { # return the object : Debug(9, "Initial object state: "); - $self->Dump(); + $self->Dump(9); return $self; } @@ -527,7 +555,7 @@ sub Readable { my $answer = $self->{TransactionReply}; if($answer =~ /^enc\:/) { $answer = $self->Decrypt($answer); - $self->{TransactionReply} = $answer; + $self->{TransactionReply} = "$answer\n"; } # finish the transaction @@ -925,6 +953,7 @@ sub Decrypt { # $length tells us the actual length of the decrypted string: $decrypted = substr($decrypted, 0, $length); + Debug(9, "Decrypted $EncryptedString to $decrypted"); return $decrypted; @@ -978,7 +1007,7 @@ sub CreateCipher { if($cipher) { $self->{Cipher} = $cipher; Debug("Cipher created dumping socket: "); - $self->Dump(); + $self->Dump(9); return 1; } else {