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

в 15:52, , рубрики: open source, scala, криптография, облако, облачные сервисы, Софт, шифрование

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

Автор: d41d8cd98f

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js