Skip to content
/ toxy-ip Public

toxy rule to easily filter by IP addresses (supports CIDR, subnet, IP ranges...)

License

Notifications You must be signed in to change notification settings

h2non/toxy-ip

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

toxy-ip Build Status NPM

toxy rule to filter by IP v4/v6 addresses, supporting CIDR, subnets and custom/public/reserved IP ranges.

toxy+0.3
Nameip
Poison Phaseincoming / outgoing

Installation

npm install toxy-ip [--save]

Usage

const toxy = require('toxy')
const ip = require('toxy-ip')

const proxy = toxy()

proxy
  .all('/')
  .poison(toxy.poisons.slowRead({ delay: 1000 }))
  .withRule(ip('192.168.0.0/24'))

proxy
  .all('/download')
  .poison(toxy.poisons.bandwidth({ bps: 1024 }))
  .withRule(ip('10.0.0.0/20'))

proxy
  .all('/intranet')
  .poison(toxy.poisons.bandwidth({ bps: 1024 }))
  .withRule(ip([ '192.168.0.0/24', '172.12.0.0/22', '10.0.0.0/12' ]))

proxy
  .all('/custom-range')
  .poison(toxy.poisons.bandwidth({ bps: 1024 }))
  .withRule(ip({ range: [ '192.168.0.10', '192.168.0.25' ] }))

proxy
  .all('/private')
  .poison(toxy.poisons.bandwidth({ bps: 1024 }))
  .withRule(ip({ privateAddress: true }))

proxy
  .all('/local')
  .poison(toxy.poisons.inject({ code: 500 }))
  .withRule(ip({ loopback: true }))

proxy.listen(3000)

API

const ip = require('toxy-ip')

ip(opts) => function (req, res, next)

Available options:

  • address string - Matches an IP address using a equality comparison. Supports CIDR expressions for ranges.
  • network string|array - List of CIDR addresses to filter. Array can contain multiple CIDR addresses.
  • range array - Pair of IP range to match.
  • privateAddress boolean - Matches if the client address is a reserved private range. Default false
  • publicAddress boolean - Matches if the client address is a non-reserved IP range. Default false
  • loopback boolean - Matches if the client address is a loopback valid address. Default false

ip.evalRange(range, ip) => boolean

Evaluates if the IP is inside the given range. range must be an array with two items representing the IP range.

ip.evalNetwork(networks, ip) => boolean

Evaluates if the IP is inside a

ip.evalType(opts, ip) => boolean

Evaluates if the IP is public, private or loopback IP address.

ip.ip

Exposes node-ip module API.

License

MIT - Tomas Aparicio

About

toxy rule to easily filter by IP addresses (supports CIDR, subnet, IP ranges...)

Resources

License

Stars

Watchers

Forks

Packages

No packages published