Skip to content

Add password support and recursive folder download for shared links#258

Merged
AndreyVMarkelov merged 1 commit into
masterfrom
share-link-password-recursive
Jun 21, 2026
Merged

Add password support and recursive folder download for shared links#258
AndreyVMarkelov merged 1 commit into
masterfrom
share-link-password-recursive

Conversation

@AndreyVMarkelov

@AndreyVMarkelov AndreyVMarkelov commented Jun 21, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add --password, --password-prompt, --password-file flags to share-link create, share-link update, and share-link download
  • Add --remove-password flag to share-link update
  • Add --recursive (-r) flag to share-link download for folder shared links
  • Password prompt uses golang.org/x/term for secure non-echoing terminal input
  • RemoveSharedLinkPassword uses raw SDK request to send require_password: false (not exposed by the Go SDK's ModifySharedLinkSettings)
  • Folder download uses BFS traversal, files.ListFolder with shared link context, and per-file retry
  • Path traversal protection rejects .., empty components, and absolute paths

Depends on #257.

Test plan

  • --password sets password on create, update, and download
  • --password-prompt reads from terminal/stdin without echo
  • --password-file reads and trims trailing newlines
  • Multiple password sources rejected
  • Empty password rejected
  • --remove-password sends require_password: false via raw API call
  • --password + --remove-password mutually exclusive on update
  • Folder download requires --recursive flag
  • Folder download rejects stdout target
  • Recursive download creates nested directories and downloads files
  • Folder listing follows pagination
  • Target directory reuse appends folder name
  • Path traversal attacks rejected
  • HTTP-level test verifies RemoveSharedLinkPassword JSON payload
  • All flags registered on commands
  • golangci-lint clean, all tests pass

@AndreyVMarkelov AndreyVMarkelov merged commit 4114f7d into master Jun 21, 2026
7 checks passed
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.

1 participant