Skip to content

Sync/upstream merge - #2

Merged
zymooll merged 43 commits into
mainfrom
sync/upstream-merge
Sep 3, 2026
Merged

Sync/upstream merge#2
zymooll merged 43 commits into
mainfrom
sync/upstream-merge

Conversation

@zymooll

@zymooll zymooll commented Sep 3, 2026

Copy link
Copy Markdown
Owner

No description provided.

shelken and others added 30 commits August 14, 2026 11:49
fix(drivers/189): support updated 189 time format with comma, timezone and unicode spaces

189 API 变更了时间返回格式,现有 Time.Unmarshal 无法解析,导致 189pc/189_tv
驱动所有写操作失败(Put → 500)。

新格式有三种形态,现有两个模板均无法覆盖:
1. "Aug 11, 2026, 10:37:18 PM +08" — 年份后多逗号,且自带时区
2. "Aug 12, 2026, 12:35:41\u202fAM +08" — AM/PM 前为 U+202F 窄不换行空格
3. "Aug 12, 2026, 12:35:41\u00a0AM +08" — AM/PM 前为 U+00A0 不换行空格

修复(189pc/help.go、189_tv/help.go 的 Time.Unmarshal):
- 解析前将 U+202F 和 U+00A0 统一替换为普通空格
- 新增模板 "Jan 2, 2006, 3:04:05 PM -07"(带逗号,3 为 12 小时制配 PM)
- 对可能不带时区的串,先试原串再试追加 " +08"(向后兼容)

新增 help_test.go 覆盖:数字日期、旧月份格式、新格式带/不带时区、
U+202F/U+00A0 空格、非法输入。

Fixes OpenListTeam#2917



Generated-By: pi 0.84.1

Co-authored-by: Advanced <noreply@pi.dev>
…#2911)

* feat(strm): add file size filtering for STRM generation

- add ParseSize helper function in pkg/utils to parse human-readable byte sizes
- add minFileSize setting field to STRM driver Addition struct
- filter out files below minFileSize threshold during STRM generation

* refactor(strm): use MB as default unit for minFileSize instead of ParseSize

Replace string-based ParseSize auto-conversion with a simple int64 number
field defaulting to MB, consistent with other drivers (Google Drive,
Teldrive). Remove the now-unused ParseSize function and its tests.
fix(drivers/emby): Emby允许仅用户名登录

Signed-off-by: quan-ge <quan13177379368@qq.com>
…penListTeam#2704)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…llback (OpenListTeam#2067)

* fix(drivers/139): optimize login flow with robust tests

* fix(drivers/139): preserve configured HTTP client settings
…penListTeam#2973)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…istTeam#2899)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…penListTeam#2978)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…eam#2981)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…istTeam#2982)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…tTeam#2900)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…m#2980)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…am#2974)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…nListTeam#2975)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…eam#2979)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…Team#2977)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…eam#2961)

fix(onedrive_sharelink): reuse shared HTTP clients

- Reuse shared client settings for redirect and GraphQL requests
- Propagate request contexts through password and pagination requests
- Close OneDrive response bodies that were missing cleanup
- Add tests for shared client settings and redirect handling

Signed-off-by: jyxjjj <16695261+jyxjjj@users.noreply.github.com>
Co-authored-by: Codex <267193182+codex@users.noreply.github.com>
)

* feat(ilanzou): modernize console API session and copy

Use an isolated cookie-backed API session and preserve raw appToken syntax required by current iLanzou endpoints.

Resolve CDN download responses more robustly, align upload metadata with the console protocol, and delegate copies to OpenList background tasks instead of blocking requests.

* fix(ilanzou): escape appToken query values

Escape opaque appToken values while preserving the literal colon required by iLanzou endpoints. Ignore CDN HEAD response lengths unless the response status is successful.

* fix(ilanzou): address driver review feedback

Use the ilanzou package name consistently, document upload result polling, and bound CDN size probes. Keep the appToken and CDN challenge handling covered by focused tests and comments.

* fix(ilanzou): use context timeout for HEAD probe
fix(s3): paginate recursive object listings

- stop recursive traversal after filling the requested S3 page
- preserve lexicographic marker ordering and request cancellation
- cover bounded traversal, continuation, prefixes, and cache safety

