ip-filter
v4.0.0
Published
Validates given IPs (IPv4 and IPv6) using [micromatch][] - glob patterns, RegExp, string or array of globs. If match returns the IP, otherwise null.
Downloads
3,433
Readme
ip-filter
Validates given IPs (IPv4 and IPv6) using micromatch - glob patterns, RegExp, string or array of globs. If match returns the IP, otherwise null.
Please consider following this project's author, Charlike Mike Reagent, and :star: the project to show your :heart: and support.
If you have any how-to kind of questions, please read the Contributing Guide and Code of Conduct documents. For bugs reports and feature requests, please create an issue or ping @tunnckoCore at Twitter.
Project is semantically versioned & automatically released from GitHub Actions with Lerna.
| Topic | Contact | | :--------------------------------------------------------------- | ------------------------------------------------: | | Any legal or licensing questions, like private or commerical use | | | For any critical problems and security reports | | | Consulting, professional support, personal or team training | | | For any questions about Open Source, partnerships and sponsoring | |
Table of Contents
(TOC generated by verb using markdown-toc)
Install
This project requires Node.js >=10.13 (see Support & Release Policy). Install it using yarn or npm. We highly recommend to use Yarn when you think to contribute to this project.
$ yarn add ip-filter
API
Generated using jest-runner-docs.
ipFilter
Filter ip
against glob patterns
, using micromatch under the hood, so
options
are passed to it.
Signature
function(ip, patterns, options)
Params
ip
{string} - Accepts only valid IPs by defaultpatterns
{string|array} - Basically everything that micromatch's second argument can accept.options
{object} - Passstrict: false
if want to validate non-ip values, options are also passed to micromatch.returns
{string} - astring
ornull
If not match returnsnull
, otherwise the passedip
as string.
Examples
import ipFilter from 'ip-filter';
console.log(ipFilter('123.77.34.89', '123.??.34.8*')); // => '123.77.34.89'
console.log(ipFilter('123.222.34.88', '123.??.34.8*')); // => null
console.log(ipFilter('123.222.33.1', ['123.*.34.*', '*.222.33.*'])); // => '123.222.33.1'
// should notice the difference
console.log(ipFilter('123.222.34.88', ['123.*.34.*', '!123.222.**']));
// => null
console.log(ipFilter('123.222.34.88', ['123.*.34.*', '!123.222.*']));
// => '123.222.34.88'
Examples
import ipFilter from 'ip-filter';
//
// NON-STRICT mode
//
const res = ipFilter('x-koaip', ['*-koaip', '!foo-koa*'], { strict: false });
console.log(res); // => 'x-koaip'
const res = ipFilter('x-koa.foo', ['*-koa.*', '!foo-koa.*'], { strict: false });
console.log(res); // => 'x-koa.foo'
See Also
Some of these projects are used here or were inspiration for this one, others are just related. So, thanks for your existance!
- ip-regex: Regular expression for matching IP addresses (IPv4 & IPv6) | homepage
- is-match-ip: Matching IPs using micromatch and ip-filter - glob patterns, RegExp… more | homepage
- is-match: Create a matching function from a glob pattern, regex, string… more | homepage
- koa-ip-filter: Middleware for koa that filters IPs against glob patterns, RegExp… more | homepage
- micromatch: Glob matching for javascript/node.js. A replacement and faster alternative to… more | homepage
- to-file-path: Create a filepath from an object path (dot notation), list… more | homepage
Contributing
Guides and Community
Please read the Contributing Guide and Code of Conduct documents for advices.
For bug reports and feature requests, please join our community forum and open a thread there with prefixing the title of the thread with the name of the project if there's no separate channel for it.
Consider reading the Support and Release Policy guide if you are interested in what are the supported Node.js versions and how we proceed. In short, we support latest two even-numbered Node.js release lines.
Support the project
Become a Partner or Sponsor? :dollar: Check the OpenSource Commision (tier). :tada: You can get your company logo, link & name on this file. It's also rendered on package's page in npmjs.com and yarnpkg.com sites too! :rocket:
Not financial support? Okey! Pull requests, stars and all kind of contributions are always welcome. :sparkles:
Contributors
This project follows the all-contributors specification. Contributions of any kind are welcome!
Thanks goes to these wonderful people (emoji key), consider showing your support to them:
License
Copyright (c) 2015-present, Charlike Mike Reagent
<[email protected]>
& contributors.
Released under the MPL-2.0 License.