Show scopes in OAuth authorization page
[cds-indico.git] / etc / indico.conf.sample
blob3311129757bb2873653c9ddbd0e3b23013d6a81a
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 # FILE CONVERSION
193 #------------------------------------------------------------------------------
194 # Indico has an interface to interact with an external file conversion system
195 # to convert from some formats to others but right now there is no publicly
196 # available file conversion software.
198 # If you are interested in this feature please contact us at:
199 #   indico-team@cern.ch
201 # FileConverter = {"conversion_server": "http://conversion.cern.ch/getSegFile.py",
202 #                  "response_url": "http://localhost/conversion-finished"}
204 #------------------------------------------------------------------------------
205 # AUTOMATIC MAINTENANCE
206 #------------------------------------------------------------------------------
207 # Indico can automatically delete events older than a specified number of days.
208 # This is set on a per-category basis:
210 # CategoryCleanup = {
211 #   '2': 30  # delete events in category '2' that have been created more than 30 days ago
212 # }
214 # If you want maintenance operations to be logged under a user other than the
215 # the server administrator (id 0), you can customize it here:
217 # JanitorUserId = 0
219 #------------------------------------------------------------------------------
220 # STATIC FILE DELIVERY
221 #------------------------------------------------------------------------------
222 # Indico supports the use of the X-Sendfile and X-Accel-Redirect headers:
224 # http://blog.lighttpd.net/articles/2006/07/02/x-sendfile
225 # http://wiki.nginx.org/X-accel
227 # If your webserver supports this feature and you want to activate it,
228 # you should enable it here
230 # X-Sendfile (apache with mod_xsendfile, lighttpd):
231 # StaticFileMethod = 'xsendfile'
233 # X-Accel-Redirect (nginx):
234 # StaticFileMethod = ('xaccelredirect', {
235 #     '/opt/indico/archive': '/.xsf/archive',
236 #     '/opt/indico/cache': '/.xsf/cache',
237 #     '/opt/indico/htdocs': '/.xsf/htdocs'
238 # })
239 # Because of the way nginx works (using URLs instead of paths) you also need to map the .xsf urls to
240 # the paths in your nginx config (for each entry in the dict above):
241 # location /.xsf/archive/ {
242 #     internal;
243 #     alias /opt/indico/archive/;
244 # }
245 # DO NOT forget the "internal;" statement - it prevents users from accessing those URLs directly.
247 #StaticFileMethod = None
250 # Sessions are only stored for a certain time. You can modify the duration here. By setting
251 # the lifetime to 0 the cookie will expire when the browser is closed.
252 #SessionLifetime = 86400 * 31
254 # If indico is behind a proxy, the user's IP needs to be retrieved from the
255 # HTTP_X_FORWARDED_FOR header. To enable this behavior, set UseProxy to True.
256 # Note that this MUST NOT be enabled if the machine is accessible directly or
257 # users will be able to spoof their IP address!
258 #UseProxy = False
261 #------------------------------------------------------------------------------
262 # LOGGING
263 #------------------------------------------------------------------------------
264 # Indico lets you log error messages using two methods:
266 #  * Simple log files (default)
267 #  * Sentry (https://github.com/getsentry/sentry)
269 # Loggers              = ['sentry', 'files']
270 # SentryDSN            = 'http://user:password@logger.example.com/n'
271 # SentryLoggingLevel   = 'ERROR'  # default: 'WARNING'
274 #------------------------------------------------------------------------------
275 # OFFLINE WEBSITE PACKAGES CREATION
276 #------------------------------------------------------------------------------
277 # Indico allows users to download their event so they can run it offline.
279 # The OfflineStore variable points to a directory that Indico will use to store
280 # the offline website packages.
282 # If the OfflineStore variable is not set, the functionality will be disabled.
284 # OfflineStore         = "/opt/indico/archive"
287 #------------------------------------------------------------------------------
288 # LATEX/PDF GENERATION
289 #------------------------------------------------------------------------------
290 # Set the path to pdflatex if it's not within PATH:
291 # PDFLatexProgram = 'pdflatex'
293 # In strict mode, a non-zero status code is considered failure. Disable this if
294 # you have old contributions that contain invalid LaTeX and you prefer possibly
295 # weird-looking PDFs over an error and no PDF at all.
296 # StrictLatex = True
298 #------------------------------------------------------------------------------
299 # INDICO MOBILE
300 #------------------------------------------------------------------------------
302 # If you have an installation of the mobile version of Indico, you can enable the
303 # notification that encourages its usage when the user accesses the Desktop Indico
304 # from a mobile device. One only needs to add the URL of Indico mobile here:
305 # MobileURL = "http://m.indico.your.domain"
307 #------------------------------------------------------------------------------
308 # ACTIVE PLUGINS
309 #------------------------------------------------------------------------------
311 # List of plugins to be loaded on server start.
313 # Plugins = {'example'}
315 #------------------------------------------------------------------------------
316 # AUTHENTICATION
317 #------------------------------------------------------------------------------
318 # If you do not need integration with an existing authentication infrastructure
319 # such as LDAP, OAuth or a SSO system like Shibboleth, you do not have to set
320 # anything here. Having local identities enabled is sufficient:
321 # LocalIdentities = True
323 # When `LocalIdentities` is set to False, a link to an external registration
324 # page can be configured here:
325 # ExternalRegistrationURL = ''
327 # For advanced authentication and user information retrieval, Indico uses the
328 # Flask-Multipass library, so you can use any registered multipass auth/identity
329 # provider in Indico.  Using such providers requires additional configuration.
330 # Please note that the name of an identity provider MUST NOT be changed once
331 # it has been used, as it is referenced internally. Changing the title is fine
332 # though.
334 # For documentation on the providers and their config options see the
335 # documentation of multipass on the following site:
336 # https://flask-multipass.readthedocs.org/en/latest/
338 # In addition to the settings handled by multipass, you may use the following
339 # settings:
341 # Auth providers:
342 # - `default`
343 #    This must be set to `True` for exactly one form-based authentication
344 #    provide in case you have more than one form-based provider.  If omitted,
345 #    the default login form will be for local indico accounts (if enabled).
347 # Identity providers:
348 # - `default_group_provider`
349 #   If you have any identity providers which provide groups, it is highly
350 #   recommended to enable this for exactly one of these providers.  This
351 #   is extremely important if you migrated an old database and have ACLs
352 #   which don't contain provider references yet.
353 # - `trusted_email`
354 #   If all emails received from the provider are trustworthy, i.e. it is
355 #   guaranteed that the emails actually belong to the user.  This should
356 #   be enabled e.g. for corporate SSO systems so people do not have to go
357 #   through an email verification step the first time they login/signup.
358 # - `synced_fields`
359 #   This may be set in no more than one identity provider and enables user
360 #   data synchronization. Its value should be a set of user attributes that
361 #   can be synchronized. The following attributes are supported:
362 #   'first_name', 'last_name', 'affiliation', 'phone', 'address'
364 # Indico uses the following identity info keys from multipass, so you need
365 # to configure the mappings in your identity providers accordingly:
366 # 'first_name', 'last_name', 'email', 'affiliation', 'phone', 'address'
367 # All keys are optional, so if a provider does not contain data for a field,
368 # you can override `identity_info_keys` and only specify the keys you want.
369 # However, if a provider does not have at least  'email', external users
370 # returned by this provider will never show up in search results. Likewise,
371 # an external user with no email will not appear in search results.
373 # Auth and identity providers with the same name are linked automatically
374 # unless ProviderMap is specified.  If specified it should be a dictionary
375 # suitable for the MULTIPASS_PROVIDER_MAP setting of multipass.
376 #AuthProviders = {}
377 #IdentityProviders = {}
378 #ProviderMap = {}
380 #------------------------------------------------------------------------------
381 # GLOBAL DEFAULTS
382 #------------------------------------------------------------------------------
384 # The timezone that is used by default. This also affects the timezone used by
385 # periodic tasks.
386 #DefaultTimezone = 'UTC'
389 #------------------------------------------------------------------------------
390 # CELERY
391 #------------------------------------------------------------------------------
393 # Indico uses Celery to run time-consuming background tasks and periodic jobs.
394 # You must configure a Celery "broker" which is used to  communicate between
395 # Indico and the worker(s).
396 # We recommend Redis as it is very easy to set up. For details, see the Celery
397 # documentation:
398 # http://celery.readthedocs.org/en/latest/getting-started/brokers/redis.html
399 #CeleryBroker = 'redis://unused:password@localhost:6379/0'
401 # By default, task results are stored in the broker backend, but you can
402 # override it.
403 #CeleryResultBackend = None
405 # By default, all periodic tasks are enabled and use a schedule that is
406 # considered appropriate by the Indico developers.  You can override this
407 # for specific tasks using the `ScheduledTaskOverride` dict.  The key is the
408 # name of the task and the value can be one of the following:
409 # - `None` or `False`: Disables the task completely
410 # - A dictionary, as described in the Celery documentation
411 #   http://celery.readthedocs.org/en/latest/userguide/periodic-tasks.html#available-fields
412 #   The `task` key is not necessary in this case, as it is set automatically.
413 # - A `timedelta` or `crontab` object which will just override the schedule
414 #   and not touch any other options of the task.
415 #ScheduledTaskOverride = {}
417 # You can use the `CeleryConfig` settings to specify/override any config option
418 # supported by Celery. For the full list of options, see the Celery docs at
419 # http://celery.readthedocs.org/en/latest/configuration.html
420 #CeleryConfig = {}
422 # Your Celery workers can be monitored using Flower.  To use it, simply start it
423 # using `indico celery flower`; by default it will listen on the same host as
424 # specified in BaseURL (non-SSL) on port 5555.  However, having an open Flower
425 # instance is a security issue as it will allow anyone to shut down your celery
426 # workers.  To avoid this, you can use Indico's OAuth2 provider to restrict the
427 # access to flower to Indico administrators.  To do so, register a new OAuth
428 # application in the administration interface (`Server admin > Applications`)
429 # and set the `FlowerClientId` option to its Client ID.
430 #FlowerClientId = None
432 # To get a link to Flower in the administration menu, set `FlowerURL` to the URL
433 # under which your Flower instance is accessible:
434 #FlowerURL = None
437 # ------------------------------------------------------------------------------
438 # Indico Checkin
439 # ------------------------------------------------------------------------------
441 # In order to use Indico check-in app, first register the application manually
442 # within `Server admin > Applications` and then fill in here the client_id
443 # assigned to it.
444 #CheckinAppClientId = ''