fix(admin): кнопка «Проверить документацию» возвращает на /admin/news + браузерный UA для nsd.ru

Три бага в Doc-watcher / Новостях, всплывшие при первом ручном прогоне:

1. setupFlash после POST в /admin/news/check-docs редиректил на
   /admin/setup, а не на /admin/news, и оператор «выпадал» с ленты.
   Теперь setupFlash смотрит Referer и возвращает на любой из
   /admin/wizard, /admin/news, /admin/setup — на ту страницу с которой
   пришёл POST.

2. http.DefaultClient в news.go и cacerts.go подхватывал HTTPS_PROXY
   из окружения и шёл через корпоративный zetit, который блокирует
   nsd.ru (CONNECT 403). Заменил на noProxyClient с явно отключённой
   проксификацией (Transport.Proxy = nil) — doc-watcher всегда идёт
   напрямую, независимо от ENV.

3. nsd.ru отдаёт 403 на запросы с UA «bj-server/1.0» (антибот). Заменил
   на стандартный Chrome User-Agent + браузерные Accept/Accept-Language.
   После этого moex-most-dlya-m2m.pdf найден и скачан, новость
   «Обновлена документация» опубликована.

Кроме того, по запросу — убрана форма «Добавить вручную» с /admin/news.
В UI остался только мониторинг: автоматическая лента событий +
ручная кнопка «🔄 Проверить обновления документации сейчас».
Handler /admin/news/add сохранён в коде на случай ручного ввода
инцидентов в будущем.
This commit is contained in:
fontvielle
2026-05-14 16:36:31 +03:00
parent 93f3ec240c
commit 19a2b6dda4
4 changed files with 42 additions and 54 deletions
+3 -3
View File
@@ -176,9 +176,9 @@ func downloadAndParseCert(ctx context.Context, rawURL string) ([]byte, error) {
if err != nil {
return nil, err
}
req.Header.Set("User-Agent", "bj-server/1.0 (cacerts auto-fetch)")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
req.Header.Set("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0 Safari/537.36")
// noProxyClient определён в news.go — игнорирует HTTPS_PROXY (zetit).
resp, err := noProxyClient.Do(req)
if err != nil {
return nil, fmt.Errorf("сеть: %w", err)
}