Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: scp middleware #33

Merged
merged 35 commits into from Feb 22, 2022
Merged

feat: scp middleware #33

merged 35 commits into from Feb 22, 2022

Conversation

caarlos0
Copy link
Member

@caarlos0 caarlos0 commented Feb 11, 2022

✨✨✨ SCP Middleware for Wish! ✨✨✨

what can it do?

the basic features:

  • copy to and from a server
  • recursive and non recursive
  • globbing
what it can't do?

basically, tectia and advanced, rarely used, features. For example:

  • copy preserving permissions (scp -p)
  • "secure move" (scp -u)
  • dry run mode (scp -n)
  • bandwidth control (scp -l)
what else can I do with this?

Out of the box, you can server files from/to a folder with something like:

// ...
scph := scp.NewFileSystemHandler("/path/to/the/folder")
// ...
scp.Middleware(scph, scph),
// ...

You can also allow read-only access to any fs.FS implementation, using scp.NewFSHandler(fsys).

If these options don't fit what you're trying to achieve, you can also implement CopyToClientHandler and/or CopyFromClientHandler, to, for example, namespace files by SSH key fingerprint.

Please let me know your thoughts.

Feel free to check out examples/scp/main.go to see it in action.

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
@caarlos0 caarlos0 self-assigned this Feb 11, 2022
@caarlos0 caarlos0 changed the title wip feat: scp middleware Feb 11, 2022
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
@caarlos0 caarlos0 added the enhancement New feature or request label Feb 17, 2022
caarlos0 and others added 3 commits February 16, 2022 22:35
* chore: lint

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>

* chore: lint

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>

* wip: server side glob support

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>

* feat: recursive copy files

* test

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>

* feat: handle globs on fs and filesystem handlers

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>

* refactor

Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
@caarlos0 caarlos0 marked this pull request as ready for review February 17, 2022 01:47
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
@caarlos0 caarlos0 merged commit 30c2da8 into main Feb 22, 2022
@caarlos0 caarlos0 deleted the scp branch February 22, 2022 21:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants