Skip to content

Read env vars for server name and env name #46

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions server/src/com/mirth/connect/server/Mirth.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
Expand All @@ -29,10 +28,10 @@
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.apache.logging.log4j.ThreadContext;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.ThreadContext;
import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.filter.Filterable;
import org.apache.velocity.runtime.RuntimeConstants;
Expand Down Expand Up @@ -345,9 +344,11 @@ public void startup() {
((org.apache.logging.log4j.core.Logger) velocityLogger).setLevel(Level.OFF);
}

configurationController.updateServerSettingsFromEnvironment();

eventController.dispatchEvent(new ServerEvent(configurationController.getServerId(), "Server startup"));

// Start web server before starting the engine in case there is a
// Start web server before starting the engine in case there is a
// problem starting the engine that causes it to hang
startWebServer();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -360,4 +360,9 @@ public Properties getPropertiesForGroup(String group) {
public abstract void setChannelTags(Set<ChannelTag> tags);

public abstract Set<ChannelTag> getChannelTags();

/**
* Update server settings based on environment variables.
*/
public abstract void updateServerSettingsFromEnvironment();
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
import java.util.Properties;
import java.util.Set;
import java.util.SortedMap;
Expand Down Expand Up @@ -75,7 +76,6 @@
import org.apache.ibatis.session.SqlSessionManager;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.x500.X500Name;
import org.bouncycastle.asn1.x509.AuthorityKeyIdentifier;
import org.bouncycastle.asn1.x509.BasicConstraints;
Expand Down Expand Up @@ -1704,4 +1704,38 @@ public ConnectionTestResponse sendTestEmail(Properties properties) throws Except
return new ConnectionTestResponse(ConnectionTestResponse.Type.FAILURE, e.getMessage());
}
}

@Override
public void updateServerSettingsFromEnvironment() {
Optional<String> newServerName = getEnvironmentVariable("MC_SERVER_NAME");
Optional<String> newEnvName = getEnvironmentVariable("MC_ENV_NAME");

if (newServerName.isPresent() || newEnvName.isPresent()) {
try {
ServerSettings serverSettings = getServerSettings();

if (newServerName.isPresent()) {
serverSettings.setServerName(newServerName.get());
}
if (newEnvName.isPresent()) {
serverSettings.setEnvironmentName(newEnvName.get());
}

setServerSettings(serverSettings);
} catch (ControllerException e) {
logger.error("Failed to update server settings via environment variables", e);
}
}
}

/**
* Pull an environment variable. Values are trimmed, and only non-empty values are returned.
*
* @param envName the environment variable name
* @return the property's value
*/
private Optional<String> getEnvironmentVariable(String envName) {
String propValue = StringUtils.trimToEmpty(System.getenv(envName));
return StringUtils.isNotBlank(propValue) ? Optional.of(propValue) : Optional.empty();
}
}