805b440e5d44823c74523b52310a5878e61d6938
Покрытие: - §4.1 Просмотр списка (19 тестов) - §4.2 Создание записи (10 тестов) - §4.3 Редактирование (4 теста) - §4.4 Soft delete (5 тестов) - §4.5 Лимиты (8 тестов) - §4.6 Аудит (7 тестов) - §4.7 Export (13 тестов) - §5 Валидация — все 14 запрещённых + маски + XSS/SQLi (21 тест) - §3 Роли и права (9 тестов) - §3.1 Мульти-компания (7 тестов) - ТЗ-плюс уточнения (2 теста) Результат: 111 PASS, 0 FAIL — лог в test-results/
IP WhiteList
⚠️ В процессе разработки. НЕ для production.
Self-service портал для управления доверенными IPv4-адресами клиентов облачного провайдера. Записи исключаются из блокировки системами фильтрации во время DDoS-атак.
Полное техническое задание · Отчёт о соответствии
Что делает
- Клиент авторизуется через Keycloak (OIDC) и управляет списком своих IPv4/CIDR: добавляет, редактирует, удаляет (soft delete)
- Валидация на сервере: маски /22–/32, запрет 14 приватных/служебных диапазонов, запрет дубликатов и пересечений внутри компании, нормализация host-битов
- Лимиты: глобальный (15 по умолчанию, настраивается через env) и индивидуальный на компанию (устанавливает админ)
- Администратор видит записи всех компаний, управляет лимитами, просматривает журнал аудита
- Аудит: все изменения (создание/редактирование/удаление) фиксируются — кто, когда, что было и что стало
Роли
| Роль | Права |
|---|---|
| Клиент | CRUD своих записей в пределах лимита |
| Администратор (WZ01112) | CRUD всех записей, изменение лимитов, просмотр аудита |
Как получить список для фильтрации
Агрегированный список всех активных CIDR в формате txt (одна строка — одна подсеть).
| Endpoint | Авторизация | Статус |
|---|---|---|
GET /export |
Bearer-токен | Будет основным (публичным по ТЗ) |
GET /exp |
Нет | Временный, работает сейчас |
После перевода /export на публичный доступ /exp будет удалён.
Стек
Node.js 18+ / Express 4 / EJS (SSR) / PostgreSQL 17 / jsonwebtoken RS256
Архитектура
Browser → UI (EJS, сессия) → REST API (Bearer JWT) → PostgreSQL
Два слоя: SSR UI для браузера, JSON API для внешних потребителей.
Деплой
Nubes k8s. Редеплой — Nubes UI из Gitea после git push.
URL: https://white.nodejsk8s.dev.nubes.ru
Разработка
Перед любой задачей читать AGENT.md — руководство для агентов и разработчиков.
Languages
JavaScript
81%
EJS
13.9%
Shell
5.1%