Diff for /loncom/lond between versions 1.489.2.3 and 1.490

version 1.489.2.3, 2013/03/02 03:31:10 version 1.490, 2012/04/11 21:32:28
Line 34  use strict; Line 34  use strict;
 use lib '/home/httpd/lib/perl/';  use lib '/home/httpd/lib/perl/';
 use LONCAPA;  use LONCAPA;
 use LONCAPA::Configuration;  use LONCAPA::Configuration;
   use LONCAPA::Lond;
   
 use IO::Socket;  use IO::Socket;
 use IO::File;  use IO::File;
Line 2373  sub fetch_user_file_handler { Line 2374  sub fetch_user_file_handler {
  unlink($transname);   unlink($transname);
  &Failure($client, "failed\n", $userinput);   &Failure($client, "failed\n", $userinput);
     } else {      } else {
                 if ($fname =~ /^default.+\.(page|sequence)$/) {  
                     my ($major,$minor) = split(/\./,$clientversion);  
                     if (($major < 2) || ($major == 2 && $minor < 11)) {  
                         my $now = time;  
                         &Apache::lonnet::do_cache_new('crschange',$udom.'_'.$uname,$now,600);  
                         my $key = &escape('internal.contentchange');  
                         my $what = "$key=$now";  
                         my $hashref = &tie_user_hash($udom,$uname,'environment',  
                                                      &GDBM_WRCREAT(),"P",$what);  
                         if ($hashref) {  
                             $hashref->{$key}=$now;  
                             if (!&untie_user_hash($hashref)) {  
                                 &logthis("error: ".($!+0)." untie (GDBM) failed ".  
                                          "when updating internal.contentchange");  
                             }  
                         }  
                     }  
                 }  
  &Reply($client, "ok\n", $userinput);   &Reply($client, "ok\n", $userinput);
     }      }
  }      }   
