⚠️ Please note that this project has been archived and is no longer maintained
just-drop-it allows you to simply and instantly send a file to a friend, whatever your network configuration (proxies, VPN, and such). Just open your browser, drop the file in it and send the generated link to your friend : the file will be beamed to him without being stored on any platform.
We thought that this kind of tool was missing in our work environment, so we tried to set one up. Lucky for us, tools like Node.js, Express, socket.IO and socket.IO-stream made it quite easy to get something up and running.
It couldn't be more simple (but you will need a running instance of just-drop-it. If you don't have one see the section below
- open your just-drop-it in your browser
- drop your file (just one please)
- send the generated link to your friends
- keep your browser open until your friends received the complete file
Download and install Node.js. Then:
- Download the source code
- Download the needed dependencies (first time only):
npm install
- Start Node.js server:
npm start
(to start the server in dev mode wit hot reload:npm run start-dev
)
We provide our own docker image to deploy Node.js.
- Build the image (first time):
docker build -t just-drop-it .
(add--build-arg HTTP_PROXY=http://proxy-host:<proxy-port> --build-arg HTTPS_PROXY=proxy-host:<proxy-port>
if you are running behind a proxy) - Run the image (first time):
docker run --name just-drop-it -p 8080:8080 -d just-drop-it
(next time you will just have to start it withdocker start just-drop-it
)
just-drop-it should work on OpenShift3 instances. Just create a Node.js v6 app and synchronize its git repository with our.
More details on our implementation, to be updated.
To meet the requirements, we chose the followings:
- Node.js
- Express
- socket.io: this allows us communication between clients and server.
- socket.io stream: this allows us to stream the file between sender and server.
Handling network cutting is a hassle. The most common scenario is the following:
- a big file transfer is ongoing
- one of the proxies cut the transfer connection
- Not only neither the server nor the receiver are notified that the transfer failed, but also will the download in browser be let in a success state, even if all the file size was not received.
In order to provide a better monitoring, the number of bytes written on the http download socket are monitored, allowing us to:
- provide real download progress
- close a transfer that has been closed by the network
- control that when a socket is closed, all the file size bytes has been written on it