version 1.1077, 2010/07/25 02:58:05
|
version 1.1081, 2010/08/17 22:22:05
|
Line 76 use HTTP::Date;
|
Line 76 use HTTP::Date;
|
use Image::Magick; |
use Image::Magick; |
|
|
use vars qw(%perlvar %spareid %pr %prp $memcache %packagetab $tmpdir |
use vars qw(%perlvar %spareid %pr %prp $memcache %packagetab $tmpdir |
$_64bit %env %protocol %loncaparevs %serverhomeIDs); |
$_64bit %env %protocol %loncaparevs %serverhomeIDs %needsrelease); |
|
|
my (%badServerCache, $memcache, %courselogs, %accesshash, %domainrolehash, |
my (%badServerCache, $memcache, %courselogs, %accesshash, %domainrolehash, |
%userrolehash, $processmarker, $dumpcount, %coursedombuf, |
%userrolehash, $processmarker, $dumpcount, %coursedombuf, |
Line 222 sub get_server_loncaparev {
|
Line 222 sub get_server_loncaparev {
|
my @ids=¤t_machine_ids(); |
my @ids=¤t_machine_ids(); |
if (grep(/^\Q$lonhost\E$/,@ids)) { |
if (grep(/^\Q$lonhost\E$/,@ids)) { |
$answer = $perlvar{'lonVersion'}; |
$answer = $perlvar{'lonVersion'}; |
if ($answer =~ /^[\'\"]?([\d.\-]+)[\'\"]?$/) { |
if ($answer =~ /^[\'\"]?([\w.\-]+)[\'\"]?$/) { |
$loncaparev = $1; |
$loncaparev = $1; |
} |
} |
} else { |
} else { |
Line 238 sub get_server_loncaparev {
|
Line 238 sub get_server_loncaparev {
|
my $response=$ua->request($request); |
my $response=$ua->request($request); |
unless ($response->is_error()) { |
unless ($response->is_error()) { |
my $content = $response->content; |
my $content = $response->content; |
if ($content =~ /<p>VERSION\:\s*([\d.\-]+)<\/p>/) { |
if ($content =~ /<p>VERSION\:\s*([\w.\-]+)<\/p>/) { |
$loncaparev = $1; |
$loncaparev = $1; |
} |
} |
} |
} |
} else { |
} else { |
$loncaparev = $loncaparevs{$lonhost}; |
$loncaparev = $loncaparevs{$lonhost}; |
} |
} |
} elsif ($answer =~ /^[\'\"]?([\d.\-]+)[\'\"]?$/) { |
} elsif ($answer =~ /^[\'\"]?([\w.\-]+)[\'\"]?$/) { |
$loncaparev = $1; |
$loncaparev = $1; |
} |
} |
} |
} |
Line 3904 sub coursedescription {
|
Line 3904 sub coursedescription {
|
return %returnhash; |
return %returnhash; |
} |
} |
|
|
|
sub update_released_required { |
|
my ($needsrelease,$cdom,$cnum,$chome,$cid) = @_; |
|
if ($cdom eq '' || $cnum eq '' || $chome eq '' || $cid eq '') { |
|
$cid = $env{'request.course.id'}; |
|
$cdom = $env{'course.'.$cid.'.domain'}; |
|
$cnum = $env{'course.'.$cid.'.num'}; |
|
$chome = $env{'course.'.$cid.'.home'}; |
|
} |
|
if ($needsrelease) { |
|
my %curr_reqd_hash = &userenvironment($cdom,$cnum,'internal.releaserequired'); |
|
my $needsupdate; |
|
if ($curr_reqd_hash{'internal.releaserequired'} eq '') { |
|
$needsupdate = 1; |
|
} else { |
|
my ($currmajor,$currminor) = split(/\./,$curr_reqd_hash{'internal.releaserequired'}); |
|
my ($needsmajor,$needsminor) = split(/\./,$needsrelease); |
|
if (($currmajor < $needsmajor) || ($currmajor == $needsmajor && $currminor < $needsminor)) { |
|
$needsupdate = 1; |
|
} |
|
} |
|
if ($needsupdate) { |
|
my %needshash = ( |
|
'internal.releaserequired' => $needsrelease, |
|
); |
|
my $putresult = &put('environment',\%needshash,$cdom,$cnum); |
|
if ($putresult eq 'ok') { |
|
&appenv({'course.'.$cid.'.internal.releaserequired' => $needsrelease}); |
|
my %crsinfo = &courseiddump($cdom,'.',1,'.','.',$cnum,undef,undef,'.'); |
|
if (ref($crsinfo{$cid}) eq 'HASH') { |
|
$crsinfo{$cid}{'releaserequired'} = $needsrelease; |
|
&courseidput($cdom,\%crsinfo,$chome,'notime'); |
|
} |
|
} |
|
} |
|
} |
|
return; |
|
} |
|
|
# -------------------------------------------------See if a user is privileged |
# -------------------------------------------------See if a user is privileged |
|
|
sub privileged { |
sub privileged { |
Line 3943 sub rolesinit {
|
Line 3981 sub rolesinit {
|
my ($domain,$username,$authhost)=@_; |
my ($domain,$username,$authhost)=@_; |
my $now=time; |
my $now=time; |
my %userroles = ('user.login.time' => $now); |
my %userroles = ('user.login.time' => $now); |
my $rolesdump=reply("dump:$domain:$username:roles",$authhost); |
my $extra = &freeze_escape({'clientcheckrole' => 1}); |
|
my $rolesdump=reply("dump:$domain:$username:roles:.::$extra",$authhost); |
if (($rolesdump eq 'con_lost') || ($rolesdump eq '') || |
if (($rolesdump eq 'con_lost') || ($rolesdump eq '') || |
($rolesdump =~ /^error:/)) { |
($rolesdump =~ /^error:/)) { |
return \%userroles; |
return \%userroles; |
} |
} |
my %allroles=(); |
my %allroles=(); |
Line 10138 sub get_dns {
|
Line 10177 sub get_dns {
|
|
|
} |
} |
|
|
|
sub all_loncaparevs { |
|
return qw(1.1 1.2 1.3 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10); |
|
} |
|
|
BEGIN { |
BEGIN { |
|
|
# ----------------------------------- Read loncapa.conf and loncapa_apache.conf |
# ----------------------------------- Read loncapa.conf and loncapa_apache.conf |
Line 10241 BEGIN {
|
Line 10284 BEGIN {
|
} |
} |
} |
} |
|
|
sub all_loncaparevs { |
{ |
return qw(1.1 1.2 1.3 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10); |
my $file = $Apache::lonnet::perlvar{'lonTabDir'}.'/releaseslist.xml'; |
|
if (-e $file) { |
|
my $parser = HTML::LCParser->new($file); |
|
while (my $token = $parser->get_token()) { |
|
if ($token->[0] eq 'S') { |
|
my $item = $token->[1]; |
|
my $name = $token->[2]{'name'}; |
|
my $value = $token->[2]{'value'}; |
|
if ($item ne '' && $name ne '' && $value ne '') { |
|
my $release = $parser->get_text(); |
|
$release =~ s/(^\s*|\s*$ )//gx; |
|
$needsrelease{$item.':'.$name.':'.$value} = $release; |
|
} |
|
} |
|
} |
|
} |
} |
} |
|
|
# ------------- set up temporary directory |
# ------------- set up temporary directory |