Skip to content

Commit

Permalink
Merge pull request #457 from Jopyth/patch-limited-access
Browse files Browse the repository at this point in the history
Patch limited access
  • Loading branch information
MichMich authored Sep 29, 2016
2 parents 54f04c9 + 5899497 commit 501c89a
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ The following properties can be configured:
| **Option** | **Description** |
| --- | --- |
| `port` | The port on which the MagicMirror² server will run on. The default value is `8080`. |
| `ipWhitelist` | The list of IPs from which you are allowed to access the MagicMirror². The default value is `["127.0.0.1", "::ffff:127.0.0.1"]`.It is possible to specify IPs with subnet masks (`["127.0.0.1", "127.0.0.1/24"]`) or define ip ranges (`["127.0.0.1", ["192.168.0.1", "192.168.0.100"]]`).
|
| `kioskmode` | This allows MagicMirror² to run in Kiosk Mode. It protects from other programs popping on top of your screen. The default value is `false`|
| `language` | The language of the interface. (Note: Not all elements will be localized.) Possible values are `en`, `nl`, `ru`, `fr`, etc., but the default value is `en`. |
| `timeFormat` | The form of time notation that will be used. Possible values are `12` or `24`. The default is `24`. |
Expand Down
1 change: 1 addition & 0 deletions config/config.js.sample
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

var config = {
port: 8080,
ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1"],

language: 'en',
timeFormat: 24,
Expand Down
1 change: 1 addition & 0 deletions js/defaults.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
var defaults = {
port: 8080,
kioskmode: false,
ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1"],

language: "en",
timeFormat: 24,
Expand Down
12 changes: 12 additions & 0 deletions js/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,23 @@ 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);

app.use(function(req, res, next) {
var result = ipfilter(config.ipWhitelist, {mode: "allow", log: false})(req, res, function(err) {
if (err === undefined) {
return next();
}
console.log(err.message);
res.status(403).send("This device is not allowed to access your mirror. <br> Please check your config.js or config.js.sample to change this.");
});
});

app.use("/js", express.static(__dirname));
app.use("/config", express.static(path.resolve(__dirname + "/../config")));
app.use("/css", express.static(path.resolve(__dirname + "/../css")));
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
"dependencies": {
"electron-prebuilt": "^0.37.2",
"express": "^4.14.0",
"express-ipfilter": "latest",
"feedme": "latest",
"iconv-lite": "latest",
"moment": "latest",
Expand Down

0 comments on commit 501c89a

Please sign in to comment.