--- loncom/interface/lonmsg.pm	2015/06/23 02:42:34	1.242
+++ loncom/interface/lonmsg.pm	2021/11/30 15:55:37	1.247
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Routines for messaging
 #
-# $Id: lonmsg.pm,v 1.242 2015/06/23 02:42:34 musolffc Exp $
+# $Id: lonmsg.pm,v 1.247 2021/11/30 15:55:37 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -231,6 +231,7 @@ sub packagemsg {
     $attachmenturl =&HTML::Entities::encode($attachmenturl,'<>&"');
     my $course_context = &get_course_context();
     my $now=time;
+    my $ip = &Apache::lonnet::get_requestor_ip();
     my $msgcount = &get_uniq();
     unless(defined($msgid)) {
         $msgid = &buildmsgid($now,$subject,$env{'user.name'},$env{'user.domain'},
@@ -250,7 +251,7 @@ sub packagemsg {
     }
     $result .= '<servername>'.$ENV{'SERVER_NAME'}.'</servername>'.
            '<host>'.$ENV{'HTTP_HOST'}.'</host>'.
-	   '<client>'.$ENV{'REMOTE_ADDR'}.'</client>'.
+	   '<client>'.$ip.'</client>'.
 	   '<browsertype>'.$env{'browser.type'}.'</browsertype>'.
 	   '<browseros>'.$env{'browser.os'}.'</browseros>'.
 	   '<browserversion>'.$env{'browser.version'}.'</browserversion>'.
@@ -397,14 +398,17 @@ sub buildmsgid {
 }
 
 sub unpackmsgid {
-    my ($msgid,$folder,$skipstatus,$status_cache)=@_;
+    my ($msgid,$folder,$skipstatus,$status_cache,$onlycid)=@_;
     $msgid=&unescape($msgid);
     my ($sendtime,$shortsubj,$fromname,$fromdomain,$count,$fromcid,
         $processid,$symb,$error) = split(/\:/,&unescape($msgid));
+    if (!defined($processid)) { $fromcid = ''; }
+    if (($onlycid) && ($onlycid ne $fromcid)) {
+        return ($sendtime,'',$fromname,$fromdomain,'',$fromcid,'',$error);
+    }
     $shortsubj = &unescape($shortsubj);
     $shortsubj = &HTML::Entities::decode($shortsubj);
     $symb = &unescape($symb);
-    if (!defined($processid)) { $fromcid = ''; }
     my %status=();
     unless ($skipstatus) {
 	if (ref($status_cache)) {
@@ -467,8 +471,8 @@ sub sendemail {
     } else {
         # Otherwise build and send the email
         $subject = '[LON-CAPA] '.$subject;
-        &Apache::loncommon::mime_email($senderaddress, $to, $subject, $body, ,'',
-                                        '', $attachmenturl, '', '');
+        &Apache::loncommon::mime_email($senderaddress,$replytoaddress,$to,
+                                       $subject,$body,'','',$attachmenturl,'','');
         $msgsent = 1;
     }
     return $msgsent;
@@ -488,9 +492,11 @@ sub sendnotification {
     $text=~s/\&lt\;/\</gs;
     $text=~s/\&gt\;/\>/gs;
     my $homeserver = &Apache::lonnet::homeserver($touname,$toudom);
+    my $hostname = &Apache::lonnet::hostname($homeserver);
     my $protocol = $Apache::lonnet::protocol{$homeserver};
     $protocol = 'http' if ($protocol ne 'https');
-    my $url = $protocol.'://'.&Apache::lonnet::hostname($homeserver).
+#FIXME
+    my $url = $protocol.'://'.$hostname.
               '/adm/email?username='.$touname.'&domain='.$toudom.
               '&display='.&escape($msgid);
     my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$fromcid,
@@ -534,16 +540,20 @@ to access the full message.',$url);
         $subject = $subj;
     }
  
-    my ($blocked,$blocktext);
+    my ($blocked,$blocktext,$clientip);
+    $clientip = &Apache::lonnet::get_requestor_ip();
     if (!$crit) {
         my %setters;
-        my ($startblock,$endblock) = 
-            &Apache::loncommon::blockcheck(\%setters,'com',$touname,$toudom);
+        my ($startblock,$endblock,$triggerblock,$by_ip,$blockdom) = 
+            &Apache::loncommon::blockcheck(\%setters,'com',$clientip,$touname,$toudom);
         if ($startblock && $endblock) {
             $blocked = 1;
             my $showstart = &Apache::lonlocal::locallocaltime($startblock);
             my $showend = &Apache::lonlocal::locallocaltime($endblock);
             $blocktext = &mt_user($user_lh,'LON-CAPA messages sent to you between [_1] and [_2] will be inaccessible until the end of this time period, because you are a student in a course with an active communications block.',$showstart,$showend);
+        } elsif ($by_ip) {
+            $blocked = 1;
+            $blocktext = &mt_user($user_lh,'LON-CAPA messages sent to you will be inaccessible from your IP address [_1], because communication is being blocked for certain IP address(es).',$clientip);
         }
     }
     if ($userenv{'notifywithhtml'} ne '') {