Skip to content

Commit c4dfcbe

Browse files
committed
Use env vars for mongo creds
1 parent 92d81ba commit c4dfcbe

File tree

11 files changed

+40
-12
lines changed

11 files changed

+40
-12
lines changed

eppic-dbtools/src/main/java/eppic/db/loaders/FindIfNewUniProt.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public static void main(String[] args) throws IOException, ExecutionException, I
9393
dbName = propsReader.getDbName();
9494
}
9595

96-
MongoDatabase mongoDb = MongoUtils.getMongoDatabase(dbName, connUri);
96+
MongoDatabase mongoDb = MongoUtils.getMongoDatabase(dbName, connUri, MongoUtils.MONGO_USER_ENV_VAR, MongoUtils.MONGO_PASSWORD_ENV_VAR);
9797

9898
String dbVersion = null;
9999

eppic-dbtools/src/main/java/eppic/db/loaders/FindPdbIdsToLoad.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ public static void main(String[] args) throws IOException, ExecutionException, I
150150
dbName = propsReader.getDbName();
151151
}
152152

153-
MongoDatabase mongoDb = MongoUtils.getMongoDatabase(dbName, connUri);
153+
MongoDatabase mongoDb = MongoUtils.getMongoDatabase(dbName, connUri, MongoUtils.MONGO_USER_ENV_VAR, MongoUtils.MONGO_PASSWORD_ENV_VAR);
154154

