diff --git a/server/src/plugins/ip-gate.js b/server/src/plugins/ip-gate.js index 1bdd499..9915570 100644 --- a/server/src/plugins/ip-gate.js +++ b/server/src/plugins/ip-gate.js @@ -5,6 +5,13 @@ const EXCLUDED_PATHS = [ '/api/admin/notifications/telegram/webhook', ] +function normalizeIp(ip) { + if (ip && ip.startsWith('::ffff:')) { + return ip.slice(7) + } + return ip +} + function build403Html(ip) { const safeIp = ip || 'не определён' return ` @@ -79,7 +86,7 @@ export async function registerIpGate(fastify) { const allowedIps = allowed .split(',') - .map((s) => s.trim()) + .map((s) => normalizeIp(s.trim())) .filter(Boolean) if (allowedIps.length === 0) return @@ -88,7 +95,7 @@ export async function registerIpGate(fastify) { if (EXCLUDED_PATHS.includes(urlPath)) return - if (allowedIps.includes(request.ip)) return + if (allowedIps.includes(normalizeIp(request.ip))) return return reply.code(403).type('text/html').send(build403Html(request.ip)) })