Skip to content

fix: исправление багов и актуализация аутентификации#54

Open
alexhmt wants to merge 5 commits intov8platform:developfrom
alexhmt:fix/bugs-from-review
Open

fix: исправление багов и актуализация аутентификации#54
alexhmt wants to merge 5 commits intov8platform:developfrom
alexhmt:fix/bugs-from-review

Conversation

@alexhmt
Copy link
Copy Markdown

@alexhmt alexhmt commented Mar 28, 2026

Summary

  • Исправлены 8 багов найденных при код-ревью (двойной wg.Done, потеря ошибок multierr.Append, format string mismatch, сломанная проверка .tar.gz, чтение пустого resp.Body, sync.Pool buffer reuse, path.Join на Windows, strings.TrimLeft вместо TrimPrefix)
  • Переход на CAS form-based аутентификацию (старый ticket/auth перестал работать)
  • Детекция ошибок сервера: страница логина, ошибка доступа, временная недоступность
  • Исправлена ошибка rename на Windows из-за незакрытого файлового дескриптора

Test plan

  • go build ./... — сборка без ошибок
  • go test ./... — все тесты проходят
  • Проверена аутентификация через CAS form login
  • Проверено скачивание файлов Platform83 (8 GB, 5 файлов)
  • Проверена детекция ошибки доступа для аккаунта без подписки

🤖 Generated with Claude Code

proDOOMman and others added 5 commits September 18, 2023 17:48
- Двойной wg.Done() вызывающий панику при ошибке загрузки (v8platform#1)
- multierr.Append без присвоения результата — ошибки терялись (v8platform#2)
- Несовпадение format string в log.Errorf (v8platform#3)
- Сломанная проверка .tar.gz: filepath.Ext + инверсия логики (v8platform#4)
- Чтение уже потреблённого resp.Body в диагностике (v8platform#6)
- sync.Pool buffer reuse до копирования данных (v8platform#7)
- path.Join вместо filepath.Join ломал пути на Windows (v8platform#8)
- strings.TrimLeft вместо TrimPrefix обрезал имена проектов (v8platform#9)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Старый ticket-based flow (login.1c.ru/rest/public/ticket/get → ticket/auth)
перестал работать — ticket/auth возвращает 302 на страницу логина.

Реализован стандартный CAS form-based login:
1. GET login page → извлечение execution token
2. POST form с credentials → установка CAS cookies
3. Follow redirects → аутентифицированная сессия

Также добавлена детекция типичных ошибок в ответах:
- Страница логина вместо данных (истёкшая сессия)
- "Ошибка на нашем сервере" (временная недоступность)
- "Ошибка доступа" (нет прав на ресурс)

Удалён неиспользуемый код: getAuthTicketURL, bodyToJSON.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
SaveToFile использовал defer для закрытия файлового дескриптора,
что на Windows приводило к ошибке "file being used by another process"
при последующем os.Rename. Теперь fd.Close() вызывается явно перед
возвратом из функции.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants