From 6f846d0495490c3ab0c360c92243acc3d53ed3d3 Mon Sep 17 00:00:00 2001 From: vitya Date: Tue, 19 May 2026 21:21:13 +0300 Subject: [PATCH] =?UTF-8?q?docs(.wiki,.tasks):=20cms-admin-assets-root-fol?= =?UTF-8?q?ders-seed=20=E2=80=94=20DB=20seed=2015=20missing=20root=20rows?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Admin /admin/assets//getList?path= крашился 500 NullReferenceException в AssetsJsonViewModelBuilder.cs:22 (model.ParentPath на null) для 15 sites без root AssetsFolder в Folders table (emspb.ru, pilorama98.ru, labtools.pro, kupimknigi.spb.ru, sestech.ru, aquamax.spb.ru, artmone.pro, priemka-kvartiry.ru, profund.spb.ru, ics-artmaterials.com, _voda-indigo.ru + 4 sites с NULL Domain). Root создавался lazy при first upload — sites которые никогда не использовали admin assets UI остались без root. Frontend (AssetsAppFunc.cs:66-86) делает proper null-check → 404, только admin view-model builder упустил. Fix: idempotent SQL seed (WHERE NOT EXISTS), 15 rows inserted. Inserted FolderId/OwnerId captured в .tasks/...inserted-rows.txt для atomic revert. Browser-verified user'ом на pilorama98/emspb. Долгосрочный TODO: null-guard в AssetsJsonViewModelBuilder.Build (CMS code), требует recompile DLL — отложено до восстановления build env (vds-kzntsv-bootstrap). snapshot open issue #8 → resolved. Co-Authored-By: Claude Opus 4.7 (1M context) --- STATUS.md | 8 ++ ...assets-root-folders-seed.inserted-rows.txt | 21 ++++++ cms-admin-assets-root-folders-seed.md | 74 +++++++++++++++++++ 3 files changed, 103 insertions(+) create mode 100644 cms-admin-assets-root-folders-seed.inserted-rows.txt create mode 100644 cms-admin-assets-root-folders-seed.md diff --git a/STATUS.md b/STATUS.md index 676b05a..617db85 100644 --- a/STATUS.md +++ b/STATUS.md @@ -1,6 +1,14 @@ # Task Board _Updated: 2026-05-19_ +## 🟢 [cms-admin-assets-root-folders-seed] — seed 15 missing root AssetsFolder rows в DB, admin assets открывается +**Status:** done (2026-05-19 вечер). Browser-verified user'ом на pilorama98/emspb. Detail в [[cms-admin-assets-root-folder-seed]]. +**Result:** 15 rows inserted (idempotent NOT EXISTS query). Affected: emspb.ru, pilorama98.ru, labtools.pro, kupimknigi.spb.ru, sestech.ru, aquamax.spb.ru, artmone.pro, priemka-kvartiry.ru, profund.spb.ru, ics-artmaterials.com, _voda-indigo.ru + 4 sites с NULL PrimaryDomain. Inserted FolderId/OwnerId captured в `.tasks/cms-admin-assets-root-folders-seed.inserted-rows.txt` для atomic revert. +**Long-term TODO (deferred):** null-guard в `AssetsJsonViewModelBuilder.Build` (CMS code) — defensive fix чтобы не crash'ить если root missing. Требует recompile `MoreThenCms.Admin.dll`, ждёт build env (`vds-kzntsv-bootstrap`). +**Branch:** master + +--- + ## 🟢 [cms-port-leak-fix] — утечка `:8089`/`:4443` в admin URLs закрыта через URL Rewrite serverVariables **Status:** done (2026-05-19 вечер; verified user-side в браузере, остальные 10 cms работают). Detailed wiki concept — [[cms-server-port-leak-fix]]. **Root cause:** `MoreThenCms.Admin\Mis\Web\Mvc\UrlHelpers\UrlHelpers.cs:14-37` `Url.SiteRoot()` читает `SERVER_PORT`/`SERVER_PORT_SECURE` из server vars, и в attempt2-host setup `SERVER_PORT=8089` → leak. Десятки .cshtml файлов (admin views + `_Layout`/`_LogInLayout`) рендерят это в `mis.siteRoot` и `