GithubHelp home page GithubHelp logo

depado / goploader Goto Github PK

View Code? Open in Web Editor NEW
271.0 12.0 40.0 6.42 MB

Easy file sharing with server-side encryption, curl/httpie/wget compliant

Home Page: https://docs.gpldr.in

License: MIT License

Go 16.97% HTML 15.26% Makefile 0.79% Dockerfile 0.21% JavaScript 63.96% CSS 2.80%
sharing self-hosted cryptography terminal curl

goploader's Introduction

goploader

forthebadgeforthebadgeforthebadge

Go Version Go Report Card codebeat badge Maintainability Build Status License Docs Say Thanks!

Introduction

Goploader's ultimate goal is to make file sharing easy and painless. This project is composed of a server and a client, both written in Go. The main things to remember about the project are :

  • Sharing stuff from your terminal should be easy
  • Sharing stuff without a terminal should be easy
  • Privacy matters

Build from source

Make sure you have Go installed on your machine.

Client

$ go get github.com/Depado/goploader/client
$ go build -o $GOPATH/bin/goploader github.com/Depado/goploader/client

Server

$ # Move to a new directory that will be used to run the server
$ go get github.com/Depado/goploader/server
$ # The following steps are optional
$ # Execute those if you wish to embed the assets and templates into the binary
$ go get github.com/GeertJohan/go.rice/rice
$ rice embed-go -i=github.com/Depado/goploader/server
$ # End of the optional steps
$ go build github.com/Depado/goploader/server
$ # If you did not embed the resources, make sure to copy the assets and templates directories
$ cp -r $GOPATH/src/github.com/Depado/goploader/server/{assets,templates} .
$ # Execute the binary a first time to trigger the setup
$ # Or write your own conf.yml file
$ ./server

Downloads

All the downloads are available at gpldr.in in the clients and server sections.

Client

Linux FreeBSD Mac OS Windows
Linux 64bit FreeBSD 64bit Mac OS 64bit Windows 64bit
Linux 32bit FreeBSD 32bit Mac OS 32bit Windows 32bit
Linux ARMv7

Documentation

All the documentation is available at gpldr.in. I intend to write a proper README.md file, but it takes a lot of work to transpose the existing documentation to the markdown format. So, work in progress.

License

All the software in this repository is released under the MIT License. See LICENSE for details.

goploader's People

Contributors

alekseylobanov avatar cmiller01 avatar depado avatar dependabot[bot] avatar krionux avatar mayeu avatar sckelemen avatar shadownest avatar simonqbs avatar tribut avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

goploader's Issues

Server stops :-/

Hi once again :)
Because I wanted to change some parts of the start page (text, maybe Logo, color) I compiled a version of goploader instead of using the standalone binary. Everything looks good, but when I start goploader it does one run and exists immediately. So this is no standalone version? How can I create one?

DEBUG |     server | 2016/06/10 - 12:04:58 |                 | Started Initialize on statistics object
 INFO |     server | 2016/06/10 - 12:04:58 |                 | Total   2 (5.4GB)
 INFO |     server | 2016/06/10 - 12:04:58 |                 | Current 0 (0)
DEBUG |     server | 2016/06/10 - 12:04:58 |                 | Done Initialize on statistics object
 INFO |     server | 2016/06/10 - 12:04:58 |                 | Started goploader server on port : 80
 INFO | monitoring | 2016/06/10 - 12:04:58 |                 | Started Monitoring
DEBUG | monitoring | 2016/06/10 - 12:04:58 |                 | Started Monit on Resources
DEBUG | monitoring | 2016/06/10 - 12:04:58 |                 | Serving 0 (0) files
DEBUG | monitoring | 2016/06/10 - 12:04:58 |                 | Done Monit on Resources (2.337783ms)
DEBUG |     server | 2016/06/10 - 12:04:58 |                 | Loaded templates from "templates" box
DEBUG |     server | 2016/06/10 - 12:04:58 |                 | Loaded assets from "assets" box

Thanks in advance

Switch from SQLite to BoltDB

The model is quite simple, and the SQLite dependency makes it really annoying to deploy on an ARM architecture.
In addition this would make a pure Go project without external dependencies

Caddyfile review

The Caddyfile for Caddy web server should be:

up.example.com {
	proxy / 127.0.0.1:8002 {
		transparent
	}
	gzip
}

Handle either http or https

Withtout adding a parameter to conf.yml, make the server handle any protocol, either http or https.

Right now, only https URI is returned after upload.

Better error handling

As for now a standard message is sent whenever an error happen during the setup or during a file upload. Would be great to handle form errors, returning them as JSON to highlight fields that are wrong. Also using defaults as the placeholders. (If the field isn't filled, then use the default instead)

Implement one-shot uploads

One nice feature would be to allow the users to specify that the uploaded file should be available only once. (One GET request, then the file gets deleted from disk and database)

Feature Request: lifetime restrictions in server config

Hi once again :)
It would be nice - I think not only for my requirements - to set the lifetime more restrictive by the admin. So the admin could say maybe it is only allowed to set 1d and 1w . Maybe another admin would like to have that files are generally and only available for 1 day (1d).
If this could be set in the server config - that would really be cool. The client must not really be changed. If he selects a time that is not supported by the server, the file lifetime is set to default.

For the upload by the webui, I changed the template to only support 1w . That works, but not for the terminal client ;) (I do not know programing in go :-/ )

