Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aravindnc/ip-domain-filter
Validates IPv4, IPv6 and domain names for whitelisting based on micromatch rules.
https://github.com/aravindnc/ip-domain-filter
blacklisting blacklisting-filter domain domain-filter filter ip ip-domain-filter ipfilter ipv4 ipv6 micromatch rules whitelisting whitelisting-filter
Last synced: 2 days ago
JSON representation
Validates IPv4, IPv6 and domain names for whitelisting based on micromatch rules.
- Host: GitHub
- URL: https://github.com/aravindnc/ip-domain-filter
- Owner: aravindnc
- License: mit
- Created: 2019-04-09T02:01:02.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-04-16T04:43:27.000Z (over 4 years ago)
- Last Synced: 2024-10-06T08:41:31.087Z (3 months ago)
- Topics: blacklisting, blacklisting-filter, domain, domain-filter, filter, ip, ip-domain-filter, ipfilter, ipv4, ipv6, micromatch, rules, whitelisting, whitelisting-filter
- Language: JavaScript
- Homepage:
- Size: 12.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ip-domain-filter
[![npm version](https://img.shields.io/npm/v/ip-domain-filter.svg)](https://www.npmjs.com/package/ip-domain-filter)
[![Dependency Status](https://david-dm.org/WebGangster/ip-domain-filter.svg)](https://david-dm.org/WebGangster/ip-domain-filter)
[![devDependency Status](https://david-dm.org/WebGangster/ip-domain-filter/dev-status.svg)](https://david-dm.org/WebGangster/ip-domain-filter#info=devDependencies)
[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/WebGangster/ip-domain-filter/issues)
[![Downloads](https://img.shields.io/npm/dm/ip-domain-filter.svg)](https://img.shields.io/npm/dm/ip-domain-filter.svg)
[![HitCount](http://hits.dwyl.io/WebGangster/ip-domain-filter.svg)](http://hits.dwyl.io/WebGangster/ip-domain-filter)> Validates IPs (IPv4 and IPv6) and domain names using micromatch ruleset. Can be used for IP/Domain whitelisting functionality.
[![NPM](https://nodei.co/npm/ip-domain-filter.png?downloads=true&downloadRank=true&stars=true)](https://www.npmjs.com/package/ip-domain-filter)
## Install
```
npm i ip-domain-filter --save
```## Usage
```js
const hostFilter = require('ip-domain-filter');let rules = [{
category: 'ip',
allowed: ['127.0.0.2', '127.0.0.4', '127.0.0.6']
},
{
category: 'domain',
allowed: ['localhost', 'google.com']
},
{
category: 'ipRange',
allowed: ['127.1.0.8', '127.1.0.20']
},
{
category: 'ip',
allowed: ['192.168.??.1']
},
{
category: 'ip',
allowed: ['192.168.1.*']
}
];let caseA = '192.168.10.1';
hostFilter.filter(caseA, rules);
// Returns true as it matches 4th rule.let caseB = '192.168.2.1';
hostFilter.filter(caseB, rules);
// Returns false as it does'nt match any of the rules.```
> For more use-cases see the [tests](./test/test.js)**Params**
* `ip` **{String}**: Accepts IP and Domain names.
* `rules` **{Array}**: Filter rules/conditions.
* `returns` **{Bool}**: If there is a match it returns `true`, otherwise `false`.### Rules
Rule will be an object array having 2 parameters `category` and `allowed`.
| Category | Description |
| :------------ | :------------ |
| ip | To check whether the given IP is valid in a list of IP's. |
| ipRange | To check whether the given ip is in a range or not. |
| domain | To check wheter the domain matches a given list of domains. |## Examples
**(1)** Rule using `ip`,
This will check whether the given ip is available in the allowed list or not.
```
let rules = [{
category: 'ip',
allowed: ['127.0.0.2', '127.0.0.4', '127.0.0.6']
}
]
```
**(2)** Rule using `ipRange`,
This will check whether the given ip is between the specified range or not.*Note: In the case of **ipRange**, `allowed` should have only 2 values, [ipStart, ipEnd]*
```
let rules = [{
category: 'ipRange',
allowed: ['127.1.0.8', '127.1.0.20']
}
]
```
**(3)** Rule using `domain`,
This will check whether the given domain is between the specified list or not.```
let rules = [{
category: 'domain',
allowed: ['localhost', 'google.com']
}
]
```### Extended Useage
**(4)** Rule using `ip` with micromatch,
This will check whether the given ip is in the format `192.168.*.1`. And the `*` can be any character.
```
let rules = [{
category: 'ip',
allowed: ['192.168.*.1']
}
]// 192.168.1.1 - true
// 192.168.10.1 - true
// 192.168.1.2 - false
```**(5)** Rule using `ip` with micromatch,
This will check whether the given ip is in the format `192.168.?.1`. And the `?` can be any character from 0 to 9.
```
let rules = [{
category: 'ip',
allowed: ['192.168.?.1']
}
]// 192.168.1.1 - true
// 192.168.9.1 - true
// 192.168.10.1 - false
```