refactor: /exp в отдельный модуль src/routes/exp.js
This commit is contained in:
@@ -76,24 +76,7 @@ async function start() {
|
|||||||
// JWKS endpoint для валидации токенов внешними сервисами (только в mock-режиме)
|
// JWKS endpoint для валидации токенов внешними сервисами (только в mock-режиме)
|
||||||
if (auth.jwksHandler) app.get('/.well-known/jwks.json', auth.jwksHandler);
|
if (auth.jwksHandler) app.get('/.well-known/jwks.json', auth.jwksHandler);
|
||||||
|
|
||||||
// ── ВРЕМЕННЫЙ публичный endpoint /exp (без авторизации) ──────────────────
|
app.use(require('./src/routes/exp')); // TODO: удалить (временный /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) ─────────────────────────────
|
// ── REST API v1 (Bearer JWT, без сессий/CSRF) ─────────────────────────────
|
||||||
const { createApiRouter } = require('./src/api/index');
|
const { createApiRouter } = require('./src/api/index');
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
// ВРЕМЕННЫЙ публичный endpoint GET /exp — без авторизации, все компании.
|
||||||
|
// TODO: удалить этот файл + строку в server.js когда /export станет публичным (ТЗ п. 4.7)
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const { Router } = require('express');
|
||||||
|
const { exportLimiter } = require('../middleware/rateLimit');
|
||||||
|
const { aggregateCIDRs } = require('../validators');
|
||||||
|
const q = require('../queries');
|
||||||
|
|
||||||
|
const router = Router();
|
||||||
|
|
||||||
|
router.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');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = router;
|
||||||
Reference in New Issue
Block a user