From: Ryan Dahl Date: Mon, 4 Jul 2011 18:25:31 +0000 (-0700) Subject: net_uv: add isIP X-Git-Tag: v0.5.0~32 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=38f3bf66108d398697f20dbca8c19df29329323d;p=platform%2Fupstream%2Fnodejs.git net_uv: add isIP Issue #1270: Doesn't completely pass test/simple/test-net-isip.js yet. --- 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; +};