155155
if (full) {
156156
// remove content and create collections and index

eppic-dbtools/src/main/java/eppic/db/loaders/RemoveUserJobs.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public static void main(String[] args) throws IOException, DaoException {
7979
String dbName = propsReader.getDbNameUserJobs();
8080

8181
logger.info("Will use db name {}", dbName);
82-
MongoDatabase mongoDb = MongoUtils.getMongoDatabase(dbName, connUri);
82+
MongoDatabase mongoDb = MongoUtils.getMongoDatabase(dbName, connUri, MongoUtils.MONGO_USERJOBS_USER_ENV_VAR, MongoUtils.MONGO_USERJOBS_PASSWORD_ENV_VAR);
8383

8484
dao = new PDBInfoDAOMongo(mongoDb);
8585
interfResDao = new InterfaceResidueFeaturesDAOMongo(mongoDb);

eppic-dbtools/src/main/java/eppic/db/loaders/UploadSearchSeqCacheToDb.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public static void main(String[] args) throws IOException, InterruptedException
102102
DbPropertiesReader propsReader = new DbPropertiesReader(configFile);
103103
String connUri = propsReader.getMongoUri();
104104

105-
MongoDatabase mongoDb = MongoUtils.getMongoDatabase(propsReader.getDbName(), connUri);
105+
MongoDatabase mongoDb = MongoUtils.getMongoDatabase(propsReader.getDbName(), connUri, MongoUtils.MONGO_USER_ENV_VAR, MongoUtils.MONGO_PASSWORD_ENV_VAR);
106106

107107
HitHspDAO hitHspDAO = new HitHspDAOMongo(mongoDb);
108108

eppic-dbtools/src/main/java/eppic/db/loaders/UploadToDb.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ public static void main(String[] args) throws ExecutionException, InterruptedExc
157157
dbName = propsReader.getDbNameUserJobs();
158158

159159
logger.info("Will use db name {}", dbName);
160-
MongoDatabase mongoDb = MongoUtils.getMongoDatabase(dbName, connUri);
160+
MongoDatabase mongoDb = MongoUtils.getMongoDatabase(dbName, connUri, MongoUtils.MONGO_USER_ENV_VAR, MongoUtils.MONGO_PASSWORD_ENV_VAR);
161161

162162
dao = new PDBInfoDAOMongo(mongoDb);
163163
interfResDao = new InterfaceResidueFeaturesDAOMongo(mongoDb);

eppic-dbtools/src/main/java/eppic/db/loaders/UploadUniprotInfoToDb.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public static void main(String[] args) throws IOException, InterruptedException
111111
DbPropertiesReader propsReader = new DbPropertiesReader(configFile);
112112
String connUri = propsReader.getMongoUri();
113113

114-
MongoDatabase mongoDb = MongoUtils.getMongoDatabase(propsReader.getDbName(), connUri);
114+
MongoDatabase mongoDb = MongoUtils.getMongoDatabase(propsReader.getDbName(), connUri, MongoUtils.MONGO_USER_ENV_VAR, MongoUtils.MONGO_PASSWORD_ENV_VAR);
115115

116116
if (full) {
117117
logger.info("FULL mode: dropping collection and recreating index");

eppic-dbtools/src/main/java/eppic/db/mongoutils/MongoSettings.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public class MongoSettings {
99

1010
public MongoSettings(String dbName, String connUri) {
1111
this.dbName = dbName;
12-
mongoDatabase = MongoUtils.getMongoDatabase(dbName, connUri);
12+
mongoDatabase = MongoUtils.getMongoDatabase(dbName, connUri, MongoUtils.MONGO_USER_ENV_VAR, MongoUtils.MONGO_PASSWORD_ENV_VAR);
1313
}
1414

1515
public MongoDatabase getMongoDatabase() {

eppic-dbtools/src/main/java/eppic/db/mongoutils/MongoUtils.java

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,13 @@
1616
import javax.persistence.Index;
1717
import javax.persistence.Table;
1818

19+
import java.net.URLEncoder;
20+
import java.nio.charset.StandardCharsets;
1921
import java.util.ArrayList;
2022
import java.util.HashSet;
2123
import java.util.List;
2224
import java.util.Set;
25+
import java.util.regex.Pattern;
2326
import java.util.stream.Collectors;
2427

2528
import static com.mongodb.client.model.Indexes.ascending;
@@ -29,6 +32,12 @@ public class MongoUtils {
2932

3033
private static final Logger logger = LoggerFactory.getLogger(MongoUtils.class);
3134

35+
public static final String MONGO_USER_ENV_VAR = "MONGO_USER";
36+
public static final String MONGO_PASSWORD_ENV_VAR = "MONGO_PWD";
37+
public static final String MONGO_USERJOBS_USER_ENV_VAR = "MONGO_USERJOBS_USER";
38+
public static final String MONGO_USERJOBS_PASSWORD_ENV_VAR = "MONGO_USERJOBS_PWD";
39+
40+
3241
/**
3342
* Writes a single {@link Object} to a {@param collectionName} collection in the given {@param mongoDatabase}.
3443
*
@@ -81,7 +90,25 @@ public static Document convertValueToDocument(Object o) {
8190
* @param connUriStr the Mongo connection URI
8291
* @return {@link com.mongodb.client.MongoDatabase} database
8392
*/
84-
public static MongoDatabase getMongoDatabase(String dbName, String connUriStr) {
93+
public static MongoDatabase getMongoDatabase(String dbName, String connUriStr, String mongoUserEnv, String mongoPasswordEnv) {
94+
95+
int numPlaceHolders = (int) Pattern.compile("%s").matcher(connUriStr).results().count();
96+
if (numPlaceHolders != 2) {
97+
logger.error("Mongo connection URI string [ {} ] does not contain exactly 2 placeholders. " +
98+
"Please check dw.db.connection.uri property", connUriStr);
99+
throw new IllegalArgumentException("Mongo connection URI string does not contain exactly 2 placeholders");
100+
}
101+
102+
String mongoUser = System.getenv(mongoUserEnv);
103+
String mongoPassword = System.getenv(mongoPasswordEnv);
104+
if (mongoUser == null || mongoUser.isBlank() || mongoPassword == null || mongoPassword.isBlank()) {
105+
logger.error("Mongo user or password is not defined. Please set environment variable {} and {}", mongoUserEnv, mongoPasswordEnv);
106+
throw new IllegalArgumentException(String.format("Mongo user or password is not defined. Please set environment variable %s and %s", mongoUserEnv, mongoPasswordEnv));
107+
}
108+
// whatever goes into the Mongo URI must be url encoded so that the URI is valid. Otherwise chars with a special URL semantic (which can typically appear in passwords) would break the URI
109+
mongoUser = URLEncoder.encode(mongoUser, StandardCharsets.UTF_8);
110+
mongoPassword = URLEncoder.encode(mongoPassword, StandardCharsets.UTF_8);
111+
connUriStr = String.format(connUriStr, mongoUser, mongoPassword);
85112

86113
MongoClient mongoClient;
87114
try {

eppic-rest/src/main/java/eppic/rest/service/JobService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ public JobService(EppicRestProperties eppicRestProperties) {
7171

7272
private void initDaos() {
7373

74-
MongoDatabase mongoDb = MongoUtils.getMongoDatabase(eppicRestProperties.getDbName(), eppicRestProperties.getMongoUri());
75-
MongoDatabase mongoDbUserJobs = MongoUtils.getMongoDatabase(eppicRestProperties.getDbNameUserjobs(), eppicRestProperties.getMongoUriUserjobs());
74+
MongoDatabase mongoDb = MongoUtils.getMongoDatabase(eppicRestProperties.getDbName(), eppicRestProperties.getMongoUri(), MongoUtils.MONGO_USER_ENV_VAR, MongoUtils.MONGO_PASSWORD_ENV_VAR);
75+
MongoDatabase mongoDbUserJobs = MongoUtils.getMongoDatabase(eppicRestProperties.getDbNameUserjobs(), eppicRestProperties.getMongoUriUserjobs(), MongoUtils.MONGO_USERJOBS_USER_ENV_VAR, MongoUtils.MONGO_USERJOBS_PASSWORD_ENV_VAR);
7676

7777
pdbInfoDAO = new PDBInfoDAOMongo(mongoDb);
7878
featuresDAO = new InterfaceResidueFeaturesDAOMongo(mongoDb);

eppic-rest/src/main/java/eppic/rest/service/SubmitService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ private void init() {
9494

9595
logger.info("Initialised email data: {}", emailData);
9696

97-
mongoDbUserJobs = MongoUtils.getMongoDatabase(eppicRestProperties.getDbNameUserjobs(), eppicRestProperties.getMongoUriUserjobs());
97+
mongoDbUserJobs = MongoUtils.getMongoDatabase(eppicRestProperties.getDbNameUserjobs(), eppicRestProperties.getMongoUriUserjobs(), MongoUtils.MONGO_USERJOBS_USER_ENV_VAR, MongoUtils.MONGO_USERJOBS_PASSWORD_ENV_VAR);
9898
}
9999

100100
/**

0 commit comments

Comments
 (0)