Co-authored-by: nostalume <nostalucent@gmail.com>
Co-authored-by: Codex <267193182+codex@users.noreply.github.com>
…enListTeam#2931)

* feat(strm): add local save permission mode

- add private and shared permission modes for local STRM files
- repair shared-mode directory and file permissions during generation
- add permission handling tests

Co-authored-by: Codex <267193182+codex@users.noreply.github.com>

* fix(strm): respect deployment umask for local directories

- remove application-level permission modes and chmod operations
- create local STRM directories with umask-controlled permissions
- preserve existing permissions and test the behavior

Co-authored-by: Codex <267193182+codex@users.noreply.github.com>

---------

Co-authored-by: Codex <267193182+codex@users.noreply.github.com>
…m#2920)

* fix(offline): allow ED2K downloads through 115 tools

- Treat 115 Cloud and 115 Open as ED2K-capable tools.
- Keep automatic fallback limited to Thunder tools.
- Add regression coverage for supported and unsupported tools.

Co-authored-by: Codex <267193182+codex@users.noreply.github.com>

* fix(offline): route ED2K to native 115 tools

- Allow ED2K requests initially using SimpleHttp to enter tool routing.
- Prefer the matching 115 tool for 115 Cloud and 115 Open destinations.
- Add regression coverage for native storage tool selection.

Co-authored-by: Codex <267193182+codex@users.noreply.github.com>

* fix(offline): expose native tools for destination storage

- Include the native destination tool in the path-aware tool list.
- Keep existing ready-tool filtering for external destinations.
- Add coverage for native storage to tool mapping.

Co-authored-by: Codex <267193182+codex@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>
…OpenListTeam#2892)

The 115 and pikpak multipart uploaders checked for cancellation with a
`case <-ctx.Done()` inside a select, and a break there only leaves the
select, not the enclosing `for retry := 0; retry < 3; retry++` loop.
Cancelling an upload therefore ran all three attempts for every
remaining chunk, each allocating a chunk-sized buffer and reading it
off disk before firing a request that could not succeed, and reported
a transport error instead of the cancellation.

Move the check ahead of the select and use utils.IsCanceled, matching
the pattern the other drivers already use. Assigning ctx.Err() to err
is load-bearing: without it a cancelled chunk takes the success branch,
counts toward progress, and appends a zero-value UploadPart.

Found with staticcheck (SA4011).

Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com>
…nListTeam#2976)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…am#2388)

* feat(drivers/github): add optional accurate modified time

* refactor(github): 简化准确修改时间查询

- 将最多 200 个路径合并到一次 GraphQL history 查询,并用 ^{commit} 统一解析 ref

- 删除分批和冗余响应解析,保留失败降级、tree fallback 与缓存行为

- 使用 JSON 字符串字面量支持控制字符路径,并收敛行为测试

---------

Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com>
…Team#2792)

fix(189pc): normalize escaped apostrophes in names

Co-authored-by: Codex <267193182+codex@users.noreply.github.com>
Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com>
…es (OpenListTeam#2791)

* fix(drivers/189pc,drivers/189tv): fix extra requests when viewing files

* fix(drivers/189pc,drivers/189tv): fix extra requests when viewing files
)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
OpenListTeam#2989)

multipartUploadToOSS passed the UpdateProgress callback into
stream.NewStreamSectionReader, which ignores the up argument, so the
callback was never invoked while uploading parts. As a result,
cross-storage copy tasks targeting GuangYaPan stayed at 0% and showed no
progress bar or speed in the task list.

