[Из песочницы] ShadowCloud — универсальный облачный клиент

В настоящее время многие компании предоставляют сервис облачного хранилища, но каждая имеет свой проприетарный клиент и их функционал, как правило, оставляет желать лучшего.
Существующие альтернативы мне не подошли в силу многих причин, поэтому я решил сделать собственный универсальный клиент — shadowcloud

Как-то так он выглядит:

image


  • Прямая загрузка (без использования локального диска) в Google Drive, Яндекс Диск (WebDAV), Облако Mail.Ru, Dropbox
  • Полное шифрование по умолчанию, большой выбор алгоритмов и настроек
  • Защищённая паролем база данных
  • Чексуммы и дедупликация
  • Убирает ограничение на размер файла
  • Репликация или разбиение файлов по разным хранилищам
  • Стриминг медиа без ограничений
  • Создаёт превью и извлекает метаданные и текст документов
  • Версионирование файлов и всей структуры директорий
  • Markdown заметки, подсветка кода
  • Быстрое сохранение веб-страниц со встроенными ресурсами
  • Кэширование файлов в памяти
  • Использование в виде локального диска с помощью FUSE (требуется winfsp)
  • Открытый исходный код, почти каждый аспект настраивается через shadowcloud.conf

image

image

Собственно, репозиторий

Для использования необходимо:


  • Сгенерировать ключ шифрования (позже его нужно импортировать на других устройствах)
  • Настроить облачное хранилище
  • Создать регион данных и подключить к нему хранилище (ID региона должны совпадать на всех устройствах)

image

После этого можно переходить в панель с файлами, выбирать регион и загружать документы.

Программа написана на Scala и практически целиком построена на фреймворке Akka (акторы, стримы, http, persistence), фронтенд написан полностью на Scala.js.

Для шифрования используется Bouncy Castle и опционально libsodium (алгоритмы по умолчанию: Blake2b/ChaCha20/ECIES/ECDSA).

Из версии light исключены Apache Tika и JavaCV из-за большого размера, они используются для извлечения метаданных из документов и создания превью для видеозаписей.

© Habrahabr.ru