koa middleware to filter request IPs or custom ID with glob patterns, array, string, regexp or matcher function. Support custom 403 Forbidden message and custom ID.
MIT License
Middleware for koa that filters IPs against glob patterns, RegExp, string or array of globs. Support custom
403 Forbidden
message and custom ID.
npm i koa-ip-filter --save
403 Forbidden
response, through opts.forbidden
this.ip
, through opts.id
opts.strict: false
if it's not IP403 Forbidden
that not match to filterNotice: In the next middleware you will have
this.filter
method which is ip-filter andthis.identifier
- the IP/ID that passed the given filter
For more use-cases see the tests
const koaIpFilter = require('koa-ip-filter')
Filtering incoming request with glob patterns array, regexp, string or matcher function
Params
options
{Object}
id
{Function}: custom identifier, defaults to this.ip
strict
{Boolean}: to throw when not valid IPv4/IPv6? default true
filter
{Array|String|RegExp|Function}: black/white list filterforbidden
{String|Function}: custom message when 403 Forbidden
responsereturns
{GeneratorFunction}
Example
'use strict'
var koa = require('koa')
var ipFilter = require('koa-ip-filter')
var helloWorld = require('koa-hello-world')
var app = koa()
app
.use(ipFilter({
forbidden: '403: Get out of here!',
filter: ['127.??.6*.12', '!1.2.*.4']
}))
.use(helloWorld())
app.listen(1234)
console.log('koa server start listening on http://localhost:1234')
// if your IP is `127.43.65.12` you will see `Hello World`
// otherwise you will see `403: Get out of here!`
If you want to allow all IPs, but want to restrict only some range
'use strict'
var koa = require('koa')
var ipFilter = require('koa-ip-filter')
var helloWorld = require('koa-hello-world')
var app = koa()
app
.use(ipFilter({
forbidden: '403: Get out of here!',
filter: ['*', '!213.15.*']
}))
.use(helloWorld())
app.listen(1234)
console.log('koa server start listening on http://localhost:1234')
// only user with IP starting with `213.15.*`
// will see the message `403: Get out of here!`
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue. But before doing anything, please read the CONTRIBUTING.md guidelines.