Commit Graph
68 Commits
Author SHA1 Message Date
Repinoid 8c39bc5346 P2.1: BYOC Admin API — произвольные креды при создании тенанта
POST /admin/tenants теперь принимает опциональные access_key/secret_key. Если
задано любое из полей — оба обязательны (мин. длина 8/16). С произвольными
кредами tenantID генерируется случайно (CreateFixedAutoID). Без кредов —
поведение прежнее (store.Create).
2026-10-06 18:17:24 +03:00
Repinoid b7f79b388f P2.6: закрыть /metrics Bearer admin-токеном
/metrics отдаёт per-tenant данные (accessKey, число очередей и сообщений), что
является утечкой наружу на публичном endpoint. Теперь /metrics защищён тем же
Bearer admin-токеном (timing-safe сравнение). Скрепперу VM токен задаётся в конфиге.
2026-10-06 18:16:27 +03:00
Repinoid 2aa9a656a7 P2.7: убрать SNS-следы (Topics/Subscriptions) из goaws.yaml
Модели Environment уже не содержат Topics/SnsPort (форк вычистил SNS), но yaml
хранил легаси Topics и SNS-комментарии. Оставлен только SQS-конфиг.
2026-10-06 18:15:28 +03:00
Repinoid 876971eea8 P2.3: timing-safe сравнение admin bearer-токена
bearerAuthMiddleware теперь сравнивает Authorization через subtle.ConstantTimeCompare
(с предварительной проверкой длины), а не через != — устраняет timing side-channel
при подборе admin-токена.
2026-10-06 18:14:27 +03:00
Repinoid 424ec32a6a P1.5: убрать демо-бэкдор (публичный bypass-токен UI)
Удалены authenticateUIDemoToken, uiDemoToken/uiDemoTenantID/uiDemoEmail и их
константы (demo-ui-shared-sqs-ngcloud-2026) — публичный путь входа в UI мимо
JWT-валидации. seed.go теперь создаёт demo-тенанта со СЛУЧАЙНЫМИ кредами
(tenant.Create), без захардкоженного SecretKey в исходнике. Тест
TestJWTAuth_AllowsDemoToken заменён на TestJWTAuth_RejectsMissingToken.
2026-10-06 18:13:40 +03:00
Repinoid db41878951 P1.3: реализован MessageRetentionPeriod (эвикция просроченных сообщений)
processQueueTick теперь эвиктит сообщения старше retention (SentTime + retention < now):
удаляет их из очереди и из Redis (DeleteMessagesPersist), разблокируя FIFO-группы.
Retention == 0 означает отсутствие истечения. PeriodicTasks итерируется по (key, queue),
чтобы передать queueKey для удаления из Redis. Устраняет забивание очередей до OverLimit.
2026-10-06 18:10:57 +03:00
Repinoid 5642b893a8 chore: удалить мёртвые унаследованные тесты gosqs (несовместимы с мультитенантным форком)
13 файлов *_test.go требовали отсутствующие в git пакеты app/fixtures и
app/test, и даже с ними падали бы: написаны под дофорковый GoAws, где не было
тенанта в контексте и tenant-scoped ключей {accessKey}:{queueName}.
Причина зафиксирована в doc/thinking/tests-inherited-broken-2026-10-06.md.
2026-10-06 18:09:29 +03:00
Repinoid ac06572e25 doc: находка — унаследованные Go-тесты gosqs мёртвые (несовместимы с форком)
Тесты требуют тенанта из контекста и tenant-scoped ключей, а написаны под
дофорковый GoAws. Восстановление app/fixtures + app/test сделает их
компилируемыми, но падающими. Нужны новые тесты под мультитенантное поведение.
2026-10-06 18:07:31 +03:00
Repinoid 12b25e393d P0.2: JWT принимается только при явном 2xx от Nubes API
Раньше любой статус, кроме 401/403 (включая 5xx/429/редиректы), считался
подтверждением токена. Теперь валидность подтверждается только явным 2xx;
401/403 — отклонён, прочие статусы — ошибка стенда (пробуем следующий).
2026-10-06 18:04:42 +03:00
Repinoid c19a056de3 P0.3: синхронный персист SendMessage до ответа 200
Добавлен persistence.SaveMessageSync (синхронный HSet, возвращает ошибку).
SendMessage теперь пишет сообщение в Redis ДО возврата клиенту; при ошибке Redis
сообщение откатывается из памяти и возвращается InternalError (новая ошибка в
models/errors.go). Устраняет окно потери подтверждённого сообщения при краше пода
между 200 OK и асинхронной записью.
2026-10-06 18:04:22 +03:00
Repinoid 928a3fb85d P0.1: случайные креды тенанта — убран детерминированный вывод из email
CreateFromJWT больше не выводит ID/AccessKey/SecretKey из email через SHA256
с захардкоженной солью (это позволяло вычислить чужие креды по публичному email).
Креды генерируются случайно через crypto/rand. Удалены tenantIDFromEmail,
accessKeyFromEmail, secretKeyFromEmail, secretKeySalt и ветка legacy-пересчёта.
Идемпотентность по email сохранена (повторный логин возвращает тот же тенант).
2026-10-06 18:03:40 +03:00
Repinoid 6e96a4d007 doc(sqs): подробный план доработок P0/P1/P2 для DeepSeek Flash 2026-10-05 21:38:03 +03:00
Repinoid 9528441c97 doc(sqs): мой критический анализ отчёта Opus (перепроверка по коду) 2026-10-05 21:38:03 +03:00
Repinoid e8ccd8bae1 doc(sqs): промпт для Opus (allowlist файлов) + его отчёт КРАКО и план 2026-10-05 21:38:03 +03:00
“Naeel” 60b15fdb1c doc: HANDOFF-NEW-CHAT.md — резюме сессии для перехода в новый чат 2026-08-16 07:55:43 +04:00
“Naeel” 7897fda9e7 doc: тикет — дополнение: таймера 31с внутри кластера нет, он на внешнем шлюзе 2026-08-15 21:28:55 +04:00
“Naeel” 96f6d64184 doc: черновик тикета в Nubes (явления A/B, 6 доказательств); все фазы плана выполнены 2026-08-15 21:17:17 +04:00
“Naeel” 6d451c33d1 HISTORY: период таймаутов 32.9с (18 интервалов 32.7-33.0с) — таймер доказан; полная проверка скриптов и кредов OK; +tcp_mtu_probe.py 2026-08-15 20:38:01 +04:00
“Naeel” 5c2180d40e doc: финал плана (решения зафиксированы) + сравнение четырёх агентов 2026-08-15 15:05:12 +04:00
“Naeel” cd7f5a7d5a doc: план v4 от Опуса 4.8 + ответы на уточнения (нет второго ISP, NET_RAW вряд ли, echo отложить) 2026-08-15 15:03:33 +04:00
“Naeel” 5f6c0a5bf7 doc: план v3 от Соннета — разделение явлений A/B, port-forward первым; принят за основу 2026-08-15 14:56:13 +04:00
“Naeel” b91f21a50d doc: план v2 от DeepSeek V4 Pro (новый чат) — стратегия изоляции слоёв; сравнение с Flash 2026-08-15 14:50:02 +04:00
“Naeel” bd63c04ea3 doc: план сетевых экспериментов от DeepSeek V4 Flash (не Соннет) с поправками — nubes-network-bug-plan 2026-08-15 14:41:53 +04:00
“Naeel” 7460f59432 tests: 30-мин сравнение с локали — p50 90мс vs 140мс, но 49 таймаутов у shared (5.5%), YMQ 1 ошибка 2026-08-15 13:01:11 +04:00
“Naeel” 9950271259 tests: сравнение shared-SQS vs YMQ — p50 6-8мс vs 60-62мс; у shared выброс send 12-25с на прогон (платформа?) 2026-08-15 12:10:11 +04:00
“Naeel” 904d34904c tests: fifo_dlq_probe — опрос DLQ до 10с вместо мгновенной проверки (гонка с тиком); финальная регрессия зелёная 2026-08-15 09:31:11 +04:00
“Naeel” 2d47e86425 HISTORY: полная регрессия на ВМ — api_test 22/22, sdk_test 15/15; флап fifo_dlq_probe разобран (гонка теста, сервис 5/5) 2026-08-15 09:25:32 +04:00
“Naeel” cc20282ab0 HISTORY: P1.4/P2.5/P3.8 PASS, фикс api_test; +cli_load_test.py 2026-08-15 09:17:04 +04:00
“Naeel” 28f8527f8b tests: change-visibility 5с вместо 1с — гонка с таймером AWS-семантики 2026-08-15 09:07:24 +04:00
“Naeel” 9f69262b8c v0.1.35: фиксы — синхронные удаления в Redis (воскрешение очередей) + RedrivePolicy tenant-scoped DLQ 2026-08-15 08:57:25 +04:00
“Naeel” c66ac28766 HISTORY: FIFO/DLQ e2e — FIFO PASS, найден баг RedrivePolicy (tenant-scoped ключ) 2026-08-15 08:43:10 +04:00
“Naeel” 33735b0deb HISTORY: P0.1 таймауты + P0.2 рестарт PASS + найден дефект воскрешения удалённых очередей 2026-08-15 08:41:58 +04:00
“Naeel” dcafb1ad71 v0.1.35: серверные таймауты по Соннету — ReadHeaderTimeout вместо ReadTimeout, MaxHeaderBytes 2026-08-15 08:34:02 +04:00
“Naeel” d850e56cd9 chore: убрать __pycache__ из репо, добавить в .gitignore 2026-08-14 23:04:27 +04:00
“Naeel” 1862975a57 tests: авточистка очередей до и после прогона (мусор не копится) 2026-08-14 22:19:27 +04:00
“Naeel” 97db8f267d tests: без больших тел (платформа MTU 51с); превышение лимита через MaximumMessageSize=1024 2026-08-14 20:53:32 +04:00
“Naeel” 5599561527 HISTORY: результаты диагностики платформы (зависание больших POST ~51с, WAF) + platform_probe 2026-08-14 20:32:30 +04:00
“Naeel” d452afe854 v0.1.35: устранены гонки map (ChangeVisibility/DeleteBatch) и nil-deref под Lock + OverLimit 2026-08-14 18:48:35 +04:00
“Naeel” ff70bbeada tests: фикс invalid_cases (очереди удаляются после сценариев) + полные AWS-коды в EXPECTED_CODES + invalid_probe 2026-08-14 17:45:37 +04:00
“Naeel” 4e093db632 v0.1.35: лимит очередей JWT-тенантов 50, обновление лимита при логине 2026-08-14 16:51:12 +04:00
“Naeel” bc198dfb0c v0.1.35: FifoQueue/ContentBasedDeduplication в whitelist (совместимость CLI v2) 2026-08-14 16:02:51 +04:00
“Naeel” ee23079267 v0.1.35: whitelist имён атрибутов и для JSON-протокола (UnmarshalJSON) 2026-08-14 16:00:48 +04:00
“Naeel” 1869ce922b v0.1.35: resolveProtocol — query-mode клиенты парсят JSON-ответы (эмпирика), ошибки AWS-JSON __type 2026-08-14 15:56:40 +04:00
“Naeel” 23718f0b0e v0.1.35: query-mode XML-ответы, TOCTOU receive, валидации AWS, purge 60s, сужение локов 2026-08-14 15:53:08 +04:00
“Naeel” 072518ec52 tests: api_test.sh (CLI 22 проверки) + sdk_test.py (boto3 15 проверок) 2026-08-14 14:43:36 +04:00
“Naeel” 1c407be9d9 v0.1.34: кэш валидации JWT + smoke-тесты 2026-08-14 14:16:38 +04:00
“Naeel” a1936b760f v0.1.34: кэш валидации JWT (TTL 5 мин + grace 2 мин) — консоль устойчива к флаку шлюза 2026-08-14 14:09:49 +04:00
“Naeel” 854effb206 v0.1.33: строгий нейтральный стиль текстов на главной и в примерах 2026-08-14 13:49:26 +04:00
“Naeel” 63fb4fe93b v0.1.32: главная — пошаговый старт; примеры команд — на /examples крупным шрифтом; консоль сразу в аккаунт 2026-08-14 13:45:06 +04:00
“Naeel” d57aec40b5 v0.1.31: админский UI /admin, юзерский UI без слова «тенант» 2026-08-14 10:19:35 +04:00
“Naeel” c088d7b938 v0.1.30: локальные логотип и favicon /static в консоли (внешние terra.k8c.ru битые) 2026-08-14 10:10:18 +04:00
“Naeel” 6466d3cb75 v0.1.29: светлый Nubes-дизайн консоли, читаемая модалка Credentials (env + файл кредов) 2026-08-14 09:56:18 +04:00
“Naeel” 4badef12ea v0.1.28: email-идентичность — детерминированные креды из email, credentials-эндпоинт, UI модалка 2026-08-14 09:43:36 +04:00
“Naeel” f689684fef v0.1.27: страница-описание сервиса на корне / (дизайн Nubes) + /static 2026-08-14 09:05:16 +04:00
“Naeel” 10a5853c61 v0.1.26: версия в /health, admin health и UI; ldflags VERSION; Makefile build фикс 2026-08-14 08:19:14 +04:00
“Naeel” a1b1fe3b25 fix: валидация JWT перебором всех стендов gateway (токен любого стенда принимается) 2026-08-14 08:05:16 +04:00
“Naeel” 7169bf6dfd fix: JWT-валидация через lk-api-gateway PROD + User-Agent в PingNubesAPI 2026-08-14 07:51:05 +04:00
“Naeel” 32bc33b8c1 feat: UI — инфо-блок о сервисе на странице входа 2026-08-13 23:20:51 +04:00
“Naeel” a838f756f9 fix: Makefile — вернуть registry Docker Hub (образ пушится на naeel/shared-sqs) 2026-08-13 23:11:12 +04:00
“Naeel” 936268c217 feat: Dockerfile — ENV для Redis и seed-demo (под деплой на Nubes) 2026-08-13 22:07:42 +04:00
“Naeel” b5695dbd53 chore: удалить устаревшие тестовые файлы (SNS-легаси, несуществующие импорты) 2026-08-13 22:06:26 +04:00
“Naeel” ae338d2b4a chore: переместить исторические doc в doc/legacy, удалить tests и пустые легаси-папки 2026-08-13 22:03:08 +04:00
“Naeel” a6a67244c8 chore: удалить легаси — k8s/helm манифесты (уходим на Nubes Managed) 2026-08-13 22:00:52 +04:00
“Naeel” 56e87eaf1e chore: убрать легаси — pearlharbor креды удалены, doc/api и yandex YMQ помечены ЛЕГАСИ 2026-08-13 21:58:08 +04:00
“Naeel” 0e0af356e4 docs: пометка ЛЕГАСИ в doc/legacy/PLAN.md 2026-08-13 21:55:09 +04:00
“Naeel” 9ec4673893 chore: git локально, после пуша синк на ВМ 2026-08-13 21:51:36 +04:00
“Naeel” d3c29d8e3e doc: план миграции shared-sqs на Nubes Managed 2026-08-13 14:03:09 +04:00
“Naeel” 5429f1f62b Add GitHub rules: copilot-instructions.md and pravila.md 2026-05-08 14:20:07 +04:00