From 5d29fa5e626c7f990d84fa81c556d824f8761d41 Mon Sep 17 00:00:00 2001 From: Joseph Bethge Date: Thu, 29 Sep 2016 16:34:57 +0200 Subject: [PATCH] ip address filtering --- CHANGELOG.md | 1 + config/config.js.sample | 3 +++ js/server.js | 6 ++++++ package.json | 1 + 4 files changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 326bfc49..74cb3f7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Added - Method to overwrite the module's header. [See documentation.](https://github.com/MichMich/MagicMirror/tree/develop/modules#getheader) +- Option to limit access to certain IP addresses based on the value of `ipWhitelist` in the `config.js`, default is access from localhost only (Issue [#456](https://github.com/MichMich/MagicMirror/issues/456)) ### Updated - Modified translations for Frysk. diff --git a/config/config.js.sample b/config/config.js.sample index 04c7fba9..b10c9915 100644 --- a/config/config.js.sample +++ b/config/config.js.sample @@ -6,6 +6,9 @@ var config = { port: 8080, + ipWhitelist: ['127.0.0.1', '::ffff:127.0.0.1'], + // you use ips with subnet mask: ['127.0.0.1', '127.0.0.1/24'] + // you use also use ip ranges: ['127.0.0.1', ['192.168.0.1', '192.168.0.100']] language: 'en', timeFormat: 24, diff --git a/js/server.js b/js/server.js index 2ab0b1b9..b8dcec59 100644 --- a/js/server.js +++ b/js/server.js @@ -10,11 +10,17 @@ var app = require("express")(); var server = require("http").Server(app); var io = require("socket.io")(server); var path = require("path"); +var ipfilter = require('express-ipfilter').IpFilter; var Server = function(config, callback) { console.log("Starting server op port " + config.port + " ... "); server.listen(config.port); + if (config.ipWhitelist === undefined) { + config.ipWhitelist = ['127.0.0.1', '::ffff:127.0.0.1']; + console.log("Warning: Missing value (ipWhitelist) from config.js, assuming default (localhost access only): " + config.ipWhitelist); + } + app.use(ipfilter(config.ipWhitelist, {mode: 'allow', log: false})); app.use("/js", express.static(__dirname)); app.use("/config", express.static(path.resolve(__dirname + "/../config"))); app.use("/css", express.static(path.resolve(__dirname + "/../css"))); diff --git a/package.json b/package.json index afdad5f6..cfef5f85 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "dependencies": { "electron-prebuilt": "^0.37.2", "express": "^4.14.0", + "express-ipfilter": "latest", "feedme": "latest", "iconv-lite": "latest", "moment": "latest",