Use StringField to search users by email
[cds-indico.git] / etc / indico.conf.sample
blob0f135e94c82170f736c2d8b5ebe4cbd94ee87103
2 #--------------------------
3 # Indico configuration file
4 #--------------------------
6 # This file is read on Apache startup. If you change any value you will need to
7 # restart Apache afterwards to have its changes take effect.
9 # Lines starting with "#" are comments and they will be ignored by Indico.
11 #------------------------------------------------------------------------------
12 # ZODB
13 #------------------------------------------------------------------------------
15 DBConnectionParams   = ("localhost", 9675)
16 DBUserName           = ""
17 DBPassword           = ""
18 DBRealm              = ""
20 #------------------------------------------------------------------------------
21 # SQLAlchemy DB
22 #------------------------------------------------------------------------------
24 SQLAlchemyDatabaseURI  = 'postgresql://localhost/indico'
26 # Uncomment to echo requests
27 # SQLAlchemyEcho = True
29 # Uncomment if you wish to record queries
30 # SQLAlchemyRecordQueries = True
32 # Size of the connection pool (default = 5)
33 # SQLAlchemyPoolSize = 5
35 # Connection timeout
36 # SQLAlchemyPoolTimeout = 10
38 # Number of seconds after which a connection is automatically
39 # recycled (default = 120)
40 # SQLAlchemyPoolRecycle = 120
42 # Number of connections that can be breated after pool is at maximum
43 # size (default = 3)
44 # SQLAlchemyMaxOverflow = 3
46 #------------------------------------------------------------------------------
47 # REDIS
48 #------------------------------------------------------------------------------
50 # To enable redis, specify a valid redis connection string here.
51 # Example: redis://unused:password@localhost:6379/0
52 # You also need to install the python redis client (pip install redis hiredis)
53 # Note that the Redis server needs to run at least Redis 2.6 with LUA support.
54 #RedisConnectionURL = None
56 #------------------------------------------------------------------------------
57 # SECURITY
58 #------------------------------------------------------------------------------
59 # Possible values of SanitizationLevel:
60 #    0: Escape all HTML tags
61 #    1: Raise error if styles are used
62 #    2: Raise error if SCRIPT tag is used
63 #    3: No input filtering is done (DANGEROUS!)
65 SanitizationLevel    = 2
67 # AuthenticatedEnforceSecure controls whether HTTPS should be enforced for
68 # authentication and while logged in.
69 AuthenticatedEnforceSecure = "yes"
71 # Possible values of CSRFLevel:
72 #    0: Disable all CSRF checks (DANGEROUS!)
73 #    1: Check CSRF token for service requests
74 #    2: Check CSRF token for service requests and cookie-based API requests
75 #    3: The above & require an empty or valid referer for normal POST requests
76 CSRFLevel = 2
78 # To sign data such as activation tokens used in emails, Indico needs a secret
79 # key.  It should be a random string; the preferred way to generate it is using
80 # `import os; os.urandom(32)` in a Python shell.
81 SecretKey = ''
83 #------------------------------------------------------------------------------
84 # Development
85 #------------------------------------------------------------------------------
86 # Enable debug mode to get unminified assets, verbose error messages in the
87 # browser and various other things that are useful when developing indico or
88 # tracking down errors but should not be enabled for production systems.
89 #Debug = False
91 # You can force a certain number of (simulated) database conflicts on every
92 # by setting ForceConflicts to the number of conflict errors you want:
93 #ForceConflicts = 0
95 # You can cause all error-like exceptions (i.e. not something like AccessError)
96 # to be propagated outside the Indico WSGI app by enabling this option. This has
97 # the advantage of triggering the Werkzeug debugger of the embedded server even
98 # in case of e.g. a MaKaCError.
99 #PropagateAllExceptions = False
101 #------------------------------------------------------------------------------
102 # URLs
103 #------------------------------------------------------------------------------
104 # BaseURL is the url where Indico will be accessed:
106 BaseURL              = "http://localhost:8000"
108 # BaseSecureURL is the HTTPS location of Indico. Set empty string if you want to use http.
110 BaseSecureURL        = "https://localhost:8443"
113 # If you are using a custom user authentication system (see below) uncomment
114 # the following lines and specify the new URLs.
116 #   LoginURL             = ""
117 #   RegistrationURL      = ""
119 # Support the old mod_python-style URLs (conferenceDisplay.py?confId=123 etc.) by redirecting
120 # them to their new URL.
121 #RouteOldUrls = False
124 #------------------------------------------------------------------------------
125 # DIRECTORIES
126 #------------------------------------------------------------------------------
127 ArchiveDir           = "/opt/indico/archive"
128 BinDir               = "/opt/indico/bin"
129 ConfigurationDir     = "/opt/indico/etc"
130 DocumentationDir     = "/opt/indico/doc"
131 HtdocsDir            = "/opt/indico/htdocs"
132 LogDir               = "/opt/indico/log"
133 UploadedFilesTempDir = "/opt/indico/tmp"
134 XMLCacheDir          = "/opt/indico/cache"
135 # You can use 'redis', 'memcached' or 'files'. The files backend caches objects in
136 # XMLCacheDir while the Memcached backend uses one or more memcached servers.
137 #CacheBackend         = 'files'
138 # When using memcached, provide a tuple containing 'ip:port' entries for the
139 # memcached servers. Do not forget to firewall those servers as memcached has no
140 # authentication at all!
141 #MemcachedServers     = ('127.0.0.1:11211',)
142 # When using redis, provide a redis connection string for the Redis server.
143 #RedisCacheURL = 'redis://unused:password@localhost:6379/1'
145 #------------------------------------------------------------------------------
146 # SMTP
147 #------------------------------------------------------------------------------
148 SmtpServer           = ("localhost", 8025)
149 SmtpLogin            = ""
150 SmtpPassword         = ""
152 # If your SMTP server is using TLS write "yes", otherwise write "no"
154 SmtpUseTLS           = "no"
156 #------------------------------------------------------------------------------
157 # EMAIL ADDRESSES
158 #------------------------------------------------------------------------------
159 # SupportEmail is the email address where all automatically generated
160 # application errors will be sent to.
162 SupportEmail         = "root@localhost"
165 # PublicSupportEmail is an email address that will be shown in Indico and where
166 # users are expected to find help when they have using the website.
168 PublicSupportEmail   = "root@localhost"
170 # NoReplyEmail is the email address showed when we do not want the users to answer
171 # an automatically generated email.
173 NoReplyEmail         = "noreply-root@localhost"
176 #------------------------------------------------------------------------------
177 # FILE UPLOAD
178 #------------------------------------------------------------------------------
179 # Here you can limit the maximum size of all the uploaded files (in MB) in a
180 # request
181 # default: 0 (unlimited)
183 MaxUploadFilesTotalSize = 0
185 # Here you can limit the maximum size of an uploaded file (in MB)
186 # default: 0 (unlimited)
188 MaxUploadFileSize = 0
191 #------------------------------------------------------------------------------
192 # AUTOMATIC MAINTENANCE
193 #------------------------------------------------------------------------------
194 # Indico can automatically delete events older than a specified number of days.
195 # This is set on a per-category basis:
197 # CategoryCleanup = {
198 #   '2': 30  # delete events in category '2' that have been created more than 30 days ago
199 # }
201 # If you want maintenance operations to be logged under a user other than the
202 # the server administrator (id 0), you can customize it here:
204 # JanitorUserId = 0
206 #------------------------------------------------------------------------------
207 # STATIC FILE DELIVERY
208 #------------------------------------------------------------------------------
209 # Indico supports the use of the X-Sendfile and X-Accel-Redirect headers:
211 # http://blog.lighttpd.net/articles/2006/07/02/x-sendfile
212 # http://wiki.nginx.org/X-accel
214 # If your webserver supports this feature and you want to activate it,
215 # you should enable it here
217 # X-Sendfile (apache with mod_xsendfile, lighttpd):
218 # StaticFileMethod = 'xsendfile'
220 # X-Accel-Redirect (nginx):
221 # StaticFileMethod = ('xaccelredirect', {
222 #     '/opt/indico/archive': '/.xsf/archive',
223 #     '/opt/indico/cache': '/.xsf/cache',
224 #     '/opt/indico/htdocs': '/.xsf/htdocs'
225 # })
226 # Because of the way nginx works (using URLs instead of paths) you also need to map the .xsf urls to
227 # the paths in your nginx config (for each entry in the dict above):
228 # location /.xsf/archive/ {
229 #     internal;
230 #     alias /opt/indico/archive/;
231 # }
232 # DO NOT forget the "internal;" statement - it prevents users from accessing those URLs directly.
234 #StaticFileMethod = None
237 # Sessions are only stored for a certain time. You can modify the duration here. By setting
238 # the lifetime to 0 the cookie will expire when the browser is closed.
239 #SessionLifetime = 86400 * 31
241 # If indico is behind a proxy, the user's IP needs to be retrieved from the
242 # HTTP_X_FORWARDED_FOR header. To enable this behavior, set UseProxy to True.
243 # Note that this MUST NOT be enabled if the machine is accessible directly or
244 # users will be able to spoof their IP address!
245 #UseProxy = False
248 #------------------------------------------------------------------------------
249 # LOGGING
250 #------------------------------------------------------------------------------
251 # Indico lets you log error messages using two methods:
253 #  * Simple log files (default)
254 #  * Sentry (https://github.com/getsentry/sentry)
256 # Loggers              = ['sentry', 'files']
257 # SentryDSN            = 'http://user:password@logger.example.com/n'
258 # SentryLoggingLevel   = 'ERROR'  # default: 'WARNING'
261 #------------------------------------------------------------------------------
262 # OFFLINE WEBSITE PACKAGES CREATION
263 #------------------------------------------------------------------------------
264 # Indico allows users to download their event so they can run it offline.
266 # The OfflineStore variable points to a directory that Indico will use to store
267 # the offline website packages.
269 # If the OfflineStore variable is not set, the functionality will be disabled.
271 # OfflineStore         = "/opt/indico/archive"
274 #------------------------------------------------------------------------------
275 # LATEX/PDF GENERATION
276 #------------------------------------------------------------------------------
277 # Set the path to pdflatex if it's not within PATH:
278 # PDFLatexProgram = 'pdflatex'
280 # In strict mode, a non-zero status code is considered failure. Disable this if
281 # you have old contributions that contain invalid LaTeX and you prefer possibly
282 # weird-looking PDFs over an error and no PDF at all.
283 # StrictLatex = True
285 #------------------------------------------------------------------------------
286 # INDICO MOBILE
287 #------------------------------------------------------------------------------
289 # If you have an installation of the mobile version of Indico, you can enable the
290 # notification that encourages its usage when the user accesses the Desktop Indico
291 # from a mobile device. One only needs to add the URL of Indico mobile here:
292 # MobileURL = "http://m.indico.your.domain"
294 #------------------------------------------------------------------------------
295 # ACTIVE PLUGINS
296 #------------------------------------------------------------------------------
298 # List of plugins to be loaded on server start.
300 # Plugins = {'example'}
302 #------------------------------------------------------------------------------
303 # AUTHENTICATION
304 #------------------------------------------------------------------------------
305 # If you do not need integration with an existing authentication infrastructure
306 # such as LDAP, OAuth or a SSO system like Shibboleth, you do not have to set
307 # anything here. Having local identities enabled is sufficient:
308 # LocalIdentities = True
310 # When `LocalIdentities` is set to False, a link to an external registration
311 # page can be configured here:
312 # ExternalRegistrationURL = ''
314 # For advanced authentication and user information retrieval, Indico uses the
315 # Flask-Multipass library, so you can use any registered multipass auth/identity
316 # provider in Indico.  Using such providers requires additional configuration.
317 # Please note that the name of an identity provider MUST NOT be changed once
318 # it has been used, as it is referenced internally. Changing the title is fine
319 # though.
321 # For documentation on the providers and their config options see the
322 # documentation of multipass on the following site:
323 # https://flask-multipass.readthedocs.org/en/latest/
325 # In addition to the settings handled by multipass, you may use the following
326 # settings:
328 # Auth providers:
329 # - `default`
330 #    This must be set to `True` for exactly one form-based authentication
331 #    provide in case you have more than one form-based provider.  If omitted,
332 #    the default login form will be for local indico accounts (if enabled).
334 # Identity providers:
335 # - `default_group_provider`
336 #   If you have any identity providers which provide groups, it is highly
337 #   recommended to enable this for exactly one of these providers.  This
338 #   is extremely important if you migrated an old database and have ACLs
339 #   which don't contain provider references yet.
340 # - `trusted_email`
341 #   If all emails received from the provider are trustworthy, i.e. it is
342 #   guaranteed that the emails actually belong to the user.  This should
343 #   be enabled e.g. for corporate SSO systems so people do not have to go
344 #   through an email verification step the first time they login/signup.
345 # - `synced_fields`
346 #   This may be set in no more than one identity provider and enables user
347 #   data synchronization. Its value should be a set of user attributes that
348 #   can be synchronized. The following attributes are supported:
349 #   'first_name', 'last_name', 'affiliation', 'phone', 'address'
351 # Indico uses the following identity info keys from multipass, so you need
352 # to configure the mappings in your identity providers accordingly:
353 # 'first_name', 'last_name', 'email', 'affiliation', 'phone', 'address'
354 # All keys are optional, so if a provider does not contain data for a field,
355 # you can override `identity_info_keys` and only specify the keys you want.
356 # However, if a provider does not have at least  'email', external users
357 # returned by this provider will never show up in search results. Likewise,
358 # an external user with no email will not appear in search results.
360 # Auth and identity providers with the same name are linked automatically
361 # unless ProviderMap is specified.  If specified it should be a dictionary
362 # suitable for the MULTIPASS_PROVIDER_MAP setting of multipass.
363 #AuthProviders = {}
364 #IdentityProviders = {}
365 #ProviderMap = {}
367 #------------------------------------------------------------------------------
368 # GLOBAL DEFAULTS
369 #------------------------------------------------------------------------------
371 # The timezone that is used by default. This also affects the timezone used by
372 # periodic tasks.
373 #DefaultTimezone = 'UTC'
376 #------------------------------------------------------------------------------
377 # CELERY
378 #------------------------------------------------------------------------------
380 # Indico uses Celery to run time-consuming background tasks and periodic jobs.
381 # You must configure a Celery "broker" which is used to  communicate between
382 # Indico and the worker(s).
383 # We recommend Redis as it is very easy to set up. For details, see the Celery
384 # documentation:
385 # http://celery.readthedocs.org/en/latest/getting-started/brokers/redis.html
386 #CeleryBroker = 'redis://unused:password@localhost:6379/0'
388 # By default, task results are stored in the broker backend, but you can
389 # override it.
390 #CeleryResultBackend = None
392 # By default, all periodic tasks are enabled and use a schedule that is
393 # considered appropriate by the Indico developers.  You can override this
394 # for specific tasks using the `ScheduledTaskOverride` dict.  The key is the
395 # name of the task and the value can be one of the following:
396 # - `None` or `False`: Disables the task completely
397 # - A dictionary, as described in the Celery documentation
398 #   http://celery.readthedocs.org/en/latest/userguide/periodic-tasks.html#available-fields
399 #   The `task` key is not necessary in this case, as it is set automatically.
400 # - A `timedelta` or `crontab` object which will just override the schedule
401 #   and not touch any other options of the task.
402 #ScheduledTaskOverride = {}
404 # You can use the `CeleryConfig` settings to specify/override any config option
405 # supported by Celery. For the full list of options, see the Celery docs at
406 # http://celery.readthedocs.org/en/latest/configuration.html
407 #CeleryConfig = {}
409 # Your Celery workers can be monitored using Flower.  To use it, simply start it
410 # using `indico celery flower`; by default it will listen on the same host as
411 # specified in BaseURL (non-SSL) on port 5555.  However, having an open Flower
412 # instance is a security issue as it will allow anyone to shut down your celery
413 # workers.  To avoid this, you can use Indico's OAuth2 provider to restrict the
414 # access to flower to Indico administrators.  To do so, register a new OAuth
415 # application in the administration interface (`Server admin > Applications`)
416 # and set the `FlowerClientId` option to its Client ID.
417 #FlowerClientId = None
419 # To get a link to Flower in the administration menu, set `FlowerURL` to the URL
420 # under which your Flower instance is accessible:
421 #FlowerURL = None
424 # ------------------------------------------------------------------------------
425 # Indico Checkin
426 # ------------------------------------------------------------------------------
428 # In order to use Indico check-in app, first register the application manually
429 # within `Server admin > Applications` and then fill in here the client_id
430 # assigned to it.
431 #CheckinAppClientId = ''
434 # ------------------------------------------------------------------------------
435 # Storage
436 # ------------------------------------------------------------------------------
438 # Indico needs to store various files such as event attachments somewhere. You
439 # need to configure the storage backends here.  By default only a filesystem
440 # based storage backend is available, but plugins could add additional backends.
441 # You can define multiple backends, but once a backend has been used, you MUST
442 # NOT remove it or all files stored in that backend will become unavailable.
443 # To define a filesystem-based backend, use the string `fs:/base/path`.
444 # Other backends may accept different options - see the documentation of these
445 # backends for details.
446 #StorageBackends = {'default': 'fs:/opt/indico/archive'}
448 # You need to set the storage backend used for event attachments to backend that
449 # has been defined in StorageBackends.  Note that this only affects new uploads.
450 # Existing files are taken from whatever backend was used when they have been
451 # uploaded.
452 #AttachmentStorage = 'default'