--- loncom/lonnet/perl/lonnet.pm 2020/05/13 01:58:16 1.1421 +++ loncom/lonnet/perl/lonnet.pm 2020/05/13 17:44:10 1.1422 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.1421 2020/05/13 01:58:16 raeburn Exp $ +# $Id: lonnet.pm,v 1.1422 2020/05/13 17:44:10 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -3383,6 +3383,32 @@ sub repcopy { } } +# ------------------------------------------------- Unsubscribe from a resource + +sub unsubscribe { + my ($fname) = @_; + my $answer; + if ($fname=~/\/(aboutme|syllabus|bulletinboard|smppg)$/) { return $answer; } + $fname=~s/[\n\r]//g; + my $author=$fname; + $author=~s/\/home\/httpd\/html\/res\/([^\/]*)\/([^\/]*).*/$1\/$2/; + my ($udom,$uname)=split(/\//,$author); + my $home=homeserver($uname,$udom); + if ($home eq 'no_host') { + $answer = 'no_host'; + } elsif (grep { $_ eq $home } ¤t_machine_ids()) { + $answer = 'home'; + } else { + my $defdom = $perlvar{'lonDefDomain'}; + if (&will_trust('content',$defdom,$udom)) { + $answer = reply("unsub:$fname",$home); + } else { + $answer = 'untrusted'; + } + } + return $answer; +} + # ------------------------------------------------ Get server side include body sub ssi_body { my ($filelink,%form)=@_; @@ -3534,7 +3560,10 @@ sub remove_stale_resfile { unlink($fname.'.meta'); } } - &reply("unsub:$fname",$homeserver); + my $unsubresult = &unsubscribe($fname); + unless ($unsubresult eq 'ok') { + &logthis("no unsub of $fname from $homeserver, reason: $unsubresult"); + } $removed = 1; } }