From fd491d91ff44c2e4e9c73e12a197cc4625967afa Mon Sep 17 00:00:00 2001 From: igor nitto Date: Fri, 23 Feb 2018 18:29:49 +0000 Subject: [PATCH] WebServer init failure on config produced by plugins >= 4.0.2 [CORDA-877] (#2624) --- .../kotlin/net/corda/webserver/WebServerConfig.kt | 14 +++++++++++++- .../net/corda/webserver/internal/NodeWebServer.kt | 5 ++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/webserver/src/main/kotlin/net/corda/webserver/WebServerConfig.kt b/webserver/src/main/kotlin/net/corda/webserver/WebServerConfig.kt index 157b5f3cdd..28a960a224 100644 --- a/webserver/src/main/kotlin/net/corda/webserver/WebServerConfig.kt +++ b/webserver/src/main/kotlin/net/corda/webserver/WebServerConfig.kt @@ -5,6 +5,7 @@ import net.corda.core.utilities.NetworkHostAndPort import net.corda.nodeapi.internal.config.NodeSSLConfiguration import net.corda.nodeapi.internal.config.User import net.corda.nodeapi.internal.config.getValue +import net.corda.nodeapi.internal.config.parseAs import java.nio.file.Path /** @@ -25,5 +26,16 @@ class WebServerConfig(override val baseDirectory: Path, val config: Config) : No throw Exception("Missing rpc address property. Either 'rpcSettings' or 'rpcAddress' must be specified.") } val webAddress: NetworkHostAndPort by config - val rpcUsers: List by config + val runAs: User + + init { + // TODO: replace with credentials supplied by a user + val users = if (config.hasPath("rpcUsers")) { + // TODO: remove this once config format is updated + config.getConfigList("rpcUsers") + } else { + config.getConfigList("security.authService.dataSource.users") + } + runAs = users.first().parseAs() + } } diff --git a/webserver/src/main/kotlin/net/corda/webserver/internal/NodeWebServer.kt b/webserver/src/main/kotlin/net/corda/webserver/internal/NodeWebServer.kt index 4938ca99c1..958c540f61 100644 --- a/webserver/src/main/kotlin/net/corda/webserver/internal/NodeWebServer.kt +++ b/webserver/src/main/kotlin/net/corda/webserver/internal/NodeWebServer.kt @@ -189,10 +189,9 @@ class NodeWebServer(val config: WebServerConfig) { } private fun connectLocalRpcAsNodeUser(): CordaRPCOps { - val rpcUser = config.rpcUsers.firstOrNull() ?: throw IllegalArgumentException("The node config has not specified any RPC users") - log.info("Connecting to node at ${config.rpcAddress} as $rpcUser") + log.info("Connecting to node at ${config.rpcAddress} as ${config.runAs}") val client = CordaRPCClient(config.rpcAddress) - val connection = client.start(rpcUser.username, rpcUser.password) + val connection = client.start(config.runAs.username, config.runAs.password) return connection.proxy }