Line 3266  sub dump_profile_database { Line 3249  sub dump_profile_database {
 #                               range       - optional range of entries  #                               range       - optional range of entries
 #                                             e.g., 10-20 would return the  #                                             e.g., 10-20 would return the
 #                                             10th to 19th items, etc.    #                                             10th to 19th items, etc.  
   #                               extra       - optional ref to hash of
   #                                             additional args. currently
   #                                             skipcheck is only key used.   
 #   $client                   - Channel open on the client.  #   $client                   - Channel open on the client.
 # Returns:  # Returns:
 #    1    - Continue processing.  #    1    - Continue processing.
Line 3275  sub dump_profile_database { Line 3261  sub dump_profile_database {
 sub dump_with_regexp {  sub dump_with_regexp {
     my ($cmd, $tail, $client) = @_;      my ($cmd, $tail, $client) = @_;
   
       #TODO encapsulate $clientname and $clientversion in a object.
       my $res = LONCAPA::Lond::dump_with_regexp($cmd, $tail, $clientname, $clientversion);
       
       if ($res =~ /^error:/) {
           Failure($client, \$res, "$cmd:$tail");
       } else {
           Reply($client, \$res, "$cmd:$tail");
       }
       return 1;
   
     my $userinput = "$cmd:$tail";      my $userinput = "$cmd:$tail";
   
     my ($udom,$uname,$namespace,$regexp,$range)=split(/:/,$tail);      my ($udom,$uname,$namespace,$regexp,$range,$extra)=split(/:/,$tail);
     if (defined($regexp)) {      if (defined($regexp)) {
  $regexp=&unescape($regexp);   $regexp=&unescape($regexp);
     } else {      } else {
Line 3296  sub dump_with_regexp { Line 3291  sub dump_with_regexp {
     }      }
     my $hashref = &tie_user_hash($udom, $uname, $namespace,      my $hashref = &tie_user_hash($udom, $uname, $namespace,
  &GDBM_READER());   &GDBM_READER());
       my $skipcheck;
     if ($hashref) {      if ($hashref) {
         my $qresult='';          my $qresult='';
  my $count=0;   my $count=0;
 #  #
 # When dump is for roles.db, determine if LON-CAPA version checking is needed.  # When dump is for roles.db, determine if LON-CAPA version checking is needed.
 # Sessions on 2.10 and later do not require version checking, as that occurs  # Sessions on 2.10 and later will include skipcheck => 1 in extra args ref,
 # on the server hosting the user session, when constructing the roles/courses  # to indicate no version checking is needed (in this case, checking occurs
   # on the server hosting the user session, when constructing the roles/courses 
 # screen).  # screen).
 #  # 
         my $skipcheck;          if ($extra ne '') {
               $extra = &Apache::lonnet::thaw_unescape($extra);
               $skipcheck = $extra->{'skipcheck'};
           }
         my @ids = &Apache::lonnet::current_machine_ids();          my @ids = &Apache::lonnet::current_machine_ids();
         my (%homecourses,$major,$minor,$now);          my (%homecourses,$major,$minor,$now);
 #  # 
 # If dump is for roles.db from a pre-2.10 server, determine the LON-CAPA  # If dump is for roles.db from a pre-2.10 server, determine the LON-CAPA   
 # version on the server which requested the data. For LON-CAPA 2.9, the  # version on the server which requested the data. For LON-CAPA 2.9, the  
 # client session will have sent its LON-CAPA version when initiating the  # client session will have sent its LON-CAPA version when initiating the
 # connection. For LON-CAPA 2.8 and older, the version is retrieved from  # connection. For LON-CAPA 2.8 and older, the version is retrieved from
 # the global %loncaparevs in lonnet.pm.  # the global %loncaparevs in lonnet.pm.
 #   # 
 #           if (($namespace eq 'roles') && (!$skipcheck)) {
         if ($namespace eq 'roles') {  
             my $loncaparev = $clientversion;              my $loncaparev = $clientversion;
             if ($loncaparev eq '') {              if ($loncaparev eq '') {
                 $loncaparev = $Apache::lonnet::loncaparevs{$clientname};                  $loncaparev = $Apache::lonnet::loncaparevs{$clientname};
Line 3325  sub dump_with_regexp { Line 3324  sub dump_with_regexp {
                 $major = $1;                  $major = $1;
                 $minor = $2;                  $minor = $2;
             }              }
             if (($major > 2) || (($major == 2) && ($minor > 9))) {  
                 $skipcheck = 1;  
             }  
             $now = time;              $now = time;
         }          }
  while (my ($key,$value) = each(%$hashref)) {   while (my ($key,$value) = each(%$hashref)) {
             if (($namespace eq 'roles') && (!$skipcheck)) {              if ($namespace eq 'roles') {
                 if ($key =~ m{^/($LONCAPA::match_domain)/($LONCAPA::match_courseid)(/?[^_]*)_(cc|co|in|ta|ep|ad|st|cr)$}) {                  if ($key =~ m{^/($LONCAPA::match_domain)/($LONCAPA::match_courseid)(/?[^_]*)_(cc|co|in|ta|ep|ad|st|cr)$}) {
                     my $cdom = $1;                      my $cdom = $1;
                     my $cnum = $2;                      my $cnum = $2;
                     my ($role,$roleend,$rolestart) = split(/\_/,$value);                      unless ($skipcheck) {
                     if (!$roleend || $roleend > $now) {                          my ($role,$roleend,$rolestart) = split(/\_/,$value);
                           if (!$roleend || $roleend > $now) {
 #  #
 # For active course roles, check that requesting server is running a LON-CAPA  # For active course roles, check that requesting server is running a LON-CAPA
 # version which meets any version requirements for the course. Do not include  # version which meets any version requirements for the course. Do not include
Line 3347  sub dump_with_regexp { Line 3344  sub dump_with_regexp {
 # homeserver is the current server, or whether it is a different server.  # homeserver is the current server, or whether it is a different server.
 # In both cases, the course's version requirement needs to be retrieved.  # In both cases, the course's version requirement needs to be retrieved.
 #   # 
                         next unless (&releasereqd_check($cnum,$cdom,$key,$value,$major,                              next unless (&releasereqd_check($cnum,$cdom,$key,$value,$major,
                                                         $minor,\%homecourses,\@ids));                                                              $minor,\%homecourses,\@ids));
                           }
                     }                      }
                 }                  }
             }              }
Line 5104  sub validate_instcode_handler { Line 5102  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,$description,$credits) =       my ($outcome,$description) = 
         &localenroll::validate_instcode($dom,$instcode,$owner);          &localenroll::validate_instcode($dom,$instcode,$owner);
     my $result = &escape($outcome).'&'.&escape($description).'&'.      my $result = &escape($outcome).'&'.&escape($description);
                  &escape($credits);  
     &Reply($client, \$result, $userinput);      &Reply($client, \$result, $userinput);
   
     return 1;      return 1;
Line 6332  sub Debug { Line 6329  sub Debug {
 #     reply   - Text to send to client.  #     reply   - Text to send to client.
 #     request - Original request from client.  #     request - Original request from client.
 #  #
   #NOTE $reply must be terminated by exactly *one* \n. If $reply is a reference
   #this is done automatically ($$reply must not contain any \n in this case). 
   #If $reply is a string the caller has to ensure this.
 sub Reply {  sub Reply {
     my ($fd, $reply, $request) = @_;      my ($fd, $reply, $request) = @_;
     if (ref($reply)) {      if (ref($reply)) {
Line 6578  sub make_new_child { Line 6578  sub make_new_child {
 #---------------------------------------------------- kerberos 5 initialization  #---------------------------------------------------- kerberos 5 initialization
         &Authen::Krb5::init_context();          &Authen::Krb5::init_context();
  unless (($dist eq 'fedora5') || ($dist eq 'fedora4') ||     unless (($dist eq 'fedora5') || ($dist eq 'fedora4') ||  
  ($dist eq 'fedora6') || ($dist eq 'suse9.3') ||   ($dist eq 'fedora6') || ($dist eq 'suse9.3')) {
                 ($dist eq 'suse12.2')) {  
     &Authen::Krb5::init_ets();      &Authen::Krb5::init_ets();
  }   }
   
Line 7928  Place in B<logs/lond.log> Line 7927  Place in B<logs/lond.log>
   
 stores hash in namespace  stores hash in namespace
   
 =item rolesput  =item rolesputy
   
 put a role into a user's environment  put a role into a user's environment
   
Line 8045  Authen::Krb5 Line 8044  Authen::Krb5
   
 =head1 COREQUISITES  =head1 COREQUISITES
   
   none
   
 =head1 OSNAMES  =head1 OSNAMES
   
 linux  linux
Line 8132  or the CA's certificate in the call to l Line 8133  or the CA's certificate in the call to l
 <error> is the textual reason this failed.  Usual reasons:  <error> is the textual reason this failed.  Usual reasons:
   
 =over 2  =over 2
          
 =item Apache config file for loncapa  incorrect:  =item Apache config file for loncapa  incorrect:
    
 one of the variables   one of the variables 
 lonCertificateDirectory, lonnetCertificateAuthority, or lonnetCertificate  lonCertificateDirectory, lonnetCertificateAuthority, or lonnetCertificate
 undefined or incorrect  undefined or incorrect
Line 8253  Could not rewrite the Line 8254  Could not rewrite the
 internal password file for a user  internal password file for a user
   
 =item Result of password change for <user> : <result>  =item Result of password change for <user> : <result>
                                                                        
 A unix password change for <user> was attempted   A unix password change for <user> was attempted 
 and the pipe returned <result>    and the pipe returned <result>  
   
Line 8282  lond has been asked to exit by its clien Line 8283  lond has been asked to exit by its clien
 client systemand <input> is the full exit command sent to the server.  client systemand <input> is the full exit command sent to the server.
   
 =item Red CRITICAL: ABNORMAL EXIT. child <pid> for server <hostname> died through a crass with this error->[<message>].  =item Red CRITICAL: ABNORMAL EXIT. child <pid> for server <hostname> died through a crass with this error->[<message>].
                                                    
 A lond child terminated.  NOte that this termination can also occur when the  A lond child terminated.  NOte that this termination can also occur when the
 child receives the QUIT or DIE signals.  <pid> is the process id of the child,  child receives the QUIT or DIE signals.  <pid> is the process id of the child,
 <hostname> the host lond is working for, and <message> the reason the child died  <hostname> the host lond is working for, and <message> the reason the child died
Line 8366  file when sent it's USR1 signal.  That p Line 8367  file when sent it's USR1 signal.  That p
 assumed to be hung in some un-fixable way.  assumed to be hung in some un-fixable way.
   
 =item Finished checking children                     =item Finished checking children                   
    
 Master processs's USR1 processing is cojmplete.  Master processs's USR1 processing is cojmplete.
   
 =item (Red) CRITICAL: ------- Starting ------              =item (Red) CRITICAL: ------- Starting ------            
Line 8380  Started a new child process for <client> Line 8381  Started a new child process for <client>
 connected to the child.  This was as a result of a TCP/IP connection from a client.  connected to the child.  This was as a result of a TCP/IP connection from a client.
   
 =item Unable to determine who caller was, getpeername returned nothing  =item Unable to determine who caller was, getpeername returned nothing
                                                     
 In child process initialization.  either getpeername returned undef or  In child process initialization.  either getpeername returned undef or
 a zero sized object was returned.  Processing continues, but in my opinion,  a zero sized object was returned.  Processing continues, but in my opinion,
 this should be cause for the child to exit.  this should be cause for the child to exit.
Line 8391  In child process initialization.  The pe Line 8392  In child process initialization.  The pe
 The client address is stored as "Unavailable" and processing continues.  The client address is stored as "Unavailable" and processing continues.
   
 =item (Yellow) INFO: Connection <ip> <name> connection type = <type>  =item (Yellow) INFO: Connection <ip> <name> connection type = <type>
                                                     
 In child initialization.  A good connectionw as received from <ip>.  In child initialization.  A good connectionw as received from <ip>.
   
 =over 2  =over 2
Line 8441  The client (<client> is the peer's name Line 8442  The client (<client> is the peer's name
 negotiated an SSL connection with this child process.  negotiated an SSL connection with this child process.
   
 =item (Green) Successful insecure authentication with <client>  =item (Green) Successful insecure authentication with <client>
                                                      
   
 The client has successfully negotiated an  insecure connection withthe child process.  The client has successfully negotiated an  insecure connection withthe child process.
   

Removed from v.1.489.2.3  
changed lines
  Added in v.1.490


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