--- loncom/lonnet/perl/lonnet.pm 2002/09/17 20:01:30 1.267.4.7 +++ loncom/lonnet/perl/lonnet.pm 2002/08/17 18:23:27 1.268 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.267.4.7 2002/09/17 20:01:30 matthew Exp $ +# $Id: lonnet.pm,v 1.268 2002/08/17 18:23:27 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -351,10 +351,9 @@ sub delenv { # ------------------------------ Find server with least workload from spare.tab sub spareserver { - my $loadpercent = shift; my $tryserver; my $spareserver=''; - my $lowestserver=$loadpercent; + my $lowestserver=100; foreach $tryserver (keys %spareid) { my $answer=reply('load',$tryserver); if (($answer =~ /\d/) && ($answer<$lowestserver)) { @@ -2138,8 +2137,7 @@ sub modifyuserauth { my $uhome=&homeserver($uname,$udom); unless (&allowed('mau',$udom)) { return 'refused'; } &logthis('Call to modify user authentication '.$udom.', '.$uname.', '. - $umode.' by '.$ENV{'user.name'}.' at '.$ENV{'user.domain'}. - ' in domain '.$ENV{'request.role.domain'}); + $umode.' by '.$ENV{'user.name'}.' at '.$ENV{'user.domain'}); my $reply=&reply('encrypt:changeuserauth:'.$udom.':'.$uname.':'.$umode.':'. &escape($upass),$uhome); &log($ENV{'user.domain'},$ENV{'user.name'},$ENV{'user.home'}, @@ -2170,8 +2168,7 @@ sub modifyuser { $last.', '.$gene.'(forceid: '.$forceid.')'. (defined($desiredhome) ? ' desiredhome = '.$desiredhome : ' desiredhome not specified'). - ' by '.$ENV{'user.name'}.' at '.$ENV{'user.domain'}. - ' in domain '.$ENV{'request.role.domain'}); + ' by '.$ENV{'user.name'}.' at '.$ENV{'user.domain'}); my $uhome=&homeserver($uname,$udom,'true'); # ----------------------------------------------------------------- Create User if (($uhome eq 'no_host') && ($umode) && ($upass)) { @@ -2431,30 +2428,6 @@ sub dirlist { } } -# --------------------------------------------- GetFileTimestamp -# This function utilizes dirlist and returns the date stamp for -# when it was last modified. It will also return an error of -1 -# if an error occurs - -sub GetFileTimestamp { - my ($studentDomain,$studentName,$filename,$root)=@_; - $studentDomain=~s/\W//g; - $studentName=~s/\W//g; - my $subdir=$studentName.'__'; - $subdir =~ s/(.)(.)(.).*/$1\/$2\/$3/; - my $proname="$studentDomain/$subdir/$studentName"; - $proname .= '/'.$filename; - my @dir = &Apache::lonnet::dirlist($proname, $studentDomain, $studentName, - $root); - my $fileStat = $dir[0]; - my @stats = split('&', $fileStat); - if($stats[0] ne 'empty' && $stats[0] ne 'no_such_dir') { - return $stats[9]; - } else { - return -1; - } -} - # -------------------------------------------------------- Value of a Condition sub directcondval { @@ -2538,7 +2511,7 @@ sub courseresdata { # --------------------------------------------------------- Value of a Variable sub EXT { - my ($varname,$symbparm,$udom,$uname,)=@_; + my ($varname,$symbparm,$udom,$uname)=@_; unless ($varname) { return ''; } @@ -2695,16 +2668,10 @@ sub EXT { # --------------------------------------------- last, look in resource metadata $spacequalifierrest=~s/\./\_/; - my $filename; - if (!$symbparm) { $symbparm=&symbread(); } - if ($symbparm) { - $filename=(split(/\_\_\_/,$symbparm))[2]; - } else { - $filename=$ENV{'request.filename'}; - } - my $metadata=&metadata($filename,$spacequalifierrest); + my $metadata=&metadata($ENV{'request.filename'},$spacequalifierrest); if ($metadata) { return $metadata; } - $metadata=&metadata($filename,'parameter_'.$spacequalifierrest); + $metadata=&metadata($ENV{'request.filename'}, + 'parameter_'.$spacequalifierrest); if ($metadata) { return $metadata; } # ------------------------------------------------------------------ Cascade up @@ -2753,7 +2720,7 @@ sub metadata { # Look at timestamp of caching # Everything is cached by the main uri, libraries are never directly cached # - unless (abs($metacache{$uri.':cachedtimestamp'}-time)<600 && !defined($liburi)) { + unless (abs($metacache{$uri.':cachedtimestamp'}-time)<600) { # # Is this a recursive call for a library? # @@ -2776,7 +2743,7 @@ sub metadata { my $package=$token->[2]->{'package'}; my $keyroot=''; if ($prefix) { - $keyroot.=$prefix; + $keyroot.='_'.$prefix; } else { if (defined($token->[2]->{'part'})) { $keyroot.='_'.$token->[2]->{'part'}; @@ -2834,14 +2801,12 @@ sub metadata { # # Importing a library here # + if (defined($depthcount)) { $depthcount++; } else + { $depthcount=0; } if ($depthcount<20) { - my $location=$parser->get_text('/import'); - my $dir=$filename; - $dir=~s|[^/]*$||; - $location=&filelocation($dir,$location); - foreach (sort(split(/\,/,&metadata($uri,'keys', - $location,$unikey, - $depthcount+1)))) { + foreach (split(/\,/,&metadata($uri,'keys', + $parser->get_text('/import'),$unikey, + $depthcount))) { $metathesekeys{$_}=1; } } @@ -2866,9 +2831,8 @@ sub metadata { # the next is the end of "start tag" } } - $metacache{$uri.':keys'}=join(',',keys %metathesekeys); &metadata_generate_part0(\%metathesekeys,\%metacache,$uri); - $metacache{$uri.':allpossiblekeys'}=join(',',keys %metathesekeys); + $metacache{$uri.':keys'}=join(',',keys %metathesekeys); $metacache{$uri.':cachedtimestamp'}=time; # this is the end of "was not already recently cached } @@ -3171,6 +3135,14 @@ sub declutter { return $thisfn; } +# ------------------------------------------------------------- Clutter up URLs + +sub clutter { + my $thisfn='/'.&declutter(shift); + unless ($thisfn=~/^\/(uploaded|adm)\//) { $thisfn='/res'.$thisfn; } + return $thisfn; +} + # -------------------------------------------------------- Escape Special Chars sub escape { @@ -3248,7 +3220,7 @@ BEGIN { while (my $configline=<$config>) { chomp($configline); - if ($configline) { + if (($configline) && ($configline ne $perlvar{'lonHostID'})) { $spareid{$configline}=1; } }