You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					91 lines
				
				2.7 KiB
			
		
		
			
		
	
	
					91 lines
				
				2.7 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								# IP  
							 | 
						||
| 
								 | 
							
								[](https://www.npmjs.com/package/ip)  
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								IP address utilities for node.js
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Installation
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								###  npm
							 | 
						||
| 
								 | 
							
								```shell
							 | 
						||
| 
								 | 
							
								npm install ip
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### git
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```shell
							 | 
						||
| 
								 | 
							
								git clone https://github.com/indutny/node-ip.git
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								## Usage
							 | 
						||
| 
								 | 
							
								Get your ip address, compare ip addresses, validate ip addresses, etc.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								var ip = require('ip');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ip.address() // my ip address
							 | 
						||
| 
								 | 
							
								ip.isEqual('::1', '::0:1'); // true
							 | 
						||
| 
								 | 
							
								ip.toBuffer('127.0.0.1') // Buffer([127, 0, 0, 1])
							 | 
						||
| 
								 | 
							
								ip.toString(new Buffer([127, 0, 0, 1])) // 127.0.0.1
							 | 
						||
| 
								 | 
							
								ip.fromPrefixLen(24) // 255.255.255.0
							 | 
						||
| 
								 | 
							
								ip.mask('192.168.1.134', '255.255.255.0') // 192.168.1.0
							 | 
						||
| 
								 | 
							
								ip.cidr('192.168.1.134/26') // 192.168.1.128
							 | 
						||
| 
								 | 
							
								ip.not('255.255.255.0') // 0.0.0.255
							 | 
						||
| 
								 | 
							
								ip.or('192.168.1.134', '0.0.0.255') // 192.168.1.255
							 | 
						||
| 
								 | 
							
								ip.isPrivate('127.0.0.1') // true
							 | 
						||
| 
								 | 
							
								ip.isV4Format('127.0.0.1'); // true
							 | 
						||
| 
								 | 
							
								ip.isV6Format('::ffff:127.0.0.1'); // true
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// operate on buffers in-place
							 | 
						||
| 
								 | 
							
								var buf = new Buffer(128);
							 | 
						||
| 
								 | 
							
								var offset = 64;
							 | 
						||
| 
								 | 
							
								ip.toBuffer('127.0.0.1', buf, offset);  // [127, 0, 0, 1] at offset 64
							 | 
						||
| 
								 | 
							
								ip.toString(buf, offset, 4);            // '127.0.0.1'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// subnet information
							 | 
						||
| 
								 | 
							
								ip.subnet('192.168.1.134', '255.255.255.192')
							 | 
						||
| 
								 | 
							
								// { networkAddress: '192.168.1.128',
							 | 
						||
| 
								 | 
							
								//   firstAddress: '192.168.1.129',
							 | 
						||
| 
								 | 
							
								//   lastAddress: '192.168.1.190',
							 | 
						||
| 
								 | 
							
								//   broadcastAddress: '192.168.1.191',
							 | 
						||
| 
								 | 
							
								//   subnetMask: '255.255.255.192',
							 | 
						||
| 
								 | 
							
								//   subnetMaskLength: 26,
							 | 
						||
| 
								 | 
							
								//   numHosts: 62,
							 | 
						||
| 
								 | 
							
								//   length: 64,
							 | 
						||
| 
								 | 
							
								//   contains: function(addr){...} }
							 | 
						||
| 
								 | 
							
								ip.cidrSubnet('192.168.1.134/26')
							 | 
						||
| 
								 | 
							
								// Same as previous.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// range checking
							 | 
						||
| 
								 | 
							
								ip.cidrSubnet('192.168.1.134/26').contains('192.168.1.190') // true
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// ipv4 long conversion
							 | 
						||
| 
								 | 
							
								ip.toLong('127.0.0.1'); // 2130706433
							 | 
						||
| 
								 | 
							
								ip.fromLong(2130706433); // '127.0.0.1'
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### License
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This software is licensed under the MIT License.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Copyright Fedor Indutny, 2012.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Permission is hereby granted, free of charge, to any person obtaining a
							 | 
						||
| 
								 | 
							
								copy of this software and associated documentation files (the
							 | 
						||
| 
								 | 
							
								"Software"), to deal in the Software without restriction, including
							 | 
						||
| 
								 | 
							
								without limitation the rights to use, copy, modify, merge, publish,
							 | 
						||
| 
								 | 
							
								distribute, sublicense, and/or sell copies of the Software, and to permit
							 | 
						||
| 
								 | 
							
								persons to whom the Software is furnished to do so, subject to the
							 | 
						||
| 
								 | 
							
								following conditions:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The above copyright notice and this permission notice shall be included
							 | 
						||
| 
								 | 
							
								in all copies or substantial portions of the Software.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
							 | 
						||
| 
								 | 
							
								OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
							 | 
						||
| 
								 | 
							
								MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
							 | 
						||
| 
								 | 
							
								NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
							 | 
						||
| 
								 | 
							
								DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
							 | 
						||
| 
								 | 
							
								OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
							 | 
						||
| 
								 | 
							
								USE OR OTHER DEALINGS IN THE SOFTWARE.
							 |