2022-06-07 18:13:55 +08:00
|
|
|
package drivers
|
|
|
|
|
|
|
|
|
|
import (
|
2025-07-01 09:54:50 +08:00
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/115"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/115_open"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/115_share"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/123"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/123_link"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/123_open"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/123_share"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/139"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/189"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/189_tv"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/189pc"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/alias"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/aliyundrive"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/aliyundrive_open"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/aliyundrive_share"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/azure_blob"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/baidu_netdisk"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/baidu_photo"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/chaoxing"
|
2025-09-19 19:27:35 +08:00
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/chunk"
|
2025-07-01 09:54:50 +08:00
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/cloudreve"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/cloudreve_v4"
|
2025-09-11 18:11:32 +08:00
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/cnb_releases"
|
2025-07-01 09:54:50 +08:00
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/crypt"
|
2025-08-23 07:47:02 -07:00
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/degoo"
|
2025-07-01 09:54:50 +08:00
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/doubao"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/doubao_share"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/dropbox"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/febbox"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/ftp"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/github"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/github_releases"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/google_drive"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/google_photo"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/halalcloud"
|
2025-10-14 16:03:42 +08:00
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/halalcloud_open"
|
2025-07-01 09:54:50 +08:00
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/ilanzou"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/ipfs_api"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/kodbox"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/lanzou"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/lenovonas_share"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/local"
|
feat(drivers): add MediaFire driver support (#1322)
* feat(drivers): add MediaFire driver support (#9319)
- Implement complete MediaFire storage driver
- Add authentication via session_token and cookie
- Support all core operations: List, Get, Link, Put, Copy, Move, Remove, Rename, MakeDir
- Include thumbnail generation for media files
- Handle MediaFire's resumable upload API with multi-unit transfers
- Add proper error handling and progress reporting
Co-authored-by: Da3zKi7 <da3zki7@duck.com>
* fix(mediafire): fix code errors in mediafire
* fix(mediafire): fix code errors in mediafire
* fix(drivers): add session renewal cron for MediaFire driver (#9321)
- Implement automatic session token renewal every 6-9 minutes
- Add validation for required SessionToken and Cookie fields in Init
- Handle session expiration by calling renewToken on validation failure
- Prevent storage failures due to MediaFire session timeouts
Fixes session closure issues that occur after server restarts or extended periods.
Co-authored-by: Da3zKi7 <da3zki7@duck.com>
* docs: restore README changes
Signed-off-by: ILoveScratch <ilovescratch@foxmail.com>
* fix
* fix
* fix: add stream upload limit
* fix
* fix: clear action token on drop and refactor header setting
* feat(drivers/mediafire): optimize file caching - support direct stream processing
- Remove forced caching to *os.File type
- Support generic model.File interface for better flexibility
- Improve upload efficiency by avoiding unnecessary file conversions
- Fix return type to use model.Object instead of model.ObjThumb
* feat(drivers/mediafire): improve global rate limiting
- Ensure all API methods properly use context for rate limiting
- Fix context parameter usage in getDirectDownloadLink, getActionToken, getFileByHash
- Maintain consistent rate limiting across all MediaFire API calls
* feat(drivers/mediafire): unify return types - remove unnecessary ObjThumb
- Change MakeDir, Rename, Copy methods to return model.Object instead of model.ObjThumb
- Remove empty Thumbnail fields where not meaningful
- Keep ObjThumb only for fileToObj (List operations) which provides actual thumbnail URLs
- Improve code consistency and reduce unnecessary wrapper objects
* refactor(drivers/mediafire): extract common error handling logic
- Add checkAPIResult helper function to reduce code duplication
- Replace repetitive MediaFire API error checks with centralized function
- Maintain specific error messages for unique cases (token, upload, search)
- Improve code maintainability and consistency
* enhance(drivers/mediafire): improve quick upload implementation
- Add null check for existingFile to prevent potential issues
- Improve error handling in quick upload - continue normal upload if search fails
- Add detailed comments explaining quick upload logic
- Optimize getExistingFileInfo with clearer fallback strategy
- Ensure upload reliability even when file search encounters issues
* refactor(drivers/mediafire): optimize request method reusability
- Extract common HTTP request logic into apiRequest method
- Reduce code duplication between getForm and postForm methods
- Maintain backward compatibility with existing method signatures
- Centralize rate limiting and header management
- Support extensible HTTP method handling
* docs(drivers/mediafire): add comprehensive English comments
- Add function-level comments for all major driver methods
- Document Init, List, Link, MakeDir, Move, Rename, Copy, Remove, Put methods
- Add comments for key utility functions including session token management
- Improve code readability and maintainability for community collaboration
- Follow Go documentation conventions with clear, concise descriptions
* perf(mediafire): optimize memory allocation and type assertion performance
- Pre-allocate slice capacity in getFiles and bitmap conversion to reduce reallocations
- Cache file type check in uploadUnits to avoid repeated type assertions
- Add uploadSingleUnitOptimized for os.File to eliminate redundant type checks
- Optimize string to int conversion with proper error handling
- Improve memory efficiency in file upload operations
* fix(mediafire): upload without cache
* feat(mediafire): add rate limiting to all API methods
- Add WaitLimit(ctx) calls to all driver methods: List, Link, MakeDir, Move, Rename, Copy, Remove, Put
- Ensure consistent rate limiting across all MediaFire API interactions
- Follow project standard pattern used by other drivers
* feat(mediafire): improve error handling consistency
- Add context parameter to all HTTP API functions for proper context propagation
- Update getForm, postForm and apiRequest to accept context parameter
- Fix rate limiting to use caller context instead of background context
- Ensure consistent error handling patterns across all API calls
- Improve cancellation and timeout support
* feat(mediafire): refactor resumableUpload to use io.ReadSeeker and improve upload handling
* fix(mediafire): release section reader
* feat: add disk usage
* feat(drivers/mediafire): support concurrent upload (#1387)
* feat(drivers): add MediaFire driver with concurrent upload support
- Implement complete MediaFire storage driver with session token authentication
- Support all core operations: List, Get, Link, Put, Copy, Move, Remove, Rename, MakeDir
- Include thumbnail generation for media files
- Handle MediaFire's resumable upload with intelligent and multi-unit transfers
- Support concurrent chunk uploads using errgroup.NewOrderedGroupWithContext, using splitted file caching for large files
- Optimize memory usage with adaptive buffer sizing (10MB-100MB (default))
- Include rate limiting and retry logic for API requests
- Add proper error handling and progress reporting
- Handle MediaFire's bitmap-based resumable upload protocol
Closes PR #1322
* feat(stream): add DiscardSection method to StreamSectionReader for skipping data
* feat(mediafire): refactor resumableUpload logic for improved upload handling and error management
* fix(mediafire): stop cron job and clear action token in Drop method
* .
* fix(mediafire): optimize buffer sizing logic in uploadUnits method
* fix(docs): remove duplicate MediaFire
* fix(mediafire): revert 'optimization', large files should not be fully chached.
---------
Signed-off-by: j2rong4cn <36783515+j2rong4cn@users.noreply.github.com>
Co-authored-by: Da3zKi7 <da3zki7@duck.com>
Co-authored-by: D@' 3z K!7 <99719341+Da3zKi7@users.noreply.github.com>
Co-authored-by: j2rong4cn <j2rong@qq.com>
Co-authored-by: j2rong4cn <36783515+j2rong4cn@users.noreply.github.com>
* fix(mediafire): optimize hash calculation in uploadUnits function
* feat(drivers/mediafire): support concurrent upload (#1366)
* feat(drivers): add MediaFire driver with concurrent upload support
- Implement complete MediaFire storage driver with session token authentication
- Support all core operations: List, Get, Link, Put, Copy, Move, Remove, Rename, MakeDir
- Include thumbnail generation for media files
- Handle MediaFire's resumable upload with intelligent and multi-unit transfers
- Support concurrent chunk uploads using errgroup.NewOrderedGroupWithContext, using splitted file caching for large files
- Optimize memory usage with adaptive buffer sizing (10MB-100MB (default))
- Include rate limiting and retry logic for API requests
- Add proper error handling and progress reporting
- Handle MediaFire's bitmap-based resumable upload protocol
Closes PR #1322
* feat(stream): add DiscardSection method to StreamSectionReader for skipping data
* feat(mediafire): refactor resumableUpload logic for improved upload handling and error management
* fix(mediafire): stop cron job and clear action token in Drop method
* .
* fix(mediafire): optimize buffer sizing logic in uploadUnits method
* fix(docs): remove duplicate MediaFire
* fix(mediafire): revert 'optimization', large files should not be fully chached.
---------
Signed-off-by: j2rong4cn <36783515+j2rong4cn@users.noreply.github.com>
Signed-off-by: D@' 3z K!7 <99719341+Da3zKi7@users.noreply.github.com>
Co-authored-by: j2rong4cn <j2rong@qq.com>
Co-authored-by: j2rong4cn <36783515+j2rong4cn@users.noreply.github.com>
---------
Signed-off-by: ILoveScratch <ilovescratch@foxmail.com>
Signed-off-by: j2rong4cn <36783515+j2rong4cn@users.noreply.github.com>
Signed-off-by: D@' 3z K!7 <99719341+Da3zKi7@users.noreply.github.com>
Co-authored-by: D@' 3z K!7 <99719341+Da3zKi7@users.noreply.github.com>
Co-authored-by: Da3zKi7 <da3zki7@duck.com>
Co-authored-by: KirCute <951206789@qq.com>
Co-authored-by: Suyunmeng <Susus0175@proton.me>
Co-authored-by: j2rong4cn <j2rong@qq.com>
Co-authored-by: j2rong4cn <36783515+j2rong4cn@users.noreply.github.com>
2025-09-30 21:55:41 +08:00
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/mediafire"
|
2025-07-01 09:54:50 +08:00
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/mediatrack"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/mega"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/misskey"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/mopan"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/netease_music"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/onedrive"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/onedrive_app"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/onedrive_sharelink"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/openlist"
|
2025-08-19 15:10:02 +08:00
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/openlist_share"
|
2025-07-01 09:54:50 +08:00
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/pikpak"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/pikpak_share"
|
feat(drivers): add ProtonDrive driver (#1368)
* 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>
2025-10-18 22:07:11 -06:00
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/proton_drive"
|
2025-07-01 09:54:50 +08:00
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/quark_open"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/quark_uc"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/quark_uc_tv"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/s3"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/seafile"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/sftp"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/smb"
|
2025-07-01 14:29:28 +08:00
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/strm"
|
2025-07-01 09:54:50 +08:00
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/teambition"
|
2025-08-25 01:34:08 +08:00
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/teldrive"
|
2025-07-01 09:54:50 +08:00
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/terabox"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/thunder"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/thunder_browser"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/thunderx"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/url_tree"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/uss"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/virtual"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/webdav"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/weiyun"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/wopan"
|
|
|
|
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/yandex_disk"
|
2022-06-07 18:13:55 +08:00
|
|
|
)
|
2022-08-26 15:08:31 +08:00
|
|
|
|
|
|
|
|
// All do nothing,just for import
|
|
|
|
|
// same as _ import
|
|
|
|
|
func All() {
|
|
|
|
|
|
|
|
|
|
}
|