piecannon/README.md

44 lines
3.1 KiB
Markdown

# Project Pie Cannon
Pie Cannon is an easy way to upload files to the internet and get a shareable link. File goes in, link comes out.
It doesn't come with a backend because you're expected to bring your own. A plain old FTP/SFTP+HTTP server will work fine, but support for more backends is on the way.
This project is separated into a library and a desktop application (targeting mainly GNU/Linux), with an Android application in the works.
## How to build
Run `mvn clean install` in this directory to build the `lib` and `desktop` modules.
If the `ANDROID_HOME` environment variable exists, `android` will also be built.
Under GNU Guix System, the `guix_activate_environment` script can be used to create an environment that contains necessary packages for building this app.
### F-Droid
If the `fdroid` command is available, the app can be built using `fdroid build`. The Guix environment script will add the `fdroidserver` package to the generated environment.
## How to install
### GNU/Linux
`desktop` contains a wrapper script that will call the version of `piecannon-desktop-app` installed in your maven repository, and then open the uploaded file in your browser. You can copy or symlink this wrapper script anywhere. Typically you would put it in `~/bin` or `~/.local/bin`. Make sure that directory is in your `PATH`.
### Windows
TODO
### Mac OS
TODO
## How to use
Place a `servers.json` in the Pie Cannon data directory. For GNU/Linux this is `XDG_DATA_HOME` (by default this would be `~/.local/share/piecannon`) (create this directory if it does not exist. For Android this would be the app's "externalFilesDir" (probably something like `Android/data/net.monarchpass.piecannon/files` - the app will tell you when you launch it). See `servers.example.json` for an example of such a file. Whenever you initiate a file upload, Pie Cannon will select one of your defined servers at random and upload the file.
#### Server Types
The `type` field in the server configuration tells Pie Cannon what type of server to use. The default value is `webdav`.
##### WebDAV (`webdav`)
For WebDAV servers, `url` is where the file is uploaded to and served from. `username` and `password`, if given, are HTTP Basic authentication credentials.
For setting this up with nginx, see [ngx_http_dav_module](https://nginx.org/en/docs/http/ngx_http_dav_module.html) documentation and also [HTTP Basic Authentication](https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/) guide.
##### FTP/SFTP (`ftp`/`sftp`)
For FTP/SFTP servers, the `path` is relative to your home directory and should be where `url` points to. i.e. a file uploaded to `path` should be downloadable at `url`. In the future Pie Cannon should be able to get SSH credentials from your agent so you won't need to put a password in this file.
##### GoFile.io (`gofile`)
No configuration options are supported for this currently, however in the future there may be support for using a token. Note that it's not possible to get a direct download link for this service without visiting a page first, so Pie Cannon returns the URL for that page instead of a direct download link.