Update authors in README
[coquelicot.git] / README
1 About “Coquelicot”
2 ==================
3
4 [Coquelicot] — /kɔ.kli.ko/ —  is a "one-click" file sharing web application
5 with a focus on protecting users' privacy.
6
7 Basic principle: users can upload a file to the server, in return they
8 get a unique URL which can be shared with others in order to download
9 the file.
10
11 Coquelicot aims to protect, to some extent, users and system
12 administrators from disclosure of the files exchanged from passive and
13 not so active attackers.
14
15 [Coquelicot]: https://coquelicot.potager.org/
16
17 Features
18 --------
19
20  * Support for different authentication methods
21
22    In order to prevent random Internet users to eat bandwidth and
23    disk space, Coquelicot limits upload to authenticated users.
24    It currently ships with three authentication mechanisms:
25
26     - "simplepass": uploading users need to provide a global,
27       pre-shared, password;
28     - "imap": users will need to provide a login and a password,
29       that are used to authenticate against an existing IMAP server.
30     - "ldap": users will need to provide a uid and a password,
31       that are used to authenticate against an existing LDAP server.
32
33    It is possible to integrate more authentication mechanisms by
34    implementing a single method, some JavaScript, and a partial template
35    to render the common fields. For more information have a look at the
36    notes below.
37
38  * Mandatory expiration
39
40    When uploading, a time limit has to be specified. The file will be
41    unavailable once this much time has passed.
42
43    During a configurable period of time, trying to download the file
44    will return a page saying "too late" instead of "not found".
45
46  * Support for one-time download
47
48    A user might want to allow exactly _one_ download of a file, to more
49    closely replace an email attachment. The file will be removed after
50    the first complete download and concurrent downloads are prevented.
51
52  * Upload progress bar
53
54    Users having JavaScript enabled will see a nice progress bar during
55    the file upload.
56
57  * Downgrade nicely
58
59    The application works fine without JavaScript or CSS.
60
61  * Download URL can be written on paper
62
63    URLs generated to download files uses the Base32 character set. This
64    set is specifically designed to overcome misread of 'l', '1', '0' and
65    'O' characters. Coquelicot will automatically convert case and
66    ambiguous characters to facilitate URL exchanges using pieces of
67    paper.
68
69  * Files are stored encrypted on the server
70
71    While being uploaded, files are written to the disk using symmetric
72    encryption. The encryption key is _not_ stored directly by
73    Coquelicot. It is either generated randomly and given as part of the
74    download URL, or specified by the uploader.
75
76  * Download can be protected by a password
77
78    When uploading, a password can be specified which will then be used
79    to encrypt the file. For subsequent downloads, the password
80    must be entered through in a POST'ed form. This prevents the password
81    from appearing in most server logs.
82
83  * Files are stored with a random name
84
85    To prevent disclosure of the shared file name, it is stored encrypted
86    together with the file content. On the server, this encrypted file is
87    stored with a random name.
88
89  * Download URLs do not reflect stored file names
90
91    The random names given in download URLs do not map directly to file
92    names on the server. This prevent server logs from giving a direct
93    mapping to the shared files. This creates another difficulty to
94    link users to files through forensic techniques.
95
96  * File content is zero'ed before removal
97
98    When a file has expired, it is removed from the server. In order
99    to make it harder to retrieve its content through filesystem
100    analysis, it is filled with zeros first.
101
102 Authors
103 -------
104
105     Coquelicot © 2010-2016 potager.org <jardiniers@potager.org>
106                © 2014-2016 Rowan Thorpe <rowan@rowanthorpe.com>
107                © 2010-2012 Jake Santee <jake@nadir.org>
108                © 2012 Silvio Rhatto <rhatto@riseup.net>
109                © 2011 mh / immerda.ch  <mh+coquelicot@immerda.ch>
110
111 Coquelicot is distributed under the [GNU Affero General Public License]
112 version 3 or (at your option) any later version.
113
114 Background image (`public/images/background.jpg`) derived from:  
115 [“coquelicot” picture] © 2008 Jean-Louis Zimmermann  
116 Licensed under [Creative Commons Attributions 2.0 Generic]  
117
118 *jQuery* is © 2011 John Resig. Licensed under the [MIT license].  
119 *jquery.uploadProgress* is © 2008 Piotr Sarnacki. Licensed under the
120 [MIT license].  
121 *lightboxFu* is © 2008 Piotr Sarnacki. Licensed under the [MIT license].
122
123 [“coquelicot” picture]: https://secure.flickr.com/photos/jeanlouis_zimmermann/2478019744/
124 [GNU Affero General Public License]: http://www.gnu.org/licenses/agpl.txt
125 [Creative Commons Attributions 2.0 Generic]: https://creativecommons.org/licenses/by/2.0/deed
126 [MIT license]: http://www.opensource.org/licenses/mit-license.php