IP Restriction Middleware
IP Restriction Middleware is middleware that limits access to resources based on the IP address of the user.
Import
ts
import { Hono } from 'hono'
import { ipRestriction } from 'hono/ip-restriction'
Usage
For your application running on Bun, if you want to allow access only from local, you can write it as follows. Specify the rules you want to deny in the denyList
and the rules you want to allow in the allowList
.
ts
import { Hono } from 'hono'
import { getConnInfo } from 'hono/bun'
import { ipRestriction } from 'hono/ip-restriction'
const app = new Hono()
app.use(
'*',
ipRestriction(getConnInfo, {
denyList: [],
allowList: ['127.0.0.1', '::1'],
})
)
app.get('/', (c) => c.text('Hello Hono!'))
Pass the getConninfo
from the ConnInfo helper appropriate for your environment as the first argument of ipRestriction
. For example, for Deno, it would look like this:
ts
import { getConnInfo } from 'hono/deno'
import { ipRestriction } from 'hono/ip-restriction'
//...
app.use(
'*',
ipRestriction(getConnInfo, {
// ...
})
)
Rules
Follow the instructions below for writing rules.
IPv4
192.168.2.0
- Static IP Address192.168.2.0/24
- CIDR Notation*
- ALL Addresses
IPv6
::1
- Static IP Address::1/10
- CIDR Notation*
- ALL Addresses
Error handling
To customize the error, return a Response
in the third argument.
ts
app.use(
'*',
ipRestriction(
getConnInfo,
{
denyList: ['192.168.2.0/24'],
},
async (remote, c) => {
return c.text(`Blocking access from ${remote.addr}`, 403)
}
)
)