diff --git a/alexa/alexa-helper.js b/alexa/alexa-helper.js index 231f122..11dddec 100644 --- a/alexa/alexa-helper.js +++ b/alexa/alexa-helper.js @@ -11,5 +11,21 @@ module.exports = { ) || false, bri_default: process.env.BRI_DEFAULT || 254, - prefixUUID: 'f6543a06-da50-11ba-8d8f-' + prefixUUID: 'f6543a06-da50-11ba-8d8f-', + + AlexaIPAddress: function (req) { + if (req.headers['x-forwarded-for'] !== undefined) { + return req.headers['x-forwarded-for'] + } + if (req.socket.remoteAddress !== undefined) { + return req.socket.remoteAddress + } + if (req.connection.remoteAddress !== undefined) { + return req.connection.remoteAddress + } + if ((req.connection.socket) && (req.connection.socket.remoteAddress)) { + return req.connection.socket.remoteAddress + } + return undefined + } } diff --git a/alexa/alexa-home-controller.js b/alexa/alexa-home-controller.js index 459487c..3d26eda 100644 --- a/alexa/alexa-home-controller.js +++ b/alexa/alexa-home-controller.js @@ -21,14 +21,7 @@ module.exports = function (RED) { } RED.httpNode.use(function (req, res, next) { - const alexaIp = req.headers['x-forwarded-for'] || - req.connection.remoteAddress || - req.socket.remoteAddress || - req.connection.socket.remoteAddress || - undefined - - req.alexaIp = alexaIp - + req.headers.alexaIp = alexaHome.AlexaIPAddress(req) return next() }) @@ -473,7 +466,7 @@ module.exports = function (RED) { payload: request.body } - msg.alexa_ip = request.alexa_ip + msg.alexa_ip = alexaHome.AlexaIPAddress(request) if (alexaHome.isDebug) { const httpHeader = Object.keys(request.headers) diff --git a/alexa/alexa-hub.js b/alexa/alexa-hub.js index 164616d..13058d8 100644 --- a/alexa/alexa-hub.js +++ b/alexa/alexa-hub.js @@ -2,7 +2,7 @@ const express = require('express') const bodyParser = require('body-parser') -require('./alexa-home') +const alexaHome = require('./alexa-home') /** * Hub to create communication with alexa devices * @constructor @@ -56,15 +56,8 @@ AlexaHub.prototype.createServer = function (protocol, options) { }) app.use(function (req, res, next) { - const alexaIp = req.headers['x-forwarded-for'] || - req.connection.remoteAddress || - req.socket.remoteAddress || - req.connection.socket.remoteAddress || - undefined - - req.alexaIp = alexaIp - - node.controller.log('Request data: ' + alexaIp + '-' + + req.headers.alexaIp = alexaHome.AlexaIPAddress(req) + node.controller.log('Request data: ' + req.alexaIp + '-' + node.port + '/' + req.method + ' -> ' + req.url)