Thank you very much!

Cannot compile latest version from master

Hi,

It seems that I can't compile anymore the Goploader server from master:

$ go build
# github.com/Depado/goploader/server/database
../../go/src/github.com/Depado/goploader/server/database/database.go:7:2: imported and not used: "go.etcd.io/bbolt"
../../go/src/github.com/Depado/goploader/server/database/database.go:18:59: undefined: bolt

Is it intended (for tests, as it seems that this commit is recent: ffb8518#diff-1e777cb518a26cf47f4e216b8725ce93)?

Thanks anyway for your product!

Uploaded text downloads as STDIN

Hello again i know i asked way back for this feature. But can we have an exeption so that files download as files (no browser open), but uploaded text still opens in the browser?
Turns out this feature is awesome for sharing passwords but its a bit problematic to explain ppl every time :)

Thanks for your hard work ๐Ÿ‘

Do not open in browser

Hello,

First i would like to thank you for your hard work this is an awesome project :)

Is it possible to have the downloads not open in the browser, Like txt and video files ?

Server - Curl compliant response

When a curl client GET the front page, return the documentation in a friendly text-only way. Maybe with some colors. ๐Ÿ’ฅ

Proxy with Apache

Proxy with Apache allows me to upload fine . But on download, the link to the file goes to http://example.com:8008/filename, which isn't exposed (because it is proxying).

Flexible mode for large uploads ?

The idea would be that the larger the file uploaded is, the shorter the time it will live on the server. Would need some calculation, and set a ratio in the configuration file

Example :

  • 1KB โ†’ 1MB : 1 Month
  • 1MB โ†’ 100MB : 1 Week
  • 100MB โ†’ 1GB : 1 Day
  • 1GB โ†’ xGB : 1 Hour

Where x is the maximum size allowed by the server.

Implement smart-delete feature

Principle would be that a file that wasn't fetched at least once in a TimeLimit span can be safely deleted. A user uploads a file that will live for 48 hours. Someone fetches the files 3 hours later. The counter is resetted to 48 hours.

Implement storage limit

As of today there is no limit for the total size of files that are stored on the server. Would be a nice feature to limit to a certain size, and delete older files if that limit is broken

change temporarily folder?

Hi,
I am just testing goploader. Now, I will use it for uploading big files (~20GB-50GB).

On my first test I figured out, that the files are temporarily stored in /tmp (using Debian 8). Is there a way to change this to another directory?

Thanks in advance and really thank you for this piece of software!!

Ronny

Disable encryption to speed up?

Hi once again :)
Does it make sense to disable encryption if not needed to speed up the down/upload? Actually I cannot disable encryption - so I cannot test this :-/

Best regards
Ronny

Protect upload with password

Do you plan to add a way to restrict the uploads, for example with a password? I have a shared server with friends and I don't want the entire internet to be able to upload files to it.

Feature Request: Show upload progress?

As you can see I'm really working on goploader :)

Is there a possibility to show a progress bar (or something like) on a running upload?

THX and have a nice weekend

Language support

If its not a huge work maybe there could be a language file so we can have all the visible parts there then its easy to manage in the future.

language and lines option

Hello,

is there a way to disable these options when uploading files? (Just not show them)

image

I'm sorry if its a noob question :)

Implement rolling storage

Didn't know how to name that.

  • Time limit becomes optionnal
  • Adding a maximum storage space for all the uploaded files
  • Maximum storage space allocated is also optionnal
  • If both settings are used, both should work.
  • At least one of these two arguments is required.

When someone uploads a file, if the said file makes the maximum storage space overflow, then the oldest files gets deleted until the maxium storage space isn't overflowed anymore. This would force the user to have a SizeMax+SizeLimit free disk space.

Installation error - cannot use "github.com/boltdb/bolt".Options literal

Hello,
I've installed Go 1.10, following this tutorial (For Debian 9)
https://tecadmin.net/install-go-on-debian/
and I'm trying now to install goploader, however when I run
go get github.com/Depado/goploader/server
or
go build github.com/Depado/goploader/server

I have the following error:

# github.com/Depado/goploader/server/database
Projects/Proj1/src/github.com/Depado/goploader/server/database/database.go:18:79: cannot use "github.com/boltdb/bolt".Options literal (type *"github.com/boltdb/bolt".Options) as type *"github.com/coreos/bbolt".Options in argument to storm.BoltOptions

And thus I don't see the .server binary.

Any advice?

Thank you

README.md Documentation

As for now the only documentation available is on gpldr.in, that would be better to have a real documentation in the README.md file in the repo, in case gpldr.in is taken down for whatever reason.

Implement statistics

  • Total size of stuff that has been uploaded on the service
  • Total number of files uploaded
  • Total number of file views

Previous filename remains after upload

After uploading a file, the filename of the uploaded file remains, so the next step isn't evident. Strong recommendation, after a file is uploaded, the button changes to Choose a File. See:

2017-02-20 07_29_30

support for subdirs

Hi!
To protect the goploader page via reverse proxy, I would like so work in a subfolder. This does not work, because goploader does not support relative links / subdirs. Is it possible to create a parameter to configure a "base url" ?

Same thing using https. The link presented by goploader is always http. If you want to use https, the link does not work. Would be great to have a parameter to support https, too.

Have a nice weekend!!!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.