From 5b4e829675ae00f70acc3370d3098dac56205f80 Mon Sep 17 00:00:00 2001 From: emizzle Date: Fri, 25 May 2018 11:00:26 +1000 Subject: [PATCH] * Adds auto cors updates to geth command when blockchain started via run command. * Fixes issues with storage/webserver configs not enabled but still having their values put in to geth cors * Adds fixes for not including port when port == false * Refactors of cors logic, and also now in a generic location so can be used by both `embark blockchain` and when blockchain started in separate process --- lib/core/config.js | 23 +++++++++++++++++++++++ lib/index.js | 14 +------------- test_apps/test_app/config/storage.json | 2 +- 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/lib/core/config.js b/lib/core/config.js index 3d76147a..e150397c 100644 --- a/lib/core/config.js +++ b/lib/core/config.js @@ -54,6 +54,8 @@ Config.prototype.loadConfigFiles = function(options) { this.loadWebServerConfigFile(); this.loadChainTrackerFile(); this.loadPluginContractFiles(); + + this._updateBlockchainCors(); }; Config.prototype.reloadConfig = function() { @@ -66,6 +68,27 @@ Config.prototype.reloadConfig = function() { this.loadContractsConfigFile(); this.loadExternalContractsFiles(); this.loadChainTrackerFile(); + + this._updateBlockchainCors(); +}; + +Config.prototype._updateBlockchainCors = function(){ + let blockchainConfig = this.blockchainConfig; + let storageConfig = this.storageConfig; + let webServerConfig = this.webServerConfig; + let cors = ''; + + if(webServerConfig && webServerConfig.enabled) { + let webServerPort = webServerConfig.port ? `:${webServerConfig.port}` : ''; + if(webServerConfig.host) cors = `http://${webServerConfig.host}${webServerPort}`; + } + if(storageConfig && storageConfig.enabled) { + let storagePort = storageConfig.port ? `:${storageConfig.port}` : ''; + if(storageConfig.host) cors += `${cors.length ? ',' : ''}${storageConfig.protocol || 'http'}://${storageConfig.host}${storagePort}`; + } + + if(blockchainConfig.rpcCorsDomain === 'auto' && cors.length) blockchainConfig.rpcCorsDomain = cors; + if(blockchainConfig.wsOrigins === 'auto' && cors.length) blockchainConfig.wsOrigins = cors; }; Config.prototype._mergeConfig = function(configFilePath, defaultConfig, env, enabledByDefault) { diff --git a/lib/index.js b/lib/index.js index 3245ac93..a4a809e1 100644 --- a/lib/index.js +++ b/lib/index.js @@ -49,19 +49,7 @@ class Embark { blockchain(env, client) { this.context = [constants.contexts.blockchain]; - let blockchainConfig = this.config.blockchainConfig; - let storageConfig = this.config.storageConfig; - let webServerConfig = this.config.webServerConfig; - - if(blockchainConfig.rpcCorsDomain === 'auto') { - if(webServerConfig) blockchainConfig.rpcCorsDomain = `http://${webServerConfig.host}:${webServerConfig.port}`; - if(storageConfig) blockchainConfig.rpcCorsDomain += `${blockchainConfig.rpcCorsDomain.length ? ',' : ''}${storageConfig.protocol}://${storageConfig.host}:${storageConfig.port}`; - } - if(blockchainConfig.wsOrigins === 'auto') { - if(webServerConfig) blockchainConfig.wsOrigins = `http://${webServerConfig.host}:${webServerConfig.port}`; - if(storageConfig) blockchainConfig.wsOrigins += `${blockchainConfig.wsOrigins.length ? ',' : ''}${storageConfig.protocol}://${storageConfig.host}:${storageConfig.port}`; - } - return require('./cmds/blockchain/blockchain.js')(blockchainConfig, client, env, this.isDev(env)).run(); + return require('./cmds/blockchain/blockchain.js')(this.config.blockchainConfig, client, env, this.isDev(env)).run(); } simulator(options) { diff --git a/test_apps/test_app/config/storage.json b/test_apps/test_app/config/storage.json index 55eb593a..a226dcb3 100644 --- a/test_apps/test_app/config/storage.json +++ b/test_apps/test_app/config/storage.json @@ -11,7 +11,7 @@ "enabled": true, "provider": "swarm", "host": "swarm-gateways.net", - "port": 80, + "port": false, "getUrl": "http://swarm-gateways.net/bzzr:/" }, "livenet": {