Diff for /loncom/lond between versions 1.423 and 1.437

version 1.423, 2009/08/22 19:10:01 version 1.437, 2010/02/21 02:02:51
Line 67  my $currentdomainid; Line 67  my $currentdomainid;
 my $client;  my $client;
 my $clientip; # IP address of client.  my $clientip; # IP address of client.
 my $clientname; # LonCAPA name of client.  my $clientname; # LonCAPA name of client.
   my $clientversion;              # LonCAPA version running on client
   
 my $server;  my $server;
   
Line 1815  sub change_password_handler { Line 1816  sub change_password_handler {
     #  npass - New password.      #  npass - New password.
     #  context - Context in which this was called       #  context - Context in which this was called 
     #            (preferences or reset_by_email).      #            (preferences or reset_by_email).
       #  lonhost - HostID of server where request originated 
         
     my ($udom,$uname,$upass,$npass,$context)=split(/:/,$tail);      my ($udom,$uname,$upass,$npass,$context,$lonhost)=split(/:/,$tail);
   
     $upass=&unescape($upass);      $upass=&unescape($upass);
     $npass=&unescape($npass);      $npass=&unescape($npass);
Line 1825  sub change_password_handler { Line 1827  sub change_password_handler {
     # First require that the user can be authenticated with their      # First require that the user can be authenticated with their
     # old password unless context was 'reset_by_email':      # old password unless context was 'reset_by_email':
           
     my $validated;      my ($validated,$failure);
     if ($context eq 'reset_by_email') {      if ($context eq 'reset_by_email') {
         $validated = 1;          if ($lonhost eq '') {
               $failure = 'invalid_client';
           } else {
               $validated = 1;
           }
     } else {      } else {
         $validated = &validate_user($udom, $uname, $upass);          $validated = &validate_user($udom, $uname, $upass);
     }      }
Line 1841  sub change_password_handler { Line 1847  sub change_password_handler {
     $salt=substr($salt,6,2);      $salt=substr($salt,6,2);
     my $ncpass=crypt($npass,$salt);      my $ncpass=crypt($npass,$salt);
     if(&rewrite_password_file($udom, $uname, "internal:$ncpass")) {      if(&rewrite_password_file($udom, $uname, "internal:$ncpass")) {
  &logthis("Result of password change for "   my $msg="Result of password change for $uname: pwchange_success";
  ."$uname: pwchange_success");                  if ($lonhost) {
                       $msg .= " - request originated from: $lonhost";
                   }
                   &logthis($msg);
  &Reply($client, "ok\n", $userinput);   &Reply($client, "ok\n", $userinput);
     } else {      } else {
  &logthis("Unable to open $uname passwd "                  &logthis("Unable to open $uname passwd "               
Line 1863  sub change_password_handler { Line 1872  sub change_password_handler {
  }     }  
   
     } else {      } else {
  &Failure( $client, "non_authorized\n", $userinput);   if ($failure eq '') {
       $failure = 'non_authorized';
    }
    &Failure( $client, "$failure\n", $userinput);
     }      }
   
     return 1;      return 1;
Line 2050  sub is_home_handler { Line 2062  sub is_home_handler {
 &register_handler("home", \&is_home_handler, 0,1,0);  &register_handler("home", \&is_home_handler, 0,1,0);
   
 #  #
 #   Process an update request for a resource?? I think what's going on here is  #   Process an update request for a resource.
 #   that a resource has been modified that we hold a subscription to.  #   A resource has been modified that we hold a subscription to.
 #   If the resource is not local, then we must update, or at least invalidate our  #   If the resource is not local, then we must update, or at least invalidate our
 #   cached copy of the resource.   #   cached copy of the resource. 
 #   FUTURE WORK:  
 #      I need to look at this logic carefully.  My druthers would be to follow  
 #      typical caching logic, and simple invalidate the cache, drop any subscription  
 #      an let the next fetch start the ball rolling again... however that may  
 #      actually be more difficult than it looks given the complex web of  
 #      proxy servers.  
 # Parameters:  # Parameters:
 #    $cmd      - The command that got us here.  #    $cmd      - The command that got us here.
 #    $tail     - Tail of the command (remaining parameters).  #    $tail     - Tail of the command (remaining parameters).
Line 2083  sub update_resource_handler { Line 2089  sub update_resource_handler {
     my $ownership=ishome($fname);      my $ownership=ishome($fname);
     if ($ownership eq 'not_owner') {      if ($ownership eq 'not_owner') {
  if (-e $fname) {   if (-e $fname) {
               # Delete preview file, if exists
               unlink("$fname.tmp");
               # Get usage stats
     my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,      my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
  $atime,$mtime,$ctime,$blksize,$blocks)=stat($fname);   $atime,$mtime,$ctime,$blksize,$blocks)=stat($fname);
     my $now=time;      my $now=time;
     my $since=$now-$atime;      my $since=$now-$atime;
               # If the file has not been used within lonExpire seconds,
               # unsubscribe from it and delete local copy
     if ($since>$perlvar{'lonExpire'}) {      if ($since>$perlvar{'lonExpire'}) {
  my $reply=&Apache::lonnet::reply("unsub:$fname","$clientname");   my $reply=&Apache::lonnet::reply("unsub:$fname","$clientname");
  &devalidate_meta_cache($fname);   &devalidate_meta_cache($fname);
  unlink("$fname");   unlink("$fname");
  unlink("$fname.meta");   unlink("$fname.meta");
     } else {      } else {
               # Yes, this is in active use. Get a fresh copy. Since it might be in
               # very active use and huge (like a movie), copy it to "in.transfer" filename first.
  my $transname="$fname.in.transfer";   my $transname="$fname.in.transfer";
  my $remoteurl=&Apache::lonnet::reply("sub:$fname","$clientname");   my $remoteurl=&Apache::lonnet::reply("sub:$fname","$clientname");
  my $response;   my $response;
Line 2120  sub update_resource_handler { Line 2133  sub update_resource_handler {
  }   }
  alarm(0);   alarm(0);
     }      }
                       # we successfully transfered, copy file over to real name
     rename($transname,$fname);      rename($transname,$fname);
     &devalidate_meta_cache($fname);      &devalidate_meta_cache($fname);
  }   }
Line 3110  sub dump_with_regexp { Line 3124  sub dump_with_regexp {
         my $qresult='';          my $qresult='';
  my $count=0;   my $count=0;
  while (my ($key,$value) = each(%$hashref)) {   while (my ($key,$value) = each(%$hashref)) {
               if ($namespace eq 'roles') {
                   if ($key =~ /^($LONCAPA::match_domain)_($LONCAPA::match_community)_(cc|co|in|ta|ep|ad|st|cr)/) {
                       if ($clientversion =~ /^(\d+)\.(\d+)$/) {
                           my $major = $1;
                           my $minor = $2;
                           next if (($major < 2) || (($major == 2) && ($minor < 9)));
                       }
                   }
               }
     if ($regexp eq '.') {      if ($regexp eq '.') {
  $count++;   $count++;
  if (defined($range) && $count >= $end)   { last; }   if (defined($range) && $count >= $end)   { last; }
Line 3693  sub put_course_id_hash_handler { Line 3716  sub put_course_id_hash_handler {
 #                 caller -  if set to 'coursecatalog', courses set to be hidden  #                 caller -  if set to 'coursecatalog', courses set to be hidden
 #                           from course catalog will be excluded from results (unless  #                           from course catalog will be excluded from results (unless
 #                           overridden by "showhidden".  #                           overridden by "showhidden".
 #                 cloner - escaped username:domain of course cloner (if picking course to#   #                 cloner - escaped username:domain of course cloner (if picking course to
 #                          clone).  #                          clone).
 #                 cc_clone_list - escaped comma separated list of courses for which   #                 cc_clone_list - escaped comma separated list of courses for which 
 #                                 course cloner has active CC role (and so can clone  #                                 course cloner has active CC role (and so can clone
 #                                 automatically).  #                                 automatically).
 #                 cloneonly - filter by courses for which cloner has rights to clone.   #                 cloneonly - filter by courses for which cloner has rights to clone.
   #                 createdbefore - include courses for which creation date preceeded this date.
   #                 createdafter - include courses for which creation date followed this date.
   #                 creationcontext - include courses created in specified context 
 #  #
 #     $client  - The socket open on the client.  #     $client  - The socket open on the client.
 # Returns:  # Returns:
Line 3711  sub dump_course_id_handler { Line 3737  sub dump_course_id_handler {
   
     my ($udom,$since,$description,$instcodefilter,$ownerfilter,$coursefilter,      my ($udom,$since,$description,$instcodefilter,$ownerfilter,$coursefilter,
         $typefilter,$regexp_ok,$rtn_as_hash,$selfenrollonly,$catfilter,$showhidden,          $typefilter,$regexp_ok,$rtn_as_hash,$selfenrollonly,$catfilter,$showhidden,
         $caller,$cloner,$cc_clone_list,$cloneonly) =split(/:/,$tail);          $caller,$cloner,$cc_clone_list,$cloneonly,$createdbefore,$createdafter,
           $creationcontext) =split(/:/,$tail);
     my $now = time;      my $now = time;
     my ($cloneruname,$clonerudom,%cc_clone);      my ($cloneruname,$clonerudom,%cc_clone);
     if (defined($description)) {      if (defined($description)) {
Line 3769  sub dump_course_id_handler { Line 3796  sub dump_course_id_handler {
             $cc_clone{$clonedom.'_'.$clonenum} = 1;              $cc_clone{$clonedom.'_'.$clonenum} = 1;
         }           } 
     }      }
       if ($createdbefore ne '') {
           $createdbefore = &unescape($createdbefore);
       } else {
          $createdbefore = 0;
       }
       if ($createdafter ne '') {
           $createdafter = &unescape($createdafter);
       } else {
           $createdafter = 0;
       }
       if ($creationcontext ne '') {
           $creationcontext = &unescape($creationcontext);
       } else {
           $creationcontext = '.';
       }
           
     my $unpack = 1;      my $unpack = 1;
     if ($description eq '.' && $instcodefilter eq '.' && $coursefilter eq '.' &&       if ($description eq '.' && $instcodefilter eq '.' && $coursefilter eq '.' && 
Line 3781  sub dump_course_id_handler { Line 3823  sub dump_course_id_handler {
     if ($hashref) {      if ($hashref) {
  while (my ($key,$value) = each(%$hashref)) {   while (my ($key,$value) = each(%$hashref)) {
             my ($unesc_key,$lasttime_key,$lasttime,$is_hash,%val,              my ($unesc_key,$lasttime_key,$lasttime,$is_hash,%val,
                 %unesc_val,$selfenroll_end,$selfenroll_types);                  %unesc_val,$selfenroll_end,$selfenroll_types,$created,
                   $context);
             $unesc_key = &unescape($key);              $unesc_key = &unescape($key);
             if ($unesc_key =~ /^lasttime:/) {              if ($unesc_key =~ /^lasttime:/) {
                 next;                  next;
Line 3795  sub dump_course_id_handler { Line 3838  sub dump_course_id_handler {
             my ($canclone,$valchange);              my ($canclone,$valchange);
             my $items = &Apache::lonnet::thaw_unescape($value);              my $items = &Apache::lonnet::thaw_unescape($value);
             if (ref($items) eq 'HASH') {              if (ref($items) eq 'HASH') {
                   if ($hashref->{$lasttime_key} eq '') {
                       next if ($since > 1);
                   }
                 $is_hash =  1;                  $is_hash =  1;
                 if (defined($clonerudom)) {                  if (defined($clonerudom)) {
                     if ($items->{'cloners'}) {                      if ($items->{'cloners'}) {
Line 3824  sub dump_course_id_handler { Line 3870  sub dump_course_id_handler {
                             $items->{'cloners'} = $cloneruname.':'.$clonerudom;                              $items->{'cloners'} = $cloneruname.':'.$clonerudom;
                             $valchange = 1;                              $valchange = 1;
                         }                          }
                           unless ($canclone) {
                               if ($items->{'owner'} =~ /:/) {
                                   if ($items->{'owner'} eq $cloner) {
                                       $canclone = 1;
                                   }
                               } elsif ($cloner eq $udom.':'.$items->{'owner'}) {
                                   $canclone = 1;
                               }
                               if ($canclone) {
                                   $items->{'cloners'} = $cloneruname.':'.$clonerudom;
                                   $valchange = 1;
                               }
                           }
                     }                      }
                 }                  }
                 if ($unpack || !$rtn_as_hash) {                  if ($unpack || !$rtn_as_hash) {
Line 3832  sub dump_course_id_handler { Line 3891  sub dump_course_id_handler {
                     $unesc_val{'owner'} = $items->{'owner'};                      $unesc_val{'owner'} = $items->{'owner'};
                     $unesc_val{'type'} = $items->{'type'};                      $unesc_val{'type'} = $items->{'type'};
                     $unesc_val{'cloners'} = $items->{'cloners'};                      $unesc_val{'cloners'} = $items->{'cloners'};
                       $unesc_val{'created'} = $items->{'created'};
                       $unesc_val{'context'} = $items->{'context'};
                 }                  }
                 $selfenroll_types = $items->{'selfenroll_types'};                  $selfenroll_types = $items->{'selfenroll_types'};
                 $selfenroll_end = $items->{'selfenroll_end_date'};                  $selfenroll_end = $items->{'selfenroll_end_date'};
                   $created = $items->{'created'};
                   $context = $items->{'context'};
                 if ($selfenrollonly) {                  if ($selfenrollonly) {
                     next if (!$selfenroll_types);                      next if (!$selfenroll_types);
                     if (($selfenroll_end > 0) && ($selfenroll_end <= $now)) {                      if (($selfenroll_end > 0) && ($selfenroll_end <= $now)) {
                         next;                          next;
                     }                      }
                 }                  }
                   if ($creationcontext ne '.') {
                       next if (($context ne '') && ($context ne $creationcontext));  
                   }
                   if ($createdbefore > 0) {
                       next if (($created eq '') || ($created > $createdbefore));   
                   }
                   if ($createdafter > 0) {
                       next if (($created eq '') || ($created <= $createdafter)); 
                   }
                 if ($catfilter ne '') {                  if ($catfilter ne '') {
                     next if ($items->{'categories'} eq '');                      next if ($items->{'categories'} eq '');
                     my @categories = split('&',$items->{'categories'});                       my @categories = split('&',$items->{'categories'}); 
Line 3863  sub dump_course_id_handler { Line 3935  sub dump_course_id_handler {
             } else {              } else {
                 next if ($catfilter ne '');                  next if ($catfilter ne '');
                 next if ($selfenrollonly);                  next if ($selfenrollonly);
                   next if ($createdbefore || $createdafter);
                   next if ($creationcontext ne '.');
                 if ((defined($clonerudom)) && (defined($cloneruname)))  {                  if ((defined($clonerudom)) && (defined($cloneruname)))  {
                     if ($cc_clone{$unesc_key}) {                      if ($cc_clone{$unesc_key}) {
                         $canclone = 1;                          $canclone = 1;
Line 4052  sub put_domain_handler { Line 4126  sub put_domain_handler {
 }  }
 &register_handler("putdom", \&put_domain_handler, 0, 1, 0);  &register_handler("putdom", \&put_domain_handler, 0, 1, 0);
   
 #  
 # Puts a piece of new data in a namespace db file at the domain level   
 # returns error if key already exists  
 #  
 # Parameters:  
 #    $cmd      - The command that got us here.  
 #    $tail     - Tail of the command (remaining parameters).  
 #    $client   - File descriptor connected to client.  
 # Returns  
 #     0        - Requested to exit, caller should shut down.  
 #     1        - Continue processing.  
 #  Side effects:  
 #     reply is written to $client.  
 #  
 sub newput_domain_handler {  
     my ($cmd, $tail, $client)  = @_;  
   
     my $userinput = "$cmd:$tail";  
   
     my ($udom,$namespace,$what) =split(/:/,$tail,3);  
     chomp($what);  
     my $hashref = &tie_domain_hash($udom, "$namespace", &GDBM_WRCREAT(),  
                                    "N", $what);  
     if(!$hashref) {  
         &Failure( $client, "error: ".($!+0)." tie(GDBM) Failed ".  
                   "while attempting newputdom\n", $userinput);  
         return 1;  
     }  
   
     my @pairs=split(/\&/,$what);  
     foreach my $pair (@pairs) {  
         my ($key,$value)=split(/=/,$pair);  
         if (exists($hashref->{$key})) {  
             &Failure($client, "key_exists: ".$key."\n",$userinput);  
             return 1;  
         }  
     }  
   
     foreach my $pair (@pairs) {  
         my ($key,$value)=split(/=/,$pair);  
         $hashref->{$key}=$value;  
     }  
   
     if (&untie_domain_hash($hashref)) {  
         &Reply( $client, "ok\n", $userinput);  
     } else {  
         &Failure($client, "error: ".($!+0)." untie(GDBM) failed ".  
                  "while attempting newputdom\n",  
                  $userinput);  
     }  
     return 1;  
 }  
 &register_handler("newputdom", \&newput_domain_handler, 0, 1, 0);  
   
 # Unencrypted get from the namespace database file at the domain level.  # Unencrypted get from the namespace database file at the domain level.
 # This function retrieves a keyed item from a specific named database in the  # This function retrieves a keyed item from a specific named database in the
 # domain directory.  # domain directory.
Line 4156  sub get_domain_handler { Line 4176  sub get_domain_handler {
 &register_handler("getdom", \&get_domain_handler, 0, 1, 0);  &register_handler("getdom", \&get_domain_handler, 0, 1, 0);
   
 #  #
 #   Deletes a key in a user profile database.  
 #    
 #   Parameters:  
 #       $cmd                  - Command keyword (deldom).  
 #       $tail                 - Command tail.  IN this case a colon  
 #                               separated list containing:  
 #                               the domain to which the database file belongs;    
 #                               the namespace (name of the database file);  
 #                               & separated list of keys to delete.  
 #       $client              - File open on client socket.  
 # Returns:  
 #     1   - Continue processing  
 #     0   - Exit server.  
 #  
 #  
 sub delete_domain_entry {  
     my ($cmd, $tail, $client) = @_;  
   
     my $userinput = "cmd:$tail";  
   
     my ($udom,$namespace,$what) = split(/:/,$tail);  
     chomp($what);  
     my $hashref = &tie_domain_hash($udom, $namespace, &GDBM_WRCREAT(),  
                                  "D",$what);  
     if ($hashref) {  
         my @keys=split(/\&/,$what);  
         foreach my $key (@keys) {  
             delete($hashref->{$key});  
         }  
         if (&untie_user_hash($hashref)) {  
             &Reply($client, "ok\n", $userinput);  
         } else {  
             &Failure($client, "error: ".($!+0)." untie(GDBM) Failed ".  
                     "while attempting deldom\n", $userinput);  
         }  
     } else {  
         &Failure( $client, "error: ".($!+0)." tie(GDBM) Failed ".  
                  "while attempting deldom\n", $userinput);  
     }  
     return 1;  
 }  
 &register_handler("deldom", \&delete_domain_entry, 0, 1, 0);  
   
 #  
 #  Puts an id to a domains id database.   #  Puts an id to a domains id database. 
 #  #
 #  Parameters:  #  Parameters:
Line 4296  sub get_id_handler { Line 4272  sub get_id_handler {
 }  }
 &register_handler("idget", \&get_id_handler, 0, 1, 0);  &register_handler("idget", \&get_id_handler, 0, 1, 0);
   
 sub dump_dom_with_regexp {  
     my ($cmd, $tail, $client) = @_;  
     my $userinput = "$cmd:$tail";  
     my ($udom,$namespace,$regexp,$range)=split(/:/,$tail);  
     if (defined($regexp)) {  
         $regexp=&unescape($regexp);  
     } else {  
         $regexp='.';  
     }  
     my ($start,$end);  
     if (defined($range)) {  
         if ($range =~/^(\d+)\-(\d+)$/) {  
             ($start,$end) = ($1,$2);  
         } elsif ($range =~/^(\d+)$/) {  
             ($start,$end) = (0,$1);  
         } else {  
             undef($range);  
         }  
     }  
     my $hashref = &tie_domain_hash($udom, $namespace, &GDBM_READER());  
     if ($hashref) {  
         my $qresult='';  
         my $count=0;  
         while (my ($key,$value) = each(%$hashref)) {  
             if ($regexp eq '.') {  
                 $count++;  
                 if (defined($range) && $count >= $end)   { last; }  
                 if (defined($range) && $count <  $start) { next; }  
                 $qresult.=$key.'='.$value.'&';  
             } else {  
                 my $unescapeKey = &unescape($key);  
                 if (eval('$unescapeKey=~/$regexp/')) {  
                     $count++;  
                     if (defined($range) && $count >= $end)   { last; }  
                     if (defined($range) && $count <  $start) { next; }  
                     $qresult.="$key=$value&";  
                 }  
             }  
         }  
         if (&untie_user_hash($hashref)) {  
             chop($qresult);  
             &Reply($client, \$qresult, $userinput);  
         } else {  
             &Failure( $client, "error: ".($!+0)." untie(GDBM) Failed ".  
                      "while attempting dump\n", $userinput);  
         }  
     } else {  
         &Failure($client, "error: ".($!+0)." tie(GDBM) Failed ".  
                 "while attempting dump\n", $userinput);  
     }  
     return 1;  
 }  
 &register_handler("dumpdom", \&dump_dom_with_regexp, 0, 1, 0);  
   
 #  #
 # Puts broadcast e-mail sent by Domain Coordinator in nohist_dcmail database   # Puts broadcast e-mail sent by Domain Coordinator in nohist_dcmail database 
 #  #
Line 4877  sub enrollment_enabled_handler { Line 4799  sub enrollment_enabled_handler {
 #   $tail         - The tail of the command.  In this case,  #   $tail         - The tail of the command.  In this case,
 #                   this is a colon separated set of words that will be split  #                   this is a colon separated set of words that will be split
 #                   into:  #                   into:
 #                        $inst_course_id - The institutional cod3 from the  #                        $dom      - The domain for which the check of 
 #                                          institutions point of view.  #                                    institutional course code will occur.
 #                        $cdom           - The domain from the institutions  #
 #                                          point of view.  #                        $instcode - The institutional code for the course
   #                                    being requested, or validated for rights
   #                                    to request.
   #
   #                        $owner    - The course requestor (who will be the
   #                                    course owner, in the form username:domain
   #
 #   $client       - Socket open on the client.  #   $client       - Socket open on the client.
 # Returns:  # Returns:
 #    1           - Indicating processing should continue.  #    1           - Indicating processing should continue.
Line 4891  sub validate_instcode_handler { Line 4819  sub validate_instcode_handler {
     my ($dom,$instcode,$owner) = split(/:/, $tail);      my ($dom,$instcode,$owner) = split(/:/, $tail);
     $instcode = &unescape($instcode);      $instcode = &unescape($instcode);
     $owner = &unescape($owner);      $owner = &unescape($owner);
     my $outcome=&localenroll::validate_instcode($dom,$instcode,$owner);      my ($outcome,$description) = 
     &Reply($client, \$outcome, $userinput);          &localenroll::validate_instcode($dom,$instcode,$owner);
       my $result = &escape($outcome).'&'.&escape($description);
       &Reply($client, \$result, $userinput);
   
     return 1;      return 1;
 }  }
Line 5106  sub crsreq_checks_handler { Line 5036  sub crsreq_checks_handler {
     my $userinput = "$cmd:$tail";      my $userinput = "$cmd:$tail";
     my $dom = $tail;      my $dom = $tail;
     my $result;      my $result;
       my @reqtypes = ('official','unofficial','community');
     eval {      eval {
         local($SIG{__DIE__})='DEFAULT';          local($SIG{__DIE__})='DEFAULT';
         my %validations;          my %validations;
         my $response = &localenroll::crsreq_checks($dom,\%validations);          my $response = &localenroll::crsreq_checks($dom,\@reqtypes,
                                                      \%validations);
         if ($response eq 'ok') {           if ($response eq 'ok') { 
             foreach my $key (keys(%validations)) {              foreach my $key (keys(%validations)) {
                 $result .= &escape($key).'='.&Apache::lonnet::freeze_escape($validations{$key}).'&';                  $result .= &escape($key).'='.&Apache::lonnet::freeze_escape($validations{$key}).'&';
Line 6356  sub make_new_child { Line 6288  sub make_new_child {
  &ReadManagerTable();   &ReadManagerTable();
  my $clientrec=defined(&Apache::lonnet::get_hosts_from_ip($outsideip));   my $clientrec=defined(&Apache::lonnet::get_hosts_from_ip($outsideip));
  my $ismanager=($managers{$outsideip}    ne undef);   my $ismanager=($managers{$outsideip}    ne undef);
  $clientname  = "[unknonwn]";   $clientname  = "[unknown]";
  if($clientrec) { # Establish client type.   if($clientrec) { # Establish client type.
     $ConnectionType = "client";      $ConnectionType = "client";
     $clientname = (&Apache::lonnet::get_hosts_from_ip($outsideip))[-1];      $clientname = (&Apache::lonnet::get_hosts_from_ip($outsideip))[-1];
Line 6384  sub make_new_child { Line 6316  sub make_new_child {
  #   #
  #  If the remote is attempting a local init... give that a try:   #  If the remote is attempting a local init... give that a try:
  #   #
  my ($i, $inittype) = split(/:/, $remotereq);   (my $i, my $inittype, $clientversion) = split(/:/, $remotereq);
   
  # If the connection type is ssl, but I didn't get my   # If the connection type is ssl, but I didn't get my
  # certificate files yet, then I'll drop  back to    # certificate files yet, then I'll drop  back to 
Line 6404  sub make_new_child { Line 6336  sub make_new_child {
  }   }
   
  if($inittype eq "local") {   if($inittype eq "local") {
                       $clientversion = $perlvar{'lonVersion'};
     my $key = LocalConnection($client, $remotereq);      my $key = LocalConnection($client, $remotereq);
     if($key) {      if($key) {
  Debug("Got local key $key");   Debug("Got local key $key");
Line 6633  sub rewrite_password_file { Line 6566  sub rewrite_password_file {
   
 #     Returns the authorization type or nouser if there is no such user.  #     Returns the authorization type or nouser if there is no such user.
 #  #
 sub get_auth_type   sub get_auth_type {
 {  
   
     my ($domain, $user)  = @_;      my ($domain, $user)  = @_;
   
     Debug("get_auth_type( $domain, $user ) \n");      Debug("get_auth_type( $domain, $user ) \n");

Removed from v.1.423  
changed lines
  Added in v.1.437


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>