Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) Safe-mode: OFF (not secure) /usr/local/lib/node_modules/strapi/node_modules/koa-ip/ drwxr-xr-x | |
| Viewing file: Select action/file-type: const assert = require('assert')
const isPlainObject = require('lodash.isplainobject')
const requestIp = require('request-ip')
const debug = require('debug')('koa-ip')
module.exports = function (opts) {
assert(opts, 'koa-ip missing opts')
if (!isPlainObject(opts)) {
opts = { whitelist: Array.isArray(opts) ? opts : [opts] }
}
return async function koaIp (ctx, next) {
const ip = ctx.ip || requestIp.getClientIp(ctx.req)
let pass = true
if (opts.whitelist && Array.isArray(opts.whitelist)) {
pass = opts.whitelist.some((item) => {
return new RegExp(item).test(ip)
})
}
if (pass && opts.blacklist && Array.isArray(opts.blacklist)) {
pass = !opts.blacklist.some((item) => {
return new RegExp(item).test(ip)
})
}
// pass
if (pass) {
debug(`${new Date()}: "${ip} -> ✓"`)
return next()
}
// not pass
if (typeof opts.handler === 'function') {
debug(`${new Date()}: "${ip} -> handler"`)
await opts.handler(ctx, next)
} else {
debug(`${new Date()}: "${ip} -> ×"`)
ctx.throw(403)
}
}
}
|
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.005 ]-- |