Code Monkey home page Code Monkey logo

filedrop's Introduction

FileDrop

This project is no longer maintained.

FileDrop is a small web-based file-sharing UI. It can be used as a standalone server in trusted LANs, but it can optionally use Sandstorm for ACLs and sharing.

Try it on Sandstorm

Dependencies

FileDrop requires Go 1.4 to build. Other dependencies are vendored in third_party.

Building and Running Locally

make
./filedrop -address=:8080 -storage=/var/directory/for/files

Building an SPK

make
spk pack filedrop.spk

API

You can download/upload files by using the standard HTTP verbs on the /file/ resource. For example:

# Download foo.jpg
curl -s http://localhost:8080/file/foo.jpg > foo.jpg
# Upload bar.txt
curl -T bar.txt http://localhost:8080/file/

If you're using Sandstorm web keys, remember to use -H 'Authorization: Bearer TOKEN to authorize the request.

License

Apache License 2.0. See LICENSE for details.

This is not an official Google product (experimental or otherwise), it is just code that happens to be owned by Google.

filedrop's People

Contributors

akosel avatar paulproteus avatar pgrm avatar zombiezen 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

filedrop's Issues

Filedrop icon in sidebar is still drawn at 128x128 in IE

This appears to be a result of IE aggressively respecting the "width" and "height" SVG attributes. Amusingly, since the top-left 24 pixels of the filedrop icon are transparent, this makes it look like the icon is simply missing in the shell UI:

screenshot

The failure to respect the <img>'s size attribute can be confirmed by manually specifying larger sizes for that tag:

with height:128px and width:128px added

It's frustrating that IE behaves this way, because as far as I know, this is the only case where reuse of the full-size asset for the smaller usecase results in such undesirable behavior. Oh well.

I'm not actually sure the best way to get resizable SVGs across the board, but for other apps we've been avoiding the problem by reexporting the SVG at 24x24 pixels, and including that asset in the manifest as well. I'd probably recommend that approach here for now, unless you're super excited about digging up a better alternative. (If you are feeling adventurous, the IE virtual machines from http://modern.ie have proven useful to me in the past.)

Everything seems fine in Firefox and Chrome; it seems to be just IE that's pedantic about this particular behavior.

Let me know if I can help in any way here! :)

File modification times

It would be nice if FileDrop displayed modification times for files. Use case: I currently have a filedrop grain that contains the latest spk for sandcal, but @ocdtrekkie mentioned the other day that it's hard to tell whether it's been updated with the latest changes.

Can't click out of overflow menu.

If you click on one of the Download/Delete dot menu thingies, you cannot click off of it. You must click Download or Delete or, like, close the tab.

List of files unavailable.

I created a grain, dragged two files into it, that all works.
Close grain.
Open grain, and get "List of files unavailable. Retry?"

Tried it again with another file, same result.

Req: Batch upload/download

It would be nice to have a way to batch upload a group of files (drag and drop only uploads the first one) and a way of downloading a group of files (maybe create a ZIP on demand and download it).

Thanks!

Rebuild package with Sandstorm 0.168

Sorry to do this again.

Unfortunately, the sandstorm-http-bridge in version 0.166 has a subtle memory corruption bug. It's possible to observe the bug by refreshing FileDrop's frame repeatedly -- eventually, the app totally stops responding to requests and has to be restarted using the topbar reload button. (Note that this bug is not exploitable for RCE.)

This bug has been fixed in v0.168, which I just pushed now (run sandstorm update if you don't have it yet).

Lack of resume on large files

As well as a progress bar, the uploader also lacks the ability to upload part of a file. This is an example implementation in django (but the horsework is in javascript) which submits chunks of a large file and allows both parallel chunk upload, progress bars and resuming an upload even after restarting the browser/os.

https://github.com/farhat-lab/gentb-site/tree/master/apps/uploads

filedrop could do with all of these features and the javascript (non-jquery js) is fairly easy to adapt to most systems.

Lack of progress bar (which would be good for large files)

I was uploading a 170MB file to FileDrop, and there's no way for me to tell that it's working. It just looks like I didn't drop it. However, I am able to tell that it's probably working because of the lack of rate-limiting (e.g., because I'm taking up all the upload bandwidth right now).

Rebuild package with Sandstorm 0.166

Sandstorm build 0.166 updates sandstorm-http-bridge to support flow control, so that large downloads don't buffer in RAM in the front-end causing OOM crashes, which are currently the biggest production issue for Sandstorm Oasis (causing brief outages about 2-3 times per week).

Since sandstorm-http-bridge is bundled into app packages, apps need to be updated for this change to take effect. FileDrop is one of the apps that is often used for large file downloads. Can you please rebuild FileDrop against the latest Sandstorm and push an update?

Thanks!

fails to compile because zombiezen.com/go/webapp missing

Hey, I know this package hasn't been touched for quite a while. I was looking for an example of a sandstorm app written in go, to better understand writing sandstorm app.

Anyway, just FYI, this doesn't build because zombiezen.com no longer serves zombiezen.com/go/webapp.

$ go get -d github.com/zombiezen/filedrop
package zombiezen.com/go/webapp: unrecognized import path "zombiezen.com/go/webapp" (parse https://zombiezen.com/go/webapp?go-get=1: no go-import meta tags ())

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.