From a89e30fe75453e9ef1dff8724c74b73de1eeb259 Mon Sep 17 00:00:00 2001 From: erik-signal <113138376+erik-signal@users.noreply.github.com> Date: Fri, 27 Jan 2023 11:40:33 -0500 Subject: [PATCH] Clarify naming around spam filtering. --- .gitmodules | 2 +- pom.xml | 10 +++---- service/pom.xml | 2 +- .../WhisperServerConfiguration.java | 8 ++--- .../textsecuregcm/WhisperServerService.java | 30 +++++++++---------- ...tion.java => SpamFilterConfiguration.java} | 4 +-- .../DynamicAbusiveHostRulesConfiguration.java | 14 --------- .../dynamic/DynamicConfiguration.java | 9 ------ .../controllers/AccountController.java | 4 +-- .../controllers/MessageController.java | 10 +++---- .../limits/RateLimitChallengeManager.java | 2 +- .../FilterSpam.java} | 6 ++-- .../RateLimitChallengeListener.java | 2 +- .../RateLimitChallengeType.java | 2 +- .../ReportSpamTokenHandler.java | 2 +- .../ReportSpamTokenProvider.java | 2 +- .../SpamFilter.java} | 14 ++++----- .../storage/ReportMessageManager.java | 2 +- .../controllers/MessageControllerTest.java | 4 +-- .../limits/RateLimitChallengeManagerTest.java | 3 +- abusive-message-filter => spam-filter | 0 21 files changed, 54 insertions(+), 78 deletions(-) rename service/src/main/java/org/whispersystems/textsecuregcm/configuration/{AbusiveMessageFilterConfiguration.java => SpamFilterConfiguration.java} (76%) delete mode 100644 service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicAbusiveHostRulesConfiguration.java rename service/src/main/java/org/whispersystems/textsecuregcm/{abuse/FilterAbusiveMessages.java => spam/FilterSpam.java} (67%) rename service/src/main/java/org/whispersystems/textsecuregcm/{abuse => spam}/RateLimitChallengeListener.java (93%) rename service/src/main/java/org/whispersystems/textsecuregcm/{abuse => spam}/RateLimitChallengeType.java (77%) rename service/src/main/java/org/whispersystems/textsecuregcm/{abuse => spam}/ReportSpamTokenHandler.java (96%) rename service/src/main/java/org/whispersystems/textsecuregcm/{abuse => spam}/ReportSpamTokenProvider.java (95%) rename service/src/main/java/org/whispersystems/textsecuregcm/{abuse/AbusiveMessageFilter.java => spam/SpamFilter.java} (67%) rename abusive-message-filter => spam-filter (100%) diff --git a/.gitmodules b/.gitmodules index 00fd429c3..ef07ce2d1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,5 +7,5 @@ # # External developers may safely ignore this submodule. [submodule "abusive-message-filter"] - path = abusive-message-filter + path = spam-filter url = REDACTED diff --git a/pom.xml b/pom.xml index bfd8d0078..2aa2c53c2 100644 --- a/pom.xml +++ b/pom.xml @@ -364,22 +364,22 @@ - include-abusive-message-filter + include-spam-filter - abusive-message-filter/pom.xml + spam-filter/pom.xml - abusive-message-filter + spam-filter - exclude-abusive-message-filter + exclude-spam-filter - abusive-message-filter/pom.xml + spam-filter/pom.xml diff --git a/service/pom.xml b/service/pom.xml index d7b2c8047..dc6c0067a 100644 --- a/service/pom.xml +++ b/service/pom.xml @@ -446,7 +446,7 @@ - exclude-abusive-message-filter + exclude-spam-filter diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java index 9fd5d632b..0fed79779 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java @@ -12,7 +12,7 @@ import java.util.List; import java.util.Map; import javax.validation.Valid; import javax.validation.constraints.NotNull; -import org.whispersystems.textsecuregcm.configuration.AbusiveMessageFilterConfiguration; +import org.whispersystems.textsecuregcm.configuration.SpamFilterConfiguration; import org.whispersystems.textsecuregcm.configuration.AccountDatabaseCrawlerConfiguration; import org.whispersystems.textsecuregcm.configuration.AdminEventLoggingConfiguration; import org.whispersystems.textsecuregcm.configuration.ApnConfiguration; @@ -268,7 +268,7 @@ public class WhisperServerConfiguration extends Configuration { @Valid @JsonProperty - private AbusiveMessageFilterConfiguration abusiveMessageFilter; + private SpamFilterConfiguration spamFilterConfiguration; @Valid @NotNull @@ -453,8 +453,8 @@ public class WhisperServerConfiguration extends Configuration { return reportMessage; } - public AbusiveMessageFilterConfiguration getAbusiveMessageFilterConfiguration() { - return abusiveMessageFilter; + public SpamFilterConfiguration getSpamFilterConfiguration() { + return spamFilterConfiguration; } public UsernameConfiguration getUsername() { diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java index 2aca3c011..3f7409394 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java @@ -70,11 +70,11 @@ import org.signal.libsignal.zkgroup.receipts.ServerZkReceiptOperations; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.whispersystems.dispatch.DispatchManager; -import org.whispersystems.textsecuregcm.abuse.AbusiveMessageFilter; -import org.whispersystems.textsecuregcm.abuse.FilterAbusiveMessages; -import org.whispersystems.textsecuregcm.abuse.RateLimitChallengeListener; -import org.whispersystems.textsecuregcm.abuse.ReportSpamTokenHandler; -import org.whispersystems.textsecuregcm.abuse.ReportSpamTokenProvider; +import org.whispersystems.textsecuregcm.spam.SpamFilter; +import org.whispersystems.textsecuregcm.spam.FilterSpam; +import org.whispersystems.textsecuregcm.spam.RateLimitChallengeListener; +import org.whispersystems.textsecuregcm.spam.ReportSpamTokenHandler; +import org.whispersystems.textsecuregcm.spam.ReportSpamTokenProvider; import org.whispersystems.textsecuregcm.auth.AccountAuthenticator; import org.whispersystems.textsecuregcm.auth.AuthenticatedAccount; import org.whispersystems.textsecuregcm.auth.CertificateGenerator; @@ -677,14 +677,14 @@ public class WhisperServerService extends Application source, @HeaderParam(OptionalAccess.UNIDENTIFIED) Optional accessKey, @HeaderParam(HttpHeaders.USER_AGENT) String userAgent, @@ -355,7 +355,7 @@ public class MessageController { @PUT @Consumes(MultiRecipientMessageProvider.MEDIA_TYPE) @Produces(MediaType.APPLICATION_JSON) - @FilterAbusiveMessages + @FilterSpam public Response sendMultiRecipientMessage( @HeaderParam(OptionalAccess.UNIDENTIFIED) @Nullable CombinedUnidentifiedSenderAccessKeys accessKeys, @HeaderParam(HttpHeaders.USER_AGENT) String userAgent, diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/limits/RateLimitChallengeManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/limits/RateLimitChallengeManager.java index 2dcc1f596..eb1d6a941 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/limits/RateLimitChallengeManager.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/limits/RateLimitChallengeManager.java @@ -9,7 +9,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import org.whispersystems.textsecuregcm.abuse.RateLimitChallengeListener; +import org.whispersystems.textsecuregcm.spam.RateLimitChallengeListener; import org.whispersystems.textsecuregcm.captcha.CaptchaChecker; import org.whispersystems.textsecuregcm.controllers.RateLimitExceededException; import org.whispersystems.textsecuregcm.metrics.UserAgentTagUtil; diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/abuse/FilterAbusiveMessages.java b/service/src/main/java/org/whispersystems/textsecuregcm/spam/FilterSpam.java similarity index 67% rename from service/src/main/java/org/whispersystems/textsecuregcm/abuse/FilterAbusiveMessages.java rename to service/src/main/java/org/whispersystems/textsecuregcm/spam/FilterSpam.java index 09c7f556f..9a771acfd 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/abuse/FilterAbusiveMessages.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/spam/FilterSpam.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -package org.whispersystems.textsecuregcm.abuse; +package org.whispersystems.textsecuregcm.spam; import javax.ws.rs.NameBinding; import java.lang.annotation.ElementType; @@ -12,10 +12,10 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * A name-binding annotation that associates {@link AbusiveMessageFilter}s with resource methods. + * A name-binding annotation that associates {@link SpamFilter}s with resource methods. */ @NameBinding @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD}) -public @interface FilterAbusiveMessages { +public @interface FilterSpam { } diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/abuse/RateLimitChallengeListener.java b/service/src/main/java/org/whispersystems/textsecuregcm/spam/RateLimitChallengeListener.java similarity index 93% rename from service/src/main/java/org/whispersystems/textsecuregcm/abuse/RateLimitChallengeListener.java rename to service/src/main/java/org/whispersystems/textsecuregcm/spam/RateLimitChallengeListener.java index a8ef43d5b..b15fa171d 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/abuse/RateLimitChallengeListener.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/spam/RateLimitChallengeListener.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -package org.whispersystems.textsecuregcm.abuse; +package org.whispersystems.textsecuregcm.spam; import org.whispersystems.textsecuregcm.storage.Account; diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/abuse/RateLimitChallengeType.java b/service/src/main/java/org/whispersystems/textsecuregcm/spam/RateLimitChallengeType.java similarity index 77% rename from service/src/main/java/org/whispersystems/textsecuregcm/abuse/RateLimitChallengeType.java rename to service/src/main/java/org/whispersystems/textsecuregcm/spam/RateLimitChallengeType.java index b24a51d1b..2b7f298e5 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/abuse/RateLimitChallengeType.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/spam/RateLimitChallengeType.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -package org.whispersystems.textsecuregcm.abuse; +package org.whispersystems.textsecuregcm.spam; public enum RateLimitChallengeType { diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/abuse/ReportSpamTokenHandler.java b/service/src/main/java/org/whispersystems/textsecuregcm/spam/ReportSpamTokenHandler.java similarity index 96% rename from service/src/main/java/org/whispersystems/textsecuregcm/abuse/ReportSpamTokenHandler.java rename to service/src/main/java/org/whispersystems/textsecuregcm/spam/ReportSpamTokenHandler.java index 7e5c1e387..1b53aa57d 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/abuse/ReportSpamTokenHandler.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/spam/ReportSpamTokenHandler.java @@ -1,4 +1,4 @@ -package org.whispersystems.textsecuregcm.abuse; +package org.whispersystems.textsecuregcm.spam; import java.util.Optional; import java.util.UUID; diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/abuse/ReportSpamTokenProvider.java b/service/src/main/java/org/whispersystems/textsecuregcm/spam/ReportSpamTokenProvider.java similarity index 95% rename from service/src/main/java/org/whispersystems/textsecuregcm/abuse/ReportSpamTokenProvider.java rename to service/src/main/java/org/whispersystems/textsecuregcm/spam/ReportSpamTokenProvider.java index fbfe66ec1..d3a1a0d1d 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/abuse/ReportSpamTokenProvider.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/spam/ReportSpamTokenProvider.java @@ -1,4 +1,4 @@ -package org.whispersystems.textsecuregcm.abuse; +package org.whispersystems.textsecuregcm.spam; import javax.ws.rs.container.ContainerRequestContext; import java.util.Optional; diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/abuse/AbusiveMessageFilter.java b/service/src/main/java/org/whispersystems/textsecuregcm/spam/SpamFilter.java similarity index 67% rename from service/src/main/java/org/whispersystems/textsecuregcm/abuse/AbusiveMessageFilter.java rename to service/src/main/java/org/whispersystems/textsecuregcm/spam/SpamFilter.java index 654e15951..7c711fb05 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/abuse/AbusiveMessageFilter.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/spam/SpamFilter.java @@ -3,27 +3,27 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -package org.whispersystems.textsecuregcm.abuse; +package org.whispersystems.textsecuregcm.spam; import io.dropwizard.lifecycle.Managed; import javax.ws.rs.container.ContainerRequestFilter; import java.io.IOException; /** - * An abusive message filter is a {@link ContainerRequestFilter} that filters requests to message-sending endpoints to - * detect and respond to patterns of abusive behavior. + * A spam filter is a {@link ContainerRequestFilter} that filters requests to message-sending endpoints to + * detect and respond to patterns of spam. *

