Luc Didry 3e2ff5
# Lufi
Luc Didry 3e2ff5
Luc Didry 3e2ff5
## What does Lufi mean?
Luc Didry 3e2ff5
Luc Didry fef978
Lufi means Let's Upload that FIle. It's a E2E encrypted file sharing software.
Luc Didry 3e2ff5
Ilker Kulgu a6a58e
## Which browsers are compatible?
Ilker Kulgu a6a58e
Ilker Kulgu a6a58e
Lufi is tested and working on the following browsers / devices :
Ilker Kulgu a6a58e
    - Firefox
Ilker Kulgu a6a58e
    - Chrome
Ilker Kulgu a6a58e
    - Internet Explorer 11
Ilker Kulgu a6a58e
    - Microsoft Edge
Ilker Kulgu a6a58e
    - Safari
Ilker Kulgu a6a58e
    - iOS devices (ipad, iphone)
Ilker Kulgu a6a58e
    - Android devices (Galaxy tab, Galaxy S8)
Ilker Kulgu a6a58e
Luc Didry 3e2ff5
## What does it do?
Luc Didry 3e2ff5
Luc Didry 3e2ff5
It stores files and allows you to download them.
Luc Didry 3e2ff5
Sebastien Duthil 837a8c
Is that all? No. All the files are encrypted **by the browser**! It means that your files **never** leave your computer unencrypted.
Sebastien Duthil 837a8c
The administrator of the Lufi instance you use will not be able to see what is in your file, neither will your network administrator, or your ISP.
Luc Didry 3e2ff5
Armando Lüscher c3e7a2
The encryption key part of the URL is a anchor (Cf. [Fragment Identifier](https://en.wikipedia.org/wiki/Fragment_identifier)), that means this part is only processed client-side and does not reach the server. :-)
Luc Didry 7b7d1e
Luc Didry 3e2ff5
## License
Luc Didry 3e2ff5
Luc Didry 291b1d
Lufi is licensed under the terms of the AGPL. See the [LICENSE](LICENSE) file.
Luc Didry 3e2ff5
Luc Didry 3e2ff5
## Official instance
Luc Didry 3e2ff5
Luc Didry 291b1d
There is a demonstration site, available at <https://demo.lufi.io>, with strong limitations on time and file size.
Luc Didry 291b1d
Armando Lüscher c3e7a2
To really use Lufi, you can go to <https://framadrop.org>, provided by the [Framasoft association](https://framasoft.org) (you can help them to keep providing free services at <https://soutenir.framasoft.org>).
Luc Didry 3e2ff5
Luc Didry 3e2ff5
## Logo
Luc Didry 3e2ff5
Luc Didry 3e2ff5
Because Lufi is quite similar to Luffy, like in "[Monkey D. Luffy](https://en.wikipedia.org/wiki/Monkey_D._Luffy)" from [One Piece](https://en.wikipedia.org/wiki/One_Piece) manga, the logo is a straw hat, made with pain, love and [Inkscape](https://inkscape.org/).
Luc Didry 3e2ff5
Luc Didry 3e2ff5
## Wiki (work in progress)
Luc Didry 3e2ff5
Luc Didry a04f83
The official wiki will contain all you need to know about Lufi (installation, configuration, etc.). Go to <https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/home> or clone it:
Luc Didry 3e2ff5
Luc Didry 3e2ff5
```
Luc Didry a04f83
git clone https://framagit.org/fiat-tux/hat-softwares/lufi.wiki.git
Luc Didry 3e2ff5
```
Luc Didry 3e2ff5
Luc Didry 3e2ff5
## Encryption
Luc Didry 3e2ff5
Armando Lüscher c3e7a2
All the encryption/decryption processes take place in your browser. The encryption key is never sent over the network.
Luc Didry 3e2ff5
Armando Lüscher 0fa52a
However please note that some metadata are sent unencrypted:
Luc Didry 3e2ff5
Luc Didry 3e2ff5
* the file name
Luc Didry 3e2ff5
* its size
Luc Didry 3e2ff5
* its mimetype
Luc Didry 3e2ff5
Luc Didry 4c41cb
## Client
Luc Didry 4c41cb
Luc Didry a04f83
There is the web interface, but you can use a CLI client too! Have a look at [lufi-cli](https://framagit.org/fiat-tux/hat-softwares/lufi-cli) or install it directly with `sudo npm install -g lufi-cli`.
Luc Didry a04f83
Luc Didry a04f83
There is another client in Python too: <https://framagit.org/setop/pylufic>.
Luc Didry 4c41cb
Luc Didry 3e2ff5
## Internationalization
Luc Didry 3e2ff5
Luc Didry fef978
Lufi comes with several languages.
Luc Didry 3e2ff5
Luc Didry fef978
Please, see [this wiki page](https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/contribute#internationalization) to know how to contribute to internationalization.
Luc Didry 291b1d
Luc Didry 3e2ff5
## Authors
Luc Didry 3e2ff5
Luc Didry 3e2ff5
See [AUTHORS.md](AUTHORS.md) file.
Luc Didry 3e2ff5
Luc Didry 3e2ff5
## Contribute!
Luc Didry 3e2ff5
Luc Didry a04f83
Please consider contributing, either by [reporting issues](https://framagit.org/fiat-tux/hat-softwares/lufi/issues) or by helping the internationalization. And of course, code contributions are welcome!
Luc Didry 3e2ff5
Luc Didry a04f83
The details on how to contribute are on the [wiki](https://framagit.org/fiat-tux/hat-softwares/lufi/wikis/contribute).
Luc Didry 3e2ff5
Luc Didry fef978
This software uses [Fiat Tux Code of conduct](https://framagit.org/fiat-tux/code-of-conduct/blob/master/README.md).
Luc Didry fef978
Luc Didry d94c2b
## Make a donation
Luc Didry d94c2b
Luc Didry d94c2b
You can make a donation to the author on [Tipeee](https://www.tipeee.com/fiat-tux) or on [Liberapay](https://liberapay.com/sky/).
Luc Didry d94c2b
Sebastien Duthil 837a8c
## Other dependencies
Luc Didry 3e2ff5
Luc Didry 3e2ff5
Lufi is written in Perl with the [Mojolicious](http://mojolicio.us) framework.
Luc Didry 3e2ff5
Luc Didry 3e2ff5
It uses:
Luc Didry 3e2ff5
Luc Didry 291b1d
* [Materialize](http://materializecss.com/) framework to look not too ugly
Luc Didry 291b1d
* [jQuery](https://jquery.com)
Luc Didry 3e2ff5
* [Stanford Javascript Crypto Library](http://bitwiseshiftleft.github.com/sjcl/)
Luc Didry 3e2ff5
* [Moment.js](http://momentjs.com/) for displaying real dates instead of unix timestamps.
Luc Didry 291b1d
* [Filesize.js](http://filesizejs.com/) for displaying file sizes
arunodhayamsam 027d5f
arunodhayamsam 027d5f
## Deploy Lufi
arunodhayamsam 027d5f
arunodhayamsam 027d5f
An ansible role and a terraform plan reside under the `.provision` directory. An user could utilize the terraform plan if they chose to deploy lufi on AWS, if that's not the goal, they could simply execute the ansible role in part. Usage docs for both are present in their respective directories.