comparison doc/tracker_config.txt @ 8416:370689471a08 issue2550923_computed_property

merge from default branch accumulated changes since Nov 2023
author John Rouillard <rouilj@ieee.org>
date Sun, 17 Aug 2025 16:12:25 -0400
parents 6e44b3b20df2
children 520075b29474
comparison
equal deleted inserted replaced
7693:78585199552a 8416:370689471a08
1
2 .. index:: config.ini; sections main
3 .. _`config-ini-section-main`:
4 .. code:: ini
5
6 [main]
7
8 # Database directory path.
9 # The path may be either absolute or relative
10 # to the directory containing this config file.
11 # Default: db
12 database = db
13
14 # Templating engine to use.
15 # Possible values are:
16 # 'zopetal' for the old TAL engine ported from Zope,
17 # 'chameleon' for Chameleon,
18 # 'jinja2' for jinja2 templating.
19 # Available found jinja2 module.
20 # Default: zopetal
21 template_engine = zopetal
22
23 # Path to the HTML templates directory.
24 # The path may be either absolute or relative
25 # to the directory containing this config file.
26 # Default: html
27 templates = html
28
29 # A list of space separated directory paths (or a single
30 # directory). These directories hold additional public
31 # static files available via Web UI. These directories
32 # may contain sitewide images, CSS stylesheets etc. If a
33 # '-' is included, the list processing ends and the
34 # TEMPLATES directory is not searched after the specified
35 # directories. If this option is not set, all static
36 # files are taken from the TEMPLATES directory. Access to
37 # these files is public, it is not checked against
38 # registered users. So do not put any sensitive data in
39 # the files in these directories.
40 # The space separated paths may be either absolute
41 # or relative to the directory containing this config file.
42 # Default:
43 static_files =
44
45 # Email address that roundup will complain to if it runs
46 # into trouble.
47 # If no domain is specified then the config item
48 # mail -> domain is added.
49 # Default: roundup-admin
50 admin_email = roundup-admin
51
52 # The 'dispatcher' is a role that can get notified
53 # when errors occur while sending email to a user.
54 # It is used by the ERROR_MESSAGES_TO config setting.
55 # If no domain is specified then the config item
56 # mail -> domain is added.
57 # Default: roundup-admin
58 dispatcher_email = roundup-admin
59
60 # Additional text to include in the "name" part
61 # of the From: address used in nosy messages.
62 # If the sending user is "Foo Bar", the From: line
63 # is usually: "Foo Bar" <issue_tracker@tracker.example>
64 # the EMAIL_FROM_TAG goes inside the "Foo Bar" quotes like so:
65 # "Foo Bar EMAIL_FROM_TAG" <issue_tracker@tracker.example>
66 # Default:
67 email_from_tag =
68
69 # Roles that a user gets when they register
70 # with Web User Interface.
71 # This is a comma-separated string of role names
72 # (e.g. 'Admin,User').
73 # Default: User
74 new_web_user_roles = User
75
76 # Roles that a user gets when they register
77 # with Email Gateway.
78 # This is a comma-separated string of role names
79 # (e.g. 'Admin,User').
80 # Default: User
81 new_email_user_roles = User
82
83 # On schema changes, properties or classes in the history may
84 # become obsolete. Since normal access permissions do not apply
85 # (we don't know if a user should see such a property or class)
86 # a list of roles is specified here that are allowed to see
87 # these obsolete properties in the history. By default only the
88 # admin role may see these history entries, you can make them
89 # visible to all users by adding, e.g., the 'User' role here.
90 # Default: Admin
91 obsolete_history_roles = Admin
92
93 # Send error message emails to the "dispatcher", "user",
94 # or "both" (these are the three allowed values).
95 # The dispatcher is configured using the DISPATCHER_EMAIL
96 # setting.
97 # Default: user
98 error_messages_to = user
99
100 # This setting should be left at the default value of html4.
101 # Support for xhtml has been disabled.
102 # HTML version to generate. The templates are html4 by default.
103 # Allowed values: html4
104 # Default: html4
105 html_version = html4
106
107 # Default timezone offset,
108 # applied when user's timezone is not set.
109 # If pytz module is installed, value may be any valid
110 # timezone specification (e.g. EET or Europe/Warsaw).
111 # If pytz is not installed, value must be integer number
112 # giving local timezone offset from UTC in hours.
113 # Default: UTC
114 timezone = UTC
115
116 # Register new users instantly, or require confirmation via
117 # email?
118 # Allowed values: yes, no
119 # Default: no
120 instant_registration = no
121
122 # Offer registration confirmation by email or only
123 # through the web?
124 # Allowed values: yes, no
125 # Default: yes
126 email_registration_confirmation = yes
127
128 # Force Roundup to use a particular text indexer.
129 # If no indexer is supplied, the first available indexer
130 # will be used in the following order:
131 # Possible values: xapian, whoosh, native (internal), native-fts.
132 # Note 'native-fts' will only be used if set.
133 # Allowed values: '', 'xapian', 'whoosh', 'native', 'native-fts'
134 # Default:
135 indexer =
136
137 # Used to determine what language should be used by the
138 # indexer above. Applies to Xapian and PostgreSQL native-fts
139 # indexer. It sets the language for the stemmer, and PostgreSQL
140 # native-fts stopwords and other dictionaries.
141 # Possible values: must be a valid language for the indexer,
142 # see indexer documentation for details.
143 # Default: english
144 indexer_language = english
145
146 # Additional stop-words for the full-text indexer specific to
147 # your tracker. See the indexer source for the default list of
148 # stop-words (eg. A,AND,ARE,AS,AT,BE,BUT,BY, ...). This is
149 # not used by the postgres native-fts indexer. But is used to
150 # filter search terms with the sqlite native-fts indexer.
151 # Allowed values: comma-separated list of words
152 # Default:
153 indexer_stopwords =
154
155 # Defines the file creation mode mask.
156 # Default: 0o2
157 umask = 0o2
158
159 # Maximum size of a csv-field during import. Roundups export
160 # format is a csv (comma separated values) variant. The csv
161 # reader has a limit on the size of individual fields
162 # starting with python 2.5. Set this to a higher value if you
163 # get the error 'Error: field larger than field limit' during
164 # import.
165 # Default: 131072
166 csv_field_size = 131072
167
168 # Sets the default number of rounds used when encoding passwords
169 # using any PBKDF2 scheme. Set this to a higher value on faster
170 # systems which want more security. Use a minimum of 250000
171 # for PBKDF2-SHA512 which is the default hash in Roundup 2.5.
172 # PBKDF2 (Password-Based Key Derivation Function) is a
173 # password hashing mechanism that derives hash from the
174 # password and a random salt. For authentication this process
175 # is repeated with the same salt as in the stored hash.
176 # If both hashes match, the authentication succeeds.
177 # PBKDF2 supports a variable 'rounds' parameter which varies
178 # the time-cost of calculating the hash - doubling the number
179 # of rounds doubles the cpu time required to calculate it. The
180 # purpose of this is to periodically adjust the rounds as CPUs
181 # become faster. The currently enforced minimum number of
182 # rounds is 1000.
183 # See: http://en.wikipedia.org/wiki/PBKDF2 and RFC2898
184 # Default: 250000
185 password_pbkdf2_default_rounds = 250000
186
187 .. index:: config.ini; sections tracker
188 .. _`config-ini-section-tracker`:
189 .. code:: ini
190
191 [tracker]
192
193 # A descriptive name for your roundup instance.
194 # Default: Roundup issue tracker
195 name = Roundup issue tracker
196
197 # The web address that the tracker is viewable at.
198 # This will be included in information
199 # sent to users of the tracker.
200 # The URL MUST include the cgi-bin part or anything else
201 # that is required to get to the home page of the tracker.
202 # URL MUST start with http/https scheme and end with '/'
203 # Default: NO DEFAULT
204 #web = NO DEFAULT
205
206 # Email address that mail to roundup should go to.
207 # If no domain is specified then mail_domain is added.
208 # Default: issue_tracker
209 email = issue_tracker
210
211 # Controls the reply-to header address used when sending
212 # nosy messages.
213 # If the value is unset (default) the roundup tracker's
214 # email address (above) is used.
215 # If set to "AUTHOR" then the primary email address of the
216 # author of the change will be used as the reply-to
217 # address. This allows email exchanges to occur outside of
218 # the view of roundup and exposes the address of the person
219 # who updated the issue, but it could be useful in some
220 # unusual circumstances.
221 # If set to some other value, the value is used as the reply-to
222 # address. It must be a valid RFC2822 address or people will not
223 # be able to reply.
224 # Default:
225 replyto_address =
226
227 # Default locale name for this tracker.
228 # If this option is not set, the language is determined
229 # by OS environment variable LANGUAGE, LC_ALL, LC_MESSAGES,
230 # or LANG, in that order of preference.
231 # Default:
232 language =
233
234 .. index:: config.ini; sections web
235 .. _`config-ini-section-web`:
236 .. code:: ini
237
238 [web]
239
240 # Setting this option enables Roundup to serve uploaded HTML
241 # file content *as HTML*. This is a potential security risk
242 # and is therefore disabled by default. Set to 'yes' if you
243 # trust *all* users uploading content to your tracker.
244 # Allowed values: yes, no
245 # Default: no
246 allow_html_file = no
247
248 # Whether to use HTTP Basic Authentication, if present.
249 # Roundup will use either the REMOTE_USER (the value set
250 # by http_auth_header) or HTTP_AUTHORIZATION
251 # variables supplied by your web server (in that order).
252 # Set this option to 'no' if you do not wish to use HTTP Basic
253 # Authentication in your web interface.
254 # Allowed values: yes, no
255 # Default: yes
256 http_auth = yes
257
258 # The HTTP header that holds the user authentication information.
259 # If empty (default) the REMOTE_USER header is used.
260 # This is used when the upstream HTTP server authenticates
261 # the user and passes the username using this HTTP header.
262 # Default:
263 http_auth_header =
264
265 # Setting this option makes roundup look at the Accept-Encoding
266 # header supplied by the client. It will compress the response
267 # on the fly using a common encoding. Disable it if your
268 # upstream server does compression of dynamic data.
269 # Allowed values: yes, no
270 # Default: yes
271 dynamic_compression = yes
272
273 # Setting this option enables Roundup to serve precompressed
274 # static files. The admin must create the compressed files with
275 # proper extension (.gzip, .br, .zstd) in the same directory as
276 # the uncompressed file. If a precompressed file doesn't
277 # exist, the uncompressed file will be served possibly with
278 # dynamic compression.
279 # Allowed values: yes, no
280 # Default: no
281 use_precompressed_files = no
282
283 # If usernames consist of a name and a domain/realm part of
284 # the form user@realm and we're using REMOTE_USER for
285 # authentication (e.g. via Kerberos), convert the realm part
286 # of the incoming REMOTE_USER to lowercase before matching
287 # against the roundup username. This allows roundup usernames
288 # to be lowercase (including the realm) and still follow the
289 # Kerberos convention of using an uppercase realm. In
290 # addition this is compatible with Active Directory which
291 # stores the username with realm as UserPrincipalName in
292 # lowercase.
293 # Allowed values: yes, no
294 # Default: no
295 http_auth_convert_realm_to_lowercase = no
296
297 # If the http_auth option is in effect (see above)
298 # we're accepting a REMOTE_USER variable resulting from
299 # an authentication mechanism implemented in the web-server,
300 # e.g., Kerberos login or similar. To override the mechanism
301 # provided by the web-server (e.g. for enabling sub-login as
302 # another user) we tell roundup that the cookie takes
303 # precedence over a REMOTE_USER or HTTP_AUTHORIZATION
304 # variable. So if both, a cookie and a REMOTE_USER is
305 # present, the cookie wins.
306 #
307 # Allowed values: yes, no
308 # Default: no
309 cookie_takes_precedence = no
310
311 # Limit login attempts per user per minute to this number.
312 # By default the 4th login attempt in a minute will notify
313 # the user that they need to wait 20 seconds before trying to
314 # log in again. This limits password guessing attacks and
315 # shouldn't need to be changed. Rate limiting on login can
316 # be disabled by setting the value to 0.
317 # Default: 3
318 login_attempts_min = 3
319
320 # The number of seconds needed to complete the new user
321 # registration form. This limits the rate at which bots
322 # can attempt to sign up. Limit can be disabled by setting
323 # the value to 0.
324 # Default: 4
325 registration_delay = 4
326
327 # When registering a user, check that the username
328 # is available before sending confirmation email.
329 # Usually a username conflict is detected when
330 # confirming the registration. Disabled by default as
331 # it can be used for guessing existing usernames.
332 #
333 # Allowed values: yes, no
334 # Default: no
335 registration_prevalidate_username = no
336
337 # Set the mode of the SameSite cookie option for
338 # the session cookie. Choices are 'Lax' or
339 # 'Strict'. 'None' can be used to suppress the
340 # option. Strict mode provides additional security
341 # against CSRF attacks, but may confuse users who
342 # are logged into roundup and open a roundup link
343 # from a source other than roundup (e.g. link in
344 # email).
345 # Allowed values: Strict, Lax, None
346 # Default: Lax
347 samesite_cookie_setting = Lax
348
349 # Whether to enable the XMLRPC API in the roundup web
350 # interface. By default the XMLRPC endpoint is the string
351 # 'xmlrpc' after the roundup web url configured in the
352 # 'tracker' section. If this variable is set to 'no', the
353 # xmlrpc path has no special meaning and will yield an
354 # error message.
355 # Allowed values: yes, no
356 # Default: yes
357 enable_xmlrpc = yes
358
359 # Whether to enable i18n for the xmlrpc endpoint. Enable it if
360 # you want to enable translation based on browsers lang
361 # (if enabled), trackers lang (if set) or environment.
362 # Allowed values: yes, no
363 # Default: no
364 translate_xmlrpc = no
365
366 # Whether to enable the REST API in the roundup web
367 # interface. By default the REST endpoint is the string
368 # 'rest' plus any additional REST-API parameters after the
369 # roundup web url configured in the tracker section. If this
370 # variable is set to 'no', the rest path has no special meaning
371 # and will yield an error message.
372 # Allowed values: yes, no
373 # Default: yes
374 enable_rest = yes
375
376 # Whether to enable i18n for the rest endpoint. Enable it if
377 # you want to enable translation based on browsers lang
378 # (if enabled), trackers lang (if set) or environment.
379 # Allowed values: yes, no
380 # Default: no
381 translate_rest = no
382
383 # Log-Level for REST errors.
384 # Allowed values: none, debug, info, warning, error, critical
385 # Default: none
386 rest_logging = none
387
388 # Limit API calls per api_interval_in_sec seconds to
389 # this number.
390 # Determines the burst rate and the rate that new api
391 # calls will be made available. If set to 360 and
392 # api_intervals_in_sec is set to 3600, the 361st call in
393 # 10 seconds results in a 429 error to the caller. It
394 # tells them to wait 10 seconds (3600/360) before making
395 # another api request. A value of 0 turns off rate
396 # limiting in the API. Tune this as needed. See rest
397 # documentation for more info.
398 #
399 # Default: 0
400 api_calls_per_interval = 0
401
402 # Defines the interval in seconds over which an api client can
403 # make api_calls_per_interval api calls. Tune this as needed.
404 #
405 # Default: 3600
406 api_interval_in_sec = 3600
407
408 # Limit login failure to the API per api_failed_login_interval_in_sec
409 # seconds.
410 # A value of 0 turns off failed login rate
411 # limiting in the API. You should not disable this. See rest
412 # documentation for more info.
413 #
414 # Default: 4
415 api_failed_login_limit = 4
416
417 # Defines the interval in seconds over which api login failures
418 # are recorded. It allows api_failed_login_limit login failures
419 # in this time interval. Tune this as needed.
420 #
421 # Default: 600
422 api_failed_login_interval_in_sec = 600
423
424 # How do we deal with @csrf fields in posted forms.
425 # Set this to 'required' to block the post and notify
426 # the user if the field is missing or invalid.
427 # Set this to 'yes' to block the post and notify the user
428 # if the token is invalid, but accept the form if
429 # the field is missing.
430 # Set this to 'logfailure' to log a notice to the roundup
431 # log if the field is invalid or missing, but accept
432 # the post.
433 # Set this to 'no' to ignore the field and accept the post.
434 #
435 # Allowed values: required, yes, logfailure, no
436 # Default: yes
437 csrf_enforce_token = yes
438
439 # csrf_tokens have a limited lifetime. If they are not
440 # used they are purged from the database after this
441 # number of minutes. Default (20160) is 2 weeks.
442 # Default: 20160
443 csrf_token_lifetime = 20160
444
445 # This is only used for xmlrpc and rest requests. This test is
446 # done after Origin and Referer headers are checked. It only
447 # verifies that the X-Requested-With header exists. The value
448 # is ignored.
449 # Set this to 'required' to block the post and notify
450 # the user if the header is missing or invalid.
451 # Set this to 'yes' is the same as required.
452 # Set this to 'logfailure' is the same as 'no'.
453 # Set this to 'no' to ignore the header and accept the post.
454 # Allowed values: required, yes, logfailure, no
455 # Default: yes
456 csrf_enforce_header_x-requested-with = yes
457
458 # Verify that the Referer http header matches the
459 # tracker.web setting in config.ini.
460 # Set this to 'required' to block the post and notify
461 # the user if the header is missing or invalid.
462 # Set this to 'yes' to block the post and notify the user
463 # if the header is invalid, but accept the form if
464 # the header is missing.
465 # Set this to 'logfailure' to log a notice to the roundup
466 # log if the header is invalid or missing, but accept
467 # the post.
468 # Set this to 'no' to ignore the header and accept the post.
469 # Allowed values: required, yes, logfailure, no
470 # Default: yes
471 csrf_enforce_header_referer = yes
472
473 # Verify that the Origin http header matches the
474 # tracker.web setting in config.ini.
475 # Set this to 'required' to block the post and notify
476 # the user if the header is missing or invalid.
477 # Set this to 'yes' to block the post and notify the user
478 # if the header is invalid, but accept the form if
479 # the header is missing.
480 # Set this to 'logfailure' to log a notice to the roundup
481 # log if the header is invalid or missing, but accept
482 # the post.
483 # Set this to 'no' to ignore the header and accept the post.
484 # Allowed values: required, yes, logfailure, no
485 # Default: yes
486 csrf_enforce_header_origin = yes
487
488 # A comma separated list of additonal valid Origin header
489 # values used when enforcing the header origin. They are used
490 # only for the api URL's (/rest and /xmlrpc). They are not
491 # used for the usual html URL's. These strings must match the
492 # value of the Origin header exactly. So 'https://bar.edu' and
493 # 'https://Bar.edu' are two different Origin values. Note that
494 # the origin value is scheme://host. There is no path
495 # component. So 'https://bar.edu/' would never be valid.
496 # The value '*' can be used to match any origin. It must be
497 # first in the list if used. Note that this value allows
498 # any web page on the internet to make anonymous requests
499 # against your Roundup tracker.
500 #
501 # You need to set these if you have a web application on a
502 # different origin accessing your Roundup instance.
503 #
504 # (The origin from the tracker.web setting in config.ini is
505 # always valid and does not need to be specified.)
506 # A list of space separated case sensitive
507 # origin headers 'scheme://host'.
508 # Default:
509 allowed_api_origins =
510
511 # Verify that the X-Forwarded-Host http header matches
512 # the host part of the tracker.web setting in config.ini.
513 # Set this to 'required' to block the post and notify
514 # the user if the header is missing or invalid.
515 # Set this to 'yes' to block the post and notify the user
516 # if the header is invalid, but accept the form if
517 # the header is missing.
518 # Set this to 'logfailure' to log a notice to the roundup
519 # log if the header is invalid or missing, but accept
520 # the post.
521 # Set this to 'no' to ignore the header and accept the post.
522 # Allowed values: required, yes, logfailure, no
523 # Default: yes
524 csrf_enforce_header_x-forwarded-host = yes
525
526 # "If there is no X-Forward-Host header, verify that
527 # the Host http header matches the host part of the
528 # tracker.web setting in config.ini.
529 # Set this to 'required' to block the post and notify
530 # the user if the header is missing or invalid.
531 # Set this to 'yes' to block the post and notify the user
532 # if the header is invalid, but accept the form if
533 # the header is missing.
534 # Set this to 'logfailure' to log a notice to the roundup
535 # log if the header is invalid or missing, but accept
536 # the post.
537 # Set this to 'no' to ignore the header and accept the post.
538 # Allowed values: required, yes, logfailure, no
539 # Default: yes
540 csrf_enforce_header_host = yes
541
542 # Minimum number of header checks that must pass
543 # to accept the request. Set to 0 to accept post
544 # even if no header checks pass. Usually the Host header check
545 # always passes, so setting it less than 1 is not recommended.
546 # Default: 1
547 csrf_header_min_count = 1
548
549 # Whether to use HTTP Accept-Language, if present.
550 # Browsers send a language-region preference list.
551 # It's usually set in the client's browser or in their
552 # Operating System.
553 # Set this option to 'no' if you want to ignore it.
554 # Allowed values: yes, no
555 # Default: yes
556 use_browser_language = yes
557
558 # Setting this option makes Roundup display error tracebacks
559 # in the user's browser rather than emailing them to the
560 # tracker admin.
561 # Allowed values: yes, no
562 # Default: no
563 debug = no
564
565 # Setting this option to yes/true allows users with
566 # an empty/blank password to login to the
567 # web/http interfaces.
568 # Allowed values: yes, no
569 # Default: no
570 login_empty_passwords = no
571
572 # Setting this option makes Roundup migrate passwords with
573 # an insecure password-scheme to a more secure scheme
574 # when the user logs in via the web-interface.
575 # Allowed values: yes, no
576 # Default: yes
577 migrate_passwords = yes
578
579 # A per tracker secret used in etag calculations for
580 # an object. It must not be empty.
581 # It prevents reverse engineering hidden data in an object
582 # by calculating the etag for a sample object. Then modifying
583 # hidden properties until the sample object's etag matches
584 # the one returned by roundup.
585 # Changing this changes the etag and invalidates updates by
586 # clients. It must be persistent across application restarts.
587 # (Note the default value changes every time
588 # roundup-admin updateconfig
589 # is run, so it must be explicitly set to a non-empty string.
590 #
591 # A string that starts with 'file://' is interpreted
592 # as a file path relative to the tracker home. Using
593 # 'file:///' defines an absolute path. The first
594 # line of the file will be used as the value. Any
595 # string that does not start with 'file://' is used
596 # as is. It removes any whitespace at the end of the
597 # line, so a newline can be put in the file.
598 #
599 # Default: DWmbKgVUy6fF5D2Y5TD5Az+dnHhMYKCCpJzIY3H8nsU=
600 secret_key = DWmbKgVUy6fF5D2Y5TD5Az+dnHhMYKCCpJzIY3H8nsU=
601
602 # This is used to sign/validate json web tokens
603 # (JWT). Even if you don't use JWTs it must not be
604 # empty. You can use multiple secrets separated by a
605 # comma ','. This allows for secret rotation. The newest
606 # secret should be placed first and used for signing. The
607 # rest of the secrets are used for validating an old JWT.
608 # If the first secret is less than 256 bits (32
609 # characters) in length JWTs are disabled. If other secrets
610 # are less than 32 chars, the application will exit. Removing
611 # a secret from this list invalidates all JWTs signed with
612 # the secret. JWT support is experimental and disabled by
613 # default. The secrets must be persistent across
614 # application restarts.
615 #
616 # A string that starts with 'file://' is interpreted
617 # as a file path relative to the tracker home. Using
618 # 'file:///' defines an absolute path. The first
619 # line of the file will be used as the value. Any
620 # string that does not start with 'file://' is used
621 # as is. It removes any whitespace at the end of the
622 # line, so a newline can be put in the file.
623 #
624 # Default: disabled
625 jwt_secret = disabled
626
627 # HTML input elements for Date properties: This determines
628 # if we use the input type 'datetime-local' (or 'date') for
629 # date input fields. If the option is turned off (the default),
630 # the type is set to 'text'. Since the widgets generated by
631 # browsers determine the date format from the language
632 # setting (it is currently not possible to force the
633 # international date format server-side) and some browsers
634 # ignore the date format set by the operating system, the
635 # default is 'no'.
636 # Allowed values: yes, no
637 # Default: no
638 use_browser_date_input = no
639
640 # HTML input elements for Number properties: This determines
641 # if we use the input type 'number' for Number (and Integer)
642 # properties. If set to 'no' we use input type 'text'.
643 # Allowed values: yes, no
644 # Default: no
645 use_browser_number_input = no
646
647 .. index:: config.ini; sections rdbms
648 .. _`config-ini-section-rdbms`:
649 .. code:: ini
650
651
652 # Most settings in this section (except for backend and debug_filter)
653 # are used by RDBMS backends only.
654
655 [rdbms]
656
657 # Database backend.
658 # Available backends: anydbm, mysql, sqlite, postgresql
659 # Default: NO DEFAULT
660 #backend = NO DEFAULT
661
662 # Filter debugging: Permissions can define additional filter
663 # functions that are used when checking permissions on results
664 # returned by the database. This is done to improve
665 # performance since the filtering is done in the database
666 # backend, not in python (at least for the SQL backends). The
667 # user is responsible for making the filter return the same
668 # set of results as the check function for a permission. So it
669 # makes sense to aid in debugging (and performance
670 # measurements) to allow turning off the usage of filter
671 # functions using only the check functions.
672 # Allowed values: yes, no
673 # Default: no
674 debug_filter = no
675
676 # Name of the database to use. For Postgresql, this can
677 # be database.schema to use a specific schema within
678 # a Postgres database.
679 # Default: roundup
680 name = roundup
681
682 # Database server host.
683 # Default: localhost
684 host = localhost
685
686 # TCP port number of the database server.
687 # Postgresql usually resides on port 5432 (if any),
688 # for MySQL default port number is 3306.
689 # Leave this option empty to use backend default
690 # Default:
691 port =
692
693 # Database user name that Roundup should use.
694 # Default: roundup
695 user = roundup
696
697 # Database user password.
698 # A string that starts with 'file://' is interpreted
699 # as a file path relative to the tracker home. Using
700 # 'file:///' defines an absolute path. The first
701 # line of the file will be used as the value. Any
702 # string that does not start with 'file://' is used
703 # as is. It removes any whitespace at the end of the
704 # line, so a newline can be put in the file.
705 #
706 # Default: roundup
707 password = roundup
708
709 # Name of the PostgreSQL connection service for this Roundup
710 # instance. Only used in Postgresql connections. You need to set
711 # up a pg_service.conf file usable by psql use this option.
712 # Default:
713 service =
714
715 # Name of the MySQL defaults file.
716 # Only used in MySQL connections.
717 # Default: ~/.my.cnf
718 read_default_file = ~/.my.cnf
719
720 # Name of the group to use in the MySQL defaults file (.my.cnf).
721 # Only used in MySQL connections.
722 # Default: roundup
723 read_default_group = roundup
724
725 # Charset to use for mysql connection and databases.
726 # If set to 'default', no charset option is used when
727 # creating the db connection and utf8mb4 is used for the
728 # database charset.
729 # Otherwise any permissible mysql charset is allowed here.
730 # Only used in MySQL connections.
731 # Default: utf8mb4
732 mysql_charset = utf8mb4
733
734 # Comparison/order to use for mysql database/table collations.
735 # When upgrading, you can use 'utf8' to match the
736 # depricated 'utf8mb3'. This must be compatible with the
737 # mysql_charset setting above. Only used by MySQL.
738 # Default: utf8mb4_unicode_ci
739 mysql_collation = utf8mb4_unicode_ci
740
741 # Comparison/order to use for mysql database/table collations
742 # when matching case. When upgrading, you can use 'utf8_bin'
743 # to match the depricated 'utf8mb3_bin' collation. This must
744 # be compatible with the mysql_collation above. Only used
745 # by MySQL.
746 # Default: utf8mb4_0900_bin
747 mysql_binary_collation = utf8mb4_0900_bin
748
749 # Number of seconds to wait when the SQLite database is locked
750 # Default: use a 30 second timeout (extraordinarily generous)
751 # Only used in SQLite connections.
752 # Default: 30
753 sqlite_timeout = 30
754
755 # Size of the node cache (in elements). Used to keep the
756 # most recently used data in memory.
757 # Default: 100
758 cache_size = 100
759
760 # Setting this option to 'no' protects the database against
761 # table creations.
762 # Allowed values: yes, no
763 # Default: yes
764 allow_create = yes
765
766 # Setting this option to 'no' protects the database against
767 # table alterations.
768 # Allowed values: yes, no
769 # Default: yes
770 allow_alter = yes
771
772 # Setting this option to 'no' protects the database against
773 # table drops.
774 # Allowed values: yes, no
775 # Default: yes
776 allow_drop = yes
777
778 # Name of the PostgreSQL template for database creation.
779 # For database creation the template used has to match
780 # the character encoding used (UTF8), there are different
781 # PostgreSQL installations using different templates with
782 # different encodings. If you get an error:
783 # new encoding (UTF8) is incompatible with the encoding of
784 # the template database (SQL_ASCII)
785 # HINT: Use the same encoding as in the template database,
786 # or use template0 as template.
787 # then set this option to the template name given in the
788 # error message.
789 # Default:
790 template =
791
792 # Database isolation level, currently supported for
793 # PostgreSQL and mysql. See, e.g.,
794 # http://www.postgresql.org/docs/9.1/static/transaction-iso.html
795 # Allowed values: 'read uncommitted', 'read committed', 'repeatable read', 'serializable'
796 # Default: read committed
797 isolation_level = read committed
798
799 # Set the database cursor for filter queries to serverside
800 # cursor, this avoids caching large amounts of data in the
801 # client. This option only applies for the postgresql backend.
802 # Allowed values: yes, no
803 # Default: yes
804 serverside_cursor = yes
805
806 .. index:: config.ini; sections sessiondb
807 .. _`config-ini-section-sessiondb`:
808 .. code:: ini
809
810
811 # Choose configuration for session and one time key storage.
812
813 [sessiondb]
814
815 # Set backend for storing one time key (otk) and session data.
816 # Values have to be compatible with main backend.
817 # main\/ session>| anydbm | sqlite | redis | mysql | postgresql |
818 # anydbm | D | | X | | |
819 # sqlite | X | D | X | | |
820 # mysql | | | | D | |
821 # postgresql | | | | | D |
822 # -------------------------------------------------------------+
823 # D - default if unset, X - compatible choice
824 # Default:
825 backend =
826
827 # URL used to connect to redis. Default uses unauthenticated
828 # redis database 0 running on localhost with default port.
829 #
830 # A string that starts with 'file://' is interpreted
831 # as a file path relative to the tracker home. Using
832 # 'file:///' defines an absolute path. The first
833 # line of the file will be used as the value. Any
834 # string that does not start with 'file://' is used
835 # as is. It removes any whitespace at the end of the
836 # line, so a newline can be put in the file.
837 #
838 # Default: redis://localhost:6379/0?health_check_interval=2
839 redis_url = redis://localhost:6379/0?health_check_interval=2
840
841 .. index:: config.ini; sections logging
842 .. _`config-ini-section-logging`:
843 .. code:: ini
844
845 [logging]
846
847 # Path to configuration file for standard Python logging module.
848 # If this option is set, logging configuration is loaded
849 # from specified file; options 'filename' and 'level'
850 # in this section are ignored.
851 # The path may be either absolute or relative
852 # to the directory containing this config file.
853 # Default:
854 config =
855
856 # Log file name for minimal logging facility built into Roundup.
857 # If no file name specified, log messages are written on stderr.
858 # If above 'config' option is set, this option has no effect.
859 # The path may be either absolute or relative
860 # to the directory containing this config file.
861 # Default:
862 filename =
863
864 # Minimal severity level of messages written to log file.
865 # If above 'config' option is set, this option has no effect.
866 # Allowed values: DEBUG, INFO, WARNING, ERROR
867 # Default: ERROR
868 level = ERROR
869
870 # If set to yes, only the loggers configured in this section will
871 # be used. Yes will disable gunicorn's --access-logfile.
872 #
873 # Allowed values: yes, no
874 # Default: no
875 disable_loggers = no
876
877 .. index:: config.ini; sections mail
878 .. _`config-ini-section-mail`:
879 .. code:: ini
880
881
882 # Outgoing email options.
883 # Used for nosy messages, password reset and registration approval
884 # requests.
885
886 [mail]
887
888 # The email domain that admin_email, issue_tracker and
889 # dispatcher_email belong to.
890 # This domain is added to those config items if they don't
891 # explicitly include a domain.
892 # Do not include the '@' symbol.
893 # Default: NO DEFAULT
894 #domain = NO DEFAULT
895
896 # SMTP mail host that roundup will use to send mail
897 # Default: NO DEFAULT
898 #host = NO DEFAULT
899
900 # SMTP login name.
901 # Set this if your mail host requires authenticated access.
902 # If username is not empty, password (below) MUST be set!
903 # Default:
904 username =
905
906 # SMTP login password.
907 # Set this if your mail host requires authenticated access.
908 # A string that starts with 'file://' is interpreted
909 # as a file path relative to the tracker home. Using
910 # 'file:///' defines an absolute path. The first
911 # line of the file will be used as the value. Any
912 # string that does not start with 'file://' is used
913 # as is. It removes any whitespace at the end of the
914 # line, so a newline can be put in the file.
915 #
916 # Default: NO DEFAULT
917 #password = NO DEFAULT
918
919 # Default port to send SMTP on.
920 # Set this if your mail server runs on a different port.
921 # Default: 25
922 port = 25
923
924 # The (fully qualified) host/ domain name (FQDN) to use during
925 # SMTP sessions. If left blank, the underlying SMTP library will
926 # attempt to detect your FQDN. Set this if your mail server
927 # requires something specific.
928 #
929 # Default:
930 local_hostname =
931
932 # If your SMTP mail host provides or requires TLS
933 # (Transport Layer Security) then set this option to 'yes'.
934 # Allowed values: yes, no
935 # Default: no
936 tls = no
937
938 # If TLS is used, you may set this option to the name
939 # of a PEM formatted file that contains your private key.
940 # The path may be either absolute or relative
941 # to the directory containing this config file.
942 # Default:
943 tls_keyfile =
944
945 # If TLS is used, you may set this option to the name
946 # of a PEM formatted certificate chain file.
947 # The path may be either absolute or relative
948 # to the directory containing this config file.
949 # Default:
950 tls_certfile =
951
952 # Character set to encode email headers with.
953 # We use utf-8 by default, as it's the most flexible.
954 # Some mail readers (eg. Eudora) can't cope with that,
955 # so you might need to specify a more limited character set
956 # (eg. iso-8859-1).
957 # Default: utf-8
958 charset = utf-8
959
960 # Setting this option makes Roundup write all outgoing email
961 # messages to this file *instead* of sending them.
962 # This option has the same effect as the environment variable
963 # SENDMAILDEBUG.
964 # Environment variable takes precedence.
965 # The path may be either absolute or relative
966 # to the directory containing this config file.
967 # Default:
968 debug =
969
970 # Add a line with author information at top of all messages
971 # sent by roundup
972 # Allowed values: yes, no
973 # Default: yes
974 add_authorinfo = yes
975
976 # Add the mail address of the author to the author information
977 # at the top of all messages.
978 # If this is false but add_authorinfo is true, only the name
979 # of the actor is added which protects the mail address of the
980 # actor from being exposed at mail archives, etc.
981 # Allowed values: yes, no
982 # Default: yes
983 add_authoremail = yes
984
985 .. index:: config.ini; sections mailgw
986 .. _`config-ini-section-mailgw`:
987 .. code:: ini
988
989
990 # Roundup Mail Gateway options
991
992 [mailgw]
993
994 # Keep email citations when accepting messages.
995 # Setting this to "no" strips out "quoted" text
996 # from the message. Setting this to "new" keeps quoted
997 # text only if a new issue is being created.
998 # Signatures are also stripped.
999 # Allowed values: yes, no, new
1000 # Default: yes
1001 keep_quoted_text = yes
1002
1003 # Setting this to "yes" preserves the email body
1004 # as is - that is, keep the citations _and_ signatures.
1005 # Setting this to "new" keeps the body only if we are
1006 # creating a new issue.
1007 # Allowed values: yes, no, new
1008 # Default: no
1009 leave_body_unchanged = no
1010
1011 # Default class to use in the mailgw
1012 # if one isn't supplied in email subjects.
1013 # To disable, leave the value blank.
1014 # Default: issue
1015 default_class = issue
1016
1017 # Default locale name for the tracker mail gateway.
1018 # If this option is not set, mail gateway will use
1019 # the language of the tracker instance.
1020 # Default:
1021 language =
1022
1023 # Controls the parsing of the [prefix] on subject
1024 # lines in incoming emails. "strict" will return an
1025 # error to the sender if the [prefix] is not recognised.
1026 # "loose" will attempt to parse the [prefix] but just
1027 # pass it through as part of the issue title if not
1028 # recognised. "none" will always pass any [prefix]
1029 # through as part of the issue title.
1030 # Default: strict
1031 subject_prefix_parsing = strict
1032
1033 # Controls the parsing of the [suffix] on subject
1034 # lines in incoming emails. "strict" will return an
1035 # error to the sender if the [suffix] is not recognised.
1036 # "loose" will attempt to parse the [suffix] but just
1037 # pass it through as part of the issue title if not
1038 # recognised. "none" will always pass any [suffix]
1039 # through as part of the issue title.
1040 # Default: strict
1041 subject_suffix_parsing = strict
1042
1043 # Defines the brackets used for delimiting the prefix and
1044 # suffix in a subject line. The presence of "suffix" in
1045 # the config option name is a historical artifact and may
1046 # be ignored.
1047 # Default: []
1048 subject_suffix_delimiters = []
1049
1050 # Controls matching of the incoming email subject line
1051 # against issue titles in the case where there is no
1052 # designator [prefix]. "never" turns off matching.
1053 # "creation + interval" or "activity + interval"
1054 # will match an issue for the interval after the issue's
1055 # creation or last activity. The interval is a standard
1056 # Roundup interval.
1057 # Default: always
1058 subject_content_match = always
1059
1060 # Update issue title if incoming subject of email is different.
1061 # Setting this to "no" will ignore the title part of the subject
1062 # of incoming email messages.
1063 #
1064 # Allowed values: yes, no
1065 # Default: yes
1066 subject_updates_title = yes
1067
1068 # Regular expression matching a single reply or forward
1069 # prefix prepended by the mailer. This is explicitly
1070 # stripped from the subject during parsing.
1071 # Value is Python Regular Expression (UTF8-encoded).
1072 # Default: (\s*\W?\s*(fw|fwd|re|aw|sv|ang)\W)+
1073 refwd_re = (\s*\W?\s*(fw|fwd|re|aw|sv|ang)\W)+
1074
1075 # Regular expression matching start of an original message
1076 # if quoted the in body.
1077 # Value is Python Regular Expression (UTF8-encoded).
1078 # Default: ^[>|\s]*-----\s?Original Message\s?-----$
1079 origmsg_re = ^[>|\s]*-----\s?Original Message\s?-----$
1080
1081 # Regular expression matching the start of a signature
1082 # in the message body.
1083 # Value is Python Regular Expression (UTF8-encoded).
1084 # Default: ^[>|\s]*-- ?$
1085 sign_re = ^[>|\s]*-- ?$
1086
1087 # Regular expression matching end of line.
1088 # Value is Python Regular Expression (UTF8-encoded).
1089 # Default: [\r\n]+
1090 eol_re = [\r\n]+
1091
1092 # Regular expression matching a blank line.
1093 # Value is Python Regular Expression (UTF8-encoded).
1094 # Default: [\r\n]+\s*[\r\n]+
1095 blankline_re = [\r\n]+\s*[\r\n]+
1096
1097 # Unpack attached messages (encoded as message/rfc822 in MIME)
1098 # as multiple parts attached as files to the issue, if not
1099 # set we handle message/rfc822 attachments as a single file.
1100 # Allowed values: yes, no
1101 # Default: no
1102 unpack_rfc822 = no
1103
1104 # When parsing incoming mails, roundup uses the first
1105 # text/plain part it finds. If this part is inside a
1106 # multipart/alternative, and this option is set, all other
1107 # parts of the multipart/alternative are ignored. The default
1108 # is to keep all parts and attach them to the issue.
1109 # Allowed values: yes, no
1110 # Default: no
1111 ignore_alternatives = no
1112
1113 # If an email has only text/html parts, use this module
1114 # to convert the html to text. Choose from beautifulsoup 4,
1115 # dehtml - (internal code), or none to disable conversion.
1116 # If 'none' is selected, email without a text/plain part
1117 # will be returned to the user with a message. If
1118 # beautifulsoup is selected but not installed dehtml will
1119 # be used instead.
1120 # Allowed values: beautifulsoup, dehtml, none
1121 # Default: none
1122 convert_htmltotext = none
1123
1124 # When handling emails ignore the Resent-From:-header
1125 # and use the original senders From:-header instead.
1126 # (This might be desirable in some situations where a moderator
1127 # reads incoming messages first before bouncing them to Roundup)
1128 # Allowed values: yes, no
1129 # Default: no
1130 keep_real_from = no
1131
1132 .. index:: config.ini; sections pgp
1133 .. _`config-ini-section-pgp`:
1134 .. code:: ini
1135
1136
1137 # OpenPGP mail processing options
1138
1139 [pgp]
1140
1141 # Enable PGP processing. Requires gpg. If you're planning
1142 # to send encrypted PGP mail to the tracker, you should also
1143 # enable the encrypt-option below, otherwise mail received
1144 # encrypted might be sent unencrypted to another user.
1145 # Allowed values: yes, no
1146 # Default: no
1147 enable = no
1148
1149 # If specified, a comma-separated list of roles to perform
1150 # PGP processing on. If not specified, it happens for all
1151 # users. Note that received PGP messages (signed and/or
1152 # encrypted) will be processed with PGP even if the user
1153 # doesn't have one of the PGP roles, you can use this to make
1154 # PGP processing completely optional by defining a role here
1155 # and not assigning any users to that role.
1156 # Default:
1157 roles =
1158
1159 # Location of PGP directory. Defaults to $HOME/.gnupg if
1160 # not specified.
1161 # Default:
1162 homedir =
1163
1164 # Enable PGP encryption. All outgoing mails are encrypted.
1165 # This requires that keys for all users (with one of the gpg
1166 # roles above or all users if empty) are available. Note that
1167 # it makes sense to educate users to also send mails encrypted
1168 # to the tracker, to enforce this, set 'require_incoming'
1169 # option below (but see the note).
1170 # Allowed values: yes, no
1171 # Default: no
1172 encrypt = no
1173
1174 # Require that pgp messages received by roundup are either
1175 # 'signed', 'encrypted' or 'both'. If encryption is required
1176 # we do not return the message (in clear) to the user but just
1177 # send an informational message that the message was rejected.
1178 # Note that this still presents known-plaintext to an attacker
1179 # when the users sends the mail a second time with encryption
1180 # turned on.
1181 # Default: signed
1182 require_incoming = signed
1183
1184 .. index:: config.ini; sections nosy
1185 .. _`config-ini-section-nosy`:
1186 .. code:: ini
1187
1188
1189 # Nosy messages sending
1190
1191 [nosy]
1192
1193 # Send nosy messages to the author of the message.
1194 # Allowed values: yes, no, new, nosy -- if yes, messages
1195 # are sent to the author even if not on the nosy list, same
1196 # for new (but only for new messages). When set to nosy,
1197 # the nosy list controls sending messages to the author.
1198 # Default: no
1199 messages_to_author = no
1200
1201 # Where to place the email signature.
1202 # Allowed values: top, bottom, none
1203 # Default: bottom
1204 signature_position = bottom
1205
1206 # Does the author of a message get placed on the nosy list
1207 # automatically? If 'new' is used, then the author will
1208 # only be added when a message creates a new issue.
1209 # If 'yes', then the author will be added on followups too.
1210 # If 'no', they're never added to the nosy.
1211 #
1212 # Allowed values: yes, no, new
1213 # Default: new
1214 add_author = new
1215
1216 # Do the recipients (To:, Cc:) of a message get placed on the
1217 # nosy list? If 'new' is used, then the recipients will
1218 # only be added when a message creates a new issue.
1219 # If 'yes', then the recipients will be added on followups too.
1220 # If 'no', they're never added to the nosy.
1221 #
1222 # Allowed values: yes, no, new
1223 # Default: new
1224 add_recipients = new
1225
1226 # Controls the email sending from the nosy reactor. If
1227 # "multiple" then a separate email is sent to each
1228 # recipient. If "single" then a single email is sent with
1229 # each recipient as a CC address.
1230 # Default: single
1231 email_sending = single
1232
1233 # Attachments larger than the given number of bytes
1234 # won't be attached to nosy mails. They will be replaced by
1235 # a link to the tracker's download page for the file.
1236 # Default: 9223372036854775807
1237 max_attachment_size = 9223372036854775807
1238
1239 .. index:: config.ini; sections markdown
1240 .. _`config-ini-section-markdown`:
1241 .. code:: ini
1242
1243
1244 # Markdown rendering options.
1245
1246 [markdown]
1247
1248 # If yes/true, render single new line characters in markdown
1249 # text with <br>. Set true if you want GitHub Flavored Markdown
1250 # (GFM) handling of embedded newlines.
1251 # Allowed values: yes, no
1252 # Default: no
1253 break_on_newline = no

Roundup Issue Tracker: http://roundup-tracker.org/