当前,许多公司提供云存储服务,但是每个公司都有其自己的专有客户端,并且其功能通常还有很多不足之处。
由于多种原因,现有的替代方案不适合我,因此我决定创建自己的通用客户端-shadowcloud
像这样:

有什么可以
- 直接下载(不使用本地磁盘)到Google云端硬盘,Yandex磁盘(WebDAV),Mail.Ru云,Dropbox
- 默认情况下完全加密,有多种算法和设置可供选择
- 受密码保护的数据库
- 校验和和重复数据删除
- 删除文件大小限制
- 将文件复制或拆分到不同的存储库
- 无限媒体流
- 创建预览并提取元数据和文档文本
- 版本控制文件和整个目录结构
- 降价说明,代码突出显示
- 使用嵌入式资源快速保存网页
- 内存中文件缓存
- 使用FUSE用作本地磁盘(需要winfsp)
- 开源,几乎每个方面都可以通过shadowcloud.conf进行配置


使用方法
实际上,存储库
要使用它,必须:
- 生成加密密钥(以后需要将其导入其他设备上)
- 设置云存储
- 创建数据区域并将存储连接到该区域(所有设备上的区域ID必须匹配)

之后,您可以转到包含文件的面板,选择一个区域并上传文档。
关于实施的一点
该程序用Scala编写,几乎完全建立在Akka框架(演员,流,http,持久性)上,前端完全用Scala.js编写。
Bouncy Castle和可选的libsodium用于加密(默认算法:Blake2b / ChaCha20 / ECIES / ECDSA)。
轻量级版本将Apache Tika和JavaCV排除在外,因为它们的尺寸较大;它们用于从文档中提取元数据并创建视频预览。