CloudMailRu v23022026
Описание
Плагин Total Commander для работы с сервисом Облако@mail.ru.Ссылка на скачивание (бинарные сборки и исходные коды): https://github.com/pozitronik/CloudMailRu
Поддерживаются:
- Работа с несколькими аккаунтами
- Навигация по каталогам
- Скачивание файлов из облака
- Заливка файлов в облако
- Удаление файлов в облаке
- Переименование/перемещение файлов в облаке
- Просмотр свойств файла в облаке через набор дополнительных колонок TC
- Другие полезные штуки-дрюки
Статья на GeekTimes: https://geektimes.ru/post/279076/
Что нового
Добавлено
- Поддержка авторизации через VK ID.
- Поддержка авторизации через OAuth.
- Превью миниатюр облачных файлов в панели Total Commander. Поддерживаемые форматы: jpg, jpeg, png, gif, bmp, heic, heif, webp, tiff, mp4, avi, mov, mkv, wmv, flv, 3gp, m4v, mpg, mpeg. Настраивается ключом ThumbnailExtensions в INI.
- Выбор стратегии вычисления хешей: BCrypt (аппаратное ускорение SHA-NI), OpenSSL или Delphi. BCrypt используется по умолчанию на современных процессорах с ускорением в 2-3 раза. Настраивается в параметрах плагина.
- Выбор профиля шифрования для каждого аккаунта: AES-256 и Twofish-256 через DCPCrypt, а также бэкенды OpenSSL AES-256 и BCrypt AES-256.
- Предварительная проверка квоты перед многочастной загрузкой с диалогом подтверждения при нехватке места.
- Прогресс многочастной загрузки теперь отображается в формате [X из Y] вместо прогресса по каждому фрагменту.
- Постраничный листинг каталогов для обхода ограничения API облака в ~8000 элементов.
- Автоматическая повторная аутентификация OAuth-сессии при истечении токена (HTTP 403).
- Поддержка собственного сервера через self-hosted реализацию tucha.
- Улучшения для self-hosted серверов: принимаются произвольные логины без @.
- Полная поддержка i18n через .lng-файлы с TranslationManager (включены английский и русский переводы).
- Формат хеш-файлов: блочные комментарии и строчные комментарии после закрывающей кавычки.
- Трассировка HTTP-запросов/ответов через битовую маску LOG_LEVEL_HTTP (64).
- Сохранение временных меток файлов: сохраняет и восстанавливает оригинальное время модификации при загрузке/скачивании через файлы метаданных .cloud_timestamps.
- Поддержка OpenSSL 3.x через библиотеку IndySecOpenSSL с TLS 1.3.
- Кнопки проверки аккаунта в настройках для проверки учётных данных и публичных ссылок перед сохранением.
- Вкладка истории версий файла в диалоге свойств: просмотр версий, восстановление как копии или откат. Платные аккаунты показывают хеш для каждой версии; бесплатные — только дату/размер. Управляется глобальной настройкой «Показывать историю файлов».
- Инвалидация соединений после закрытия диалога настроек; настройки применяются сразу без переподключения.
- Настройки видимости и скачивания файлов метаданных: descript.ion и .cloud_timestamps могут отображаться в листинге и копироваться локально. Настраивается для каждого типа файлов в настройках аккаунта.
- Кеш листинга каталогов: дисковый TTL-кеш, сокращающий число API-вызовов при повторных навигациях. Настраиваемые TTL и максимальный размер через вкладку «Кеш».
- Кеш содержимого файлов: дисковый кеш с ключом по хешу содержимого. Неизменённые файлы отдаются из локального кеша. Настраивается независимо от кеша каталогов.
- Кросс-серверный перенос файлов: копирование/перемещение между аккаунтами на разных серверах через поток в памяти с отображением прогресса.
Изменено
- Редизайн интерфейса настроек: масштабируемый диалог аккаунтов, переработанная вкладка потоковых настроек с TListView и отслеживанием изменений, улучшенные подсказки и компоновка.
- Имя аккаунта/расширения отображается в диалогах подтверждения сохранения изменений.
- Потоковое шифрование/дешифрование с постоянным потреблением памяти вместо буферизации целых файлов.
- Настройки разбиения файлов перенесены из глобальных в настройки аккаунта с валидацией 2 ГБ для бесплатных аккаунтов.
- Настройки временных меток объединены в единый enum TimestampMode (Disabled / CloudTime / FullSync), заменяя 4 перекрывающихся булевых параметра.
- Общий жизненный цикл синхронизации метаданных вынесен в TBaseRemoteMetadataSyncManager с использованием паттернов Template Method + Adapter.
Удалено
- Регистрация аккаунтов (больше не поддерживается mail.ru).
- Опция шифрования имён файлов.
- Удалены устаревшие методы аутентификации (больше не поддерживаемые mail.ru)/
- Функция «Ссылки для скачивания» (API mail.ru возвращает временные URL с быстрым истечением).
Исправлено
- Утечка памяти в CreateRemoveDirSkippedPath при повторном вызове из одного потока.
- Нормализация URL шардов/эндпоинтов перед конкатенацией путей.
- Подстановка схемы http:// по умолчанию для серверных URL без указания протокола.
- ServerProfileManager читал из неверного конфигурационного файла; пользовательские серверные эндпоинты не резолвились.
- Серверные профили теперь хранятся в глобальном INI-файле, а не в INI аккаунтов.
- Детали ошибок аутентификации теперь отображаются при неудачном входе вместо молчаливого игнорирования.
- Метаданные временных меток хранят UTC вместо локального времени, устраняя ошибки синхронизации при переходе на летнее время и смене часовых поясов.
- Скачанные файлы записывают фактическое облачное время модификации в метаданные для обнаружения конфликтов.
- Консистентность именования файлов метаданных между подсистемами описаний и временных меток.
- Отсутствующая очистка метаданных временных меток при удалении скачанного файла в ходе операции перемещения.
- Позиционирование диалоговых форм, масштабирование DPI и якоря элементов управления во всех диалогах.
- Центрирование диалогов на мультимониторных конфигурациях с разным масштабированием DPI.
- Позиция диалога после перетаскивания между мониторами при срабатывании события смены DPI.
Внутренние изменения
- Полная миграция на Clean Architecture / DDD с четырьмя слоями (Domain, Application, Infrastructure, Presentation).
- Внедрение зависимостей через интерфейсы по всей кодовой базе.
- Паттерн MVP для всех UI-форм.
- 2600+ модульных и интеграционных тестов (DUnitX) с развитой инфраструктурой моков.
- Автономная инфраструктура интеграционных тестов с автозапуском мок-сервера.
- Расширенное покрытие тестами модулей ConnectionManager, CloudHTTP, FileStreamExecutor, CloudFileDownloader, CloudFileUploader, TCHandler, PluginSettingsManager, OpenSSL, CipherProfile.
- 40+ выделенных сервисных классов, извлечённых из монолитного MailRuCloudWFX.pas.
- Паттерн Null Object применён повсеместно (TNullLogger, TNullCipher, TNullFileSystem и др.).
- Обёртка TSafeJSON для null-безопасной навигации по JSON.
- Централизованный провайдер OpenSSL для единообразной загрузки библиотеки.
- Логика повторных попыток по токену централизована в TRetryOperation.
- Хелпер IfEmpty (coalesce) в StringHelper.