]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/manager/Manager.java
Make loggers private
[signal-cli] / src / main / java / org / asamk / signal / manager / Manager.java
index c3e7a638e354ab48e635ac79d46e1c1a4286753b..4dff4b82bf7afb2d5c3a208e40e7e26e6699d704 100644 (file)
@@ -182,7 +182,7 @@ import static org.asamk.signal.manager.ServiceConfig.getIasKeyStore;
 
 public class Manager implements Closeable {
 
 
 public class Manager implements Closeable {
 
-    final static Logger logger = LoggerFactory.getLogger(Manager.class);
+    private final static Logger logger = LoggerFactory.getLogger(Manager.class);
 
     private final CertificateValidator certificateValidator = new CertificateValidator(ServiceConfig.getUnidentifiedSenderTrustRoot());
 
 
     private final CertificateValidator certificateValidator = new CertificateValidator(ServiceConfig.getUnidentifiedSenderTrustRoot());
 
@@ -1800,7 +1800,11 @@ public class Manager implements Closeable {
                 }
             }
             account.save();
                 }
             }
             account.save();
-            if (!isMessageBlocked(envelope, content)) {
+            if (isMessageBlocked(envelope, content)) {
+                logger.info("Ignoring a message from blocked user/group: {}", envelope.getTimestamp());
+            } else if (isNotAGroupMember(envelope, content)) {
+                logger.info("Ignoring a message from a non group member: {}", envelope.getTimestamp());
+            } else {
                 handler.handleMessage(envelope, content, exception);
             }
             if (!(exception instanceof org.whispersystems.libsignal.UntrustedIdentityException)) {
                 handler.handleMessage(envelope, content, exception);
             }
             if (!(exception instanceof org.whispersystems.libsignal.UntrustedIdentityException)) {
@@ -1827,18 +1831,43 @@ public class Manager implements Closeable {
             return true;
         }
 
             return true;
         }
 
+        if (content != null && content.getDataMessage().isPresent()) {
+            SignalServiceDataMessage message = content.getDataMessage().get();
+            if (message.getGroupContext().isPresent()) {
+                GroupId groupId = GroupUtils.getGroupId(message.getGroupContext().get());
+                GroupInfo group = getGroup(groupId);
+                if (group != null && group.isBlocked()) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    private boolean isNotAGroupMember(
+            SignalServiceEnvelope envelope, SignalServiceContent content
+    ) {
+        SignalServiceAddress source;
+        if (!envelope.isUnidentifiedSender() && envelope.hasSource()) {
+            source = envelope.getSourceAddress();
+        } else if (content != null) {
+            source = content.getSender();
+        } else {
+            return false;
+        }
+
         if (content != null && content.getDataMessage().isPresent()) {
             SignalServiceDataMessage message = content.getDataMessage().get();
             if (message.getGroupContext().isPresent()) {
                 if (message.getGroupContext().get().getGroupV1().isPresent()) {
                     SignalServiceGroup groupInfo = message.getGroupContext().get().getGroupV1().get();
         if (content != null && content.getDataMessage().isPresent()) {
             SignalServiceDataMessage message = content.getDataMessage().get();
             if (message.getGroupContext().isPresent()) {
                 if (message.getGroupContext().get().getGroupV1().isPresent()) {
                     SignalServiceGroup groupInfo = message.getGroupContext().get().getGroupV1().get();
-                    if (groupInfo.getType() != SignalServiceGroup.Type.DELIVER) {
+                    if (groupInfo.getType() == SignalServiceGroup.Type.QUIT) {
                         return false;
                     }
                 }
                 GroupId groupId = GroupUtils.getGroupId(message.getGroupContext().get());
                 GroupInfo group = getGroup(groupId);
                         return false;
                     }
                 }
                 GroupId groupId = GroupUtils.getGroupId(message.getGroupContext().get());
                 GroupInfo group = getGroup(groupId);
-                if (group != null && group.isBlocked()) {
+                if (group != null && !group.isMember(source)) {
                     return true;
                 }
             }
                     return true;
                 }
             }