Skip to content

Send files between machines - no installation required!

License

Notifications You must be signed in to change notification settings

Patryk27/skicka

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

skicka.pwy.io:99

Skicka (from Swedish send) allows to send files between machines - no installation required!

Transmitting a file is as easy as piping its data through curl:

cat your-file.txt | curl --data-binary @- skicka.pwy.io:99

... noting down the link returned by that command and running curl / wget on the target machine:

curl http://skicka.pwy.io:99/foo-bar > your-file.txt

# or

wget http://skicka.pwy.io:99/foo-bar

Alternatively, if your target machine doesn't have those tools, but it does have a web browser, you can pass a file name when uploading it:

cat your-file.txt | curl --data-binary @- 'skicka.pwy.io:99?name=your-file.txt'

... and then simply open the link returned by that command in your web browser - it will download the file as a regular attachment.

You can also transfer arbitrary data (including binary):

echo 'Hello, World!' | curl --data-binary @- skicka.pwy.io:99

How it works

Skicka is a proxy - when you run cat | curl, it doesn't store the file but rather keeps the TCP connection alive and then forwards it when you download the file on the target machine.

It's very much like magic-wormhole, just installation-free!

This also means that links generated by Skicka are one-shot - you can't download the same file twice (unless you run another cat | curl, of course).

Why

Many times I've had to transfer files between non-developer Linux <-> Windows machines, where installing Python tools was not an easy task, and hence zero-installation Skicka.

Roadmap

  • A simple web interface so that it's possible to transmit files without using terminal.

Limits

  • 8 GB maximum file size,

  • 120 seconds between running cat | curl and starting to download the file (note that the download itself can take longer, it's just that you must start the downloading in 2 minutes, otherwise the connection will get closed),

  • My server (in Hetzner) has a monthly 20 TB upload limit, so take that into consideration as well.

Note that those limits pertain only the public instance at skicka.pwy.io:99 - you can change the limits (passed through command-line arguments) if you want to launch a self-hosted instance.

Self-hosting

All options have reasonable defaults, so just running the executable should do it:

cargo run --release

You might want to adjust the listening port:

cargo run --release -- --listen 0.0.0.0:1234

... or maybe specify the motto (present when someone does GET /):

cargo run --release -- --motto "good say, sir! :3\r\n"

License

MIT License

Copyright (c) 2023 Patryk Wychowaniec

About

Send files between machines - no installation required!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published