From 38f3bf66108d398697f20dbca8c19df29329323d Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 4 Jul 2011 11:25:31 -0700 Subject: [PATCH] net_uv: add isIP Issue #1270: Doesn't completely pass test/simple/test-net-isip.js yet. --- lib/net_uv.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/lib/net_uv.js b/lib/net_uv.js index e9db1b2..37888ed 100644 --- a/lib/net_uv.js +++ b/lib/net_uv.js @@ -540,3 +540,35 @@ function onconnection(clientHandle) { Server.prototype.close = function() { this._handle.close(); }; + + +// TODO: isIP should be moved to the DNS code. Putting it here now because +// this is what the legacy system did. +exports.isIP = function(input) { + if (!input) { + return 4; + } else if (/^(\d?\d?\d)\.(\d?\d?\d)\.(\d?\d?\d)\.(\d?\d?\d)$/.test(input)) { + var parts = input.split('.'); + for (var i = 0; i < parts.length; i++) { + var part = parseInt(parts[i]); + if (part < 0 || 255 < part) { + return 0; + } + } + return 4; + } else if (/^(::)?([a-fA-F0-9]+(::?)?)*$/.test(input)) { + return 6; + } else { + return 0; + } +} + + +exports.isIPv4 = function(input) { + return TCP.isIP(input) === 4; +}; + + +exports.isIPv6 = function(input) { + return TCP.isIP(input) === 6; +}; -- 2.7.4