Untitled
unknown
plain_text
a year ago
1.8 kB
8
Indexable
class MongoConfig(
@Value("\${spring.data.mongodb.host:localhost}")
private val host: String,
@Value("\${spring.data.mongodb.username:}")
private val userName: String,
@Value("\${spring.data.mongodb.password:}")
private val password: String,
@Value("\${spring.data.mongodb.database:}")
private val database: String
) : AbstractMongoClientConfiguration() {
private val log = logger()
override fun getDatabaseName(): String {
return database
}
@Bean
override fun mongoClientSettings() = MongoClientSettings.builder().build()
@Bean
@Primary
@Profile(Profiles.DEV, Profiles.STG, Profiles.PRD)
fun mongoClientSettingsWithSSL(): MongoClientSettings {
if (Profiles.isActiveProfile("local")) {
return MongoClientSettings.builder()
.build()
}
log.info("set ssl for database connection")
return MongoClientSettings.builder()
.applyToSslSettings { builder: SslSettings.Builder ->
builder.enabled(
true
)
}
.applyConnectionString(
ConnectionString(
"mongodb://$userName:${encodeUrl(password)}@$host/" +
"?tls=true&tlsCAFsile=global-bundle.pem&replicaSet=rs0&" +
"readPreference=secondaryPreferred"
)
)
.build()
}
private fun encodeUrl(statement: String): String {
var password = statement
password = password.trim { it <= ' ' }
if (password.contains("@") || password.contains(":")) {
return URLEncoder.encode(password, StandardCharsets.ISO_8859_1)
}
return password
}
}Editor is loading...
Leave a Comment