Easily move things between computers using cowyo 🐮 💬
cowyodel allows simple and secure sharing of text/data between computers. cowyodel temporarily transfers your data (with optional client-side encryption) to a cowyo server where it resides until the other computer downloads it using the provided secret code phrase.
If you have Go1.7+
go get -u -v github.com/schollz/cowyodel
or just download from the latest releases.
To share a file with another computer, you first upload it to a cowyo server. By default cowyodel uses cowyo.com, but you can host your own cowyo server as well (see Advanced Usage).
$ cowyodel upload README.md
Uploaded README.md (textual data). Your codephrase: total-perform-retro
View/edit your data:
https://cowyo.com/total-perform-retro
Download using cowyodel:
cowyodel download total-perform-retro
or
$ cat README.md | cowyodel upload
Uploaded (textual data). Your codephrase: total-perform-retro
View/edit your data:
https://cowyo.com/total-perform-retro
Download using cowyodel:
cowyodel download total-perform-retro
After uploading, you will recieve a code-phrase, in the above example the code-phrase is total-perform-retro
. If you don't want to use code phrases, you can also specify your own name using -name
, see Advanced Usage below.
The uploads are fully compatible with the cowyo server, so you can view and edit them using the code-phrase (e.g. cowyo.com/total-perform-retro
in above example).
On any other computer connected to the internet, you can download the file using the name using cowyodel download code-phrase
.
$ cowyodel download total-perform-retro
Wrote text of 'total-perform-retro' to 'README.md'
After downloading, it will be erased from the cowyo.com. If you don't trust this server, you can also specify your own (see Advanced Usage). You can add --store
flag to prevent automatic deletion from the cowyo server.
Adding --store
will keep the file on the server, even after accessing.
$ cowyodel upload --store FILE
If you don't want to use a codephrase, use --name
to specify the name of file.
$ cowyodel upload --name README.md
Uploaded README.md (textual data). Your codephrase: README.md
It is possible that someone could have used that page (and locked it) which would not allow that page to be used and a message "Locked, must unlock first" will appear.
$ cowyodel upload --encrypt README.md
Enter passphrase: 123
Uploaded README.md (textual data). Your codephrase: total-perform-retro
$ cowyodel download total-perform-retro
Enter passphrase: 123
Wrote text of 'total-perform-retro' to 'README.md'
The encryption is fully compatible with the server-side encryption on cowyo.com, so you can still use the web browser to decrypt/encrypt your document.
If the decryption fails, the document will be re-uploaded to the cowyo server.
cowyodel automatically detects binary data and uploads as such.
$ cowyodel upload /tmp/image.jpg
Uploaded image.jpg (binary data). Your codephrase: empire-cricket-tokyo
Download using cowyodel:
cowyodel download empire-cricket-tokyo
$ cowyodel download image.jpg
Wrote binary data to 'image.jpg'
$ sha256sum /tmp/image.jpg image.jpg
62a9583758d54e666ff210be3805483bd76ac522ea649f0264de65124943c0b3 */tmp/image.jpg
62a9583758d54e666ff210be3805483bd76ac522ea649f0264de65124943c0b3 *image.jpg
Note: you should not access uploaded binary files at via the web browser as it would risk corrupting them.
You can also host your own cowyo server and use that instead of the default cowyo.com
. To host cowyo yourself, just use
$ go get github.com/schollz/cowyo/...
$ cowyo
Running cowyo server (version ) at http://localhost:8050
(If you don't have Go installed, you can also download a release version).
Once you have a self-hosted cowyo server, you just need to specify the server when running cowyodel:
$ cowyodel --server http://localhost:8050 upload FILE
uploaded to total-perform-retro
$ cowyodel -h
NAME:
cowyodel - upload/download encrypted/unencrypted text/binary to cowyo.com
USAGE:
Upload a file:
cowyodel upload README.md
cat README.md | cowyodel upload
Download a file:
cowyodel download 2-adoring-thompson
Persist (and don't delete after first access):
cowyodel upload --store FILE
Specify filename:
cowyodel upload --name README.md
Client-side encryption:
cowyodel upload --encrypt README.md
COMMANDS:
upload, u upload document
download, d download document
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--server value cowyo server to use (default: "https://cowyo.com")
--debug debug mode
--help, -h show help
--version, -v print the version
This tool was inspired by the following:
cowyodel does not represent a significant innovation over these tools. However, there are some advantages that cowyodel provides:
- Trust. You can run your own cowyo server on a domain you trust.
- Direct edting. You can directly edit plaintext documents on the cowyo server using the web interface.
- Simplicity. The codebase is < 1k LOC, and is straightforward to understand.
To run tests, make sure to start a cowyo
server first.
$ go get -u github.com/schollz/cowyo/...
$ cowyo
$ go test
MIT