1.0.1 • Published 4 years ago

express-cidr v1.0.1

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

express-cidr

An express.js middleware for cidr. Only for IPv4

Installation

npm install express-cidr

Usage

const { generateMiddleware } = require('express-cidr');

const CIDRMiddleware = generateMiddleware(IPRules: Array, Options: Object);

app.get('/', CIDRMiddleware, (req, res) => {
    return res.send('ok');
});

IPRules

About CIDR

[
    '10.10.1.32/27',
]

Options

{
    reqTargetPath: String, // required, property path for filtering on request
    reqProcessFn: Function // process function for target property
}

Example

Basic Usage

const express = require('express');
const { generateMiddleware: expressCIDR } = require('express-cidr');

const app = express();

app.get('/', expressCIDR([
    '10.10.1.32/27'
], { // options
    reqTargetPath: 'headers.x-forwarded-for',
    reqProcessFn: (ipAddrs) => {
        const [ipAddr] = ipAddrs.split(',');
        return ipAddr;
    }
}), (req, res) => {
    return res.send('OK');
});

10.10.1.44 will be passed. 10.10.1.90 will be failed.

Error Handling

const express = require('express');
const { generateMiddleware: expressCIDR, OutOfRangeError } = require('express-cidr');

const app = express();

app.get('/', expressCIDR([
    '192.168.1.1/16'
], { // options
    reqTargetPath: 'headers.x-forwarded-for',
    reqProcessFn: (ipAddrs) => {
        const [ipAddr] = ipAddrs.split(',');
        return ipAddr;
    }
}), (req, res) => {
    return res.send('OK');
});

app.use((req, res, next, error) => { // error handler
    if (error instanceOf OutOfRangeError) {
        return res.statusCode(400).send();
    }
    return res.status(500).send();
});

Errors

OutOfRangeError

Error object:

  • name: 'OutOfRangeError'
  • message: 'IP address is out of range'
class OutOfRangeError extends Error {
    constructor() {
        super('IP address is out of range');
    }
}
1.0.1

4 years ago

1.0.0

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago

0.0.9

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.5

4 years ago