From a68b1240438fb6305aef15d1295e2c7d033fbc07 Mon Sep 17 00:00:00 2001 From: Lennart kats Date: Thu, 25 Jun 2015 12:31:32 +0000 Subject: [PATCH] Prepare settings for multi-domain support --- server.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/server.js b/server.js index 107c80a5..1c65898d 100755 --- a/server.js +++ b/server.js @@ -59,9 +59,9 @@ function main(argv, config, onLoaded) { .default("settings", DEFAULT_SETTINGS) .describe("settings", "Settings file to use") .describe("dump", "dump config file as JSON") - .describe("domain", "Top-level domain to use (e.g, c9.io)") + .describe("domains", "Primary and any secondary top-level domains to use (e.g, c9.io,c9.dev)") .describe("exclude", "Exclude specified service") - .default("domain", inContainer && process.env.C9_HOSTNAME) + .default("domains", inContainer && process.env.C9_HOSTNAME) .boolean("help") .describe("help", "Show command line options."); @@ -123,11 +123,13 @@ function start(configName, options, callback) { var settings = require(path.join(__dirname, "./settings", settingsName))(); - if (argv.domain && settings.c9) { - settings.c9.domain = argv.domain; + argv.domains = argv.domains || settings.domains; + if (argv.domains && settings.c9) { + settings.c9.domains = Array.isArray(argv.domains) ? argv.domains : [argv.domains]; + var primaryDomain = argv.domains[0]; for (var s in settings) { if (settings[s] && settings[s].baseUrl) - settings[s].baseUrl = replaceDomain(settings[s].baseUrl, argv.domain); + settings[s].baseUrl = replaceDomain(settings[s].baseUrl, primaryDomain); } } @@ -177,5 +179,7 @@ function start(configName, options, callback) { } function replaceDomain(url, domain) { + if (url.match(/\$DOMAIN/)) + return url; return url.replace(/[^./]+\.[^./]+$/, domain).replace(/[^./]+\.[^.]+\//, domain + "/"); } \ No newline at end of file