mirror of
https://github.com/OpenListTeam/OpenList.git
synced 2025-11-25 03:15:19 +08:00
* feat(drivers): add ProtonDrive driver - Implement complete ProtonDrive storage driver with end-to-end encryption support - Add authentication via username/password with credential caching and reusable login - Support all core operations: List, Link, Put, Copy, Move, Remove, Rename, MakeDir - Include encrypted file operations with PGP key management and node passphrase handling - Add temporary HTTP server for secure file downloads with range request support - Support media streaming using temp server range requests - Implement progress tracking for uploads and downloads - Support directory operations with circular move detection - Add proper error handling and panic recovery for external library integration - Support buffered upload for specific sequential and encrypted, but optimized transmission. * Update drivers/proton_drive/util.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: D@' 3z K!7 <99719341+Da3zKi7@users.noreply.github.com> * chore * feat(drivers): enhance ProtonDrive temp server - Implement separate listen and public port configuration for complex network deployments - Add intelligent port detection with 8080 as preferred default, fallback to auto-assignment - Support Container/NAT/VM environments through configurable external host and port mapping - Add port availability validation with graceful fallback to listen port - Enable users to specify external domain/IP for client connections (e.g., 192.168.1.5) - Follow FTP server configuration patterns for network flexibility - Maintain localhost development simplicity while supporting production deployments * feat(proton_drive): refactor directory handling and improve link retrieval * fix(proton_drive): add NoLinkURL configuration option * fix(proton_drive): update file size retrieval and enforce TwoFACode requirement * feat(proton_drive): add expiration to link response * fix(proton_drive): handle empty RootFolderID in Init method * fix(proton_drive): update credential handling to use email and reusable login * fix(proton_drive): update credential handling to use reusableCredential variable * fix(proton_drive): update DirectRename to use GetLink for source object retrieval * fix(proton_drive): refactor uploadFile to return model.Obj and handle errors correctly * fix(proton_drive): refactor DirectMove to use getLink for source retrieval and simplify destination handling * fix(proton_drive): simplify Copy method by removing temporary file creation and directly using FileStream * refactor(proton_drive): remove unused temporary server and related code * chore * fix(proton_drive): fix driver - Handle fresh login if ProtonDrive rejects AccessToken or RefreshToken - Update stored credentials * fix(proton_drive): simplify reusable login handling in Init method * fix(proton_drive): fix driver - Update stored credentials, now is failing * feat(proton_drive): improve authentication handling and remove unused variables * fix(proton_drive): fix driver - Update stored credentials, now is failing * fix(proton_drive): improve authentication handling * refactor(proton_drive): move client initialization to initClient method * feat(proton_drive): move addrs and addrKRs * feat(proton_drive): optimize upload threads - Change ConcurrentBlockUploadCount to user configured upload threads number - Comment ConcurrentFileCryptoCount, default is runtime.GOMAXPROCS(0) --------- Signed-off-by: D@' 3z K!7 <99719341+Da3zKi7@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: KirCute <951206789@qq.com> Co-authored-by: j2rong4cn <j2rong@qq.com> Co-authored-by: KirCute <kircute@foxmail.com>
57 lines
1.6 KiB
Go
57 lines
1.6 KiB
Go
package protondrive
|
|
|
|
/*
|
|
Package protondrive
|
|
Author: Da3zKi7<da3zki7@duck.com>
|
|
Date: 2025-09-18
|
|
|
|
Thanks to @henrybear327 for modded go-proton-api & Proton-API-Bridge
|
|
|
|
The power of open-source, the force of teamwork and the magic of reverse engineering!
|
|
|
|
|
|
D@' 3z K!7 - The King Of Cracking
|
|
|
|
Да здравствует Родина))
|
|
*/
|
|
|
|
import (
|
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
|
"github.com/henrybear327/Proton-API-Bridge/common"
|
|
)
|
|
|
|
type Addition struct {
|
|
driver.RootID
|
|
Email string `json:"email" required:"true" type:"string"`
|
|
Password string `json:"password" required:"true" type:"string"`
|
|
TwoFACode string `json:"two_fa_code" type:"string"`
|
|
ChunkSize int64 `json:"chunk_size" type:"number" default:"100"`
|
|
UseReusableLogin bool `json:"use_reusable_login" type:"bool" default:"true" help:"Use reusable login credentials instead of username/password"`
|
|
ReusableCredential common.ReusableCredentialData
|
|
}
|
|
|
|
var config = driver.Config{
|
|
Name: "ProtonDrive",
|
|
LocalSort: true,
|
|
OnlyProxy: true,
|
|
DefaultRoot: "root",
|
|
NoLinkURL: true,
|
|
}
|
|
|
|
func init() {
|
|
op.RegisterDriver(func() driver.Driver {
|
|
return &ProtonDrive{
|
|
Addition: Addition{
|
|
UseReusableLogin: true,
|
|
},
|
|
apiBase: "https://drive.proton.me/api",
|
|
appVersion: "windows-drive@1.11.3+rclone+proton",
|
|
protonJson: "application/vnd.protonmail.v1+json",
|
|
sdkVersion: "js@0.3.0",
|
|
userAgent: "ProtonDrive/v1.70.0 (Windows NT 10.0.22000; Win64; x64)",
|
|
webDriveAV: "web-drive@5.2.0+0f69f7a8",
|
|
}
|
|
})
|
|
}
|