# 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.