v0.5.12: доделки перед сдачей заказчику

§4.7: агрегация CIDR в публичном /export (aggregateCIDRs)
§5: клиентская JS-валидация (запрещённые диапазоны + нормализация)
§4.1: фильтр «показать удалённые» для admin (API + UI)
§5: уведомление о нормализации (уже работало, проверено)

Файлы:
- server.js: +aggregateCIDRs в /export
- views/index.ejs: JS-валидация + чек-бокс удалённых
- src/api/routes/entries.js: ?includeDeleted=true (admin only)
- ui/routes/entries.js: проброс includeDeleted
- docs/PLAN-predsdachey.md: план доделок
This commit is contained in:
2026-06-02 19:04:24 +03:00
parent 805b440e5d
commit 0fd5b43a94
6 changed files with 171 additions and 5 deletions
+3 -1
View File
@@ -28,6 +28,7 @@ const q = require('./src/queries');
const { MOCK_USERS, APP_VERSION } = require('./src/config');
const { authLimiter } = require('./src/middleware/rateLimit');
const { createSessionMiddleware } = require('./src/middleware/session');
const { aggregateCIDRs } = require('./src/validators');
const { CSP_DIRECTIVES } = require('./src/middleware/csp');
const { createUiRouter } = require('./ui/index');
@@ -83,7 +84,8 @@ async function start() {
async (req, res) => {
try {
const cidrs = await q.getExportCIDRs();
const text = cidrs.join('\n') + (cidrs.length ? '\n' : '');
const aggregated = aggregateCIDRs(cidrs);
const text = aggregated.join('\n') + (aggregated.length ? '\n' : '');
res.set('Content-Type', 'text/plain; charset=utf-8');
const fname = req.query.filename || 'white-list.txt';
const disp = req.query.view === '1' ? 'inline' : 'attachment';