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 #------------------------------------------------------------------------------
13 #------------------------------------------------------------------------------
15 DBConnectionParams = ("localhost", 9675)
20 #------------------------------------------------------------------------------
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
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
44 # SQLAlchemyMaxOverflow = 3
46 #------------------------------------------------------------------------------
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 #------------------------------------------------------------------------------
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!)
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
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.
83 #------------------------------------------------------------------------------
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.
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:
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 #------------------------------------------------------------------------------
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.
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 #------------------------------------------------------------------------------
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 #------------------------------------------------------------------------------
147 #------------------------------------------------------------------------------
148 SmtpServer = ("localhost", 8025)
152 # If your SMTP server is using TLS write "yes", otherwise write "no"
156 #------------------------------------------------------------------------------
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 #------------------------------------------------------------------------------
178 #------------------------------------------------------------------------------
179 # Here you can limit the maximum size of all the uploaded files (in MB) in a
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 #------------------------------------------------------------------------------
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
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:
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'
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/ {
243 # alias /opt/indico/archive/;
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!
261 #------------------------------------------------------------------------------
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.
298 #------------------------------------------------------------------------------
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 #------------------------------------------------------------------------------
309 #------------------------------------------------------------------------------
311 # List of plugins to be loaded on server start.
313 # Plugins = {'example'}
315 #------------------------------------------------------------------------------
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
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
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.
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.
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.
377 #IdentityProviders = {}
380 #------------------------------------------------------------------------------
382 #------------------------------------------------------------------------------
384 # The timezone that is used by default. This also affects the timezone used by
386 #DefaultTimezone = 'UTC'
389 #------------------------------------------------------------------------------
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
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
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
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:
437 # ------------------------------------------------------------------------------
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
444 #CheckinAppClientId = ''
447 # ------------------------------------------------------------------------------
449 # ------------------------------------------------------------------------------
451 # Indico needs to store various files such as event attachments somewhere. You
452 # need to configure the storage backends here. By default only a filesystem
453 # based storage backend is available, but plugins could add additional backends.
454 # You can define multiple backends, but once a backend has been used, you MUST
455 # NOT remove it or all files stored in that backend will become unavailable.
456 # To define a filesystem-based backend, use the string `fs:/base/path`.
457 # Other backends may accept different options - see the documentation of these
458 # backends for details.
459 #StorageBackends = {'default': 'fs:/opt/indico/archive'}
461 # You need to set the storage backend used for event attachments to backend that
462 # has been defined in StorageBackends. Note that this only affects new uploads.
463 # Existing files are taken from whatever backend was used when they have been
465 #AttachmentStorage = 'default'