From ea4551ce132d91158fe402aabb4485071890cbcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sun, 31 May 2026 09:03:30 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B2=D1=80=D0=B5=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=BD=D1=8B=D0=B9=20=D0=BF=D1=83=D0=B1=D0=BB=D0=B8=D1=87=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20/exp=20=D0=B1=D0=B5=D0=B7=20=D0=B0=D0=B2=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20(v0.4.9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- server.js | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 118ecd4..e0d0e7c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipwhitelist", - "version": "0.4.8", + "version": "0.4.9", "description": "IP WhiteList microservice for cloud provider", "main": "server.js", "scripts": { diff --git a/server.js b/server.js index b27982e..a59b7ed 100644 --- a/server.js +++ b/server.js @@ -76,6 +76,25 @@ async function start() { // JWKS endpoint для валидации токенов внешними сервисами (только в mock-режиме) if (auth.jwksHandler) app.get('/.well-known/jwks.json', auth.jwksHandler); + // ── ВРЕМЕННЫЙ публичный endpoint /exp (без авторизации) ────────────────── + // TODO: убрать когда /export станет публичным по ТЗ п. 4.7 + { + const { exportLimiter } = require('./src/middleware/rateLimit'); + const { aggregateCIDRs } = require('./src/validators'); + app.get('/exp', exportLimiter, async (req, res) => { + try { + const cidrs = await q.getExportCIDRs(null); // null = все компании + const aggregated = aggregateCIDRs(cidrs); + res.setHeader('Content-Type', 'text/plain; charset=utf-8'); + res.setHeader('Content-Disposition', 'inline; filename="whitelist.txt"'); + res.send(aggregated.join('\n') + (aggregated.length ? '\n' : '')); + } catch (e) { + console.error('/exp error:', e); + res.status(500).send('Export error'); + } + }); + } + // ── REST API v1 (Bearer JWT, без сессий/CSRF) ───────────────────────────── const { createApiRouter } = require('./src/api/index'); app.use('/api/v1', createApiRouter({ auth, q }));