version 1.102, 2022/02/15 04:28:01
|
version 1.105, 2022/02/21 15:44:57
|
Line 224 use Apache::lonparmset;
|
Line 224 use Apache::lonparmset;
|
use Apache::courseclassifier; |
use Apache::courseclassifier; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use LONCAPA qw(:DEFAULT :match); |
use LONCAPA qw(:DEFAULT :match); |
|
use Crypt::CBC; |
|
|
my $registered_cleanup; |
my $registered_cleanup; |
my $modified_courses; |
my $modified_courses; |
Line 1477 sub process_changes {
|
Line 1478 sub process_changes {
|
|
|
sub process_linkprot { |
sub process_linkprot { |
my ($cdom,$cnum,$values,$changes,$context) = @_; |
my ($cdom,$cnum,$values,$changes,$context) = @_; |
my ($dest,$ltiauth,$errors,%linkprot); |
my ($home,$dest,$ltiauth,$privkey,$privnum,$cipher,$errors,%linkprot); |
if (ref($values) eq 'HASH') { |
if (ref($values) eq 'HASH') { |
foreach my $id (keys(%{$values})) { |
foreach my $id (keys(%{$values})) { |
if ($id =~ /^\d+$/) { |
if ($id =~ /^\d+$/) { |
Line 1487 sub process_linkprot {
|
Line 1488 sub process_linkprot {
|
} |
} |
} |
} |
} |
} |
|
my %domdefs = &Apache::lonnet::get_domain_defaults($cdom); |
|
my @ids=&Apache::lonnet::current_machine_ids(); |
|
if ($context eq 'domain') { |
|
$home = &Apache::lonnet::domain($cdom,'primary'); |
|
} else { |
|
$home = &Apache::lonnet::homeserver($cnum,$cdom); |
|
} |
|
if ((($context eq 'domain') && ($domdefs{'linkprotenc_dom'})) || |
|
(($context eq 'course') && ($domdefs{'linkprotenc_crs'}))) { |
|
unless (($home eq 'no_host') || ($home eq '')) { |
|
if (grep(/^\Q$home\E$/,@ids)) { |
|
if (ref($domdefs{'privhosts'}) eq 'ARRAY') { |
|
if (grep(/^\Q$home\E$/,@{$domdefs{'privhosts'}})) { |
|
my %privhash = &Apache::lonnet::restore_dom('lti','private',$cdom,$home,1); |
|
$privkey = $privhash{'key'}; |
|
$privnum = $privhash{'version'}; |
|
if (($privnum) && ($privkey ne '')) { |
|
$cipher = Crypt::CBC->new({'key' => $privkey, |
|
'cipher' => 'DES'}); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
if ($context eq 'domain') { |
if ($context eq 'domain') { |
$dest = '/adm/domainprefs'; |
$dest = '/adm/domainprefs'; |
$ltiauth = 1; |
$ltiauth = 1; |
Line 1567 sub process_linkprot {
|
Line 1593 sub process_linkprot {
|
my $reqitem = 'form.linkprot_requser_'.$idx; |
my $reqitem = 'form.linkprot_requser_'.$idx; |
$env{$reqitem} =~ s/(`)/'/g; |
$env{$reqitem} =~ s/(`)/'/g; |
unless ($idx eq 'add') { |
unless ($idx eq 'add') { |
if ($current{'requser'} ne $env{$reqitem}) { |
if ((!$current{'requser'} && $env{$reqitem}) || |
|
($current{'requser'} && !$env{$reqitem})) { |
$haschanges{$itemid} = 1; |
$haschanges{$itemid} = 1; |
} |
} |
} |
} |
Line 1619 sub process_linkprot {
|
Line 1646 sub process_linkprot {
|
if ($current{'usable'}) { |
if ($current{'usable'}) { |
if ($env{'form.linkprot_changesecret_'.$idx}) { |
if ($env{'form.linkprot_changesecret_'.$idx}) { |
if ($env{$secretitem} ne '') { |
if ($env{$secretitem} ne '') { |
$linkprot{$itemid}{'secret'} = $env{$secretitem}; |
if ($privnum && $cipher) { |
|
$linkprot{$itemid}{'secret'} = $cipher->encrypt_hex($env{$secretitem}); |
|
$linkprot{$itemid}{'cipher'} = $privnum; |
|
} else { |
|
$linkprot{$itemid}{'secret'} = $env{$secretitem}; |
|
} |
$haschanges{$itemid} = 1; |
$haschanges{$itemid} = 1; |
} |
} |
} else { |
} else { |
$linkprot{$itemid}{'secret'} = $current{'secret'}; |
$linkprot{$itemid}{'secret'} = $current{'secret'}; |
} |
} |
} elsif ($env{$secretitem} ne '') { |
} elsif ($env{$secretitem} ne '') { |
$linkprot{$itemid}{'secret'} = $env{$secretitem}; |
if ($privnum && $cipher) { |
|
$linkprot{$itemid}{'secret'} = $cipher->encrypt_hex($env{$secretitem}); |
|
$linkprot{$itemid}{'cipher'} = $privnum; |
|
} else { |
|
$linkprot{$itemid}{'secret'} = $env{$secretitem}; |
|
} |
$haschanges{$itemid} = 1; |
$haschanges{$itemid} = 1; |
} |
} |
} |
} |
Line 2141 sub store_changes {
|
Line 2178 sub store_changes {
|
|
|
sub store_linkprot { |
sub store_linkprot { |
my ($cdom,$cnum,$context,$changes,$oldlinkprot) = @_; |
my ($cdom,$cnum,$context,$changes,$oldlinkprot) = @_; |
my ($ltiauth,$lti_save_error,$output,$error,%ltienc,@deletions); |
my ($ltiauth,$home,$lti_save_error,$output,$error,%ltienc,@deletions); |
if ($context eq 'domain') { |
if ($context eq 'domain') { |
$ltiauth = 1; |
$ltiauth = 1; |
|
$home = &Apache::lonnet::domain($cdom,'primary'); |
} else { |
} else { |
|
$home = &Apache::lonnet::homeserver($cnum,$cdom); |
if (exists($env{'course.'.$env{'request.course.id'}.'.internal.ltiauth'})) { |
if (exists($env{'course.'.$env{'request.course.id'}.'.internal.ltiauth'})) { |
$ltiauth = $env{'course.'.$env{'request.course.id'}.'.internal.ltiauth'}; |
$ltiauth = $env{'course.'.$env{'request.course.id'}.'.internal.ltiauth'}; |
} else { |
} else { |
Line 2170 sub store_linkprot {
|
Line 2209 sub store_linkprot {
|
} |
} |
} |
} |
} |
} |
my $chome = &Apache::lonnet::homeserver($cnum,$cdom); |
|
my @ids=&Apache::lonnet::current_machine_ids(); |
my @ids=&Apache::lonnet::current_machine_ids(); |
if (keys(%ltienc) > 0) { |
if (keys(%ltienc) > 0) { |
if ($context eq 'domain') { |
if ($context eq 'domain') { |
Line 2180 sub store_linkprot {
|
Line 2218 sub store_linkprot {
|
} |
} |
} |
} |
} else { |
} else { |
unless (($chome eq 'no_host') || ($chome eq '')) { |
unless (($home eq 'no_host') || ($home eq '')) { |
my $allowed; |
my $allowed; |
foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } } |
foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } } |
if ($allowed) { |
if ($allowed) { |
Line 2202 sub store_linkprot {
|
Line 2240 sub store_linkprot {
|
if (&Apache::lonnet::put('lti',$changes,$cdom,$cnum,1) eq 'ok') { |
if (&Apache::lonnet::put('lti',$changes,$cdom,$cnum,1) eq 'ok') { |
my $hashid=$cdom.'_'.$cnum; |
my $hashid=$cdom.'_'.$cnum; |
&Apache::lonnet::devalidate_cache_new('courselti',$hashid); |
&Apache::lonnet::devalidate_cache_new('courselti',$hashid); |
unless (($chome eq 'no_host') || ($chome eq '')) { |
unless (($home eq 'no_host') || ($home eq '')) { |
if (grep(/^\Q$chome\E$/,@ids)) { |
if (grep(/^\Q$home\E$/,@ids)) { |
&Apache::lonnet::devalidate_cache_new('courseltienc',$hashid); |
&Apache::lonnet::devalidate_cache_new('courseltienc',$hashid); |
} |
} |
} |
} |
Line 2223 sub store_linkprot {
|
Line 2261 sub store_linkprot {
|
if (exists($ltienc{$id}{$title})) { |
if (exists($ltienc{$id}{$title})) { |
if ($title eq 'secret') { |
if ($title eq 'secret') { |
my $length = length($ltienc{$id}{$title}); |
my $length = length($ltienc{$id}{$title}); |
$display .= $desc{$title}.': '.('*' x $length).', '; |
$display .= $desc{$title}.': ['.&mt('not shown').'], '; |
} else { |
} else { |
$display .= $desc{$title}.': '.$ltienc{$id}{$title}.', '; |
$display .= $desc{$title}.': '.$ltienc{$id}{$title}.', '; |
} |
} |
Line 5585 sub menucollections_display {
|
Line 5623 sub menucollections_display {
|
|
|
sub print_linkprotection { |
sub print_linkprotection { |
my ($cdom,$cnum,$settings,$rowtotal,$crstype,$noedit,$context) = @_; |
my ($cdom,$cnum,$settings,$rowtotal,$crstype,$noedit,$context) = @_; |
unless (ref($settings) eq 'HASH') { |
|
return; |
|
} |
|
|
|
my %linkprotection; |
my %linkprotection; |
my $count = 0; |
my $count = 0; |
Line 5632 sub print_linkprotection {
|
Line 5667 sub print_linkprotection {
|
} |
} |
} |
} |
|
|
if (ref($settings->{'linkprot'}) eq 'HASH') { |
if ((ref($settings) eq 'HASH') && (ref($settings->{'linkprot'}) eq 'HASH')) { |
if (keys(%{$settings->{'linkprot'}})) { |
if (keys(%{$settings->{'linkprot'}})) { |
my @current = sort { $a <=> $b } keys(%{$settings->{'linkprot'}}); |
my @current = sort { $a <=> $b } keys(%{$settings->{'linkprot'}}); |
$next += $current[-1]; |
$next += $current[-1]; |
Line 5755 sub print_linkprotection {
|
Line 5790 sub print_linkprotection {
|
$datatable .= '<tr '.$css_class.'><td><span class="LC_nobreak">'."\n". |
$datatable .= '<tr '.$css_class.'><td><span class="LC_nobreak">'."\n". |
'<input type="hidden" name="linkprot_maxnum" value="'.$next.'" />'."\n". |
'<input type="hidden" name="linkprot_maxnum" value="'.$next.'" />'."\n". |
'<input type="checkbox" name="linkprot_add" value="1"'.$disabled.' />'.&mt('Add').'</span></td>'."\n". |
'<input type="checkbox" name="linkprot_add" value="1"'.$disabled.' />'.&mt('Add').'</span></td>'."\n". |
'<td>'; |
'<td width="100%">'; |
my ($usersty,$onclickrequser,%checkedrequser); |
my ($usersty,$onclickrequser,%checkedrequser); |
if ($ltiauth) { |
if ($ltiauth) { |
$usersty = 'display:none'; |
$usersty = 'display:none'; |