diff --git a/packages/node_modules/@node-red/nodes/core/network/31-tcpin.html b/packages/node_modules/@node-red/nodes/core/network/31-tcpin.html index cd85a655b..2138c48c4 100644 --- a/packages/node_modules/@node-red/nodes/core/network/31-tcpin.html +++ b/packages/node_modules/@node-red/nodes/core/network/31-tcpin.html @@ -70,7 +70,16 @@ color: "Silver", defaults: { name: {value:""}, - server: {value:"server", required:true}, + server: { + value: RED.settings.tcpInAllowInboundConnections === false ? "client" : "server", + validate: function(v, opt) { + console.log("validating client/server mode") + if (v === 'server' && RED.settings.tcpInAllowInboundConnections === false) { + return RED._("node-red:tcpin.errors.inbound-disabled"); + } + return ["client", "server"].indexOf(v) >= 0 + } + }, host: { value:"", validate:function(v, opt) { @@ -218,7 +227,16 @@ return RED._("node-red:tcpin.errors.invalid-port"); } }, - beserver: {value:"client", required:true}, + beserver: { + value: "client", + validate: function(v, opt) { + console.log("validating client/server mode") + if (v === 'server' && RED.settings.tcpInAllowInboundConnections === false) { + return RED._("node-red:tcpin.errors.inbound-disabled"); + } + return ["client", "server", "reply"].indexOf(v) >= 0 + } + }, base64: {value:false, required:true}, end: {value:false, required:true}, tls: {type:"tls-config", value:'', required:false, diff --git a/packages/node_modules/@node-red/nodes/core/network/31-tcpin.js b/packages/node_modules/@node-red/nodes/core/network/31-tcpin.js index d2de33522..605023938 100644 --- a/packages/node_modules/@node-red/nodes/core/network/31-tcpin.js +++ b/packages/node_modules/@node-red/nodes/core/network/31-tcpin.js @@ -19,6 +19,7 @@ module.exports = function(RED) { let reconnectTime = RED.settings.socketReconnectTime || 10000; let socketTimeout = RED.settings.socketTimeout || null; const msgQueueSize = RED.settings.tcpMsgQueueSize || 1000; + const allowInbound = RED.settings.tcpInAllowInboundConnections === false ? false : true const Denque = require('denque'); const net = require('net'); const tls = require('tls'); @@ -196,8 +197,7 @@ module.exports = function(RED) { clearTimeout(reconnectTimeout); if (!node.connected) { done(); } }); - } - else { + } else if (allowInbound) { let srv = net; let connOpts; if (n.tls) { @@ -308,9 +308,19 @@ module.exports = function(RED) { }); } }); + } else { + node.warn(RED._("tcpin.errors.inbound-disabled",{host:node.host,port:node.port})); + node.status({fill:"red",shape:"dot",text:"tcpin.errors.inbound-disabled"}); } } - RED.nodes.registerType("tcp in",TcpIn); + RED.nodes.registerType("tcp in",TcpIn, { + settings: { + tcpInAllowInboundConnections: { + value: true, + exportable: true + } + } + }); function TcpOut(n) { @@ -434,7 +444,7 @@ module.exports = function(RED) { nodeDone(); }); } - else { + else if (allowInbound) { const connectedSockets = new Set(); node.status({text:RED._("tcpin.status.connections",{count:0})}); let srv = net; @@ -507,11 +517,13 @@ module.exports = function(RED) { }); } }); + } else { + node.warn(RED._("tcpin.errors.inbound-disabled",{host:node.host,port:node.port})); + node.status({fill:"red",shape:"dot",text:"tcpin.errors.inbound-disabled"}); } } RED.nodes.registerType("tcp out",TcpOut); - function TcpGet(n) { RED.nodes.createNode(this,n); this.server = n.server; diff --git a/packages/node_modules/@node-red/nodes/core/network/32-udp.html b/packages/node_modules/@node-red/nodes/core/network/32-udp.html index 4d5eeb23e..8ab527df5 100644 --- a/packages/node_modules/@node-red/nodes/core/network/32-udp.html +++ b/packages/node_modules/@node-red/nodes/core/network/32-udp.html @@ -18,7 +18,7 @@