--- loncom/lonnet/perl/lonnet.pm 2021/08/01 19:28:11 1.1462 +++ loncom/lonnet/perl/lonnet.pm 2021/08/04 21:06:33 1.1463 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.1462 2021/08/01 19:28:11 raeburn Exp $ +# $Id: lonnet.pm,v 1.1463 2021/08/04 21:06:33 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -7133,7 +7133,7 @@ sub dump { my $rep; if ($encrypt) { $rep=&reply("encrypt:edump:$udomain:$uname:$namespace:$regexp:$range",$uhome); - } else { + } else { $rep=&reply("dump:$udomain:$uname:$namespace:$regexp:$range",$uhome); } my @pairs=split(/\&/,$rep); @@ -9065,17 +9065,34 @@ sub deeplink_check { if ($deeplink eq '') { $allow = 1; } else { - my ($listed,$scope,$access) = split(/,/,$deeplink); - if ($access eq 'any') { + my ($state,$others,$listed,$scope,$protect) = split(/,/,$deeplink); + if ($state ne 'only') { $allow = 1; - } elsif ($deeplink_symb) { - if ($access eq 'only') { + } else { + my $check_deeplink_entry; + if ($protect ne 'none') { + my ($acctype,$item) = split(/:/,$protect); + if (($acctype eq 'ltic') && ($env{'user.linkprotector'})) { + if (grep(/^\Q$item\Ec$/,split(/,/,$env{'user.linkprotector'}))) { + $check_deeplink_entry = 1 + } + } elsif (($acctype eq 'ltid') && ($env{'user.linkprotector'})) { + if (grep(/^\Q$item\Ed$/,split(/,/,$env{'user.linkprotector'}))) { + $check_deeplink_entry = 1; + } + } elsif (($acctype eq 'key') && ($env{'user.deeplinkkey'})) { + if (grep(/^\Q$item\E$/,split(/,/,$env{'user.deeplinkkey'}))) { + $check_deeplink_entry = 1; + } + } + } + if (($protect eq 'none') || ($check_deeplink_entry)) { if ($scope eq 'res') { if ($symb eq $deeplink_symb) { $allow = 1; } } elsif (($scope eq 'map') || ($scope eq 'rec')) { - my ($map_from_symb,$map_from_login); + my ($map_from_symb,$map_from_login); $map_from_symb = &deversion((&decode_symb($symb))[0]); if ($deeplink_symb =~ /\.(page|sequence)$/) { $map_from_login = &deversion((&decode_symb($deeplink_symb))[2]); @@ -9093,23 +9110,6 @@ sub deeplink_check { } } } - } else { - my ($acctype,$item) = split(/:/,$access); - if (($acctype eq 'lti') && ($env{'user.linkprotector'})) { - if (grep(/^\Q$item\E$/,split(/,/,$env{'user.linkprotector'}))) { - my %tinyurls = &get('tiny',[$symb],$cdom,$cnum); - if (grep(/\Q$tinyurls{$symb}\E$/,split(/,/,$env{'user.linkproturis'}))) { - $allow = 1; - } - } - } elsif (($acctype eq 'key') && ($env{'user.deeplinkkey'})) { - if (grep(/^\Q$item\E$/,split(/,/,$env{'user.deeplinkkey'}))) { - my %tinyurls = &get('tiny',[$symb],$cdom,$cnum); - if (grep(/\Q$tinyurls{$symb}\E$/,split(/,/,$env{'user.keyedlinkuri'}))) { - $allow = 1; - } - } - } } } } @@ -12215,6 +12215,23 @@ sub get_domain_lti { return %lti; } +sub get_course_lti { + my ($cnum,$cdom) = @_; + my $hashid=$cdom.'_'.$cnum; + my %courselti; + my ($result,$cached)=&is_cached_new('courselti',$hashid); + if (defined($cached)) { + if (ref($result) eq 'HASH') { + %courselti = %{$result}; + } + } else { + %courselti = &dump('lti',$cdom,$cnum,undef,undef,undef,1); + my $cachetime = 24*60*60; + &do_cache_new('courselti',$hashid,\%courselti,$cachetime); + } + return %courselti; +} + sub get_numsuppfiles { my ($cnum,$cdom,$ignorecache)=@_; my $hashid=$cnum.':'.$cdom;