diff --git a/event-logger/pom.xml b/event-logger/pom.xml deleted file mode 100644 index 82faa3e2f..000000000 --- a/event-logger/pom.xml +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - TextSecureServer - org.whispersystems.textsecure - JGITVER - - - 4.0.0 - event-logger - - - - com.google.cloud - google-cloud-logging - - - org.jetbrains.kotlin - kotlin-stdlib - - - org.jetbrains - - annotations - - - - - org.jetbrains.kotlinx - kotlinx-serialization-json - ${kotlinx-serialization.version} - - - - - ${project.basedir}/src/main/kotlin - ${project.basedir}/src/test/kotlin - - - - org.jetbrains.kotlin - kotlin-maven-plugin - ${kotlin.version} - - - - compile - - compile - - - - - test-compile - - test-compile - - - - - - kotlinx-serialization - - - - - org.jetbrains.kotlin - kotlin-maven-serialization - ${kotlin.version} - - - - - com.google.cloud.tools - jib-maven-plugin - - - true - - - - - - diff --git a/event-logger/src/main/kotlin/events.kt b/event-logger/src/main/kotlin/events.kt deleted file mode 100644 index b1bbbc5a4..000000000 --- a/event-logger/src/main/kotlin/events.kt +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2022 Signal Messenger, LLC - * SPDX-License-Identifier: AGPL-3.0-only - */ - -package org.signal.event - -import java.util.Collections -import kotlinx.serialization.Serializable -import kotlinx.serialization.json.Json -import kotlinx.serialization.modules.SerializersModule -import kotlinx.serialization.modules.polymorphic -import kotlinx.serialization.modules.subclass - -val module = SerializersModule { - polymorphic(Event::class) { - subclass(RemoteConfigSetEvent::class) - subclass(RemoteConfigDeleteEvent::class) - } -} -val jsonFormat = Json { serializersModule = module } - -sealed interface Event - -@Serializable -data class RemoteConfigSetEvent( - val identity: String, - val name: String, - val percentage: Int, - val defaultValue: String? = null, - val value: String? = null, - val hashKey: String? = null, - val uuids: Collection = Collections.emptyList(), -) : Event - -@Serializable -data class RemoteConfigDeleteEvent( - val identity: String, - val name: String, -) : Event diff --git a/event-logger/src/main/kotlin/loggers.kt b/event-logger/src/main/kotlin/loggers.kt deleted file mode 100644 index 4e87f7ea8..000000000 --- a/event-logger/src/main/kotlin/loggers.kt +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2022 Signal Messenger, LLC - * SPDX-License-Identifier: AGPL-3.0-only - */ - -package org.signal.event - -import com.google.cloud.logging.LogEntry -import com.google.cloud.logging.Logging -import com.google.cloud.logging.MonitoredResourceUtil -import com.google.cloud.logging.Payload.JsonPayload -import com.google.cloud.logging.Severity -import com.google.protobuf.Struct -import com.google.protobuf.util.JsonFormat -import kotlinx.serialization.encodeToString - -interface AdminEventLogger { - fun logEvent(event: Event, labels: Map?) - fun logEvent(event: Event) = logEvent(event, null) -} - -class NoOpAdminEventLogger : AdminEventLogger { - override fun logEvent(event: Event, labels: Map?) {} -} - -class GoogleCloudAdminEventLogger(private val logging: Logging, private val projectId: String, private val logName: String) : AdminEventLogger { - override fun logEvent(event: Event, labels: Map?) { - val structBuilder = Struct.newBuilder() - JsonFormat.parser().merge(jsonFormat.encodeToString(event), structBuilder) - val struct = structBuilder.build() - - val logEntryBuilder = LogEntry.newBuilder(JsonPayload.of(struct)) - .setLogName(logName) - .setSeverity(Severity.NOTICE) - .setResource(MonitoredResourceUtil.getResource(projectId, "project")); - if (labels != null) { - logEntryBuilder.setLabels(labels); - } - logging.write(listOf(logEntryBuilder.build())) - } -} diff --git a/event-logger/src/test/kotlin/org/signal/event/GoogleCloudAdminEventLoggerTest.kt b/event-logger/src/test/kotlin/org/signal/event/GoogleCloudAdminEventLoggerTest.kt deleted file mode 100644 index 0ac27778f..000000000 --- a/event-logger/src/test/kotlin/org/signal/event/GoogleCloudAdminEventLoggerTest.kt +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2023 Signal Messenger, LLC - * SPDX-License-Identifier: AGPL-3.0-only - */ - -package org.signal.event - -import com.google.cloud.logging.Logging -import com.google.cloud.logging.LoggingOptions -import org.junit.jupiter.api.Test -import org.junit.jupiter.api.assertDoesNotThrow -import org.mockito.Mockito.mock - -class GoogleCloudAdminEventLoggerTest { - - @Test - fun logEvent() { - val logging = mock(Logging::class.java) - val logger = GoogleCloudAdminEventLogger(logging, "my-project", "test") - - val event = RemoteConfigDeleteEvent("token", "test") - logger.logEvent(event) - } - - @Test - fun testGetService() { - assertDoesNotThrow { - // This is a canary for version conflicts between the cloud logging library and protobuf-java - LoggingOptions.newBuilder() - .setProjectId("test") - .build() - .getService() - } - } -} diff --git a/pom.xml b/pom.xml index 31aba15bd..a84f53826 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,6 @@ api-doc - event-logger integration-tests service websocket-resources diff --git a/service/config/sample.yml b/service/config/sample.yml index 1ceedd6be..15aa59e03 100644 --- a/service/config/sample.yml +++ b/service/config/sample.yml @@ -40,14 +40,6 @@ metrics: - ^lettuce\..+$ reportOnStop: true -adminEventLoggingConfiguration: - credentials: | - { - "key": "value" - } - projectId: some-project-id - logName: some-log-name - grpcPort: 8080 stripe: diff --git a/service/pom.xml b/service/pom.xml index 2a6db6b76..fc31db589 100644 --- a/service/pom.xml +++ b/service/pom.xml @@ -42,11 +42,6 @@ jakarta.ws.rs-api - - org.whispersystems.textsecure - event-logger - ${project.version} - org.whispersystems.textsecure websocket-resources @@ -469,6 +464,13 @@ com.apollographql.apollo3 apollo-api-jvm 3.8.2 + + + + org.jetbrains + annotations + + diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java index 30410d685..21209a717 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerConfiguration.java @@ -16,7 +16,6 @@ import java.util.Set; import javax.validation.Valid; import javax.validation.constraints.NotNull; import org.whispersystems.textsecuregcm.attachments.TusConfiguration; -import org.whispersystems.textsecuregcm.configuration.AdminEventLoggingConfiguration; import org.whispersystems.textsecuregcm.configuration.ApnConfiguration; import org.whispersystems.textsecuregcm.configuration.AppConfigConfiguration; import org.whispersystems.textsecuregcm.configuration.ArtServiceConfiguration; @@ -63,11 +62,6 @@ import org.whispersystems.websocket.configuration.WebSocketConfiguration; /** @noinspection MismatchedQueryAndUpdateOfCollection, WeakerAccess */ public class WhisperServerConfiguration extends Configuration { - @NotNull - @Valid - @JsonProperty - private AdminEventLoggingConfiguration adminEventLoggingConfiguration; - @NotNull @Valid @JsonProperty @@ -316,10 +310,6 @@ public class WhisperServerConfiguration extends Configuration { @JsonProperty private LinkDeviceSecretConfiguration linkDevice; - public AdminEventLoggingConfiguration getAdminEventLoggingConfiguration() { - return adminEventLoggingConfiguration; - } - public StripeConfiguration getStripe() { return stripe; } diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java index 5b4b348b8..7a24fe48e 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java @@ -7,8 +7,6 @@ package org.whispersystems.textsecuregcm; import static com.codahale.metrics.MetricRegistry.name; import static java.util.Objects.requireNonNull; -import com.google.auth.oauth2.GoogleCredentials; -import com.google.cloud.logging.LoggingOptions; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; @@ -28,9 +26,7 @@ import io.lettuce.core.resource.ClientResources; import io.micrometer.core.instrument.Metrics; import io.micrometer.core.instrument.binder.grpc.MetricCollectingServerInterceptor; import io.micrometer.core.instrument.binder.jvm.ExecutorServiceMetrics; -import java.io.ByteArrayInputStream; import java.net.http.HttpClient; -import java.nio.charset.StandardCharsets; import java.time.Clock; import java.time.Duration; import java.util.Collections; @@ -50,8 +46,6 @@ import javax.servlet.ServletRegistration; import org.eclipse.jetty.servlets.CrossOriginFilter; import org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer; import org.glassfish.jersey.server.ServerProperties; -import org.signal.event.AdminEventLogger; -import org.signal.event.GoogleCloudAdminEventLogger; import org.signal.i18n.HeaderControlledResourceBundleLookup; import org.signal.libsignal.zkgroup.GenericServerSecretParams; import org.signal.libsignal.zkgroup.ServerSecretParams; @@ -473,14 +467,6 @@ public class WhisperServerService extends Application