diff --git a/service/pom.xml b/service/pom.xml index 4e41f7d06e002d3f722f8c9872074dd802ced56e..0dfbeaa5af65f356e3bd506184f1fbb897932ed4 100644 --- a/service/pom.xml +++ b/service/pom.xml @@ -518,6 +518,19 @@ </executions> </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>templating-maven-plugin</artifactId> + <version>1.0.0</version> + <executions> + <execution> + <id>filter-src</id> + <goals> + <goal>filter-sources</goal> + </goals> + </execution> + </executions> + </plugin> </plugins> </build> </project> diff --git a/service/src/main/java-templates/org/whispersystems/textsecuregcm/WhisperServerVersion.java b/service/src/main/java-templates/org/whispersystems/textsecuregcm/WhisperServerVersion.java new file mode 100644 index 0000000000000000000000000000000000000000..fa4c40bd9d44566ced9068d115f31a1f26f2d8b1 --- /dev/null +++ b/service/src/main/java-templates/org/whispersystems/textsecuregcm/WhisperServerVersion.java @@ -0,0 +1,15 @@ +/* + * Copyright 2013-2021 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.whispersystems.textsecuregcm; + +public class WhisperServerVersion { + + private static final String VERSION = "${project.version}"; + + public static String getServerVersion() { + return VERSION; + } +} diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java index 357cde6fd304e0d44c12c705a101cd76eae47ee6..6ce0718e06004fa271bbd1b17b45bea6baef36f2 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java @@ -197,6 +197,7 @@ import org.whispersystems.textsecuregcm.workers.CertificateCommand; import org.whispersystems.textsecuregcm.workers.DeleteUserCommand; import org.whispersystems.textsecuregcm.workers.GetRedisCommandStatsCommand; import org.whispersystems.textsecuregcm.workers.GetRedisSlowlogCommand; +import org.whispersystems.textsecuregcm.workers.ServerVersionCommand; import org.whispersystems.textsecuregcm.workers.SetCrawlerAccelerationTask; import org.whispersystems.textsecuregcm.workers.SetRequestLoggingEnabledTask; import org.whispersystems.textsecuregcm.workers.VacuumCommand; @@ -214,6 +215,7 @@ public class WhisperServerService extends Application<WhisperServerConfiguration bootstrap.addCommand(new ZkParamsCommand()); bootstrap.addCommand(new GetRedisSlowlogCommand()); bootstrap.addCommand(new GetRedisCommandStatsCommand()); + bootstrap.addCommand(new ServerVersionCommand()); bootstrap.addBundle(new NameableMigrationsBundle<WhisperServerConfiguration>("accountdb", "accountsdb.xml") { @Override diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/LogstashTcpSocketAppenderFactory.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/LogstashTcpSocketAppenderFactory.java index 568fc05c125dadfe2df78aaff6d28c72be19e5e6..95fc86e1314cb4100a0a47d16e5d80e4600d0dca 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/LogstashTcpSocketAppenderFactory.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/LogstashTcpSocketAppenderFactory.java @@ -26,6 +26,7 @@ import java.time.Duration; import javax.validation.constraints.NotEmpty; import net.logstash.logback.appender.LogstashTcpSocketAppender; import net.logstash.logback.encoder.LogstashEncoder; +import org.whispersystems.textsecuregcm.WhisperServerVersion; @JsonTypeName("logstashtcpsocket") public class LogstashTcpSocketAppenderFactory extends AbstractAppenderFactory<ILoggingEvent> { @@ -83,7 +84,8 @@ public class LogstashTcpSocketAppenderFactory extends AbstractAppenderFactory<IL } customFieldsNode.set("service", TextNode.valueOf("chat")); customFieldsNode.set("ddsource", TextNode.valueOf("logstash")); - customFieldsNode.set("ddtags", TextNode.valueOf("env:" + environment)); + customFieldsNode.set("ddtags", TextNode.valueOf("env:" + environment + ",version:" + WhisperServerVersion.getServerVersion())); + encoder.setCustomFields(customFieldsNode.toString()); final LayoutWrappingEncoder<ILoggingEvent> prefix = new LayoutWrappingEncoder<>(); final PatternLayout layout = new PatternLayout(); diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/workers/ServerVersionCommand.java b/service/src/main/java/org/whispersystems/textsecuregcm/workers/ServerVersionCommand.java new file mode 100644 index 0000000000000000000000000000000000000000..efe12a6687fc224c27c6a2783da41709792900cf --- /dev/null +++ b/service/src/main/java/org/whispersystems/textsecuregcm/workers/ServerVersionCommand.java @@ -0,0 +1,28 @@ +/* + * Copyright 2013-2021 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.whispersystems.textsecuregcm.workers; + +import io.dropwizard.cli.Command; +import io.dropwizard.setup.Bootstrap; +import net.sourceforge.argparse4j.inf.Namespace; +import net.sourceforge.argparse4j.inf.Subparser; +import org.whispersystems.textsecuregcm.WhisperServerVersion; + +public class ServerVersionCommand extends Command { + + public ServerVersionCommand() { + super("version", "Print the version of the service"); + } + + @Override + public void configure(final Subparser subparser) { + } + + @Override + public void run(final Bootstrap<?> bootstrap, final Namespace namespace) throws Exception { + System.out.println(WhisperServerVersion.getServerVersion()); + } +}