2017-12-02 18:47:58 +00:00
[![Go Report Card ](https://goreportcard.com/badge/github.com/Luzifer/share )](https://goreportcard.com/report/github.com/Luzifer/share)
![](https://badges.fyi/github/license/Luzifer/share)
![](https://badges.fyi/github/downloads/Luzifer/share)
![](https://badges.fyi/github/latest-release/Luzifer/share)
# Luzifer / share
`share` is a small replacement I wrote for sharing my files through external services like CloudApp using Amazon S3. Files are uploaded using this utility into S3 and previewed (if supported) using the included frontend.
2017-12-02 18:53:35 +00:00
2024-03-18 20:27:40 +00:00
![](./docs/demo.gif)
2018-04-23 21:54:23 +00:00
## Browser Support
2021-08-26 13:33:55 +00:00
The frontend can be used in all modern browsers. Internet Explorer is not supported.
2018-04-23 21:54:23 +00:00
2017-12-02 18:53:35 +00:00
## Setup / usage
- Create a S3 bucket and CloudFront distribution
(See [docs/cloudformation.yml ](docs/cloudformation.yml ) for an example stack)
- Run bootstrap to initialize frontend files:
`./share --bucket=<bucket from step 1> --bootstrap`
- Upload files to your sharing bucket:
`./share --bucket=<bucket from step 1> --base-url='https://your.site.com/#' <yourfile>`
- Share the URL you received from last step
2018-04-22 19:27:05 +00:00
After you've updated the binary you need to run the `--bootstrap` command once more to have the latest interface changes uploaded to your bucket.
2021-10-19 21:51:24 +00:00
### Templating in `file-template`
You can specify where in the bucket the file should be stored and how it should be named by passing the `--file-template` parameter. It takes a Go template with these placeholders:
- `{{ .Ext }}` - The extension of the file (including the leading dot, i.e. `.txt` )
- `{{ .FileName }}` - The original filename without changes (i.e. `my video.mp4` )
2024-03-18 19:38:05 +00:00
- `{{ .Hash }}` - The SHA256 hash of the file content
2021-10-19 21:51:24 +00:00
- `{{ .SafeFileName }}` - URL-safe version of the filename (i.e. `my-video.mp4` )
- `{{ .UUID }}` - Random UUIDv4 to be used within the URL to make it hard to guess
Examples:
- `--file-template="file/{{ printf \"%.8s\" .Hash}}/{{ .SafeFileName }}"`
- `--file-template="file/{{ printf \"%.8s\" .Hash}}/{{ .UUID }}{{ .Ext }}"`