mirror of
				https://github.com/node-red/node-red-nodes.git
				synced 2025-03-01 10:37:43 +00:00 
			
		
		
		
	revert ping node experimental changes
oops…
This commit is contained in:
		| @@ -1,5 +1,5 @@ | ||||
| /** | ||||
|  * Copyright 2013,2016 IBM Corp. | ||||
|  * Copyright 2013 IBM Corp. | ||||
|  * | ||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|  * you may not use this file except in compliance with the License. | ||||
| @@ -16,35 +16,46 @@ | ||||
|  | ||||
| module.exports = function(RED) { | ||||
|     "use strict"; | ||||
|     var dns = require("dns") | ||||
|     var ping = require ("net-ping"); | ||||
|     var spawn = require('child_process').spawn; | ||||
|     var plat = require('os').platform(); | ||||
|  | ||||
|     function PingNode(n) { | ||||
|         RED.nodes.createNode(this,n); | ||||
|         this.host = n.host; | ||||
|         this.timer = n.timer * 1000; | ||||
|         this.session = ping.createSession(); | ||||
|         var node = this; | ||||
|  | ||||
|         node.tout = setInterval(function() { | ||||
|             dns.lookup(node.host, function(err, address, family) { | ||||
|                 if (typeof address === 'undefined') { address = node.host; } | ||||
|                 node.session.pingHost(address, function(error, target, sent, rcvd) { | ||||
|                     var msg = { payload:false, topic:target }; | ||||
|                     if (error) { | ||||
|                         msg.error = error.toString(); | ||||
|                     } else { | ||||
|                         msg.payload = rcvd - sent; | ||||
|                     } | ||||
|                     node.send(msg); | ||||
|                     node.session.close(); | ||||
|                 }); | ||||
|             var ex; | ||||
|             if (plat == "linux") { ex = spawn('ping', ['-n', '-w', '5', '-c', '1', node.host]); } | ||||
|             else if (plat.match(/^win/)) { ex = spawn('ping', ['-n', '1', '-w', '5000', node.host]); } | ||||
|             else if (plat == "darwin") { ex = spawn('ping', ['-n', '-t', '5', '-c', '1', node.host]); } | ||||
|             else { node.error("Sorry - your platform - "+plat+" - is not recognised."); } | ||||
|             var res = false; | ||||
|             var line = ""; | ||||
|             //var regex = /from.*time.(.*)ms/; | ||||
|             var regex = /=.*[<|=]([0-9]*).*TTL|ttl..*=([0-9\.]*)/; | ||||
|             ex.stdout.on('data', function (data) { | ||||
|                 line += data.toString(); | ||||
|             }); | ||||
|             //ex.stderr.on('data', function (data) { | ||||
|             //console.log('[ping] stderr: ' + data); | ||||
|             //}); | ||||
|             ex.on('close', function (code) { | ||||
|                 var m = regex.exec(line)||""; | ||||
|                 if (m !== '') { | ||||
|                     if (m[1]) { res = Number(m[1]); } | ||||
|                     if (m[2]) { res = Number(m[2]); } | ||||
|                 } | ||||
|                 var msg = { payload:false, topic:node.host }; | ||||
|                 if (code === 0) { msg = { payload:res, topic:node.host }; } | ||||
|                 try { node.send(msg); } | ||||
|                 catch(e) {} | ||||
|             }); | ||||
|         }, node.timer); | ||||
|  | ||||
|         this.on("close", function() { | ||||
|             if (node.tout) { clearInterval(this.tout); } | ||||
|             if (node.session) { node.session.close(); } | ||||
|             if (this.tout) { clearInterval(this.tout); } | ||||
|         }); | ||||
|     } | ||||
|     RED.nodes.registerType("ping",PingNode); | ||||
|   | ||||
| @@ -22,11 +22,11 @@ The fix is to allow it as follows | ||||
| Usage | ||||
| ----- | ||||
|  | ||||
| Pings a machine and returns the trip time in mS as **msg.payload**. | ||||
| Pings a machine and returns the trip time in mS as `msg.payload`. | ||||
|  | ||||
| Returns boolean `false` if no response received, or if the host is unresolveable. | ||||
| **msg.wrror** will contain any error message if necessary. | ||||
| `msg.error` will contain any error message if necessary. | ||||
|  | ||||
| **msg.topic** contains the ip address of the target host. | ||||
| `msg.topic` contains the ip address of the target host. | ||||
|  | ||||
| Default ping is every 20 seconds but can be configured. | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|     "name"          : "node-red-node-ping", | ||||
|     "version"       : "0.0.9", | ||||
|     "version"       : "0.0.10", | ||||
|     "description"   : "A Node-RED node to ping a remote server, for use as a keep-alive check.", | ||||
|     "dependencies"  : { | ||||
|         "net-ping":"1.1.*" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user