fix(ftp): add cwd_list option and filter path-separated entries#2621
Open
sorubedo wants to merge 1 commit into
Open
fix(ftp): add cwd_list option and filter path-separated entries#2621sorubedo wants to merge 1 commit into
sorubedo wants to merge 1 commit into
Conversation
jyxjjj
approved these changes
Jun 15, 2026
Author
Member
|
i18n会自动生成 |
Member
|
你这个命名不太对,自动生成估计翻译不来 |
Author
UseCwdToList bool |
Member
|
json里用啥都行,只是个配置,但是机翻cwd很有问题。 |
Member
好像确实是作为裸字段名直接机翻会有问题,不过去OpenList-Frontend直接改drivers.json其实也行 |
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.




Summary / 摘要
修复 GBK 编码 FTP 服务器(常见于学校/老旧中文环境)的两个兼容性问题:
新增
cwd_list选项:启用后改用CWD进入目标目录再LIST ""列出内容,代替原有的LIST <path>方式。解决非 UTF-8 编码路径在 LIST 命令中无法正确解析,导致列表只显示一个与当前目录同名假文件夹的问题。过滤含
/的文件名:部分 FTP 服务器返回的列表包含type=cdir(当前目录标记)等特殊条目,其 Name 字段为完整路径格式(含/)。由于 FTP 协议中合法文件名不可能包含路径分隔符,借此安全过滤此类条目。用户可感知的变化
cwd_list开关(默认关闭)|路径|路径格式的假文件夹条目实现变化
drivers/ftp/meta.go:Addition 结构体新增CwdList bool字段drivers/ftp/driver.go:List 方法根据CwdList选项切换列目录策略;新增strings.Contains(entry.Name, "/")过滤This PR has breaking changes.
/ 此 PR 包含破坏性变更。
This PR changes public API, config, storage format, or migration behavior.
/ 此 PR 修改了公开 API、配置、存储格式或迁移行为。
This PR requires corresponding changes in related repositories.
/ 此 PR 需要关联仓库同步修改。
Related repository PRs / 关联仓库 PR:
Related Issues / 关联 Issue
(如有相关 Issue 请填写,否则删除本节)
Testing / 测试
go test ./...手动测试环境:
cwd_list关闭,默认行为):行为与修复前一致,UTF-8 服务器正常工作cwd_list开启,GBK 服务器):原本只显示一个假文件夹的目录现在正确列出所有文件和子目录,可正常进入子目录cdir条目过滤):原本显示|路径|路径的假文件夹不再出现Checklist / 检查清单
/ 我已阅读 CONTRIBUTING。
/ 我确认此贡献符合仓库许可证、贡献规范和行为准则。
gofmt,go fmt, orprettierwhere applicable./ 我已按适用情况使用
gofmt、go fmt或prettier格式化变更代码。/ 我已在适用情况下请求相关维护者或代码所有者审查。
AI Disclosure / AI 使用声明
/ 此 PR 包含 AI 辅助内容。
Tools used / 使用工具:
Usage scope / 使用范围:
Code generation / 代码生成
Refactoring / 重构
Documentation / 文档
Tests / 测试
Translation / 翻译
Review assistance / 审查辅助
I have reviewed and validated all AI-assisted content included in this PR.
/ 我已审核并验证此 PR 中的所有 AI 辅助内容。
I have ensured that all AI-assisted commits include
Co-Authored-Byattribution./ 我已确保所有 AI 辅助提交都包含
Co-Authored-By归属信息。I can reproduce all AI-assisted content included in this PR without any AI tools.
/ 我可以在没有任何 AI 工具的情况下重现此 PR 中包含的所有 AI 辅助内容。