- * Abusive message filters are managed components that are generally loaded dynamically via a + * Spam filters are managed components that are generally loaded dynamically via a * {@link java.util.ServiceLoader}. Their {@link #configure(String)} method will be called prior to be adding to the * server's pool of {@link Managed} objects. *

- * Abusive message filters must be annotated with {@link FilterAbusiveMessages}, a name binding annotation that + * Spam filters must be annotated with {@link FilterSpam}, a name binding annotation that * restricts the endpoints to which the filter may apply. */ -public interface AbusiveMessageFilter extends ContainerRequestFilter, Managed { +public interface SpamFilter extends ContainerRequestFilter, Managed { /** - * Configures this abusive message filter. This method will be called before the filter is added to the server's pool + * Configures this spam filter. This method will be called before the filter is added to the server's pool * of managed objects and before the server processes any requests. * * @param environmentName the name of the environment in which this filter is running (e.g. "staging" or "production") diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/storage/ReportMessageManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/ReportMessageManager.java index 5e078fd99..810f4768a 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/storage/ReportMessageManager.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/storage/ReportMessageManager.java @@ -89,7 +89,7 @@ public class ReportMessageManager { } /** - * Returns the number of times messages from the given account have been reported by recipients as abusive. Note that + * Returns the number of times messages from the given account have been reported by recipients as spam. Note that * this method makes a call to an external service, and callers should take care to memoize calls where possible and * avoid unnecessary calls. * diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/controllers/MessageControllerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/controllers/MessageControllerTest.java index c11b70f8f..9b70eb4ac 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/controllers/MessageControllerTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/controllers/MessageControllerTest.java @@ -67,8 +67,8 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import org.mockito.ArgumentCaptor; -import org.whispersystems.textsecuregcm.abuse.ReportSpamTokenHandler; -import org.whispersystems.textsecuregcm.abuse.ReportSpamTokenProvider; +import org.whispersystems.textsecuregcm.spam.ReportSpamTokenHandler; +import org.whispersystems.textsecuregcm.spam.ReportSpamTokenProvider; import org.whispersystems.textsecuregcm.auth.AuthenticatedAccount; import org.whispersystems.textsecuregcm.auth.DisabledPermittedAuthenticatedAccount; import org.whispersystems.textsecuregcm.auth.OptionalAccess; diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/limits/RateLimitChallengeManagerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/limits/RateLimitChallengeManagerTest.java index 239f7a774..74e052c04 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/limits/RateLimitChallengeManagerTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/limits/RateLimitChallengeManagerTest.java @@ -12,11 +12,10 @@ import java.util.UUID; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import org.whispersystems.textsecuregcm.abuse.RateLimitChallengeListener; +import org.whispersystems.textsecuregcm.spam.RateLimitChallengeListener; import org.whispersystems.textsecuregcm.captcha.AssessmentResult; import org.whispersystems.textsecuregcm.captcha.CaptchaChecker; import org.whispersystems.textsecuregcm.controllers.RateLimitExceededException; -import org.whispersystems.textsecuregcm.captcha.RecaptchaClient; import org.whispersystems.textsecuregcm.storage.Account; class RateLimitChallengeManagerTest { diff --git a/abusive-message-filter b/spam-filter similarity index 100% rename from abusive-message-filter rename to spam-filter