From 591eb73f45594b0cae0cc86eafc428c196d9c2d5 Mon Sep 17 00:00:00 2001 From: Igor Artamonov Date: Wed, 12 Jun 2019 23:52:28 -0400 Subject: [PATCH] solution: allow to setup with ssl --- .../io/emeraldpay/dshackle/GrpcServer.kt | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/io/emeraldpay/dshackle/GrpcServer.kt b/src/main/kotlin/io/emeraldpay/dshackle/GrpcServer.kt index 127e0086..5b709e85 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/GrpcServer.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/GrpcServer.kt @@ -2,17 +2,21 @@ package io.emeraldpay.dshackle import io.grpc.Server import io.grpc.ServerBuilder +import org.apache.commons.lang3.StringUtils import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Autowired +import org.springframework.core.env.Environment import org.springframework.core.io.ResourceLoader import org.springframework.stereotype.Service +import java.io.File import javax.annotation.PostConstruct import javax.annotation.PreDestroy @Service open class GrpcServer( @Autowired val rpcs: List, - @Autowired val resourceLoader: ResourceLoader + @Autowired val resourceLoader: ResourceLoader, + @Autowired val env: Environment ) { private val log = LoggerFactory.getLogger(GrpcServer::class.java) @@ -27,11 +31,28 @@ open class GrpcServer( serverBuilder.addService(it) } -// serverBuilder -// .useTransportSecurity( -// resourceLoader.getResource("127.0.0.1.crt").inputStream, -// resourceLoader.getResource("127.0.0.1.p8.key").inputStream -// ) + var secure = false + if (env.getProperty("ssl", "false") == "true") { + secure = true + if (StringUtils.isEmpty(env.getProperty("ssl.cert"))) { + log.warn("ssl.cert property is not set (path to server TLS certificate)") + secure = false + } + if (StringUtils.isEmpty(env.getProperty("ssl.key"))) { + log.warn("ssl.key property is not set (path to server TLS certificate key)") + secure = false + } + } + if (secure) { + log.info("Using TLS") + serverBuilder + .useTransportSecurity( + File(env.getProperty("ssl.cert")!!), + File(env.getProperty("ssl.key")!!) + ) + } else { + log.warn("Using insecure transport") + } val server = serverBuilder.build() this.server = server