--- loncom/interface/lonchatfetch.pm 2013/07/22 18:06:51 1.39 +++ loncom/interface/lonchatfetch.pm 2021/11/30 15:55:37 1.40 @@ -1,7 +1,7 @@ # The LearningOnline Network # Chat Fetching # -# $Id: lonchatfetch.pm,v 1.39 2013/07/22 18:06:51 bisitz Exp $ +# $Id: lonchatfetch.pm,v 1.40 2021/11/30 15:55:37 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -177,7 +177,8 @@ sub handler { $refresh_cmd .= "&group=$group"; } my $headarg; - my ($blocked,$blocktext) = blockstatus(); + my $clientip = &Apache::lonnet::get_requestor_ip($r); + my ($blocked,$blocktext) = &blockstatus($clientip); if ($blocked) { $newstuff = $blocktext; $headarg = {'only_body' => 1,}; @@ -222,9 +223,11 @@ sub get_seeid_status { } sub blockstatus { + my ($clientip) = @_; my ($blocked,$output); my %setters; - my ($startblock,$endblock) = &Apache::loncommon::blockcheck(\%setters,'chat'); + my ($startblock,$endblock,$triggerblock,$by_ip,$blockdom) = + &Apache::loncommon::blockcheck(\%setters,'chat',$clientip); if ($startblock && $endblock) { $blocked = 1; my $endblocktime = &Apache::lonlocal::locallocaltime($endblock); @@ -240,6 +243,18 @@ sub blockstatus { $output .= &mt('Block for [_1] starts: [_2], ends [_3], set by: [_4]',$courseinfo{'description'},$openblock,$closeblock,$fullname).'
'; } } + } elsif ($by_ip) { + $blocked = 1; + my $showdom = &Apache::lonnet::domain($blockdom); + if ($showdom eq '') { + $showdom = $blockdom; + } + $output = &mt('Chat Room is unavailable from your current IP address: [_1], ' + .'because communication is blocked for certain IP address(es).' + ,$clientip). + '
'. + &mt('This restriction was set by an administrator in the [_1] LON-CAPA domain.' + ,$showdom); } return ($blocked,$output); }