naeel
dce2368712
feat: auto-migration on startup (ensureSchema)
...
- db.js: ensureSchema() creates tables if not exist
- server.js: calls ensureSchema() after DB connection
- No manual SQL needed for deployment
2026-06-09 19:46:19 +04:00
naeel
9fd808bc1f
chore: DB defaults for managed platform, reduce required env vars
...
- db.js: DB_HOST default postgresqlk8s-master, DB_NAME default ipwhitelist, DB_USER default super
- server.js: fail-fast for DB_PASS in production (instead of IAM_API_URL)
- After this change: only DB_PASS is required for mock mode
2026-06-09 19:20:29 +04:00
naeel
393595301b
fix: IAM_API_URL default to dev, document env selection
...
- .env.example: показаны три URL стендов (dev/test/prod), dev по умолчанию
- src/config.js: дефолт IAM_API_URL сменён с prod на dev (безопаснее)
- docs/devops-deploy.md: добавлена строка IAM_API_URL в таблицу настройки .env
2026-06-06 12:00:27 +04:00
naeel
ae6f3c4f8d
fix: devops-deploy.md — multi-company через IAM
2026-06-04 16:52:07 +03:00
naeel
1f1d70e577
fix: AGENT-GUIDE comma-separated → IAM profiles
2026-06-04 16:50:47 +03:00
naeel
e7aeceb3b6
fix: README multi-company — IAM вместо comma-separated
2026-06-04 16:49:50 +03:00
naeel
4f8695aeda
docs: AGENT-GUIDE 0.5.23 + changelog
2026-06-04 16:39:44 +03:00
naeel
28954515e3
cleanup: убраны устаревшие comma-separated clientId
2026-06-04 16:38:33 +03:00
naeel
a0b66bb602
docs: wowater.md + README 0.5.23
2026-06-04 16:36:45 +03:00
naeel
e9bd94cea3
fix: 0.0.0.0/8 → blocked ranges + bump 0.5.23
2026-06-04 16:13:04 +03:00
naeel
05c6920987
cleanup: PRODUCTION-READY-ANALYSIS.md → audits/
2026-06-04 16:02:20 +03:00
naeel
3ef5478130
cleanup: PROJECT-AUDIT.md → audits/, ++gitignore
2026-06-04 15:59:59 +03:00
naeel
a3cf9812df
cleanup: аудиты → audits/, версии актуальны, gitignore
...
- audits/: все аудиты + ревью вынесены из docs/
- .gitignore: audits/, удалены старые паттерны
- README.md: v0.5.22
- .github/AGENT-GUIDE.md: v0.5.22
- Удалены из трекинга: TZ-COMPLIANCE, аудиты
2026-06-04 15:56:38 +03:00
naeel
c1df27d29d
fix: DeepSeek audit — header injection + IAM limit + bump 0.5.22
...
- src/api/routes/entries.js: санитизация filename в /api/v1/entries/export
- ui/routes/export.js: санитизация filename в UI /export
- src/auth.js: лимит 100KB для IAM-ответов
- src/api/routes/entries.js: fallback для пустого allowedIds
2026-06-04 15:48:16 +03:00
naeel
58e34042de
fix: header injection, api timeout, nginx duplicate + bump 0.5.21
...
- server.js: санитизация filename в /export (header injection)
- ui/api-client.js: req.setTimeout(15000) + try/catch JSON.parse
- docs/devops-deploy.md: убран дубль X-Forwarded-Proto
2026-06-04 15:41:03 +03:00
naeel
99796202cb
fix: IAM warning, nginx doc, fail-fast IAM_API_URL + bump 0.5.20
...
- src/routes/oidc.js: console.error при IAM fallback вместо warn
- server.js: проверка IAM_API_URL в production mode
- docs/devops-deploy.md: X-Forwarded-Proto в nginx config
2026-06-04 15:33:32 +03:00
naeel
7b66b94774
bump: 0.5.19 (redirect security fixes)
2026-06-04 15:27:17 +03:00
naeel
8cbbe52316
fix: safeReturn для всех редиректов (security)
...
- ui/routes/auth.js: safeReturn() для returnTo в POST /login и /login-token
- src/routes/oidc.js: safeLocal() для oidcReturnTo в /callback
2026-06-04 15:26:26 +03:00
naeel
6edef60ed8
bump: 0.5.18 (IAM integration)
2026-06-04 15:11:53 +03:00
naeel
bbcda90378
fix: IAM баги после ревью
...
- ui/routes/auth.js: POST /login-token сделан async (был await без async)
- ui/routes/auth.js: IAM enrichment только при auth.isOidc (не в mock-режиме)
- src/auth.js: fetchIamUser, switchProfile возвращаются из initAuth()
- src/routes/oidc.js: auth.fetchIamUser вместо require('../auth') (устранение циклической зависимости)
- ui/routes/auth.js: auth.fetchIamUser вместо require
- tests/api-crud.sh: удалён хардкоженный prod-токен, токен только через аргумент
2026-06-04 15:08:40 +03:00
naeel
a8a07fe019
feat: IAM API интеграция + обновление ТЗ + тесты
...
- src/auth.js: fetchIamUser(), switchProfile(), userFromPayload(iamData)
- src/config.js: IAM_API_URL из env
- src/routes/oidc.js: обогащение сессии через IAM (с fallback на JWT)
- ui/routes/auth.js: обогащение при токен-логине
- ui/routes/entries.js: switchTo через POST /switch-profile
- src/api/routes/entries.js: resolveCompany через profiles[]
- views/index.ejs: переключатель компаний с названиями из profiles
- .env.example: IAM_API_URL
- docs: обновлены ТЗ-реализация.md, ТЗ-плюс.md, добавлен iam-integration.md
- tests: api-crud.sh (14 тестов CRUD + валидации)
- .gitignore: исключены .env.test, DEPLOY-TESTING.md
2026-06-04 13:53:44 +03:00
naeel
878e46287b
v0.5.17: owner_email в companies + универсальный парсер токенов + jwt.decode fallback
2026-06-03 15:17:56 +03:00
naeel
0b3f1ab445
gitignore: добавить docs/agent-opinions.md
2026-06-03 13:41:00 +03:00
naeel
c10b70f97a
cleanup: заменить тестовый email на example.com в keycloak-auth-reference
2026-06-03 13:40:41 +03:00
naeel
b7fe03f02d
cleanup финал: AGENT-GUIDE SSH-команда, deploy-keycloak URL, keycloak-auth ФИО/namespaces
2026-06-03 13:19:46 +03:00
naeel
f5dd0eaf15
cleanup: ТЗ-плюс — убрать реальные URL, email, deck-test client_id
2026-06-03 13:18:00 +03:00
naeel
8577ffa05c
fix README: devops-deploy не английский
2026-06-03 13:13:42 +03:00
naeel
2194c1650f
cleanup: убрать IP, реальные URL, креды из публичных файлов
...
- AGENT-GUIDE.md: убран IP ВМ, HTTP→HTTPS
- copilot-instructions.md: Files/token.txt→.env.example
- keycloak-auth-reference.md: убраны реальные client_id, URL gateway, email
- deploy-keycloak.md: реальные параметры заменены на шаблоны
- .env.example: русские значения→шаблоны
- README.md: порт 3000, multi-company пример под mock
2026-06-03 13:10:48 +03:00
naeel
43fa0faf7a
docs: fix нумерация шагов, client scope, README обрезанная фраза + версия
2026-06-03 13:05:40 +03:00
naeel
2a77b163db
fix docs/devops-deploy — чёткий порядок, без дыр
...
- порядок шагов исправлен (сначала код, потом таблицы)
- sudo согласован
- PostgreSQL: установка → код → таблицы
- все <домен> заменены на white.nubes.ru как пример
- таблица .env с колонкой 'Что писать'
2026-06-03 13:02:42 +03:00
naeel
006741a5fa
fix gitignore — вернуть docs паттерны, убрать kubeconfig из трека
2026-06-03 12:44:51 +03:00
naeel
8e72fc4559
bump v0.5.13 → v0.5.14
2026-06-03 12:37:21 +03:00
naeel
38c7adf25d
v0.5.14 — вход по токену, JWKS в mock-режиме, production deploy docs
...
- POST /login-token: принимает реальный JWT (не только clientId)
- auth.js: verifyAnyToken — mock + JWKS (Keycloak Nubes) одновременно
- auth.js: JWKS предзагружается всегда, даже в mock-режиме
- devops-deploy.md: полная production-инструкция для DevOps
- .env.example: production-ready шаблон
- README.md: актуальный (v0.5.13, архитектура, тесты, ссылки)
- .gitignore: очищен от дубликатов
2026-06-03 12:37:10 +03:00
naeel
22beaa86a3
v0.5.13: AGENT-GUIDE.md — полный гайд для AI-агентов (англ.)
2026-06-03 06:22:35 +03:00
naeel
2841e3ac27
v0.5.13: gitignore разработческих файлов (DevOps-чистота)
2026-06-03 06:19:55 +03:00
naeel
8feabc339d
v0.5.13: DevOps-деплой гайд + .env.example
2026-06-03 06:17:49 +03:00
naeel
ba0779db51
v0.5.13: подготовка OIDC (Keycloak) — роуты готовы, ждут DevOps
...
- src/routes/oidc.js: /login, /callback, /logout
Активны ТОЛЬКО при KC_CLIENT_ID+KC_CLIENT_SECRET
Сейчас (mock) — пустой router, запросы уходят в UI
- server.js: подключены OIDC-роуты
- docs/deploy-keycloak.md: что нужно от DevOps для включения
2026-06-03 06:12:22 +03:00
naeel
9344eb57fb
v0.5.13: убраны футеры с версией (версия в шапке и title)
2026-06-03 06:06:53 +03:00
naeel
3dc5dc4ecc
v0.5.13: зачистка UI — мёртвый login.ejs, /exp→/export, комментарии
2026-06-03 06:06:40 +03:00
naeel
ac0f151bcb
v0.5.13
2026-06-03 05:54:46 +03:00
naeel
d7afff4bcd
v0.5.12: версия в title и заголовке страниц
...
- <title> → IP WhiteList v<%= appVersion %> — ...
- <h1> на login → IP WhiteList v<%= appVersion %>
- Header → «Белые списки IP v...»
- Футер с версией уже был
2026-06-03 05:42:23 +03:00
naeel
599808b838
fix: переключение компаний не работало — req.user.activeClientId не синхронизировался
...
Баг: resolveUser запускается ДО обработчика. После смены
session.user.activeClientId рендер и companyQuery продолжали
использовать старое значение req.user.activeClientId.
Фикс: req.user.activeClientId = switchTo после обновления сессии.
2026-06-03 05:34:06 +03:00
naeel
0fd5b43a94
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: план доделок
2026-06-02 19:04:24 +03:00
naeel
805b440e5d
v0.5.11: ТЗ-полный compliance тест — 111 тестов, 20 компаний × 100 CIDR
...
Покрытие:
- §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/
2026-06-02 18:38:08 +03:00
naeel
b10b3e8b09
правило №6: перед изменением кода — описать и получить согласие
2026-06-02 18:13:17 +03:00
naeel
6bbd0fe1e2
v0.5.11: /export публичный (временно, с заделом на Keycloak SSO)
...
Изменения:
- server.js: публичный GET /export до всей авторизации
🔮 Для Keycloak SSO: раскомментировать auth.bearerMiddleware
- Удалён ошибочно созданный src/routes/exp.js
- Обновлены тесты: /export доступен без авторизации
2026-06-02 18:12:35 +03:00
naeel
15b458eb35
v0.5.11: зачистка мёртвого кода + новые интеграционные тесты
...
Удалено:
- src/routes/*.js (5 файлов) — старая монолитная архитектура
- views/dev-login.ejs — старый dev-логин
- tests/debug-session.js — тесты старой архитектуры
Добавлено:
- safeReturn в src/auth.js
- Новые интеграционные тесты tests/integration.js (67 тестов, UI+API)
Обновлено:
- tests/run-tests.js — убраны старые require, добавлены новые модули
- tests/tz-compliance.js — /exp → /api/v1/entries/export
- server.js — убран require('./src/routes/exp')
2026-06-02 18:04:33 +03:00
naeel
4694b7e8a6
v0.5.11: версия + фикс теста MOCK_USERS.length 3→4
2026-06-02 17:49:07 +03:00
naeel
453e25e40f
ui: убрать вход по Bearer токену, добавить ручной ввод clientId (отладка)
2026-06-02 17:31:21 +03:00
naeel
51a003e078
v0.5.10: /export — attachment default, ?view=1 inline, ?filename=custom
2026-06-02 14:49:50 +03:00
naeel
72e021acfe
docs: уточнение — любой юзер компании может редактировать whitelist
2026-06-02 14:37:27 +03:00
naeel
9384e516ed
docs: deploy-vm + copilot-instructions
2026-06-02 14:20:24 +03:00
naeel
66a52d9363
v0.5.9: fix tests IDs, revert dotenv abs paths, deploy-vm doc
2026-06-02 14:20:16 +03:00
naeel
b91b78ab04
v0.5.8: distinct MOCK_USERS (WZ88888=АЛЬФА, WZ77777=БЕТА)
2026-06-02 11:36:53 +03:00
naeel
f1416e6566
v0.5.7: unique company names in MOCK_USERS
2026-06-02 11:32:41 +03:00
naeel
ff4b35414c
v0.5.6: bump version
2026-06-02 11:30:23 +03:00
naeel
23d55a1005
v0.5.4: auto-switch on select change, remove buttons
2026-06-02 11:30:03 +03:00
naeel
8ea10f1e37
v0.5.4: fix multi-company API — client_id validation, export isolation, 121 tests PASS
2026-06-02 11:20:51 +03:00
naeel
59ad0fa67e
v0.5.5: fix export client_id + multi-company tests (section O)
2026-06-02 11:17:23 +03:00
naeel
8ab2271ff9
v0.5.4: fix isolation — resolveUser syncs activeClientId from session
2026-06-02 11:11:20 +03:00
naeel
1b1b3b6bd7
v0.5.3: fix multi-company API isolation (client_id param)
2026-06-02 10:57:52 +03:00
naeel
a083f65323
v0.5.2: multi-company, isAdmin fix, appVersion, docs
2026-06-02 10:52:12 +03:00
naeel
07528b0de3
cluster cleanup 2026-06-01: remove fission, sless, fix metrics-server
2026-06-01 17:17:43 +03:00
naeel
94fb12b99d
chore: скрыть questions-devops.md + обновить
2026-05-31 13:40:30 +03:00
naeel
a3d535781c
chore: скрыть agent review files из репо
2026-05-31 13:38:41 +03:00
naeel
f75214c2a7
chore: скрыть prompt-opus файлы (.gitignore)
2026-05-31 13:37:27 +03:00
naeel
c4bb86f2fc
chore: скрыть внутреннюю аналитику из публичного репо (.gitignore)
2026-05-31 13:33:18 +03:00
naeel
1e581b3208
test: helpers.js — безопасные тестовые CIDR, проверка коллизий, удаление аудита + fix compliance
2026-05-31 13:17:21 +03:00
naeel
10ef2011be
fix: pre-cleanup удаляет только тестовые CIDR, не все записи
2026-05-31 13:06:21 +03:00
naeel
d1d591299e
fix: compliance cleanup — add 86.0.0.0/24, 87.0.0.1/32 to cleanup list
2026-05-31 13:04:32 +03:00
naeel
63d3a67eea
fix: убрать кнопку Применить из аудита — onchange достаточно
2026-05-31 13:01:32 +03:00
naeel
64da1f9834
test: compliance fix mask overlap + test results log (340 pass, 0 fail)
2026-05-31 12:58:20 +03:00
naeel
0abaa65bf8
fix: preserve form values on error + rename Дата→Добавлена, Изменён→Изменена + bump 0.5.1
2026-05-31 12:48:08 +03:00
naeel
bfeae74e71
docs: README — секция 'Как получить список', /export vs /exp
2026-05-31 12:43:02 +03:00
naeel
707319ed23
docs: README — в процессе разработки, описание функционала, без установки
2026-05-31 12:41:04 +03:00
naeel
e90b0454c1
docs: README — quick start, architecture, roles, deploy
2026-05-31 12:37:49 +03:00
naeel
5e1ce80003
test: ТЗ compliance — 45 API-тестов + полный отчёт о соответствии
2026-05-31 10:26:28 +03:00
naeel
35d8b7fcc2
docs: full documentation update — AGENT.md v0.5.0 + CONTEXT.md fixes/changes summary
2026-05-31 10:21:27 +03:00
naeel
d8613c7112
test: stress tests expanded to 191 (concurrency, boundary IPs, CIDR masks, auth attacks, unicode, session, massive parallel)
2026-05-31 10:18:33 +03:00
naeel
a24634199b
test: stress tests — concurrency, races, edge cases (32 pass) + bump 0.5.0
2026-05-31 10:10:48 +03:00
naeel
d8de91577c
1
2026-05-31 10:06:50 +03:00
naeel
c0c10a5ea0
docs: добавить исходный ТЗ docx
2026-05-31 09:43:14 +03:00
naeel
0413b44051
fix: P0/P1 fixes (auth+limit+schema) + project audit docs
2026-05-31 09:42:46 +03:00
naeel
d81430dc9a
docs: AGENT.md — полное резюме проекта для агентов и разработчиков
2026-05-31 09:12:38 +03:00
naeel
b0a5875f4e
refactor: /exp в отдельный модуль src/routes/exp.js
2026-05-31 09:05:48 +03:00
naeel
ea4551ce13
feat: временный публичный /exp без авторизации (v0.4.9)
2026-05-31 09:03:30 +03:00
naeel
02d842fd73
fix: display dates in Europe/Moscow timezone + bump 0.4.8
2026-05-31 08:13:36 +03:00
naeel
5c286af43b
refactor: entries.js — remove 'own' hack, clean admin company routing + bump 0.4.7
2026-05-31 07:25:42 +03:00
naeel
a355b34e4a
fix: remove duplicate own company option in dropdown + bump 0.4.6
2026-05-31 07:23:25 +03:00
naeel
fa67872f30
feat: admin own company option in dropdown + fix company=own routing + bump 0.4.5
2026-05-31 06:57:34 +03:00
naeel
c19480336d
fix: remove inline JS handlers (onclick/onchange/onsubmit) -> event delegation + bump 0.4.4
2026-05-31 06:26:47 +03:00
naeel
a6177c4cef
feat: admin auto-redirect to first company on / + bump 0.4.3
2026-05-31 06:15:37 +03:00
naeel
8531a0b545
fix: audit filter onchange restore + bump 0.4.2
2026-05-31 06:04:19 +03:00
naeel
6cf4bc0b44
fix: /admin — pass defaultLimit to template (fixes 500)
2026-05-31 05:52:01 +03:00
naeel
86b782bc33
fix: audit filter — add submit button, fix type comparison
2026-05-31 05:49:37 +03:00
naeel
ed5b3c8367
feat: comprehensive API tests (104 pass) + fix: validation errors → 400, comment length limit
2026-05-30 19:44:37 +03:00
naeel
7779bf416a
chore: bump version 0.4.0 → 0.4.1
2026-05-30 19:20:00 +03:00
naeel
aef7da5740
fix: ReferenceError message/wasNormalized → success в шаблонах (500 на всех страницах)
2026-05-30 19:19:15 +03:00
naeel
d31b8952b4
docs: перенос документации из IPWhiteList + CONTEXT.md (резюме для нового чата)
2026-05-30 19:10:34 +03:00
naeel
c85a438ba2
feat: UI-слой через /api/v1/* (ui/, views/ui-login.ejs, views/error.ejs)
...
- ui/api-client.js: HTTP-клиент к /api/v1/* (token из session.token)
- ui/routes/auth.js: /login (mock-пресеты), /login-token (Bearer paste), /logout
- ui/routes/entries.js: /, /add, /edit/:id, /delete/:id через API
- ui/routes/admin.js: /admin, /admin/limit/:id, /audit через API
- ui/routes/export.js: /export → проксирует /api/v1/entries/export
- ui/index.js: createUiRouter() — requireToken + resolveUser middleware
- views/ui-login.ejs: страница входа (mock + token)
- views/error.ejs: шаблон для 403/404/500
API расширения:
- GET /api/v1/entries теперь возвращает limit и used
- GET /api/v1/entries?company=<id> (admin): записи другой компании
- POST/PATCH/DELETE /api/v1/entries?company=<id> (admin): мутации для другой компании
- GET /api/v1/entries/export: агрегированный CIDR (перенесён из монолита)
- GET /api/v1/audit?company=<id>: журнал (перенесён из монолита)
server.js: заменены src/routes/* на ui/createUiRouter(), убран CSRF
2026-05-30 19:02:51 +03:00