sqlite.conf 14.2 KB
Newer Older
Luc Didry's avatar
Luc Didry committed
1
2
3
4
5
6
7
8
# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
{
    ####################
    # Hypnotoad settings
    ####################
    # see http://mojolicio.us/perldoc/Mojo/Server/Hypnotoad for a full list of settings
    hypnotoad => {
        # array of IP addresses and ports you want to listen to
9
        # you can specify a unix socket too, like 'http+unix://%2Ftmp%2Flufi.sock'
Luc Didry's avatar
Luc Didry committed
10
11
12
13
14
15
16
17
18
19
20
        listen => ['http://127.0.0.1:8081'],
        # if you use Lufi behind a reverse proxy like Nginx, you want to set proxy to 1
        # if you use Lufi directly, let it commented
        #proxy  => 1,

        # Please read http://mojolicious.org/perldoc/Mojo/Server/Hypnotoad#workers
        # to adjust this to your server
        workers => 30,
        clients => 1,
    },

21
22
    # Put a way to contact you here and uncomment it
    # You can put some HTML in it
Luc Didry's avatar
Luc Didry committed
23
24
25
    # MANDATORY
    contact       => '<a href="https://contact.example.com">Contact page</a>',

26
27
    # Put an URL or an email address to receive file reports and uncomment it
    # It's for make reporting illegal files easy for users
Luc Didry's avatar
Luc Didry committed
28
29
30
    # MANDATORY
    report => 'report@example.com',

31
    # Array of random strings used to encrypt cookies
Luc Didry's avatar
Luc Didry committed
32
33
34
    # optional, default is ['fdjsofjoihrei'], PLEASE, CHANGE IT
    #secrets        => ['fdjsofjoihrei'],

35
36
37
38
    # Name of the instance, displayed next to the logo
    # optional, default is Lufi
    #instance_name => 'Lufi',

39
40
    # Choose a theme. See the available themes in `themes` directory
    # Optional, default is 'default'
Luc Didry's avatar
Luc Didry committed
41
42
    #theme         => 'default',

43
    # Length of the random URL
Luc Didry's avatar
Luc Didry committed
44
45
46
    # optional, default is 8
    #length            => 8,

47
    # How many URLs will be provisioned in a batch ?
Luc Didry's avatar
Luc Didry committed
48
49
50
    # optional, default is 5
    #provis_step       => 5,

51
    # Max number of URLs to be provisioned
Luc Didry's avatar
Luc Didry committed
52
53
54
    # optional, default is 100
    #provisioning      => 100,

55
    # Length of the modify/delete token
Luc Didry's avatar
Luc Didry committed
56
57
58
    # optional, default is 32
    #token_length      => 32,

59
60
    # Max file size, in octets
    # You can write it 100*1024*1024
Luc Didry's avatar
Luc Didry committed
61
62
63
    # optional, no default
    #max_file_size     => 104857600,

64
65
    # If you want to have piwik statistics, provide a piwik image tracker
    # Only the image tracker is allowed, no javascript
Luc Didry's avatar
Luc Didry committed
66
67
68
    # optional, no default
    #piwik_img         => 'https://piwik.example.org/piwik.php?idsite=1&amp;rec=1',

69
    # Broadcast_message which will displayed on the index page
Luc Didry's avatar
Luc Didry committed
70
71
72
    # optional, no default
    #broadcast_message => 'Maintenance',

73
74
    # Default time limit for files
    # Valid values are 0, 1, 7, 30 and 365
Luc Didry's avatar
Luc Didry committed
75
76
77
    # optional, default is 0 (no limit)
    #default_delay     => 0,

78
79
    # Number of days after which the images will be deleted, even if they were uploaded with "no delay" (or value superior to max_delay)
    # A warning message will be displayed on homepage
Luc Didry's avatar
Luc Didry committed
80
81
82
    # optional, default is 0 (no limit)
    #max_delay         => 0,

83
84
85
    # Size thresholds: if you want to define max delays for different sizes of file
    # The keys are size in Bytes, you can't have 10*1000*10000 as key
    # If a file is smaller than the smallest configured size, it will have a expiration delay of max_delay (see above)
Luc Didry's avatar
Luc Didry committed
86
87
88
89
90
91
92
93
94
95
96
97
98
    # optional, default is using max_delay (see above) for all sizes
    #delay_for_size  => {
    #    10000000   => 90, # between 10MB and 50MB => max is 90 days, less than 10MB => max is max_delay (see above)
    #    50000000   => 60, # between 50MB ans 1GB  => max is 60 days
    #    1000000000 => 2,  # more than 1GB         => max is 2 days
    #},

    # URL sub-directory in which you want Lufi to be accessible
    # example: you want to have Lufi under https://example.org/lufi/
    # => set prefix to '/lufi' or to '/lufi/', it doesn't matter
    # optional, defaut is /
    #prefix        => '/',

99
100
    # Array of authorized domains for API calls.
    # If you want to authorize everyone to use the API: ['*']
Luc Didry's avatar
Luc Didry committed
101
102
103
    # optional, no domains allowed by default
    #allowed_domains   => ['http://1.example.com', 'http://2.example.com'],

104
105
106
107
108
109
110
    # Define a path to the upload directory, where the uploaded files will be stored
    # You can define it relative to lufi directory or set an absolute path
    # Remember that it has to be in a directory writable by Lufi user
    # DO NOT CHANGE THIS IF FILES HAVE BEEN ALREADY UPLOADED: THEY WILL NOT BE DOWNLOADABLE ANYMORE
    # optional, default is 'files'
    #upload_dir           => 'files',

111
112
113
114
115
116
    # You can store files on Swift object storage (https://en.wikipedia.org/wiki/OpenStack#Swift) instead of filesystem
    # Please read https://metacpan.org/pod/Net::OpenStack::Swift#SYNOPSIS to know how to configure this setting
    # IMPORTANT: add a `container` key in it, to let Lufi know which container to use. This is not a regular Net::OpenStack::Swift setting, but Lufi need it.
    # optional, no default
    #swift => { auth_url => 'http://swiftstack-picoswiftstack:8080/auth/v1.0', user => 'test', password => 'test', container => 'lufi', auth_version => '1.0' },

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
    # Allow to add a password on files, asked before allowing to download files
    # optional, default is 0
    allow_pwd_on_files => 1,

    # Force all files to be in "Burn after reading mode"
    # optional, default is 0
    #force_burn_after_reading => 0,

    # If set, the files' URLs will always use this domain
    # optional, no default
    #fixed_domain => 'example.org',

    # Abuse reasons
    # Set an integer in the abuse field of a file in the database and it will not be downloadable anymore
    # The reason will be displayed to the downloader, according to the reasons you will configure here.
    # optional, no default
    #abuse => {
    #   0 => 'Copyright infringment',
    #   1 => 'Illegal content',
    #},
    abuse => {
       0 => 'Copyright infringment',
       1 => 'Illegal content',
    },

    ###############
    # Mail settings
    ###############

Luc Didry's avatar
Luc Didry committed
146
147
    # Mail configuration
    # See https://metacpan.org/pod/Mojolicious::Plugin::Mail#EXAMPLES
148
    # optional, default to sendmail method with no arguments
Luc Didry's avatar
Luc Didry committed
149
150
151
152
153
154
155
    #mail => {
    #    # Valid values are 'sendmail' and 'smtp'
    #    how => 'smtp',
    #    howargs => ['smtp.example.org']
    #},

    # Email sender address
156
    # optional, default to no-reply@lufi.io
Luc Didry's avatar
Luc Didry committed
157
158
    #mail_sender => 'no-reply@lufi.io',

159
160
161
162
163
164
    #############
    # DB settings
    #############

    # Choose what database you want to use
    # Valid choices are sqlite, postgresql and mysql (all lowercase)
Luc Didry's avatar
Luc Didry committed
165
166
167
168
    # optional, default is sqlite
    #dbtype => 'sqlite',

    # SQLite ONLY - only used if dbtype is set to sqlite
169
170
171
    # Define a path to the SQLite database
    # You can define it relative to lufi directory or set an absolute path
    # Remember that it has to be in a directory writable by Lufi user
Luc Didry's avatar
Luc Didry committed
172
173
174
175
    # optional, default is lufi.db
    db_path           => 'sqlite.db',

    # PostgreSQL ONLY - only used if dbtype is set to postgresql
176
    # These are the credentials to access the PostgreSQL database
Luc Didry's avatar
Luc Didry committed
177
178
179
180
    # mandatory if you choosed postgresql as dbtype
    #pgdb => {
    #    database => 'lufi',
    #    host     => 'localhost',
Luc Didry's avatar
Luc Didry committed
181
182
183
184
185
186
187
188
189
190
    #    # optional, default is 5432
    #    #port     => 5432,
    #    user     => 'DBUSER',
    #    pwd      => 'DBPASSWORD',
    #    # https://mojolicious.org/perldoc/Mojo/Pg#max_connections
    #    # optional, default is 1
    #    #max_connections => 1,
    #},

    # MySQL ONLY - only used if dbtype is set to mysql
191
    # These are the credentials to access the MySQL database
Luc Didry's avatar
Luc Didry committed
192
193
194
195
196
197
198
199
200
201
202
    # mandatory if you choosed mysql as dbtype
    #mysqldb => {
    #    database => 'lufi',
    #    host     => 'localhost',
    #    # optional, default is 3306
    #    #port     => 3306,
    #    user     => 'DBUSER',
    #    pwd      => 'DBPASSWORD',
    #    # https://metacpan.org/pod/Mojo::mysql#max_connections
    #    # optional, default is 5 (set to 0 to disable persistent connections)
    #    #max_connections => 5,
Luc Didry's avatar
Luc Didry committed
203
204
    #},

205
206
207
    #############################################
    # LDAP settings (authentication and features)
    #############################################
Luc Didry's avatar
Luc Didry committed
208

209
210
    # Set `ldap` if you want that only authenticated users can upload files
    # Please note that everybody can still download files
Luc Didry's avatar
Luc Didry committed
211
    # optional, no default
212
    #ldap => { uri => 'ldap://rroemhild-test-openldap:10389', user_tree => 'ou=people,dc=planetexpress,dc=com', bind_dn => 'cn=admin,dc=planetexpress,dc=com', bind_pwd => 'GoodNewsEveryone', user_attr => 'uid', user_filter => '' },
Luc Didry's avatar
Luc Didry committed
213

214
    # If you've set ldap above, the session will last `session_duration` seconds before
Luc Didry's avatar
Luc Didry committed
215
216
217
218
    # the user needs to reauthenticate
    # optional, default is 3600
    #session_duration => 3600,

219
220
221
222
223
224
225
    # If you use `ldap` for authentication, you can map some attributes from LDAP to be able to access them in Lufi
    # Those attributes will be accessible with:
    #   $c->current_user->{lufi_attribute_name} in Lufi backend files (all that is in `lib` directory)
    #   <%= $self->current_user->{lufi_attribute_name} %> in templates files (in `themes` directory)
    #
    # Define the attributes like this: `lufi_attribute_name => 'LDAP_attribute_name'`
    # Note that you can’t use `username` as a Lufi attribute name: this name is reserved and will contain the login of the user
226
    # optional, no default
227
228
229
230
    #ldap_map_attr => {
    #    displayname => 'cn',
    #    mail        => 'mail'
    #},
Luc Didry's avatar
Luc Didry committed
231

232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
    # When using LDAP authentication, LDAP users can invite people (by mail) to use Lufi to send them files without
    # being authenticated.
    # This is where you configure the behavior of the invitations.
    # You may need to fetch some attributes from LDAP to use some invitations settings. See `ldap_map_attr` above.
    # optional, no default
    #invitations => {
    #   # The name of the key set in `ldap_map_attr` (above) that corresponds to the mail of the LDAP user
    #   # optional, default is `mail`
    #   mail_attr => 'mail',
    #   # The `From` header of invitation mail can be the mail of the LDAP user
    #   # Be sure to have a mail system that will correctly send the mail from your users! (DKIM, SPF…)
    #   # To enable this feature, set it to 1
    #   # optional, disabled by default
    #   send_invitation_with_ldap_user_mail => 1,
    #   # The user is able to set an expiration delay for the invitation.
    #   # This expiration delay can’t be more than this setting (in days).
    #   # optional, default is 30 days
    #   max_invitation_expiration_delay => 30,
    #   # Once the guest has submitted his files, he has an additional period of time to submit forgotten files.
    #   # You can set that additional period of time in minutes here.
    #   # To disable that feature, set it to 0 or less
    #   # optional, default is 10 minutes
    #   max_additional_period => 10,
    #   # Lufi follows privacy-by-design, so, by default, no files URLs (with the decode secret) are stored in database.
    #   # However, the concern is different for this case. Storing files URLs makes users able to retrieve the guests’ sent files
    #   # from their `invitations` page.
    #   # Set to 1 to store guests’ files URLs in database
    #   # optional, default is 0 (disabled)
    #   save_files_url_in_db => 0,
    #   # Users can resend the invitation to their guest. This does not extend the invitation’s expiration delay unless you
    #   # set this option to 1.
    #   # optional, default is 0 (disabled)
    #   extend_invitation_expiration_on_resend => 0,
    #},

267
268
269
    #########################
    # Htpasswd authentication
    #########################
Luc Didry's avatar
Luc Didry committed
270

271
272
273
    # Set `htpasswd` if you want to use an htpasswd file instead of ldap
    # See 'man htpasswd' to know how to create such file
    #htpasswd => 't/lstu.passwd',
Luc Didry's avatar
Luc Didry committed
274

275
276
277
    #######################
    # HTTP Headers settings
    #######################
Luc Didry's avatar
Luc Didry committed
278
279
280
281
282

    # Content-Security-Policy header that will be sent by Lufi
    # Set to '' to disable CSP header
    # https://content-security-policy.com/ provides a good documentation about CSP.
    # https://report-uri.com/home/generate provides a tool to generate a CSP header.
283
284
    # optional, default is "base-uri 'self'; connect-src 'self' ws://YOUR_HOST; default-src 'none'; font-src 'self'; form-action 'self'; frame-ancestors 'none'; img-src 'self' blob:; media-src blob:; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'"
    #csp => "",
Luc Didry's avatar
Luc Didry committed
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310

    # X-Frame-Options header that will be sent by Lufi
    # Valid values are: 'DENY', 'SAMEORIGIN', 'ALLOW-FROM https://example.com/'
    # Set to '' to disable X-Frame-Options header
    # See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
    # Please note that this will add a "frame-ancestors" directive to the CSP header (see above) accordingly
    # to the chosen setting (See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors)
    # optional, default is 'DENY'
    #x_frame_options => 'DENY',

    # X-Content-Type-Options that will be sent by Lufi
    # See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
    # Set to '' to disable X-Content-Type-Options header
    # optional, default is 'nosniff'
    #x_content_type_options => 'nosniff',

    # X-XSS-Protection that will be sent by Lufi
    # See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
    # Set to '' to disable X-XSS-Protection header
    # optional, default is '1; mode=block'
    #x_xss_protection => '1; mode=block',

    #########################
    # Lufi cron jobs settings
    #########################

311
312
    # Number of days senders' IP addresses are kept in database
    # After that delay, they will be deleted from database (used with script/lufi cron cleanbdd)
Luc Didry's avatar
Luc Didry committed
313
314
315
    # optional, default is 365
    #keep_ip_during    => 365,

316
317
    # Max size of the files directory, in octets
    # Used by script/lufi cron watch to trigger an action
Luc Didry's avatar
Luc Didry committed
318
319
320
    # optional, no default
    #max_total_size    => 10*1024*1024*1024,

321
322
323
    # Default action when files directory is over max_total_size (used with script/lufi cron watch)
    # Valid values are 'warn', 'stop-upload' and 'delete'
    # Please, see README.md
Luc Didry's avatar
Luc Didry committed
324
325
326
    # optional, default is 'warn'
    #policy_when_full  => 'warn',

327
328
    # Files which are not viewed since delete_no_longer_viewed_files days will be deleted by the cron cleanfiles task
    # If delete_no_longer_viewed_files is not set, the no longer viewed files will NOT be deleted
Luc Didry's avatar
Luc Didry committed
329
330
331
    # optional, no default
    #delete_no_longer_viewed_files => 90,
};