Merge pull request +7975 from c9/multi-domain

Multiple-domain/cs50 support part 1: change all configs
pull/117/merge
Tim Robinson 2015-06-29 14:19:29 +02:00
commit 8a40d404df
1 zmienionych plików z 29 dodań i 10 usunięć

Wyświetl plik

@ -10,6 +10,7 @@ var path = require("path");
var architect = require("architect");
var optimist = require("optimist");
var async = require("async");
var assert = require("assert");
var os = require("os");
require("c9/setup_paths.js");
@ -60,9 +61,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.");
@ -124,13 +125,9 @@ function start(configName, options, callback) {
var settings = require(path.join(__dirname, "./settings", settingsName))();
if (argv.domain && settings.c9) {
settings.c9.domain = argv.domain;
for (var s in settings) {
if (settings[s] && settings[s].baseUrl)
settings[s].baseUrl = replaceDomain(settings[s].baseUrl, argv.domain);
}
}
argv.domains = argv.domains || settings.domains;
if (settings.c9 && argv.domains)
replaceDomains(settings, argv.domains);
var plugins = require(configPath)(settings, options);
@ -177,6 +174,28 @@ function start(configName, options, callback) {
});
}
function replaceDomains(settings, domains) {
domains = Array.isArray(domains) ? domains : [domains];
var primaryDomain = domains[0];
settings.domains = domains;
settings.primaryDomain = replaceDomain(settings.primaryDomain, primaryDomain);
settings.primaryBaseUrl = replaceDomain(settings.primaryBaseUrl, primaryDomain);
for (var s in settings) {
if (!settings[s])
continue;
if (settings[s].baseUrl)
settings[s].baseUrl = replaceDomain(settings[s].baseUrl, primaryDomain);
if (settings[s].primaryBaseUrl)
settings[s].primaryBaseUrl = replaceDomain(settings[s].primaryBaseUrl, primaryDomain);
if (settings[s].baseUrls) {
assert(settings[s].baseUrls.length === 1);
settings[s].baseUrls = domains.map(function(d) {
return replaceDomain(settings[s].baseUrls[0], d);
});
}
}
}
function replaceDomain(url, domain) {
return url.replace(/[^./]+\.[^./]+$/, domain).replace(/[^./]+\.[^.]+\//, domain + "/");
return url.replace("$DOMAIN", domain);
}