Files
ipwhitelist-app/README.md
T

60 lines
2.5 KiB
Markdown

# IP WhiteList
Self-service портал управления доверенными IPv4-адресами клиентов облачного провайдера.
Записи исключаются из блокировки системами фильтрации во время DDoS-атак.
**[Техническое задание](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 стресс-тест
```
## Переменные окружения
| Переменная | Назначение | По умолчанию |
|---|---|---|
| `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-переменные-окружения)
## Стек
Node.js 18+ / Express 4 / EJS / PostgreSQL 17 / jsonwebtoken RS256
## Архитектура
```
Browser → UI (EJS, сессия) → api-client → REST API (Bearer JWT) → PostgreSQL
```
Два слоя: SSR UI для браузера и JSON API для внешних потребителей.
API — Bearer-only (без сессий), UI — сессия + Bearer-токен внутри.
**[Подробная карта файлов в AGENT.md](AGENT.md#5-структура-файлов--карта-ответственности)**
## Роли
| Роль | clientId | Права |
|---|---|---|
| Клиент | Любой | CRUD своих записей в пределах лимита |
| Администратор | `WZ01112` | CRUD всех записей, изменение лимитов, аудит |
## Деплой
Платформа: Nubes k8s. Редеплой — через Nubes UI из Gitea после `git push`.
Production URL: `https://white.nodejsk8s.dev.nubes.ru`
## Разработка
Перед любой задачей читать [`AGENT.md`](AGENT.md) — полное руководство для агентов и разработчиков.