Merge/openlist 4.2.5 - #31
Merged
Merged
Conversation
chore(strm): empty folders are not generated locally
* fix(quark): refactor upPart to use http.NewRequest * fix(quark): improved upload handling * fix(quark_open): improved upload handling * fix: add retry context to multiple upload functions * fix: optimize hash calculation in multipart upload to avoid blocking * fix: update error handling in lifecycle functions for better clarity * fix: update upload progress calculation to improve accuracy * fix: simplify error handling in lifecycle functions for improved readability * fix: remove unnecessary mutex for part uploads to simplify code * fix(stream): simplify file handling in NewStreamSectionReader and improve error messages * fix(terabox): optimize chunk count calculation in Put method * perf(chaoxing): 表单上传文件0拷贝 * fix(cnb_releases): improve file upload progress tracking * fix(baidu_netdisk): improve upload handling * fix(upload): optimize buffer initialization for file uploads * fix(baidu_netdisk): add retry condition to skip ErrUploadIDExpired in upload loop
…ip parsing (#1661) * fix(mediafire): enable automatic session token acquisition and fix gzip parsing - Fix Init() method to allow automatic session token retrieval from cookie - Change SessionToken from required to optional in configuration - Add proper gzip decompression support for API responses - Improve error handling for session token acquisition failures - Update help text to clarify authentication requirements Resolves initialization failure and JSON parsing errors when session token can be automatically obtained from browser cookie. * fix(mediafire): ensure driver files end with newline * chore: gofmt drivers/mediafire/*.go
* refactor: 移除 ObjResp 中的 Id 和 Path 字段 * 移除op.List的自动设置Path Path和Id只在驱动内使用,不应由op.List设置Path * cnb_releases:将 Addition 结构体中的 RootPath 字段为 RootID 当List方法加载二级目录时,若使用的是Id,应对使用driver.RootID * doubao_share: 添加潜在bug注释 * 添加 GetRootPath 方法到多个驱动
refactor!(userAgent): merge all userAgent into base 1. change var to const 2. remove duplicated ua definetion after original Resty R 3. upgrade Chrome and OS versions
* feat(fs): Support customizing the cache time for a specific path * feat(fs): Get the cache rule for driver information. * feat(fs): Support globbing. * feat(fs): Add log. --------- Signed-off-by: ShenLin <773933146@qq.com> Co-authored-by: ShenLin <773933146@qq.com>
* feat(driver/openlist): compatible with AList v3 * Revert "feat(driver/openlist): compatible with AList v3" This reverts commit 90f3f80186af485aeb7251c3dfdc8b8fc98c870d. * feat(driver): add AList v3 * Revert "feat(patch): add migration from Alist V3 driver to OpenList (#919)" Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> --------- Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> Co-authored-by: MadDogOwner <xiaoran@xrgzs.top>
* fix_cancel * update(go.mod): update tache version * tache v0.2.2 --------- Co-authored-by: j2rong4cn <j2rong@qq.com>
fix halal-cloud upload issues
* refactor(bootstrap): move booting to bootstrap package * chore(log): reduce level of some callings of `utils.Log.Fatal` * fix(s3): no shutdown after SIGTERM received * fix: add handle hook
* fix(openlist): disable status check to avoid network stability issues * fix(alist_v3): disable status check to avoid network stability issues Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> --------- Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>
* feat(ldap): support webdav, ftp and sftp login * fix: apply suggestions of Copilot * feat(ldap) support ftp, sftp and webdav auto-register
* feat(139): Enhance 139 driver with password login and root path handling - Added support for password-based login in the 139 driver. - Introduced RootPath field to store the root directory path. - Updated Init method to handle family and group types more effectively. - Implemented new methods for handling file operations in family and group contexts. - Enhanced error handling and logging for better debugging. - Added new request and response structures for batch operations and document modifications. - Improved encryption and decryption methods for secure communication. * Update drivers/139/util.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com> * Update drivers/139/util.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com> * Update drivers/139/util.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com> * Update drivers/139/util.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com> * Update drivers/139/util.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com> --------- Signed-off-by: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…718) Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com>
* feat(driver): add wps drive support * feat(driver): add wps drive support * fix(wps): update personal mode string to English Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> * fix(wps): remove trailing slash from drive origin URL Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> * fix(wps): correct order of options in mode selection Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> * fix(wps): enable local sort and upload overwrite Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> * fix(wps): resolve put bugs, fix file op problems and optimize list logic - Fix uploading bugs. Support all uploading methods based on 8825.85d3c864.js - Fix issues in delete/copy/move while opearting big folders. - Use cache to optimize performance of list, especially in a deep path. --------- Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> Co-authored-by: MadDogOwner <xiaoran@xrgzs.top>
Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>
Co-authored-by: XZB-1248 <i@1248.ink>
* feat(strm): add KeepSameNameOnly logic * chore(strm): skip update strm file when keepLocalDownloadFile * feat(strm): add save local mode
Last Sync: 2025-12-22 12:39
* feat(alias): support load balance * feat(alias): support storage match for load balance * feat(patch): add alias addition upgrade patch * fix bugs * fix(op/balance): optimize compatibility * chore: change default read conflict policy * feat(alias): refactor Alias initialization and enhance path handling * feat(alias): enhance object masking and add support for operation restrictions * feat(alias): enhance object masking * feat(fs): add permission checks * improve parsing * update object masks * feat(fs): enhance virtual file handling * feat(storage): enhance virtual file retrieval and path handling * refactor(alias): rename path handling functions for clarity and consistency * fix(alias): update path handling in Other method to use balanced path * fix bug * feat(alias): add file size validation * feat(alias): add hash consistency check * 移除哈希合并, * fix(alias): wrong behavior for all_strict/deterministic_or_all * Revert "fix(alias): wrong behavior for all_strict/deterministic_or_all" This reverts commit f001f2dcd76d5711d2b1f44d04edf646f32c75a7. * fix(alias): wrong behavior for all_strict/deterministic_or_all * feat(alias): support part-based read load balance * fix(alias): list panic when leak conflict path * fix(alias): remove Other load balance * fix(alias): 修复 Link 方法中 resultLink 的返回类型和内容复制问题 * fix(alias): 更好的下载并发? * chore(alias): all tips * fix(alias): moving paths mismatch --------- Co-authored-by: j2rong4cn <j2rong@qq.com> Co-authored-by: ShenLin <773933146@qq.com>
- Prevent concurrent updates from inserting duplicate index entries - Preserve parallel indexing across different parent paths - Add serialization, concurrency, and lock cleanup tests Signed-off-by: jyxjjj <16695261+jyxjjj@users.noreply.github.com> Co-authored-by: Codex <267193182+codex@users.noreply.github.com> Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* fix: replace strings.HasPrefix with utils.IsSubPath for path validation Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> * fix: re-validate shared paths to ensure they remain within the creator's base path Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> --------- Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> Co-authored-by: MadDogOwner <xiaoran@xrgzs.top> * fix(search): apply access filtering before paginating results Co-authored-by: Codex <267193182+codex@users.noreply.github.com> Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> --------- Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> Signed-off-by: jyxjjj <16695261+jyxjjj@users.noreply.github.com> Co-authored-by: MadDogOwner <xiaoran@xrgzs.top> Co-authored-by: Codex <267193182+codex@users.noreply.github.com>
…encies (#2854) FUSE was introduced years ago but never implemented, let's remove it to reduce dependencies. Signed-off-by: Liangbin Lian <jjm2473@gmail.com>
…2876) The Login endpoint may return an acw_sc__v2 validation page when accessed, which previously caused login failures. This change adds the same retry logic and cookie handling already used in request() to automatically solve the challenge, ensuring login success even when the anti-bot mechanism is triggered.
…2882) * feat(drivers): add GuangYaPan driver with offline download support * fix(drivers): GuangYaPan driver multipartUploadToOSS
* fix(drivers/guangyapan): remove default value for ClientID Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> * fix(drivers/guangyapan): remove unused configuration options from driver settings Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> --------- Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>
…2895) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* feat(multipart): add chunk reassembly window - Reassemble concurrently uploaded chunks into a sequential stream through a ring file, bounding disk usage to slots*chunkSize per session - Park writers up to a deadline when their slot is busy instead of rejecting instantly, so flow control does not surface as connection errors in browsers - Record a per-chunk CRC32 table for re-fill verification and keep it readable after close - Propagate cancellation to blocked readers via CloseWithError so drivers treat aborts like canceled requests - Cover ordering, backpressure, idempotent resends and close/abort wake-ups with race-enabled tests * feat(multipart): add pipelined upload session manager - Start the driver upload at session init over a sequential stream backed by the window, so client-to-server and server-to-storage transfers run concurrently - Attach client-provided hashes to the stream so drivers can attempt rapid upload before any chunk arrives, and absorb chunks racing pipeline completion idempotently - Keep only metadata and chunk CRCs after a failed attempt: re-sending chunk 0 re-fills a fresh window, and content changes between attempts are rejected - Resume receiving sessions only when client hashes prove the same file; failed_retriable sessions resume unconditionally - Reclaim sessions with a sliding-TTL GC and sweep orphaned ring files at startup - Cover the state machine with race-enabled tests over a stubbed storage layer * feat(setting): add multipart upload settings - Add multipart_enabled and multipart_chunk_size (MB) as public traffic settings - Validate the chunk size on save (integer within 1-90) via the setting item hook * feat(server): add multipart upload API - Add /api/fs/multipart init/chunk/complete/status/abort endpoints with headers aligned with /fs/put - Gate init behind the FsUp permission checks and reuse the client upload rate limiter for chunk uploads - Drain the request body before answering chunk requests on every path, so browsers do not see early responses as network errors - Start the multipart session GC when the router is initialized to reclaim ring files orphaned by a previous run * refactor(multipart): remove unused overwrite session field - The overwrite flag was stored on the session but never read: the handler performs the pre-check and op.Put owns the overwrite semantics * feat(setting): allow any positive multipart chunk size - Validate the setting as a positive integer only; self-hosted admins decide the ceiling themselves instead of an arbitrary 90MB cap - Keep clamping the client-suggested X-Chunk-Size to the admin value: the server buffers a window of 8 chunks per session, so an unbounded client suggestion would translate directly into server-side disk usage * refactor(server): simplify multipart chunk size clamp - Fold the two-step clamp into one branch: the ceiling is already floored, so a client suggestion just lowers the size with a 1MB floor
…2898) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com>
…896) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com>
Remove `offset > size` guard from RangeReadReadAtSeeker.Seek and DynamicReadAtSeeker.Seek. Go's io.Seeker convention allows seeking past EOF. Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com>
Resolve 98 conflicts conservatively to preserve PowerList customizations (share-direct, multi-account, index115, rapid-transfer, cas, media duration). Key decisions: - Keep PowerList power721/115driver fork + bleve v2.6.0 (index115 coupling). - Keep PowerList guangyapan driver (richer, rapid-transfer); drop upstream's util.go/offline.go that duplicated driver.go methods. - Take ours for heavily-customized drivers (115/123/189pc/139/quark_uc/ baidu/aliyun/strm) and core stream/op/bootstrap that hold PowerList features. - Bring in new upstream: bunny_storage driver, multipart upload settings, v4_1_9 ResetSkipTlsVerify patch (added conf.ConfigPath var). - Buffer cluster: keep PowerList pkg/buffer + hybrid_cache usage as-is. - build.sh: keep PowerList arch trim (amd64/arm64 only); bump webVersion 4.2.3 -> 4.2.5. - go mod tidy applied; build + vet + targeted tests pass. Deferred (cherry-pickable): 139 refactor/share-roots, github_releases refactor, s3 multipart-copy, wps pagination, lanzou acw_sc__v2, stream seek-beyond-size. Co-Authored-By: Claude <noreply@anthropic.com>
|
如果跨多个组件,请使用主要组件作为前缀,并在标题中枚举、描述中说明。 |
Cherry-pick from openlist 7e9082f. RangeReadReadAtSeeker.Seek: drop the offset > size guard so seeking past EOF is allowed per io.Seeker convention. (pkg/buffer DynamicReadAtSeeker.Seek already only guards offset < 0.) Co-Authored-By: Claude <noreply@anthropic.com>
…s/lanzou) PowerList did not customize these, so take openlist/main versions and re-add the GetDuration() stub required by PowerList's model.Obj interface: - github_releases: cache-removal refactor + pagination (#2775) - s3: multipart object copy (#2826) [util.go already switched during merge] - wps: paginate group file listing - lanzou: IsFloder -> IsFolder field rename (#2876 acw_sc__v2 already present); util.go (PowerList acw_sc__v2 handling) kept unchanged Co-Authored-By: Claude <noreply@anthropic.com>
Replace non-constant first args with explicit "%s" format to satisfy go vet and avoid format-string injection from server-controlled messages: - fmt.Errorf in google_drive, google_photo, lanzou, 115, 115_open, pikpak - logrus.Debugf in 189, appengine log.Errorf in chaoxing Co-Authored-By: Claude <noreply@anthropic.com>
share.visible=0 (bulk imports) is excluded from homepage loose shares and group member listings; search hits, link resolution, and direct share browsing keep working. Old indexes without the column default every share to browsable. Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.