AsterDrive v0.3.0-beta.1
Pre-releaseRelease Highlights
AsterDrive 0.3.0-beta.1 是 0.3.0 系列的第一个 beta 版本,主线是存储后端扩展与连接器抽象统一。 本版本新增 Azure Blob Storage 与 OneDrive(含 SharePoint site / Group drive)两类云盘驱动,引入统一的 StorageConnector 抽象让六个驱动以一致的 descriptor 暴露能力与表单字段;OneDrive 凭据走 Microsoft Graph OAuth + PKCE,token 用 HKDF 派生密钥 + AES-256-GCM 加密落库。缓存后端精简为 memory / Redis 两种并移除已失效的 cache.enabled 开关,Redis 引入本地 memory 二级回退;存储策略连接探测改为结构化诊断端点,失败返回 200 + 脱敏原因。同时补全审计日志结构化详情、Tencent COS CORS 一键配置、PWA precache 重构与 toast 视觉重做。
- Azure Blob Storage 驱动 — Block Blob CRUD、SAS URL 预签名上传/下载、分块上传
- OneDrive 驱动 + OAuth 凭据管理 — personal / work_or_school / SharePoint site / group drive,PKCE 流程,>250MiB 分块续传
- StorageConnector 统一抽象 — 六驱动统一 descriptor、字段与上传工作流,新增
/admin/policies/storage-drivers - 缓存后端精简与 Redis 二级回退(Breaking) — 移除
cache.enabled,Redis 故障时回落 memory - 存储策略诊断端点 — 结构化
StoragePolicyDiagnostic,SAS / account key 脱敏 - 审计日志结构化 — 文件 / 用户 / 策略 / 会话操作补全上下文
- Tencent COS CORS 自动配置 — 从
public_site_url派生多 origin,一键应用 - PWA precache 与 toast 重做 — glob 化预缓存清单 + 预算告警,toast 主题化
Added
-
Azure Blob Storage 驱动
- 新增
azure_blobdriver type,完整 CRUD、SAS URL 预签名上传 / 下载、Block Blob 分块上传 InitUploadResponse新增presigned_require_etag字段;presigned_put_requires_etagtrait 方法区分驱动(Azure Blob = false,S3 / remote = true)AzureBlobConfigError:生产环境 SASspr协议限 https,loopback / Azurite 放行 https + http- 前端表单字段改为 Storage Account Name / Key,预签名请求附带
x-ms-blob-type: BlockBlob头
- 新增
-
OneDrive 驱动与 OAuth 凭据管理
- 新增
onedrivedriver type +OneDriveAccountMode(personal / work_or_school / sharepoint_site / group_drive) - 7 个
onedrive_*策略字段;Microsoft Graph OAuth + PKCE 授权流程 - token 与 client secret 用
auth.storage_credential_secret_key经 HKDF 派生 + AES-256-GCM 加密落库 -
250MiB 走 Graph 原生分块上传 session
- 驱动根动态解析(personal / work / site / group)
- 前端凭据面板含授权状态徽章、授权 / 回调入口
- 新增
-
StorageConnector 统一抽象与驱动 descriptor
- 引入
StorageConnectortrait +StorageConnectorDescriptor,六驱动统一暴露 capabilities / fields / upload workflows / actions - 新增
GET /admin/policies/storage-drivers端点;前端用 TTL 缓存的 descriptor 取代 driver-type 字符串判断 - 新增
ProviderResumableUploadDrivertrait(OneDrive / Graph 原生断点续传) - 新增 DB 表
storage_connector_application_configs,Microsoft Graph app 配置从 policy key 字段迁移到 connector application config
- 引入
-
存储策略诊断端点
- 连接探测返回结构化
StoragePolicyDiagnostic(api_code / kind / message / retryable) - 探测失败改为 200 +
ok:false而非 4xx - SAS token、account key 在响应中脱敏
- 连接探测返回结构化
-
Tencent COS CORS 自动配置
- 新增
POST /admin/policies/action与POST /admin/policies/{id}/action,StoragePolicyActionType可扩展动作枚举 configure_tencent_cos_cors从public_site_url派生多 origin,仅替换 ID 为asterdrive-presigned-access的规则- 草稿动作支持复用已保存 policy 凭据
- 触发审计日志
- 新增
-
审计日志结构化详情
- 用户管理、存储策略、团队、会话撤销等操作补全审计快照与展示文案
- 文件 / 文件夹操作补全 location 与 transfer 路径细节
- 标签批量操作、MFA 挑战、passkey 登录、WebDAV、WOPI 改为结构化详情
- 新增
ShareDeleteAuditDetails、UserMfaManageAuditDetails、ExternalAuthUnlinkAuditDetails等 struct
Changed
-
缓存后端精简(Breaking)
- 移除
cache.enabled配置项与 noop cache backend,仅保留 memory / Redis - CacheBackend trait 新增
take_bytes/delete_many - Redis 引入二级回退:Redis 失败或熔断时落本地 MemoryCache,恢复后清理影子条目
- 抽出
RedisClienttrait +FakeRedisClient测试替身
- 移除
-
存储策略前端判断重构
- 移除
isS3CompatibleDriver/isOneDriveDriver/isObjectStorageDriver,改 field-presence 检测 POLICY_OPTION_SERIALIZERS替换为buildPolicyOptionsFallback,仅写非默认值
- 移除
-
上传会话字段统一(DB 迁移自动处理)
- 重命名
s3_temp_key→object_temp_key、s3_multipart_id→object_multipart_id S3_MULTIPART_MIN_PART_SIZE→OBJECT_MULTIPART_MIN_PART_SIZE- OneDrive 凭据存储从
storage_policies.access_key/secret_key迁移到storage_connector_application_configs,旧字段自动清空(代码兼容旧字段回退读取)
- 重命名
-
PWA precache 与 toast 重做
- vite-plugin-pwa 改用 glob 通配 + 关键资源校验,移除手动 precache 清单与 forbidden 列表
- 预缓存预算软告警:entries ≤450、raw size ≤5MB;排除 admin / file browser / music player / PDF / office 等大模块
pwaWarmup区分 user / admin 路由独立追踪- Toaster 主题化(oklch、backdrop-blur、4.2s 时长、i18n.dir 方向)
-
审计日志穷举化
detail_message通配分支改为穷举 match,防止新增 action 被静默遗漏mfa_factor_repo::list_for_user泛化为ConnectionTrait,支持事务内调用
-
依赖升级
- Rust:sea-orm 2.0.0-rc.41、aws-sdk-s3 1.137、h2 0.4.15
- 前端:@base-ui/react 1.6、axios 1.18、react-router-dom 7.18、tailwindcss 4.3.1、biome 2.5、@types/node 26、@typescript/native-preview 7.0.0-dev.20260620.1
Fixed
- PWA precache 大小写敏感漏排除
- 大小写敏感文件系统漏排除补全:新增
assets/**/*admin*、assets/**/*musicPlayer*小写 / camelCase 变体
- 大小写敏感文件系统漏排除补全:新增
Security
- OneDrive OAuth token 与 Client Secret 用 HKDF 派生密钥 + AES-256-GCM 加密落库,API 与审计只暴露
client_secret_configured布尔状态 - 存储策略连接诊断在响应中脱敏 SAS token 与 account key
- OneDrive 创建 / 更新策略时清空 legacy
storage_policies.access_key/secret_key字段,避免明文 secret 长期驻留
Database Migrations
- 新增
m20260612_000001:storage_policy_credential、storage_policy_authorization_flow表(OneDrive OAuth token 加密存储) - 新增
m20260620_000001:3 个 JSON 列 backfill{}并强制 NOT NULL(跨 MySQL / SQLite / PostgreSQL)
Configuration Changes
- 移除
cache.enabled(Breaking) — 缓存开关已失效,仅保留 memory / Redis 两种 backend;已有配置中的cache.enabled字段不再生效 - 新增
auth.storage_credential_secret_key— OneDrive / 后续 OAuth 驱动的凭据加密主密钥(缺失时启动自动生成) - 新增 OneDrive 策略字段:
onedrive_account_mode、onedrive_tenant、onedrive_site_id、onedrive_drive_id、onedrive_group_id、onedrive_scopes等
Statistics
- 316 files changed, 36108 insertions(+), 3381 deletions(-)
- 9 commits
Download
| Platform | Architecture | Archive |
|---|---|---|
| Linux | x86_64 | aster_drive_v0.3.0-beta.1_linux_x86_64.tar.gz |
| Linux | x86 | aster_drive_v0.3.0-beta.1_linux_i686.tar.gz |
| Linux | ARM64 | aster_drive_v0.3.0-beta.1_linux_aarch64.tar.gz |
| Linux | ARMv7 | aster_drive_v0.3.0-beta.1_linux_armv7.tar.gz |
| Windows | x86_64 | aster_drive_v0.3.0-beta.1_windows_x86_64.exe.zip |
| Windows | x86 | aster_drive_v0.3.0-beta.1_windows_i686.exe.zip |
| Windows | ARM64 | aster_drive_v0.3.0-beta.1_windows_arm64.zip |
| macOS | x86_64 | aster_drive_v0.3.0-beta.1_macos_x86_64.tar.gz |
| macOS | ARM64 | aster_drive_v0.3.0-beta.1_macos_aarch64.tar.gz |
Extract with tar -xzf (Linux/macOS) or unzip (Windows).
Checksums: checksums.txt
Verify signatures
All release archives are signed with Sigstore cosign. To verify:
# Download checksums + signature + certificate
wget https://github.com/AsterCommunity/AsterDrive/releases/download/v0.3.0-beta.1/{checksums.txt,checksums.txt.sig,checksums.txt.pem}
# Verify signature
cosign verify-blob checksums.txt \
--signature checksums.txt.sig \
--certificate checksums.txt.pem \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
--certificate-identity-regexp 'github.com/AptS-1547/AsterDrive'
# Verify archive integrity
sha256sum -c checksums.txt