Plumbings to share files with your friends.
JavaScript Erlang CSS
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
include
priv
public
src
.gitignore
CONTRIBUTING.md
LICENSE.txt
Makefile
Pipes_to_infinity.by_Ranjith_Siji.jpg
README.md
erlang.mk

README.md

Fipes, plumbings to share files

Fipes provides you a simple way to share files with your friends.

Goals

  • Provides a small web application.
  • Easy to install, easy to launch, easy to use.
  • Doesn't keep any data about you or your files.
  • Free as in freedom.

Getting Started

Requirements

Install the project

$ git clone https://github.com/tOkeshu/fipes.git
$ cd fipes
$ git checkout -b stable v0.1.0 # last stable version
$ make

These commands should pull the Erlang dependencies.

Configure Nginx

Here is a sample configuration for nginx (you will need nginx 1.4 or later to have WebSocket proxying):

# /etc/nginx/sites-available/fipes.example.com
server {
    listen 80;
    # Or the line below if you want https
    # listen 443 ssl;

    root /path/to/fipes/public;
    index index.html index.htm;

    server_name fipes.example.com;
    server_name_in_redirect off;

    # Uncomment the lines below if you want https
    # ssl_certificate     /path/to/fipes.crt;
    # ssl_certificate_key /path/to/fipes.key;
    # ssl_protocols       SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    # ssl_ciphers         HIGH;

    location / {
        proxy_read_timeout 900;
        proxy_pass http://127.0.0.1:3473;
    }

    # We need to turn off the buffering for Server-Sent Events
    location /stats {
        proxy_buffering off;
        proxy_pass http://127.0.0.1:3473/stats;
    }

    # WebSocket proxying (requires nginx 1.4 or later)
    location ~ /fipes/([^/]+)$ {
        proxy_read_timeout 900;

        proxy_http_version 1.1;
        proxy_pass http://127.0.0.1:3473/fipes/$1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
    }

    # Uncomment the lines below if you want to launch the js tests
    #
    # location /tests/ {
    #     proxy_pass http://127.0.0.1:3473/tests.html;
    # }
}

# You may want to uncomment the lines below to always redirect
# http to https
# server {
#     listen 80;
#     server_name fipes.example.com;
#     # Redirect http to https
#     rewrite ^ https://$server_name$request_uri? permanent;
# }

Enable your site:

$ sudo ln -s /etc/nginx/sites-available/fipes.example.com /etc/nginx/sites-enabled/fipes.example.com
$ sudo /etc/init.d/nginx reload

Start the server

$ cd fipes
$ make start # start the server as a daemon on port 3473

Then open a browser to http://fipes.example.com (where fipes.example.com is your domain).

If you just want to test the application on your machine, just edit your /etc/hosts:

# /etc/hosts
127.0.1.1   fipes.example.com

and launch the server with:

$ make dev

Bugs/Pitfalls

  • Fipes is not p2p. However no data is stored on the server ever. The data just pass through the server, that's all.

  • Reloading the page while you're in a Fipe will stops the browser from serving your files. This is normal as the JavaScript File objects are lost while refreshing the page. You'll have to offers these files again.

  • For now, anyone can enter a Fipe.

Contribute

See CONTRIBUTING.md in this repository for the contributing guidelines.

What about the name

Fipes is a Portmanteau word combined from the two words file and pipes. In other words, Fipes can be seen as a pipe for files.

License

Fipes is released under the terms of the GNU Affero General Public License v3 or later.