From 481cdefafcbde1f6db73076c8566e1de2abee908 Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 24 Nov 2020 00:09:47 +0600 Subject: [PATCH] Add host bind option for frontend (#5014) * Added IP address bind to HTTP frontend listener * Changed ip to host in configuration and code Co-authored-by: romanius Co-authored-by: Koen Kanters --- lib/extension/frontend.js | 5 +++-- test/frontend.test.js | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/extension/frontend.js b/lib/extension/frontend.js index 9fa1b4669..dec2d720d 100644 --- a/lib/extension/frontend.js +++ b/lib/extension/frontend.js @@ -27,6 +27,7 @@ class Frontend extends Extension { this.server.on('upgrade', this.onUpgrade); this.developmentServer = settings.get().frontend.development_server; this.development = !!this.developmentServer; + this.host = settings.get().frontend.host || '0.0.0.0'; this.port = settings.get().frontend.port || 8080; this.retainedMessages = new Map(); @@ -51,8 +52,8 @@ class Frontend extends Extension { logger.info(`Running frontend in development mode (${this.developmentServer})`); } - this.server.listen(this.port); - logger.info(`Started frontend on port ${this.port}`); + this.server.listen(this.port, this.host); + logger.info(`Started frontend on port ${this.host}:${this.port}`); } async stop() { diff --git a/test/frontend.test.js b/test/frontend.test.js index deaf8fba4..ad6687de1 100644 --- a/test/frontend.test.js +++ b/test/frontend.test.js @@ -86,7 +86,7 @@ describe('Frontend', () => { data.writeDefaultState(); settings._reRead(); settings.set(['experimental'], {new_api: true}); - settings.set(['frontend'], {port: 8081}); + settings.set(['frontend'], {port: 8081, host: "127.0.0.1"}); settings.set(['homeassistant'], true); zigbeeHerdsman.devices.bulb.linkquality = 10; }); @@ -99,7 +99,7 @@ describe('Frontend', () => { controller = new Controller(); await controller.start(); expect(mockNodeStatic.variables.path).toBe("my/dummy/path"); - expect(mockHTTP.implementation.listen).toHaveBeenCalledWith(8081); + expect(mockHTTP.implementation.listen).toHaveBeenCalledWith(8081, "127.0.0.1"); const mockWSClient = { implementation: { @@ -197,7 +197,7 @@ describe('Frontend', () => { controller = new Controller(); await controller.start(); expect(mockHTTPProxy.variables.initParameter).toStrictEqual({ws: true}); - expect(mockHTTP.implementation.listen).toHaveBeenCalledWith(8080); + expect(mockHTTP.implementation.listen).toHaveBeenCalledWith(8080, "0.0.0.0"); mockHTTP.variables.onRequest(1, 2); expect(mockHTTPProxy.implementation.web).toHaveBeenCalledTimes(1);