transfer-sh
Version:
Node.js CLI tool for easy file sharing using Transfer.sh
77 lines (43 loc) • 2.55 kB
Markdown
# transfer-sh [](https://www.npmjs.com/package/transfer-sh) [](https://travis-ci.org/roccomuso/transfer-sh) [](https://david-dm.org/roccomuso/transfer-sh) [](https://standardjs.com) <span class="badge-patreon"><a href="https://patreon.com/roccomuso" title="Donate to this project using Patreon"><img src="https://img.shields.io/badge/patreon-donate-yellow.svg" alt="Patreon donate button" /></a></span>
> Node.js CLI tool for easy file sharing using Transfer.sh
### Install
The easiest way to get **transfer-sh** is with npm:
$ npm install -g transfer-sh
### CLI Usage
$ transfer hello.txt
Will return a link to the resource and automatically you'll have it copied to your clipboard.
PS. <code>transfer</code> is an alias for <code>transfer-sh</code>.
Encrypt a file using a password:
$ transfer hello.txt -p s3cr3t
### Example
```javascript
var Transfer = require('transfer-sh')
/* Encrypt and Upload */
new Transfer('./Hello.md', {password: 's3cr3t'})
.upload()
.then(function (link) { console.log(link) })
.catch(function (err) { console.log(err) })
/* Decrypt */
new Transfer('./Hello.enc', {password: 's3cr3t'})
.decrypt('Output.md') // or writable stream
.then(function (wStream) { console.log('Decrypted!') }) // it returns a writableStream
.catch(function (err) { console.log(err) })
```
**NB.**: The constructor accepts also a `Readable` stream as 1th param, in that case make sure to provide a `name` option.
### Options
`password`: optional field, if provided will encrypt the file with `aes-256-cbc` no-salt and base64 encoded before the upload.
You can then easily decrypt your file using `transfer-sh` itself:
$ transfer -d hello.enc -p s3cr3t [-o output.txt]
or the `openssl` util:
$ openssl aes-256-cbc -d -a -nosalt -in <encrypted_file> -out <destination> -k <password>
openssl params explanation:
`-d` decrypt.
`-a` to decode base64 (with line break). NB. The file is base64 encoded to be easy human-readable and to allow easy copy-paste.
`-nosalt` The used node crypto lib by default doesn't apply any salt.
`-in` input encrypted file.
`-out` output decrypted file.
`-k` password.
## Author
Rocco Musolino ([@roccomuso](https://twitter.com/roccomuso))
## LICENSE
MIT