(request)
| 28 | const isServerlessRuntime = !!process.env.NEXT_PUBLIC_VERCEL_ENV; |
| 29 | |
| 30 | export function isRequestFromCloudflare(request) { |
| 31 | const proxyIp = |
| 32 | request instanceof Request |
| 33 | ? request.headers.get('x-vercel-proxied-for')?.split(', ').at(-1) // edge runtime |
| 34 | : request.headers['x-vercel-proxied-for']?.split(', ').at(-1); // node runtime |
| 35 | |
| 36 | return !!isIP(proxyIp) && isInSubnet(proxyIp, cloudflareIPs); |
| 37 | } |
| 38 | |
| 39 | // https://github.com/filipedeschamps/tabnews.com.br/blob/53482fa8d15c273e9dcda80242eaba4d9f37c9a9/models/ip.js#L4 |
| 40 | export function extractIPFromRequest(request) { |
no outgoing calls
no test coverage detected