docs: README — в процессе разработки, описание функционала, без установки

This commit is contained in:
2026-05-31 12:41:04 +03:00
parent e90b0454c1
commit 707319ed23
+23 -35
View File
@@ -1,59 +1,47 @@
# IP WhiteList
Self-service портал управления доверенными IPv4-адресами клиентов облачного провайдера.
> ⚠️ **В процессе разработки.** НЕ для production.
Self-service портал для управления доверенными IPv4-адресами клиентов облачного провайдера.
Записи исключаются из блокировки системами фильтрации во время DDoS-атак.
**[Техническое задание](docs/ТЗ.md)** · **[Отчёт о соответствии ТЗ](docs/TZ-COMPLIANCE-REPORT.md)**
**[Полное техническое задание](docs/ТЗ.md)** · **[Отчёт о соответствии](docs/TZ-COMPLIANCE-REPORT.md)**
## Быстрый старт
---
```bash
npm install
cp .env.example .env # заполнить переменные
npm start # http://localhost:3000
npm test # 104 API-теста
npm run test:stress # 191 стресс-тест
```
## Что делает
## Переменные окружения
- **Клиент** авторизуется через Keycloak (OIDC) и управляет списком своих IPv4/CIDR: добавляет, редактирует, удаляет (soft delete)
- **Валидация** на сервере: маски /22–/32, запрет 14 приватных/служебных диапазонов, запрет дубликатов и пересечений внутри компании, нормализация host-битов
- **Лимиты:** глобальный (15 по умолчанию, настраивается через env) и индивидуальный на компанию (устанавливает админ)
- **Администратор** видит записи всех компаний, управляет лимитами, просматривает журнал аудита
- **Аудит:** все изменения (создание/редактирование/удаление) фиксируются — кто, когда, что было и что стало
- **Экспорт:** агрегированный список всех активных CIDR в txt (для систем фильтрации трафика)
| Переменная | Назначение | По умолчанию |
|---|---|---|
| `DEV_MODE` | mock-аутентификация (`true` в dev, **запрещён** в prod) | — |
| `ADMIN_CLIENT_ID` | clientId администратора | `WZ01112` |
| `DEFAULT_LIMIT` | лимит записей на компанию | `15` |
| `DATABASE_URL` | строка подключения PostgreSQL | — |
| `SESSION_SECRET` | секрет сессий (**обязателен** в prod) | — |
## Роли
[Полный список в AGENT.md](AGENT.md#4-переменные-окружения)
| Роль | Права |
|---|---|
| Клиент | CRUD своих записей в пределах лимита |
| Администратор (WZ01112) | CRUD всех записей, изменение лимитов, просмотр аудита |
## Стек
Node.js 18+ / Express 4 / EJS / PostgreSQL 17 / jsonwebtoken RS256
Node.js 18+ / Express 4 / EJS (SSR) / PostgreSQL 17 / jsonwebtoken RS256
## Архитектура
```
Browser → UI (EJS, сессия) → api-client → REST API (Bearer JWT) → PostgreSQL
Browser → UI (EJS, сессия) → REST API (Bearer JWT) → PostgreSQL
```
Два слоя: SSR UI для браузера и JSON API для внешних потребителей.
API — Bearer-only (без сессий), UI — сессия + Bearer-токен внутри.
**[Подробная карта файлов в AGENT.md](AGENT.md#5-структура-файлов--карта-ответственности)**
## Роли
| Роль | clientId | Права |
|---|---|---|
| Клиент | Любой | CRUD своих записей в пределах лимита |
| Администратор | `WZ01112` | CRUD всех записей, изменение лимитов, аудит |
Два слоя: SSR UI для браузера, JSON API для внешних потребителей.
## Деплой
Платформа: Nubes k8s. Редеплой — через Nubes UI из Gitea после `git push`.
Production URL: `https://white.nodejsk8s.dev.nubes.ru`
Nubes k8s. Редеплой — Nubes UI из Gitea после `git push`.
URL: `https://white.nodejsk8s.dev.nubes.ru`
## Разработка
Перед любой задачей читать [`AGENT.md`](AGENT.md) — полное руководство для агентов и разработчиков.
Перед любой задачей читать [`AGENT.md`](AGENT.md) — руководство для агентов и разработчиков.