Untitled
unknown
plain_text
a year ago
1.9 kB
8
Indexable
@Configuration
class MongoConfig(
@Value("\${spring.data.mongodb.host:localhost}")
private val host: String,
@Value("\${spring.data.mongodb.database:}")
private val database: String,
@Value("\${spring.data.mongodb.port:}")
private val port: Int,
@Value("\${spring.data.mongodb.username:}")
private val userName: String,
@Value("\${spring.data.mongodb.password:}")
private val password: String
) {
private val log = logger()
@Autowired
private lateinit var env: Environment
@Bean
fun mongoClientSettings() = MongoClientSettings.builder().build()
@Bean
@Primary
@Profile(Profiles.DEV, Profiles.STG, Profiles.PRD)
fun mongoClientSettingsWithSSL(): MongoClientSettings {
log.info("set ssl for database connection")
return MongoClientSettings.builder()
.credential(
MongoCredential.createCredential(
userName,
database,
encodeUrl(password).toCharArray()
)
)
.retryWrites(false)
.applyToSslSettings { builder: SslSettings.Builder -> builder.enabled(true) }
.applyToClusterSettings { builder ->
builder.hosts(listOf(ServerAddress(host, port)))
}
.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
}
@Bean
fun mongoPropertiesCustomizer(properties: MongoProperties):
MongoPropertiesClientSettingsBuilderCustomizer {
return MongoPropertiesClientSettingsBuilderCustomizer(properties, env)
}
}Editor is loading...
Leave a Comment