{"_id":"@ascension/koa-ip","_rev":"1-3400dee1eac683aa7ebb08ba6a8d86ef","name":"@ascension/koa-ip","dist-tags":{"latest":"2.1.4"},"versions":{"2.1.3":{"name":"@ascension/koa-ip","version":"2.1.3","description":"Ip filter middleware for koa, support `whitelist` and `blacklist`.","main":"index.js","types":"index.d.ts","scripts":{"test":"jest"},"author":{"name":"nswbmw"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/nswbmw/koa-ip.git"},"keywords":["koa","ip","whitelist","blacklist"],"dependencies":{"debug":"4.3.4","lodash.isplainobject":"4.0.6","request-ip":"^3.3.0"},"devDependencies":{"eslint-config-standard":"17.0.0","eslint-plugin-import":"2.26.0","eslint-plugin-jest":"26.2.2","eslint-plugin-node":"11.1.0","eslint-plugin-promise":"6.0.0","eslint-plugin-standard":"4.1.0","jest":"28.1.0","koa":"2.13.4","supertest":"6.2.3"},"jest":{"collectCoverage":true,"coverageReporters":["json","html"]},"bugs":{"url":"https://github.com/nswbmw/koa-ip/issues"},"homepage":"https://github.com/nswbmw/koa-ip#readme","gitHead":"e48e3875fe1a0b94f9506f7251a2afd417e8e7e5","_id":"@ascension/koa-ip@2.1.3","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-CKB0FUFVW3YFi1BzVzcSA4T3xZe95MKUXB57VCX4s7xzzIk8e/pQONRDSDpQ2WdEk9TcZMSBihQ4Ha2fdEjCZg==","shasum":"1ab45be9a4b37f090be130d8147f9611d30119b5","tarball":"https://registry.npmjs.org/@ascension/koa-ip/-/koa-ip-2.1.3.tgz","fileCount":7,"unpackedSize":8764,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHAm9bEti5vZClMJb9cRCL9GM1V7G3M95LpeC6x3apfTAiEAmgZjPoFr2Wenw3beNxwBTwOooHV5O7CdqXxALKN94D0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj2YFTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoWKA//ect+XVprGKThDwltHRatDr+jD5pHYVxxAaq+NLZ+1alT4Dvt\r\nIGYYEx7KTFbeWZ0ncNhg9GQRt0JrDIwl5Hp7RzA9UT8hV4PN8kapmba6yGvJ\r\nqGhr545xn2A5fU96ldkdmz0upSsJap6d7PZQFKwannCm4uf5185t99EL7TFa\r\nWw3SFwS5xw9a+EEsUQ7auGwelFkUwdBg5ZjzdewvaeDKtOLqgrPmuawCJdN1\r\nKbNpPwkPmIUELOaLHVHyBp9vmBmYZOUgYpx1dISpoSlzetfOjxYuaU7bh+/P\r\nfSmWwGxPumwqj3NiJ0hLa8ufNFLnKSyDkhQg7j4rrUztfEbgtJgHQpNlHjQB\r\nO3L5I1/8vXlNfAPd3Ctu8GkU6/+0PTTb7P1Guowm3+u56zL+DIDszJWWSer+\r\nsh73lVBQ/G9UdFQqCM5//04l0acWEmVDnkxjKlLXc2K/BuNnj1hwOO62ngfG\r\nO1aIhmv0TBJmGyCwLKXbeTIHS89ntILVsBeYFFEfk7/n8JQ70CXjTKibnp3J\r\nTUF2Li93wAtUZKVKpvkTr2YsI5aXYBW7SocOc+rxdps9fCiD3bOuwfUmCDTO\r\nnxNr3dhUhfnLUEpdIa7TmoJtIQ4LXBPYrvg9AYsZUNkNNqpxUCBjGjX2HapT\r\ntoNk1BXRwXSsdIpVuu6+gHeprAeyGSQUPak=\r\n=XFuo\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ascension","email":"jerroddb@gmail.com"},"directories":{},"maintainers":[{"name":"ascension","email":"jerroddb@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/koa-ip_2.1.3_1675198803608_0.1656300406665001"},"_hasShrinkwrap":false},"2.1.4":{"name":"@ascension/koa-ip","version":"2.1.4","description":"Ip filter middleware for koa, support `whitelist` and `blacklist`.","main":"index.js","types":"index.d.ts","scripts":{"test":"jest"},"author":{"name":"ascension"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/ascension/koa-ip.git"},"keywords":["koa","ip","whitelist","blacklist"],"dependencies":{"debug":"4.3.4","lodash.isplainobject":"4.0.6","request-ip":"^3.3.0"},"devDependencies":{"eslint-config-standard":"17.0.0","eslint-plugin-import":"2.26.0","eslint-plugin-jest":"26.2.2","eslint-plugin-node":"11.1.0","eslint-plugin-promise":"6.0.0","eslint-plugin-standard":"4.1.0","jest":"28.1.0","koa":"2.13.4","supertest":"6.2.3"},"jest":{"collectCoverage":true,"coverageReporters":["json","html"]},"bugs":{"url":"https://github.com/ascension/koa-ip/issues"},"homepage":"https://github.com/ascension/koa-ip#readme","gitHead":"e48e3875fe1a0b94f9506f7251a2afd417e8e7e5","_id":"@ascension/koa-ip@2.1.4","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-9KGybwF7XCLUVcq1hrM21UuB91rkl9P4nvKTBAgzH0dpnVYNJMKFlnav67nnoSjtfKsUF791OSg1tIUp7uXV9Q==","shasum":"e3740543734834c72062a8c69b8c8519b208e16c","tarball":"https://registry.npmjs.org/@ascension/koa-ip/-/koa-ip-2.1.4.tgz","fileCount":7,"unpackedSize":8776,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGrws0dwVZCDJxqjr8FTtIERgIzVF3uo+8tBg1r3AoboAiEA8VUdjFYrCGhWDAmAZ+dSOB2Zte83WQxtxZqew8st38M="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj2YGvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrxMg/9FN8sFpiZxwdc0TqNSnHNRdMuuSgOlceX5bPpHwCAepUd34rA\r\ndiWYGQ4vS8BhvsobX6SjwXPtxeLnJJyRNJMExTLK3XHxTTkXQsEXQP4NjJ9n\r\n3sStf8JwPuQYSsGoARCd0tQl7plUzxthCiFcY3Ubp7n1JxhRjP3FdC5LHvhc\r\nnSUDDlXr6kTJ12EMSK8iEy5O+HEteYYpBP0lrwVUbd4mokyaunsDjGXmZ2/+\r\n0jdULZ63ljuUBF9e0tXH6csJzDskVKKxJiTp5yK1bGxjXVT/02zeE+H5Htd7\r\nxlZn6idESKabflxItWX/xyS3m/BnUIcQr+DNMvBcnm2oNaOkNo7r91smY4eg\r\nQnvdNQEcdICfztfH1KuNZLYsBIzFXq4TLSaEljXp3ZlFr58cbw+GkzPLyovw\r\nCU1AjAfXBMMfHrj/IKocwn13i0/swVoTfwSv/B21uBriViDTm7pJ2ONXyJH6\r\njVOYW9UK+Dj1CynZ2fIPioWWWlA2OtAw5YEQbldFrghfyQr3GdjeHNjsasQL\r\nhrxq5lrNnpL0bkV+BzZPB5sYTdG+GrrG8HS8JB6VviHndOt8rck9u0ln/3VO\r\ntQrzv2Gel8R1c87P4rJacU229FAIqUH+XI4q8xQxM4oCQ6GcfbU1lr67F4Ll\r\n2BK4Qv6hCvDv4He72vT/MtuQlqCI//Cr8H8=\r\n=jvAI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ascension","email":"jerroddb@gmail.com"},"directories":{},"maintainers":[{"name":"ascension","email":"jerroddb@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/koa-ip_2.1.4_1675198895075_0.6392546539377124"},"_hasShrinkwrap":false}},"time":{"created":"2023-01-31T21:00:03.532Z","2.1.3":"2023-01-31T21:00:03.947Z","modified":"2023-01-31T21:01:35.324Z","2.1.4":"2023-01-31T21:01:35.233Z"},"maintainers":[{"name":"ascension","email":"jerroddb@gmail.com"}],"description":"Ip filter middleware for koa, support `whitelist` and `blacklist`.","homepage":"https://github.com/ascension/koa-ip#readme","keywords":["koa","ip","whitelist","blacklist"],"repository":{"type":"git","url":"git+https://github.com/ascension/koa-ip.git"},"author":{"name":"ascension"},"bugs":{"url":"https://github.com/ascension/koa-ip/issues"},"license":"MIT","readme":"## koa-ip\n\n<a href=\"https://communityinviter.com/apps/koa-js/koajs\" rel=\"KoaJs Slack Community\">![KoaJs Slack](https://img.shields.io/badge/Koa.Js-Slack%20Channel-Slack.svg?longCache=true&style=for-the-badge)</a> \n\n> koa-ip is a ip filter middleware for koa, support `whitelist` and `blacklist`.\n\n### What is [Trafficfilter.io](https://trafficfilter.io/pr?id=5DIGC5GKCF&source=koa-ip)?\n\nTrafficfilter.io is a fast, simple, Base-on IP address Invalid Traffic Filtration and IP-Geo Service.\n\nTrafficfilter.io can easily integrating your websites, applications,company's tools .\n\nScenarios:\n\n- Evaluation of traffic sources\n- Filtering non-real traffic\n- Blocking spiders and malicious traffic visits\n\n(In most cases, trafficfilter.io is more accurate than most \"Cloak\" tools)\n\n### Install\n\n```sh\n$ npm i koa-ip --save\n```\n\n### Usage\n\n```js\nip(String|RegExp)\nip(Array{String|RegExp})\nip({\n  whitelist: Array{String|RegExp},\n  blacklist: Array{String|RegExp},\n  handler: async (ctx, next) => {} // handle blacklist ip\n})\n```\n\n### Examples\n\n```js\nconst Koa = require('koa')\nconst ip = require('koa-ip')\n\nconst app = new Koa()\n\napp.use(ip('192.168.0.*')) // whitelist\n// app.use(ip(['192.168.0.*', '8.8.8.[0-3]'])) // whitelist\n// app.use(ip({\n//   whitelist: ['192.168.0.*', '8.8.8.[0-3]'],\n//   blacklist: ['144.144.*']\n// }))\n\napp.listen(3000)\n```\n\n#### blacklist handler\n\n```js\nconst app = new Koa()\napp.use((ctx, next) => {\n  ctx.request.ip = '127.0.0.1'\n  return next()\n})\napp.use(ip({\n  blacklist: ['127.0.0.*'],\n  handler: async (ctx, next) => {\n    ctx.status = 403\n  }\n}))\n\napp.use((ctx, next) => {\n  ctx.status = 200\n})\n\napp.listen(3000)\n```\n\n**NB**: If missing blacklist handler, default `ctx.status = 403`.\n\nMore examples see [test](./__tests__/).\n\n### Test\n\n```sh\n$ npm test (coverage 100%)\n```\n\n### License\n\nMIT\n","readmeFilename":"readme.md"}