Fix by tracking the uploaded byte count and invoking up after every
part is uploaded, keeping consistent with other drivers' upload flow.

Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com>
…#2993)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate Bot and others added 13 commits September 1, 2026 17:59
…ible (OpenListTeam#2711)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
… to v1.23.1 (OpenListTeam#2985)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…istTeam#2125)

* fix(cmd/start): use absolute executable path for child process

* fix(cmd/start): detect force-bin-dir flag variants

---------

Co-authored-by: Zoe Lee <zoelee@gmail.com>
- Add an invalidated metadata snapshot for case-insensitive fallback lookups
- Enforce segment-aware metadata coverage for passwords and download signatures
- Add regression tests while preserving case-sensitive write authorization

Co-authored-by: Codex <267193182+codex@users.noreply.github.com>
Signed-off-by: jyxjjj <16695261+jyxjjj@users.noreply.github.com>
- Resolve and authorize the canonical destination from the request payload
- Reject upload capabilities that cross virtual storage mount boundaries
- Remove the unrelated File-Path middleware authorization check

Co-authored-by: Codex <267193182+codex@users.noreply.github.com>
Signed-off-by: jyxjjj <16695261+jyxjjj@users.noreply.github.com>
- Issue and verify short-lived SSO binding state and proof tokens
- Bind provider callbacks to an HttpOnly browser session cookie
- Reject invalid or already-associated SSO identities during profile updates

Co-authored-by: Codex <267193182+codex@users.noreply.github.com>
Signed-off-by: jyxjjj <16695261+jyxjjj@users.noreply.github.com>
…penListTeam#2987)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…penListTeam#2988)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com>
…2994)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…enListTeam#3014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…istTeam#3015)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): pin dependencies

* chore: exclude docker from renovate

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Yinan Qin <elysia-best@simplelinux.cn.eu.org>
Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com>
Copilot AI lite review requested due to automatic review settings September 3, 2026 09:23
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

⚠️ PR 标题需以 feat(): , docs(): , fix(): , style(): , refactor(): , chore(): 其中之一开头,例如:feat(component): 新增功能
⚠️ The PR title must start with feat(): , docs(): , fix(): , style(): , or refactor(): , chore(): . For example: feat(component): add new feature.

如果跨多个组件,请使用主要组件作为前缀,并在标题中枚举、描述中说明。
If it spans multiple components, use the main component as the prefix and enumerate in the title, describe in the body.

如果是破坏性变更,请在类型后添加 !,例如 feat(component)!: 破坏性变更
For breaking changes, add ! after the type, e.g., feat(component)!: breaking change.

@zymooll
zymooll merged commit cc36258 into main Sep 3, 2026
11 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

It spans multiple security-sensitive and operationally critical areas (auth, upload, storage drivers, toolchain/CI), requiring careful human end-to-end validation.

Pull request overview

Upstream sync bringing multiple subsystem updates across the S3 gateway, auth flows, upload handling, path/meta matching, and a broad set of storage drivers, along with dependency/toolchain and CI workflow pinning.

Changes:

  • Replace S3 ListObjects pagination with an in-walk paging implementation and add focused tests.
  • Refactor direct-upload handlers and introduce SSO binding proof/state tokens to prevent cross-session binding.
  • Update meta/path matching semantics and improve multiple drivers (GitHub accurate mtime, 139 login flows, iLanzou, 189 parsing, strm filtering), plus bump toolchain/deps and pin GitHub Actions to SHAs.
File summaries
File Description
server/s3/utils.go Context-aware directory entry listing.
server/s3/pager.go Remove legacy pager implementation.
server/s3/list.go New in-walk S3 pagination logic.
server/s3/list_test.go Add pagination/traversal unit tests.
server/s3/backend.go Use new S3 list paging path.
server/router.go Route direct-upload handlers (no FsUp).
server/middlewares/down.go Password sign coverage uses MetaCoversPath.
server/handles/ssologin.go Add SSO binding state/proof tokens.
server/handles/offline_download.go Filter offline tools by destination path.
server/handles/fsup.go Move direct-upload handlers out.
server/handles/direct_upload.go New direct-upload handler implementation.
server/handles/auth.go Verify SSO binding proof on update.
server/common/check.go Case-insensitive meta coverage + write bypass logic.
server/common/check_test.go Extend meta coverage/write/access tests.
renovate.json Disable renovate updates for select images.
internal/op/path.go Add GetStorageVirtualMountPath helper.
internal/op/meta.go Case-insensitive meta lookup via snapshot cache.
internal/offline_download/tool/tools.go Add NamesForPath (native tool inclusion).
internal/offline_download/tool/add.go Improve ed2k routing + native tool mapping.
internal/offline_download/tool/add_test.go Add tests for tool selection helpers.
internal/model/obj.go Allow Obj display-name mapping via interface.
internal/db/meta.go Add GetAllMetas query helper.
go.mod Bump toolchain and dependencies.
drivers/strm/util.go Filter strm conversion by min size.
drivers/strm/meta.go Add MinFileSize config option.
drivers/strm/hook.go Ensure local directory creation before writes.
drivers/strm/hook_umask_unix_test.go Add umask permission test.
drivers/strm/hook_test.go Add createLocalDirectory tests.
drivers/strm/driver.go Initialize minSizeBytes from config.
drivers/pikpak/util.go Honor canceled context in multipart upload.
drivers/onedrive_sharelink/util.go Shared HTTP client + ctx-aware requests.
drivers/onedrive_sharelink/util_test.go Add no-redirect client tests.
drivers/lanzou/util.go Support ajaxfile/ajaxm file-id extraction.
drivers/lanzou/help.go Safer JS var extraction regex handling.
drivers/ilanzou/util.go Add CDN challenge handling + safer token query.
drivers/ilanzou/util_test.go Add appToken query escaping test.
drivers/ilanzou/types.go Fix package name + type definitions.
drivers/ilanzou/meta.go Fix package name + driver registration.
drivers/ilanzou/driver.go Per-storage cookie jar + upload/link improvements.
drivers/guangyapan/util.go Report multipart upload progress accurately.
drivers/github/types.go Use shared zero-time constant.
drivers/github/mtime.go Best-effort GraphQL accurate mtime support.
drivers/github/mtime_test.go Add extensive accurate mtime tests.
drivers/github/meta.go Add accurate_modified_time option.
drivers/github/driver.go Invoke accurate mtime fetch after list.
drivers/emby/driver.go Adjust init validation messaging.
drivers/189pc/utils.go Add page-size early-exit in listing loop.
drivers/189pc/types.go Implement display name normalization.
drivers/189pc/help.go Improve 189 time parsing robustness.
drivers/189pc/help_test.go Add time parsing tests.
drivers/189_tv/utils.go Add page-size early-exit in listing loop.
drivers/189_tv/help.go Improve 189 TV time parsing robustness.
drivers/189_tv/help_test.go Add time parsing tests.
drivers/139/util.go Major 139 mail login robustness + SMS flow.
drivers/139/util_test.go Add unit/integration-style login tests.
drivers/139/meta.go Update credential field semantics + sms_code.
drivers/139/driver.go Centralize credential initialization logic.
drivers/115/util.go Honor canceled context in multipart upload.
cmd/start.go Safer child process invocation + arg handling.
.github/workflows/trigger-makefile-update.yml Pin github-script action to SHA.
.github/workflows/test_docker.yml Pin actions + bump Go version.
.github/workflows/sync_repo.yml Pin checkout action to SHA.
.github/workflows/release.yml Pin actions + bump Go version.
.github/workflows/release_docker.yml Pin actions + bump Go version.
.github/workflows/issue_pr_comment.yml Pin github-script action to SHA.
.github/workflows/changelog.yml Pin checkout action to SHA.
.github/workflows/build.yml Pin actions + bump Go version.
.github/workflows/beta_release.yml Pin actions + bump Go version.
Review details

Suppressed comments (2)

drivers/189pc/utils.go:212

  • Local variables FolderCount, FileCount, and PageCount are capitalized like exported identifiers, and the surrounding block has inconsistent indentation. In Go, local variables should use lowerCamelCase, and gofmt should be applied.
		FolderCount := len(resp.FileListAO.FolderList) // 当前文件夹总数
        FileCount := len(resp.FileListAO.FileList) // 当前文件总数
        PageCount := FolderCount + FileCount // 当前页数总数

drivers/189_tv/utils.go:225

  • Local variables FolderCount, FileCount, and PageCount are capitalized like exported identifiers, and the surrounding block has inconsistent indentation. In Go, local variables should use lowerCamelCase, and gofmt should be applied.
		FolderCount := len(resp.FileListAO.FolderList) // 当前文件夹总数
        FileCount := len(resp.FileListAO.FileList) // 当前文件总数
        PageCount := FolderCount + FileCount // 当前页数总数
  • Files reviewed: 68/69 changed files
  • Comments generated: 2
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread drivers/189_tv/utils.go
}
fullUrl += "/listFiles.action"

pageSize := 130 // 每一页返回的文件数量
Comment thread drivers/189pc/utils.go
}

func (y *Cloud189PC) getFiles(ctx context.Context, fileId string, isFamily bool) ([]model.Obj, error) {
pageSize := 1000 // 每一页返回的文件数量
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.