mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-06-27 11:50:00 +00:00
Changed 'server.js' to allow an empty ipwhitelist to allow any and all hosts instead of none as mentioned in the documentation
106 lines
2.8 KiB
JavaScript
106 lines
2.8 KiB
JavaScript
/* jshint esversion: 6 */
|
|
|
|
"use strict";
|
|
|
|
const electron = require("electron");
|
|
const core = require(__dirname + "/app.js");
|
|
|
|
// Config
|
|
var config = process.env.config ? JSON.parse(process.env.config) : {};
|
|
// Module to control application life.
|
|
const app = electron.app;
|
|
// Module to create native browser window.
|
|
const BrowserWindow = electron.BrowserWindow;
|
|
|
|
// Keep a global reference of the window object, if you don't, the window will
|
|
// be closed automatically when the JavaScript object is garbage collected.
|
|
let mainWindow;
|
|
|
|
function createWindow() {
|
|
|
|
var electronOptionsDefaults = {
|
|
width: 800,
|
|
height: 600,
|
|
x: 0,
|
|
y: 0,
|
|
darkTheme: true,
|
|
webPreferences: {
|
|
nodeIntegration: false,
|
|
zoomFactor: config.zoom
|
|
},
|
|
backgroundColor: "#000000"
|
|
};
|
|
|
|
// DEPRECATED: "kioskmode" backwards compatibility, to be removed
|
|
// settings these options directly instead provides cleaner interface
|
|
if (config.kioskmode) {
|
|
electronOptionsDefaults.kiosk = true;
|
|
} else {
|
|
electronOptionsDefaults.fullscreen = true;
|
|
electronOptionsDefaults.autoHideMenuBar = true;
|
|
}
|
|
|
|
var electronOptions = Object.assign({}, electronOptionsDefaults, config.electronOptions);
|
|
|
|
// Create the browser window.
|
|
mainWindow = new BrowserWindow(electronOptions);
|
|
|
|
// and load the index.html of the app.
|
|
// If config.address is not defined or is an empty string (listening on all interfaces), connect to localhost
|
|
var address = config.address === void 0 | config.address === "" ? config.address = "localhost" : config.address;
|
|
mainWindow.loadURL(`http://${address}:${config.port}`);
|
|
|
|
// Open the DevTools if run with "npm start dev"
|
|
if (process.argv.includes("dev")) {
|
|
mainWindow.webContents.openDevTools();
|
|
}
|
|
|
|
// Set responders for window events.
|
|
mainWindow.on("closed", function() {
|
|
mainWindow = null;
|
|
});
|
|
|
|
if (config.kioskmode) {
|
|
mainWindow.on("blur", function() {
|
|
mainWindow.focus();
|
|
});
|
|
|
|
mainWindow.on("leave-full-screen", function() {
|
|
mainWindow.setFullScreen(true);
|
|
});
|
|
|
|
mainWindow.on("resize", function() {
|
|
setTimeout(function() {
|
|
mainWindow.reload();
|
|
}, 1000);
|
|
});
|
|
}
|
|
}
|
|
|
|
// This method will be called when Electron has finished
|
|
// initialization and is ready to create browser windows.
|
|
app.on("ready", function() {
|
|
console.log("Launching application.");
|
|
createWindow();
|
|
});
|
|
|
|
// Quit when all windows are closed.
|
|
app.on("window-all-closed", function() {
|
|
createWindow();
|
|
});
|
|
|
|
app.on("activate", function() {
|
|
// On OS X it's common to re-create a window in the app when the
|
|
// dock icon is clicked and there are no other windows open.
|
|
if (mainWindow === null) {
|
|
createWindow();
|
|
}
|
|
});
|
|
|
|
// Start the core application if server is run on localhost
|
|
// This starts all node helpers and starts the webserver.
|
|
if (["localhost", "127.0.0.1", "::1", "::ffff:127.0.0.1", undefined].indexOf(config.address) > -1) {
|
|
core.start(function (c) {
|
|
config = c;
|
|
});
|
|
} |