1 November 2018

ShadowCloud — универсальный облачный клиент

CryptographyOpen sourceScalaCloud servicesSoftware
Sandbox

В настоящее время многие компании предоставляют сервис облачного хранилища, но каждая имеет свой проприетарный клиент и их функционал, как правило, оставляет желать лучшего.
Существующие альтернативы мне не подошли в силу многих причин, поэтому я решил сделать собственный универсальный клиент — 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 из-за большого размера, они используются для извлечения метаданных из документов и создания превью для видеозаписей.

Tags:scalaopen sourceоблакошифрование
Hubs: Cryptography Open source Scala Cloud services Software
+32
14.6k 108
Comments 27