New server route to fetch config

Added a new route to the Express server to supply client with config. Removed the original 'cookie' hack
This commit is contained in:
Unknown 2017-06-29 21:22:00 +02:00 committed by unknown
parent 66f93ee541
commit 1590693547
2 changed files with 26 additions and 28 deletions

View File

@ -38,37 +38,34 @@
// Select http or https module, depending on reqested url
const lib = url.startsWith("https") ? require("https") : require("http");
const request = lib.get(url, (response) => {
// Handle http errors
if (response.statusCode < 200 || response.statusCode > 299) {
reject(new Error(`Failed to load page, status code: ${response.statusCode}`));
}
if (response.headers["set-cookie"]) {
response.headers["set-cookie"].forEach(
function (cookiestr) {
if (cookiestr.startsWith("config")) {
var cookieString = JSON.parse(cookie.parse(cookiestr)["config"]);
resolve(cookieString);
}
}
);
};
reject(new Error(`Unable to read config cookie from server (${url}`));
var configData = "";
// Gather incomming data
response.on("data", function(chunk) {
configData += chunk;
});
// Resolve promise at the end of the HTTP/HTTPS stream
response.on("end", function() {
resolve(JSON.parse(configData));
});
});
request.on("error", function(error) {
reject(new Error(`Unable to read config from server (${url} (${error.message}`));
});
// Handle connection errors of the request
request.on("error", (err) => reject(new Error(`Failed to load page, error message: ${err}`)));
})
};
// Only start the client if a non-local server was provided
if (["localhost", "127.0.0.1", "::1", "::ffff:127.0.0.1", undefined].indexOf(config.address) === -1) {
getServerConfig(`http://${config.address}:${config.port}/`)
.then(function (cookieConfig) {
getServerConfig(`http://${config.address}:${config.port}/config/`)
.then(function (config) {
// Pass along the server config via an environment variable
var env = Object.create(process.env);
var options = { env: env };
cookieConfig.address = config.address;
cookieConfig.port = config.port;
env.config = JSON.stringify(cookieConfig);
config.address = config.address;
config.port = config.port;
env.config = JSON.stringify(config);
// Spawn electron application
const electron = require("electron");

View File

@ -52,6 +52,10 @@ var Server = function(config, callback) {
res.send(global.version);
});
app.get("/config", function(req,res) {
res.send(config);
});
app.get("/", function(req, res) {
var html = fs.readFileSync(path.resolve(global.root_path + "/index.html"), {encoding: "utf8"});
html = html.replace("#VERSION#", global.version);
@ -62,9 +66,6 @@ var Server = function(config, callback) {
}
html = html.replace("#CONFIG_FILE#", configFile);
// Set a temporary cookie called "config" to the JSON encoded config object
res.cookie("config", JSON.stringify(config));
res.send(html);
});