From 758900b7a895a4d5ff054085401fbb54d7f97a27 Mon Sep 17 00:00:00 2001 From: Chris Eager Date: Mon, 23 Aug 2021 13:47:38 -0500 Subject: [PATCH] Register AuthEnablementApplicationEventListener --- .../textsecuregcm/WhisperServerService.java | 4 +++ ...uthEnablementApplicationEventListener.java | 33 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 service/src/main/java/org/whispersystems/textsecuregcm/auth/AuthEnablementApplicationEventListener.java diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java index 0ea791f09..cf89c3d5f 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java @@ -63,6 +63,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.whispersystems.dispatch.DispatchManager; import org.whispersystems.textsecuregcm.auth.AccountAuthenticator; +import org.whispersystems.textsecuregcm.auth.AuthEnablementApplicationEventListener; import org.whispersystems.textsecuregcm.auth.AuthenticatedAccount; import org.whispersystems.textsecuregcm.auth.CertificateGenerator; import org.whispersystems.textsecuregcm.auth.DisabledPermittedAccountAuthenticator; @@ -555,6 +556,7 @@ public class WhisperServerService extends Application( ImmutableSet.of(AuthenticatedAccount.class, DisabledPermittedAuthenticatedAccount.class))); + environment.jersey().register(new AuthEnablementApplicationEventListener(clientPresenceManager)); environment.jersey().register(new TimestampResponseFilter()); environment.jersey().register(new VoiceVerificationController(config.getVoiceVerificationConfiguration().getUrl(), config.getVoiceVerificationConfiguration().getLocales())); @@ -566,6 +568,7 @@ public class WhisperServerService extends Application provisioningEnvironment = new WebSocketEnvironment<>(environment, webSocketEnvironment.getRequestLog(), 60000); + provisioningEnvironment.jersey().register(new AuthEnablementApplicationEventListener(clientPresenceManager)); provisioningEnvironment.setConnectListener(new ProvisioningConnectListener(pubSubManager)); provisioningEnvironment.jersey().register(new MetricsApplicationEventListener(TrafficSource.WEBSOCKET)); provisioningEnvironment.jersey().register(new KeepAliveController(clientPresenceManager)); diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/auth/AuthEnablementApplicationEventListener.java b/service/src/main/java/org/whispersystems/textsecuregcm/auth/AuthEnablementApplicationEventListener.java new file mode 100644 index 000000000..941ec58be --- /dev/null +++ b/service/src/main/java/org/whispersystems/textsecuregcm/auth/AuthEnablementApplicationEventListener.java @@ -0,0 +1,33 @@ +/* + * Copyright 2021 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.whispersystems.textsecuregcm.auth; + +import org.glassfish.jersey.server.monitoring.ApplicationEvent; +import org.glassfish.jersey.server.monitoring.ApplicationEventListener; +import org.glassfish.jersey.server.monitoring.RequestEvent; +import org.glassfish.jersey.server.monitoring.RequestEventListener; +import org.whispersystems.textsecuregcm.push.ClientPresenceManager; + +/** + * Delegates request events to a listener that handles auth-enablement changes + */ +public class AuthEnablementApplicationEventListener implements ApplicationEventListener { + + private final AuthEnablementRequestEventListener authEnablementRequestEventListener; + + public AuthEnablementApplicationEventListener(final ClientPresenceManager clientPresenceManager) { + this.authEnablementRequestEventListener = new AuthEnablementRequestEventListener(clientPresenceManager); + } + + @Override + public void onEvent(final ApplicationEvent event) { + } + + @Override + public RequestEventListener onRequest(final RequestEvent requestEvent) { + return authEnablementRequestEventListener; + } +}