From 759ebadfc82eb7da9a4eb9945178e29f7d5909fd Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Mon, 11 Nov 2013 17:23:10 +0100 Subject: [PATCH] Read user's database_host from redis, when available (#88) Still lacks a testcase --- lib/cartodb/carto_data.js | 10 +++++++--- lib/cartodb/server_options.js | 17 ++++++++++++++++- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/lib/cartodb/carto_data.js b/lib/cartodb/carto_data.js index 538dd6f4..bb1bcb06 100644 --- a/lib/cartodb/carto_data.js +++ b/lib/cartodb/carto_data.js @@ -112,10 +112,14 @@ module.exports = function() { this.retrieve(this.user_metadata_db, redisKey, 'database_host', function(err, dbname) { if ( err ) callback(err, null); - else if ( dbname === null ) { - callback(new Error("missing " + username + "'s database_host in redis (try CARTODB/script/restore_redis)"), null); + else { + if ( dbname === null ) { + /* database_host was introduced in cartodb-2.5.0, + * for older versions we'll just use configured host */ + //console.log("WARNING: missing " + username + "'s database_host in redis (try CARTODB/script/restore_redis)"); + } + callback(err, dbname); } - else callback(err, dbname); }); }; diff --git a/lib/cartodb/server_options.js b/lib/cartodb/server_options.js index f4156b61..43b0a533 100644 --- a/lib/cartodb/server_options.js +++ b/lib/cartodb/server_options.js @@ -359,14 +359,22 @@ module.exports = function(){ req.params.interactivity = req.params.interactivity || 'cartodb_id'; req.params.processXML = function(req, xml, callback) { + + // Replace dbuser var dbuser = req.params.dbuser || global.settings.postgres.user; if ( ! me.rx_dbuser ) me.rx_dbuser = /(<\/Parameter>)/g; xml = xml.replace(me.rx_dbuser, "$1" + dbuser + "$2"); + // Replace dbpass var dbpass = req.params.dbpassword || global.settings.postgres.password; if ( ! me.rx_dbpass ) me.rx_dbpass = /(<\/Parameter>)/g; xml = xml.replace(me.rx_dbpass, "$1" + dbpass + "$2"); + // Replace or set dbhost + var dbhost = req.params.dbhost || global.settings.postgres.host; + if ( ! me.rx_dbhost ) me.rx_dbhost = /(<\/Parameter>)/g; + xml = xml.replace(me.rx_dbhost, "$1" + dbhost + "$2"); + callback(null, xml); } @@ -384,9 +392,16 @@ module.exports = function(){ if(data === "0") throw new Error("Sorry, you are unauthorized (permission denied)"); return data; }, - function getDatabase(err, data){ + function getDatabaseHost(err, data){ if(err) throw err; + cartoData.getDatabaseHost(req, this); + }, + function getDatabase(err, data){ + if (req.profiler) req.profiler.done('cartoData.getDatabaseHost'); + if(err) throw err; + if ( data ) _.extend(req.params, {dbhost:data}); + cartoData.getDatabase(req, this); }, function getGeometryType(err, data){