--- loncom/lond 2012/04/26 19:51:40 1.492 +++ loncom/lond 2013/04/04 14:56:36 1.499 @@ -2,7 +2,7 @@ # The LearningOnline Network # lond "LON Daemon" Server (port "LOND" 5663) # -# $Id: lond,v 1.492 2012/04/26 19:51:40 droeschl Exp $ +# $Id: lond,v 1.499 2013/04/04 14:56:36 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -61,7 +61,7 @@ my $DEBUG = 0; # Non zero to ena my $status=''; my $lastlog=''; -my $VERSION='$Revision: 1.492 $'; #' stupid emacs +my $VERSION='$Revision: 1.499 $'; #' stupid emacs my $remoteVERSION; my $currenthostid="default"; my $currentdomainid; @@ -2370,6 +2370,24 @@ sub fetch_user_file_handler { unlink($transname); &Failure($client, "failed\n", $userinput); } 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); } } @@ -3176,6 +3194,17 @@ sub get_profile_keys { sub dump_profile_database { my ($cmd, $tail, $client) = @_; + my $res = LONCAPA::Lond::dump_profile_database($tail); + + if ($res =~ /^error:/) { + Failure($client, \$res, "$cmd:$tail"); + } else { + Reply($client, \$res, "$cmd:$tail"); + } + + return 1; + + #TODO remove my $userinput = "$cmd:$tail"; my ($udom,$uname,$namespace) = split(/:/,$tail); @@ -3254,7 +3283,7 @@ sub dump_profile_database { sub dump_with_regexp { my ($cmd, $tail, $client) = @_; - my $res = LONCAPA::Lond::dump_with_regexp($tail, $clientname, $clientversion); + my $res = LONCAPA::Lond::dump_with_regexp($tail, $clientversion); if ($res =~ /^error:/) { Failure($client, \$res, "$cmd:$tail"); @@ -3838,6 +3867,17 @@ sub put_course_id_hash_handler { # a reply is written to $client. sub dump_course_id_handler { my ($cmd, $tail, $client) = @_; + + my $res = LONCAPA::Lond::dump_course_id_handler($tail); + if ($res =~ /^error:/) { + Failure($client, \$res, "$cmd:$tail"); + } else { + Reply($client, \$res, "$cmd:$tail"); + } + + return 1; + + #TODO remove my $userinput = "$cmd:$tail"; my ($udom,$since,$description,$instcodefilter,$ownerfilter,$coursefilter, @@ -4974,9 +5014,10 @@ sub validate_instcode_handler { my ($dom,$instcode,$owner) = split(/:/, $tail); $instcode = &unescape($instcode); $owner = &unescape($owner); - my ($outcome,$description) = + my ($outcome,$description,$credits) = &localenroll::validate_instcode($dom,$instcode,$owner); - my $result = &escape($outcome).'&'.&escape($description); + my $result = &escape($outcome).'&'.&escape($description).'&'. + &escape($credits); &Reply($client, \$result, $userinput); return 1; @@ -6450,7 +6491,8 @@ sub make_new_child { #---------------------------------------------------- kerberos 5 initialization &Authen::Krb5::init_context(); 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') || ($dist eq 'suse12.3')) { &Authen::Krb5::init_ets(); } @@ -6495,10 +6537,13 @@ sub make_new_child { # # If the remote is attempting a local init... give that a try: # + logthis("remotereq: $remotereq"); (my $i, my $inittype, $clientversion) = split(/:/, $remotereq); # For LON-CAPA 2.9, 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 the global %loncaparevs in lonnet.pm. + # $clientversion contains path to keyfile if $inittype eq 'local' + # it's overridden below in this case $clientversion ||= $Apache::lonnet::loncaparevs{$clientname}; # If the connection type is ssl, but I didn't get my @@ -7364,41 +7409,6 @@ sub get_usersession_config { } -# -# get_courseinfo_hash() is used to retrieve course information from the db -# file: nohist_courseids.db for a course for which the current server is *not* -# the home server. -# -# A hash of a hash will be retrieved. The outer hash contains a single key -- -# courseID -- for the course for which the data are being requested. -# The contents of the inner hash, for that single item in the outer hash -# are returned (and cached in memcache for 10 minutes). -# - -sub get_courseinfo_hash { - my ($cnum,$cdom,$home) = @_; - my %info; - eval { - local($SIG{ALRM}) = sub { die "timeout\n"; }; - local($SIG{__DIE__})='DEFAULT'; - alarm(3); - %info = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',$cnum,1,[$home],'.'); - alarm(0); - }; - if ($@) { - if ($@ eq "timeout\n") { - &logthis("WARNING courseiddump for $cnum:$cdom from $home timedout"); - } else { - &logthis("WARNING unexpected error during eval of call for courseiddump from $home"); - } - } else { - if (ref($info{$cdom.'_'.$cnum}) eq 'HASH') { - my $hashid = $cdom.':'.$cnum; - return &Apache::lonnet::do_cache_new('courseinfo',$hashid,$info{$cdom.'_'.$cnum},600); - } - } - return; -} sub distro_and_arch { @@ -7612,7 +7622,7 @@ Place in B stores hash in namespace -=item rolesputy +=item rolesput put a role into a user's environment