"PieCannon" is an app for sharing files easily using a server you own or a third-party service.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Adrian Malacoda 4e1156d4bc when testing servers, don't propagate exceptions but do note them 1 month ago
android Pie Cannon can send anything, although some server types may have restrictions. But for now it's just plain sftp/ftp/http and we can push anything through that. 2 months ago
desktop when testing servers, don't propagate exceptions but do note them 1 month ago
lib remove unused imports 1 month ago
.fdroid.yml fdroid: build in release mode (directly building the app will default to debug mode) 2 months ago
.gitignore commit initial version of PieCannon library and desktop app. 3 months ago
LICENSE.txt Add license (GPLv3) 2 months ago
README.md readme: expand on currently supported server types 1 month ago
guix_activate_environment android: add F-Droid metadata file and fdroidserver package to guix environment 2 months ago
pom.xml pom: do not build android module unless ANDROID_HOME is present 2 months ago
servers.example.json lib: add FtpServer type 1 month ago

README.md

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 documentation and also 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.