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.