##// END OF EJS Templates
i18n: use TG2 compatible settings names i18n.lang and i18n.enabled...
Thomas De Schampheleire -
r6629:f2f7a8c1 default
parent child Browse files
Show More
@@ -1,617 +1,621 b''
1 ################################################################################
1 ################################################################################
2 ################################################################################
2 ################################################################################
3 # Kallithea - Development config: #
3 # Kallithea - Development config: #
4 # listening on *:5000 #
4 # listening on *:5000 #
5 # sqlite and kallithea.db #
5 # sqlite and kallithea.db #
6 # initial_repo_scan = true #
6 # initial_repo_scan = true #
7 # debug = true #
7 # debug = true #
8 # verbose and colorful logging #
8 # verbose and colorful logging #
9 # #
9 # #
10 # The %(here)s variable will be replaced with the parent directory of this file#
10 # The %(here)s variable will be replaced with the parent directory of this file#
11 ################################################################################
11 ################################################################################
12 ################################################################################
12 ################################################################################
13
13
14 [DEFAULT]
14 [DEFAULT]
15
15
16 ################################################################################
16 ################################################################################
17 ## Email settings ##
17 ## Email settings ##
18 ## ##
18 ## ##
19 ## Refer to the documentation ("Email settings") for more details. ##
19 ## Refer to the documentation ("Email settings") for more details. ##
20 ## ##
20 ## ##
21 ## It is recommended to use a valid sender address that passes access ##
21 ## It is recommended to use a valid sender address that passes access ##
22 ## validation and spam filtering in mail servers. ##
22 ## validation and spam filtering in mail servers. ##
23 ################################################################################
23 ################################################################################
24
24
25 ## 'From' header for application emails. You can optionally add a name.
25 ## 'From' header for application emails. You can optionally add a name.
26 ## Default:
26 ## Default:
27 #app_email_from = Kallithea
27 #app_email_from = Kallithea
28 ## Examples:
28 ## Examples:
29 #app_email_from = Kallithea <kallithea-noreply@example.com>
29 #app_email_from = Kallithea <kallithea-noreply@example.com>
30 #app_email_from = kallithea-noreply@example.com
30 #app_email_from = kallithea-noreply@example.com
31
31
32 ## Subject prefix for application emails.
32 ## Subject prefix for application emails.
33 ## A space between this prefix and the real subject is automatically added.
33 ## A space between this prefix and the real subject is automatically added.
34 ## Default:
34 ## Default:
35 #email_prefix =
35 #email_prefix =
36 ## Example:
36 ## Example:
37 #email_prefix = [Kallithea]
37 #email_prefix = [Kallithea]
38
38
39 ## Recipients for error emails and fallback recipients of application mails.
39 ## Recipients for error emails and fallback recipients of application mails.
40 ## Multiple addresses can be specified, space-separated.
40 ## Multiple addresses can be specified, space-separated.
41 ## Only addresses are allowed, do not add any name part.
41 ## Only addresses are allowed, do not add any name part.
42 ## Default:
42 ## Default:
43 #email_to =
43 #email_to =
44 ## Examples:
44 ## Examples:
45 #email_to = admin@example.com
45 #email_to = admin@example.com
46 #email_to = admin@example.com another_admin@example.com
46 #email_to = admin@example.com another_admin@example.com
47 email_to =
47 email_to =
48
48
49 ## 'From' header for error emails. You can optionally add a name.
49 ## 'From' header for error emails. You can optionally add a name.
50 ## Default: (none)
50 ## Default: (none)
51 ## Examples:
51 ## Examples:
52 #error_email_from = Kallithea Errors <kallithea-noreply@example.com>
52 #error_email_from = Kallithea Errors <kallithea-noreply@example.com>
53 #error_email_from = kallithea_errors@example.com
53 #error_email_from = kallithea_errors@example.com
54 error_email_from =
54 error_email_from =
55
55
56 ## SMTP server settings
56 ## SMTP server settings
57 ## If specifying credentials, make sure to use secure connections.
57 ## If specifying credentials, make sure to use secure connections.
58 ## Default: Send unencrypted unauthenticated mails to the specified smtp_server.
58 ## Default: Send unencrypted unauthenticated mails to the specified smtp_server.
59 ## For "SSL", use smtp_use_ssl = true and smtp_port = 465.
59 ## For "SSL", use smtp_use_ssl = true and smtp_port = 465.
60 ## For "STARTTLS", use smtp_use_tls = true and smtp_port = 587.
60 ## For "STARTTLS", use smtp_use_tls = true and smtp_port = 587.
61 smtp_server =
61 smtp_server =
62 #smtp_username =
62 #smtp_username =
63 #smtp_password =
63 #smtp_password =
64 smtp_port =
64 smtp_port =
65 #smtp_use_ssl = false
65 #smtp_use_ssl = false
66 #smtp_use_tls = false
66 #smtp_use_tls = false
67
67
68 [server:main]
68 [server:main]
69 ## Gearbox default web server ##
69 ## Gearbox default web server ##
70 #use = egg:gearbox#wsgiref
70 #use = egg:gearbox#wsgiref
71 ## nr of worker threads to spawn
71 ## nr of worker threads to spawn
72 #threadpool_workers = 1
72 #threadpool_workers = 1
73 ## max request before thread respawn
73 ## max request before thread respawn
74 #threadpool_max_requests = 100
74 #threadpool_max_requests = 100
75 ## option to use threads of process
75 ## option to use threads of process
76 #use_threadpool = true
76 #use_threadpool = true
77
77
78 ## Gearbox gevent web server ##
78 ## Gearbox gevent web server ##
79 #use = egg:gearbox#gevent
79 #use = egg:gearbox#gevent
80
80
81 ## WAITRESS ##
81 ## WAITRESS ##
82 use = egg:waitress#main
82 use = egg:waitress#main
83 ## number of worker threads
83 ## number of worker threads
84 threads = 1
84 threads = 1
85 ## MAX BODY SIZE 100GB
85 ## MAX BODY SIZE 100GB
86 max_request_body_size = 107374182400
86 max_request_body_size = 107374182400
87 ## use poll instead of select, fixes fd limits, may not work on old
87 ## use poll instead of select, fixes fd limits, may not work on old
88 ## windows systems.
88 ## windows systems.
89 #asyncore_use_poll = True
89 #asyncore_use_poll = True
90
90
91 ## GUNICORN ##
91 ## GUNICORN ##
92 #use = egg:gunicorn#main
92 #use = egg:gunicorn#main
93 ## number of process workers. You must set `instance_id = *` when this option
93 ## number of process workers. You must set `instance_id = *` when this option
94 ## is set to more than one worker
94 ## is set to more than one worker
95 #workers = 1
95 #workers = 1
96 ## process name
96 ## process name
97 #proc_name = kallithea
97 #proc_name = kallithea
98 ## type of worker class, one of sync, eventlet, gevent, tornado
98 ## type of worker class, one of sync, eventlet, gevent, tornado
99 ## recommended for bigger setup is using of of other than sync one
99 ## recommended for bigger setup is using of of other than sync one
100 #worker_class = sync
100 #worker_class = sync
101 #max_requests = 1000
101 #max_requests = 1000
102 ## amount of time a worker can handle request before it gets killed and
102 ## amount of time a worker can handle request before it gets killed and
103 ## restarted
103 ## restarted
104 #timeout = 3600
104 #timeout = 3600
105
105
106 ## UWSGI ##
106 ## UWSGI ##
107 ## run with uwsgi --ini-paste-logged <inifile.ini>
107 ## run with uwsgi --ini-paste-logged <inifile.ini>
108 #[uwsgi]
108 #[uwsgi]
109 #socket = /tmp/uwsgi.sock
109 #socket = /tmp/uwsgi.sock
110 #master = true
110 #master = true
111 #http = 127.0.0.1:5000
111 #http = 127.0.0.1:5000
112
112
113 ## set as deamon and redirect all output to file
113 ## set as deamon and redirect all output to file
114 #daemonize = ./uwsgi_kallithea.log
114 #daemonize = ./uwsgi_kallithea.log
115
115
116 ## master process PID
116 ## master process PID
117 #pidfile = ./uwsgi_kallithea.pid
117 #pidfile = ./uwsgi_kallithea.pid
118
118
119 ## stats server with workers statistics, use uwsgitop
119 ## stats server with workers statistics, use uwsgitop
120 ## for monitoring, `uwsgitop 127.0.0.1:1717`
120 ## for monitoring, `uwsgitop 127.0.0.1:1717`
121 #stats = 127.0.0.1:1717
121 #stats = 127.0.0.1:1717
122 #memory-report = true
122 #memory-report = true
123
123
124 ## log 5XX errors
124 ## log 5XX errors
125 #log-5xx = true
125 #log-5xx = true
126
126
127 ## Set the socket listen queue size.
127 ## Set the socket listen queue size.
128 #listen = 256
128 #listen = 256
129
129
130 ## Gracefully Reload workers after the specified amount of managed requests
130 ## Gracefully Reload workers after the specified amount of managed requests
131 ## (avoid memory leaks).
131 ## (avoid memory leaks).
132 #max-requests = 1000
132 #max-requests = 1000
133
133
134 ## enable large buffers
134 ## enable large buffers
135 #buffer-size = 65535
135 #buffer-size = 65535
136
136
137 ## socket and http timeouts ##
137 ## socket and http timeouts ##
138 #http-timeout = 3600
138 #http-timeout = 3600
139 #socket-timeout = 3600
139 #socket-timeout = 3600
140
140
141 ## Log requests slower than the specified number of milliseconds.
141 ## Log requests slower than the specified number of milliseconds.
142 #log-slow = 10
142 #log-slow = 10
143
143
144 ## Exit if no app can be loaded.
144 ## Exit if no app can be loaded.
145 #need-app = true
145 #need-app = true
146
146
147 ## Set lazy mode (load apps in workers instead of master).
147 ## Set lazy mode (load apps in workers instead of master).
148 #lazy = true
148 #lazy = true
149
149
150 ## scaling ##
150 ## scaling ##
151 ## set cheaper algorithm to use, if not set default will be used
151 ## set cheaper algorithm to use, if not set default will be used
152 #cheaper-algo = spare
152 #cheaper-algo = spare
153
153
154 ## minimum number of workers to keep at all times
154 ## minimum number of workers to keep at all times
155 #cheaper = 1
155 #cheaper = 1
156
156
157 ## number of workers to spawn at startup
157 ## number of workers to spawn at startup
158 #cheaper-initial = 1
158 #cheaper-initial = 1
159
159
160 ## maximum number of workers that can be spawned
160 ## maximum number of workers that can be spawned
161 #workers = 4
161 #workers = 4
162
162
163 ## how many workers should be spawned at a time
163 ## how many workers should be spawned at a time
164 #cheaper-step = 1
164 #cheaper-step = 1
165
165
166 ## COMMON ##
166 ## COMMON ##
167 #host = 127.0.0.1
167 #host = 127.0.0.1
168 host = 0.0.0.0
168 host = 0.0.0.0
169 port = 5000
169 port = 5000
170
170
171 ## middleware for hosting the WSGI application under a URL prefix
171 ## middleware for hosting the WSGI application under a URL prefix
172 #[filter:proxy-prefix]
172 #[filter:proxy-prefix]
173 #use = egg:PasteDeploy#prefix
173 #use = egg:PasteDeploy#prefix
174 #prefix = /<your-prefix>
174 #prefix = /<your-prefix>
175
175
176 [app:main]
176 [app:main]
177 use = egg:kallithea
177 use = egg:kallithea
178 ## enable proxy prefix middleware
178 ## enable proxy prefix middleware
179 #filter-with = proxy-prefix
179 #filter-with = proxy-prefix
180
180
181 full_stack = true
181 full_stack = true
182 static_files = true
182 static_files = true
183 ## Available Languages:
183
184 ## cs de fr hu ja nl_BE pl pt_BR ru sk zh_CN zh_TW
184 ## Internationalization (see setup documentation for details)
185 lang =
185 ## By default, the language requested by the browser is used if available.
186 #i18n.enable = false
187 ## Fallback language, empty for English (valid values are the names of subdirectories in kallithea/i18n):
188 i18n.lang =
189
186 cache_dir = %(here)s/data
190 cache_dir = %(here)s/data
187 index_dir = %(here)s/data/index
191 index_dir = %(here)s/data/index
188
192
189 ## perform a full repository scan on each server start, this should be
193 ## perform a full repository scan on each server start, this should be
190 ## set to false after first startup, to allow faster server restarts.
194 ## set to false after first startup, to allow faster server restarts.
191 #initial_repo_scan = false
195 #initial_repo_scan = false
192 initial_repo_scan = true
196 initial_repo_scan = true
193
197
194 ## uncomment and set this path to use archive download cache
198 ## uncomment and set this path to use archive download cache
195 archive_cache_dir = %(here)s/tarballcache
199 archive_cache_dir = %(here)s/tarballcache
196
200
197 ## change this to unique ID for security
201 ## change this to unique ID for security
198 app_instance_uuid = development-not-secret
202 app_instance_uuid = development-not-secret
199
203
200 ## cut off limit for large diffs (size in bytes)
204 ## cut off limit for large diffs (size in bytes)
201 cut_off_limit = 256000
205 cut_off_limit = 256000
202
206
203 ## force https in Kallithea, fixes https redirects, assumes it's always https
207 ## force https in Kallithea, fixes https redirects, assumes it's always https
204 force_https = false
208 force_https = false
205
209
206 ## use Strict-Transport-Security headers
210 ## use Strict-Transport-Security headers
207 use_htsts = false
211 use_htsts = false
208
212
209 ## number of commits stats will parse on each iteration
213 ## number of commits stats will parse on each iteration
210 commit_parse_limit = 25
214 commit_parse_limit = 25
211
215
212 ## path to git executable
216 ## path to git executable
213 git_path = git
217 git_path = git
214
218
215 ## git rev filter option, --all is the default filter, if you need to
219 ## git rev filter option, --all is the default filter, if you need to
216 ## hide all refs in changelog switch this to --branches --tags
220 ## hide all refs in changelog switch this to --branches --tags
217 #git_rev_filter = --branches --tags
221 #git_rev_filter = --branches --tags
218
222
219 ## RSS feed options
223 ## RSS feed options
220 rss_cut_off_limit = 256000
224 rss_cut_off_limit = 256000
221 rss_items_per_page = 10
225 rss_items_per_page = 10
222 rss_include_diff = false
226 rss_include_diff = false
223
227
224 ## options for showing and identifying changesets
228 ## options for showing and identifying changesets
225 show_sha_length = 12
229 show_sha_length = 12
226 show_revision_number = false
230 show_revision_number = false
227
231
228 ## Canonical URL to use when creating full URLs in UI and texts.
232 ## Canonical URL to use when creating full URLs in UI and texts.
229 ## Useful when the site is available under different names or protocols.
233 ## Useful when the site is available under different names or protocols.
230 ## Defaults to what is provided in the WSGI environment.
234 ## Defaults to what is provided in the WSGI environment.
231 #canonical_url = https://kallithea.example.com/repos
235 #canonical_url = https://kallithea.example.com/repos
232
236
233 ## gist URL alias, used to create nicer urls for gist. This should be an
237 ## gist URL alias, used to create nicer urls for gist. This should be an
234 ## url that does rewrites to _admin/gists/<gistid>.
238 ## url that does rewrites to _admin/gists/<gistid>.
235 ## example: http://gist.example.com/{gistid}. Empty means use the internal
239 ## example: http://gist.example.com/{gistid}. Empty means use the internal
236 ## Kallithea url, ie. http[s]://kallithea.example.com/_admin/gists/<gistid>
240 ## Kallithea url, ie. http[s]://kallithea.example.com/_admin/gists/<gistid>
237 gist_alias_url =
241 gist_alias_url =
238
242
239 ## white list of API enabled controllers. This allows to add list of
243 ## white list of API enabled controllers. This allows to add list of
240 ## controllers to which access will be enabled by api_key. eg: to enable
244 ## controllers to which access will be enabled by api_key. eg: to enable
241 ## api access to raw_files put `FilesController:raw`, to enable access to patches
245 ## api access to raw_files put `FilesController:raw`, to enable access to patches
242 ## add `ChangesetController:changeset_patch`. This list should be "," separated
246 ## add `ChangesetController:changeset_patch`. This list should be "," separated
243 ## Syntax is <ControllerClass>:<function>. Check debug logs for generated names
247 ## Syntax is <ControllerClass>:<function>. Check debug logs for generated names
244 ## Recommended settings below are commented out:
248 ## Recommended settings below are commented out:
245 api_access_controllers_whitelist =
249 api_access_controllers_whitelist =
246 # ChangesetController:changeset_patch,
250 # ChangesetController:changeset_patch,
247 # ChangesetController:changeset_raw,
251 # ChangesetController:changeset_raw,
248 # FilesController:raw,
252 # FilesController:raw,
249 # FilesController:archivefile
253 # FilesController:archivefile
250
254
251 ## default encoding used to convert from and to unicode
255 ## default encoding used to convert from and to unicode
252 ## can be also a comma separated list of encoding in case of mixed encodings
256 ## can be also a comma separated list of encoding in case of mixed encodings
253 default_encoding = utf8
257 default_encoding = utf8
254
258
255 ## issue tracker for Kallithea (leave blank to disable, absent for default)
259 ## issue tracker for Kallithea (leave blank to disable, absent for default)
256 #bugtracker = https://bitbucket.org/conservancy/kallithea/issues
260 #bugtracker = https://bitbucket.org/conservancy/kallithea/issues
257
261
258 ## issue tracking mapping for commits messages
262 ## issue tracking mapping for commits messages
259 ## comment out issue_pat, issue_server, issue_prefix to enable
263 ## comment out issue_pat, issue_server, issue_prefix to enable
260
264
261 ## pattern to get the issues from commit messages
265 ## pattern to get the issues from commit messages
262 ## default one used here is #<numbers> with a regex passive group for `#`
266 ## default one used here is #<numbers> with a regex passive group for `#`
263 ## {id} will be all groups matched from this pattern
267 ## {id} will be all groups matched from this pattern
264
268
265 issue_pat = (?:\s*#)(\d+)
269 issue_pat = (?:\s*#)(\d+)
266
270
267 ## server url to the issue, each {id} will be replaced with match
271 ## server url to the issue, each {id} will be replaced with match
268 ## fetched from the regex and {repo} is replaced with full repository name
272 ## fetched from the regex and {repo} is replaced with full repository name
269 ## including groups {repo_name} is replaced with just name of repo
273 ## including groups {repo_name} is replaced with just name of repo
270
274
271 issue_server_link = https://issues.example.com/{repo}/issue/{id}
275 issue_server_link = https://issues.example.com/{repo}/issue/{id}
272
276
273 ## prefix to add to link to indicate it's an url
277 ## prefix to add to link to indicate it's an url
274 ## #314 will be replaced by <issue_prefix><id>
278 ## #314 will be replaced by <issue_prefix><id>
275
279
276 issue_prefix = #
280 issue_prefix = #
277
281
278 ## issue_pat, issue_server_link, issue_prefix can have suffixes to specify
282 ## issue_pat, issue_server_link, issue_prefix can have suffixes to specify
279 ## multiple patterns, to other issues server, wiki or others
283 ## multiple patterns, to other issues server, wiki or others
280 ## below an example how to create a wiki pattern
284 ## below an example how to create a wiki pattern
281 # wiki-some-id -> https://wiki.example.com/some-id
285 # wiki-some-id -> https://wiki.example.com/some-id
282
286
283 #issue_pat_wiki = (?:wiki-)(.+)
287 #issue_pat_wiki = (?:wiki-)(.+)
284 #issue_server_link_wiki = https://wiki.example.com/{id}
288 #issue_server_link_wiki = https://wiki.example.com/{id}
285 #issue_prefix_wiki = WIKI-
289 #issue_prefix_wiki = WIKI-
286
290
287 ## alternative return HTTP header for failed authentication. Default HTTP
291 ## alternative return HTTP header for failed authentication. Default HTTP
288 ## response is 401 HTTPUnauthorized. Currently Mercurial clients have trouble with
292 ## response is 401 HTTPUnauthorized. Currently Mercurial clients have trouble with
289 ## handling that. Set this variable to 403 to return HTTPForbidden
293 ## handling that. Set this variable to 403 to return HTTPForbidden
290 auth_ret_code =
294 auth_ret_code =
291
295
292 ## locking return code. When repository is locked return this HTTP code. 2XX
296 ## locking return code. When repository is locked return this HTTP code. 2XX
293 ## codes don't break the transactions while 4XX codes do
297 ## codes don't break the transactions while 4XX codes do
294 lock_ret_code = 423
298 lock_ret_code = 423
295
299
296 ## allows to change the repository location in settings page
300 ## allows to change the repository location in settings page
297 allow_repo_location_change = True
301 allow_repo_location_change = True
298
302
299 ## allows to setup custom hooks in settings page
303 ## allows to setup custom hooks in settings page
300 allow_custom_hooks_settings = True
304 allow_custom_hooks_settings = True
301
305
302 ## extra extensions for indexing, space separated and without the leading '.'.
306 ## extra extensions for indexing, space separated and without the leading '.'.
303 # index.extensions =
307 # index.extensions =
304 # gemfile
308 # gemfile
305 # lock
309 # lock
306
310
307 ## extra filenames for indexing, space separated
311 ## extra filenames for indexing, space separated
308 # index.filenames =
312 # index.filenames =
309 # .dockerignore
313 # .dockerignore
310 # .editorconfig
314 # .editorconfig
311 # INSTALL
315 # INSTALL
312 # CHANGELOG
316 # CHANGELOG
313
317
314 ####################################
318 ####################################
315 ### CELERY CONFIG ####
319 ### CELERY CONFIG ####
316 ####################################
320 ####################################
317
321
318 use_celery = false
322 use_celery = false
319
323
320 ## Example: connect to the virtual host 'rabbitmqhost' on localhost as rabbitmq:
324 ## Example: connect to the virtual host 'rabbitmqhost' on localhost as rabbitmq:
321 broker.url = amqp://rabbitmq:qewqew@localhost:5672/rabbitmqhost
325 broker.url = amqp://rabbitmq:qewqew@localhost:5672/rabbitmqhost
322
326
323 celery.imports = kallithea.lib.celerylib.tasks
327 celery.imports = kallithea.lib.celerylib.tasks
324 celery.accept.content = pickle
328 celery.accept.content = pickle
325 celery.result.backend = amqp
329 celery.result.backend = amqp
326 celery.result.dburi = amqp://
330 celery.result.dburi = amqp://
327 celery.result.serialier = json
331 celery.result.serialier = json
328
332
329 #celery.send.task.error.emails = true
333 #celery.send.task.error.emails = true
330 #celery.amqp.task.result.expires = 18000
334 #celery.amqp.task.result.expires = 18000
331
335
332 celeryd.concurrency = 2
336 celeryd.concurrency = 2
333 celeryd.max.tasks.per.child = 1
337 celeryd.max.tasks.per.child = 1
334
338
335 ## If true, tasks will never be sent to the queue, but executed locally instead.
339 ## If true, tasks will never be sent to the queue, but executed locally instead.
336 celery.always.eager = false
340 celery.always.eager = false
337
341
338 ####################################
342 ####################################
339 ### BEAKER CACHE ####
343 ### BEAKER CACHE ####
340 ####################################
344 ####################################
341
345
342 beaker.cache.data_dir = %(here)s/data/cache/data
346 beaker.cache.data_dir = %(here)s/data/cache/data
343 beaker.cache.lock_dir = %(here)s/data/cache/lock
347 beaker.cache.lock_dir = %(here)s/data/cache/lock
344
348
345 beaker.cache.regions = short_term,long_term,sql_cache_short
349 beaker.cache.regions = short_term,long_term,sql_cache_short
346
350
347 beaker.cache.short_term.type = memory
351 beaker.cache.short_term.type = memory
348 beaker.cache.short_term.expire = 60
352 beaker.cache.short_term.expire = 60
349 beaker.cache.short_term.key_length = 256
353 beaker.cache.short_term.key_length = 256
350
354
351 beaker.cache.long_term.type = memory
355 beaker.cache.long_term.type = memory
352 beaker.cache.long_term.expire = 36000
356 beaker.cache.long_term.expire = 36000
353 beaker.cache.long_term.key_length = 256
357 beaker.cache.long_term.key_length = 256
354
358
355 beaker.cache.sql_cache_short.type = memory
359 beaker.cache.sql_cache_short.type = memory
356 beaker.cache.sql_cache_short.expire = 10
360 beaker.cache.sql_cache_short.expire = 10
357 beaker.cache.sql_cache_short.key_length = 256
361 beaker.cache.sql_cache_short.key_length = 256
358
362
359 ####################################
363 ####################################
360 ### BEAKER SESSION ####
364 ### BEAKER SESSION ####
361 ####################################
365 ####################################
362
366
363 ## Name of session cookie. Should be unique for a given host and path, even when running
367 ## Name of session cookie. Should be unique for a given host and path, even when running
364 ## on different ports. Otherwise, cookie sessions will be shared and messed up.
368 ## on different ports. Otherwise, cookie sessions will be shared and messed up.
365 beaker.session.key = kallithea
369 beaker.session.key = kallithea
366 ## Sessions should always only be accessible by the browser, not directly by JavaScript.
370 ## Sessions should always only be accessible by the browser, not directly by JavaScript.
367 beaker.session.httponly = true
371 beaker.session.httponly = true
368 ## Session lifetime. 2592000 seconds is 30 days.
372 ## Session lifetime. 2592000 seconds is 30 days.
369 beaker.session.timeout = 2592000
373 beaker.session.timeout = 2592000
370
374
371 ## Server secret used with HMAC to ensure integrity of cookies.
375 ## Server secret used with HMAC to ensure integrity of cookies.
372 beaker.session.secret = development-not-secret
376 beaker.session.secret = development-not-secret
373 ## Further, encrypt the data with AES.
377 ## Further, encrypt the data with AES.
374 #beaker.session.encrypt_key = <key_for_encryption>
378 #beaker.session.encrypt_key = <key_for_encryption>
375 #beaker.session.validate_key = <validation_key>
379 #beaker.session.validate_key = <validation_key>
376
380
377 ## Type of storage used for the session, current types are
381 ## Type of storage used for the session, current types are
378 ## dbm, file, memcached, database, and memory.
382 ## dbm, file, memcached, database, and memory.
379
383
380 ## File system storage of session data. (default)
384 ## File system storage of session data. (default)
381 #beaker.session.type = file
385 #beaker.session.type = file
382
386
383 ## Cookie only, store all session data inside the cookie. Requires secure secrets.
387 ## Cookie only, store all session data inside the cookie. Requires secure secrets.
384 #beaker.session.type = cookie
388 #beaker.session.type = cookie
385
389
386 ## Database storage of session data.
390 ## Database storage of session data.
387 #beaker.session.type = ext:database
391 #beaker.session.type = ext:database
388 #beaker.session.sa.url = postgresql://postgres:qwe@localhost/kallithea
392 #beaker.session.sa.url = postgresql://postgres:qwe@localhost/kallithea
389 #beaker.session.table_name = db_session
393 #beaker.session.table_name = db_session
390
394
391 ############################
395 ############################
392 ## ERROR HANDLING SYSTEMS ##
396 ## ERROR HANDLING SYSTEMS ##
393 ############################
397 ############################
394
398
395 # Propagate email settings to ErrorReporter of TurboGears2
399 # Propagate email settings to ErrorReporter of TurboGears2
396 # You do not normally need to change these lines
400 # You do not normally need to change these lines
397 get trace_errors.error_email = email_to
401 get trace_errors.error_email = email_to
398 get trace_errors.smtp_server = smtp_server
402 get trace_errors.smtp_server = smtp_server
399 get trace_errors.smtp_port = smtp_port
403 get trace_errors.smtp_port = smtp_port
400 get trace_errors.from_address = error_email_from
404 get trace_errors.from_address = error_email_from
401
405
402 ####################
406 ####################
403 ### [appenlight] ###
407 ### [appenlight] ###
404 ####################
408 ####################
405
409
406 ## AppEnlight is tailored to work with Kallithea, see
410 ## AppEnlight is tailored to work with Kallithea, see
407 ## http://appenlight.com for details how to obtain an account
411 ## http://appenlight.com for details how to obtain an account
408 ## you must install python package `appenlight_client` to make it work
412 ## you must install python package `appenlight_client` to make it work
409
413
410 ## appenlight enabled
414 ## appenlight enabled
411 appenlight = false
415 appenlight = false
412
416
413 appenlight.server_url = https://api.appenlight.com
417 appenlight.server_url = https://api.appenlight.com
414 appenlight.api_key = YOUR_API_KEY
418 appenlight.api_key = YOUR_API_KEY
415
419
416 ## TWEAK AMOUNT OF INFO SENT HERE
420 ## TWEAK AMOUNT OF INFO SENT HERE
417
421
418 ## enables 404 error logging (default False)
422 ## enables 404 error logging (default False)
419 appenlight.report_404 = false
423 appenlight.report_404 = false
420
424
421 ## time in seconds after request is considered being slow (default 1)
425 ## time in seconds after request is considered being slow (default 1)
422 appenlight.slow_request_time = 1
426 appenlight.slow_request_time = 1
423
427
424 ## record slow requests in application
428 ## record slow requests in application
425 ## (needs to be enabled for slow datastore recording and time tracking)
429 ## (needs to be enabled for slow datastore recording and time tracking)
426 appenlight.slow_requests = true
430 appenlight.slow_requests = true
427
431
428 ## enable hooking to application loggers
432 ## enable hooking to application loggers
429 #appenlight.logging = true
433 #appenlight.logging = true
430
434
431 ## minimum log level for log capture
435 ## minimum log level for log capture
432 #appenlight.logging.level = WARNING
436 #appenlight.logging.level = WARNING
433
437
434 ## send logs only from erroneous/slow requests
438 ## send logs only from erroneous/slow requests
435 ## (saves API quota for intensive logging)
439 ## (saves API quota for intensive logging)
436 appenlight.logging_on_error = false
440 appenlight.logging_on_error = false
437
441
438 ## list of additional keywords that should be grabbed from environ object
442 ## list of additional keywords that should be grabbed from environ object
439 ## can be string with comma separated list of words in lowercase
443 ## can be string with comma separated list of words in lowercase
440 ## (by default client will always send following info:
444 ## (by default client will always send following info:
441 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
445 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
442 ## start with HTTP* this list be extended with additional keywords here
446 ## start with HTTP* this list be extended with additional keywords here
443 appenlight.environ_keys_whitelist =
447 appenlight.environ_keys_whitelist =
444
448
445 ## list of keywords that should be blanked from request object
449 ## list of keywords that should be blanked from request object
446 ## can be string with comma separated list of words in lowercase
450 ## can be string with comma separated list of words in lowercase
447 ## (by default client will always blank keys that contain following words
451 ## (by default client will always blank keys that contain following words
448 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
452 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
449 ## this list be extended with additional keywords set here
453 ## this list be extended with additional keywords set here
450 appenlight.request_keys_blacklist =
454 appenlight.request_keys_blacklist =
451
455
452 ## list of namespaces that should be ignores when gathering log entries
456 ## list of namespaces that should be ignores when gathering log entries
453 ## can be string with comma separated list of namespaces
457 ## can be string with comma separated list of namespaces
454 ## (by default the client ignores own entries: appenlight_client.client)
458 ## (by default the client ignores own entries: appenlight_client.client)
455 appenlight.log_namespace_blacklist =
459 appenlight.log_namespace_blacklist =
456
460
457 ################
461 ################
458 ### [sentry] ###
462 ### [sentry] ###
459 ################
463 ################
460
464
461 ## sentry is a alternative open source error aggregator
465 ## sentry is a alternative open source error aggregator
462 ## you must install python packages `sentry` and `raven` to enable
466 ## you must install python packages `sentry` and `raven` to enable
463
467
464 sentry.dsn = YOUR_DNS
468 sentry.dsn = YOUR_DNS
465 sentry.servers =
469 sentry.servers =
466 sentry.name =
470 sentry.name =
467 sentry.key =
471 sentry.key =
468 sentry.public_key =
472 sentry.public_key =
469 sentry.secret_key =
473 sentry.secret_key =
470 sentry.project =
474 sentry.project =
471 sentry.site =
475 sentry.site =
472 sentry.include_paths =
476 sentry.include_paths =
473 sentry.exclude_paths =
477 sentry.exclude_paths =
474
478
475 ################################################################################
479 ################################################################################
476 ## WARNING: *DEBUG MODE MUST BE OFF IN A PRODUCTION ENVIRONMENT* ##
480 ## WARNING: *DEBUG MODE MUST BE OFF IN A PRODUCTION ENVIRONMENT* ##
477 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
481 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
478 ## execute malicious code after an exception is raised. ##
482 ## execute malicious code after an exception is raised. ##
479 ################################################################################
483 ################################################################################
480 #debug = false
484 #debug = false
481 debug = true
485 debug = true
482
486
483 ##################################
487 ##################################
484 ### LOGVIEW CONFIG ###
488 ### LOGVIEW CONFIG ###
485 ##################################
489 ##################################
486
490
487 logview.sqlalchemy = #faa
491 logview.sqlalchemy = #faa
488 logview.pylons.templating = #bfb
492 logview.pylons.templating = #bfb
489 logview.pylons.util = #eee
493 logview.pylons.util = #eee
490
494
491 #########################################################
495 #########################################################
492 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
496 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
493 #########################################################
497 #########################################################
494
498
495 # SQLITE [default]
499 # SQLITE [default]
496 sqlalchemy.url = sqlite:///%(here)s/kallithea.db?timeout=60
500 sqlalchemy.url = sqlite:///%(here)s/kallithea.db?timeout=60
497
501
498 # POSTGRESQL
502 # POSTGRESQL
499 #sqlalchemy.url = postgresql://user:pass@localhost/kallithea
503 #sqlalchemy.url = postgresql://user:pass@localhost/kallithea
500
504
501 # MySQL
505 # MySQL
502 #sqlalchemy.url = mysql://user:pass@localhost/kallithea?charset=utf8
506 #sqlalchemy.url = mysql://user:pass@localhost/kallithea?charset=utf8
503
507
504 # see sqlalchemy docs for others
508 # see sqlalchemy docs for others
505
509
506 sqlalchemy.pool_recycle = 3600
510 sqlalchemy.pool_recycle = 3600
507
511
508 ################################
512 ################################
509 ### ALEMBIC CONFIGURATION ####
513 ### ALEMBIC CONFIGURATION ####
510 ################################
514 ################################
511
515
512 [alembic]
516 [alembic]
513 script_location = kallithea:alembic
517 script_location = kallithea:alembic
514
518
515 ################################
519 ################################
516 ### LOGGING CONFIGURATION ####
520 ### LOGGING CONFIGURATION ####
517 ################################
521 ################################
518
522
519 [loggers]
523 [loggers]
520 keys = root, routes, kallithea, sqlalchemy, tg, gearbox, beaker, templates, whoosh_indexer
524 keys = root, routes, kallithea, sqlalchemy, tg, gearbox, beaker, templates, whoosh_indexer
521
525
522 [handlers]
526 [handlers]
523 keys = console, console_sql
527 keys = console, console_sql
524
528
525 [formatters]
529 [formatters]
526 keys = generic, color_formatter, color_formatter_sql
530 keys = generic, color_formatter, color_formatter_sql
527
531
528 #############
532 #############
529 ## LOGGERS ##
533 ## LOGGERS ##
530 #############
534 #############
531
535
532 [logger_root]
536 [logger_root]
533 level = NOTSET
537 level = NOTSET
534 handlers = console
538 handlers = console
535
539
536 [logger_routes]
540 [logger_routes]
537 level = DEBUG
541 level = DEBUG
538 handlers =
542 handlers =
539 qualname = routes.middleware
543 qualname = routes.middleware
540 ## "level = DEBUG" logs the route matched and routing variables.
544 ## "level = DEBUG" logs the route matched and routing variables.
541 propagate = 1
545 propagate = 1
542
546
543 [logger_beaker]
547 [logger_beaker]
544 level = DEBUG
548 level = DEBUG
545 handlers =
549 handlers =
546 qualname = beaker.container
550 qualname = beaker.container
547 propagate = 1
551 propagate = 1
548
552
549 [logger_templates]
553 [logger_templates]
550 level = INFO
554 level = INFO
551 handlers =
555 handlers =
552 qualname = pylons.templating
556 qualname = pylons.templating
553 propagate = 1
557 propagate = 1
554
558
555 [logger_kallithea]
559 [logger_kallithea]
556 level = DEBUG
560 level = DEBUG
557 handlers =
561 handlers =
558 qualname = kallithea
562 qualname = kallithea
559 propagate = 1
563 propagate = 1
560
564
561 [logger_tg]
565 [logger_tg]
562 level = DEBUG
566 level = DEBUG
563 handlers =
567 handlers =
564 qualname = tg
568 qualname = tg
565 propagate = 1
569 propagate = 1
566
570
567 [logger_gearbox]
571 [logger_gearbox]
568 level = DEBUG
572 level = DEBUG
569 handlers =
573 handlers =
570 qualname = gearbox
574 qualname = gearbox
571 propagate = 1
575 propagate = 1
572
576
573 [logger_sqlalchemy]
577 [logger_sqlalchemy]
574 level = WARN
578 level = WARN
575 handlers = console_sql
579 handlers = console_sql
576 qualname = sqlalchemy.engine
580 qualname = sqlalchemy.engine
577 propagate = 0
581 propagate = 0
578
582
579 [logger_whoosh_indexer]
583 [logger_whoosh_indexer]
580 level = DEBUG
584 level = DEBUG
581 handlers =
585 handlers =
582 qualname = whoosh_indexer
586 qualname = whoosh_indexer
583 propagate = 1
587 propagate = 1
584
588
585 ##############
589 ##############
586 ## HANDLERS ##
590 ## HANDLERS ##
587 ##############
591 ##############
588
592
589 [handler_console]
593 [handler_console]
590 class = StreamHandler
594 class = StreamHandler
591 args = (sys.stderr,)
595 args = (sys.stderr,)
592 #formatter = generic
596 #formatter = generic
593 formatter = color_formatter
597 formatter = color_formatter
594
598
595 [handler_console_sql]
599 [handler_console_sql]
596 class = StreamHandler
600 class = StreamHandler
597 args = (sys.stderr,)
601 args = (sys.stderr,)
598 #formatter = generic
602 #formatter = generic
599 formatter = color_formatter_sql
603 formatter = color_formatter_sql
600
604
601 ################
605 ################
602 ## FORMATTERS ##
606 ## FORMATTERS ##
603 ################
607 ################
604
608
605 [formatter_generic]
609 [formatter_generic]
606 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
610 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
607 datefmt = %Y-%m-%d %H:%M:%S
611 datefmt = %Y-%m-%d %H:%M:%S
608
612
609 [formatter_color_formatter]
613 [formatter_color_formatter]
610 class = kallithea.lib.colored_formatter.ColorFormatter
614 class = kallithea.lib.colored_formatter.ColorFormatter
611 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
615 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
612 datefmt = %Y-%m-%d %H:%M:%S
616 datefmt = %Y-%m-%d %H:%M:%S
613
617
614 [formatter_color_formatter_sql]
618 [formatter_color_formatter_sql]
615 class = kallithea.lib.colored_formatter.ColorFormatterSql
619 class = kallithea.lib.colored_formatter.ColorFormatterSql
616 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
620 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
617 datefmt = %Y-%m-%d %H:%M:%S
621 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,621 +1,625 b''
1 ## -*- coding: utf-8 -*-
1 ## -*- coding: utf-8 -*-
2 <%text>################################################################################</%text>
2 <%text>################################################################################</%text>
3 <%text>################################################################################</%text>
3 <%text>################################################################################</%text>
4 # Kallithea - config file generated with kallithea-config #
4 # Kallithea - config file generated with kallithea-config #
5 # #
5 # #
6 # The %(here)s variable will be replaced with the parent directory of this file#
6 # The %(here)s variable will be replaced with the parent directory of this file#
7 <%text>################################################################################</%text>
7 <%text>################################################################################</%text>
8 <%text>################################################################################</%text>
8 <%text>################################################################################</%text>
9
9
10 [DEFAULT]
10 [DEFAULT]
11
11
12 <%text>################################################################################</%text>
12 <%text>################################################################################</%text>
13 <%text>## Email settings ##</%text>
13 <%text>## Email settings ##</%text>
14 <%text>## ##</%text>
14 <%text>## ##</%text>
15 <%text>## Refer to the documentation ("Email settings") for more details. ##</%text>
15 <%text>## Refer to the documentation ("Email settings") for more details. ##</%text>
16 <%text>## ##</%text>
16 <%text>## ##</%text>
17 <%text>## It is recommended to use a valid sender address that passes access ##</%text>
17 <%text>## It is recommended to use a valid sender address that passes access ##</%text>
18 <%text>## validation and spam filtering in mail servers. ##</%text>
18 <%text>## validation and spam filtering in mail servers. ##</%text>
19 <%text>################################################################################</%text>
19 <%text>################################################################################</%text>
20
20
21 <%text>## 'From' header for application emails. You can optionally add a name.</%text>
21 <%text>## 'From' header for application emails. You can optionally add a name.</%text>
22 <%text>## Default:</%text>
22 <%text>## Default:</%text>
23 #app_email_from = Kallithea
23 #app_email_from = Kallithea
24 <%text>## Examples:</%text>
24 <%text>## Examples:</%text>
25 #app_email_from = Kallithea <kallithea-noreply@example.com>
25 #app_email_from = Kallithea <kallithea-noreply@example.com>
26 #app_email_from = kallithea-noreply@example.com
26 #app_email_from = kallithea-noreply@example.com
27
27
28 <%text>## Subject prefix for application emails.</%text>
28 <%text>## Subject prefix for application emails.</%text>
29 <%text>## A space between this prefix and the real subject is automatically added.</%text>
29 <%text>## A space between this prefix and the real subject is automatically added.</%text>
30 <%text>## Default:</%text>
30 <%text>## Default:</%text>
31 #email_prefix =
31 #email_prefix =
32 <%text>## Example:</%text>
32 <%text>## Example:</%text>
33 #email_prefix = [Kallithea]
33 #email_prefix = [Kallithea]
34
34
35 <%text>## Recipients for error emails and fallback recipients of application mails.</%text>
35 <%text>## Recipients for error emails and fallback recipients of application mails.</%text>
36 <%text>## Multiple addresses can be specified, space-separated.</%text>
36 <%text>## Multiple addresses can be specified, space-separated.</%text>
37 <%text>## Only addresses are allowed, do not add any name part.</%text>
37 <%text>## Only addresses are allowed, do not add any name part.</%text>
38 <%text>## Default:</%text>
38 <%text>## Default:</%text>
39 #email_to =
39 #email_to =
40 <%text>## Examples:</%text>
40 <%text>## Examples:</%text>
41 #email_to = admin@example.com
41 #email_to = admin@example.com
42 #email_to = admin@example.com another_admin@example.com
42 #email_to = admin@example.com another_admin@example.com
43 email_to =
43 email_to =
44
44
45 <%text>## 'From' header for error emails. You can optionally add a name.</%text>
45 <%text>## 'From' header for error emails. You can optionally add a name.</%text>
46 <%text>## Default: (none)</%text>
46 <%text>## Default: (none)</%text>
47 <%text>## Examples:</%text>
47 <%text>## Examples:</%text>
48 #error_email_from = Kallithea Errors <kallithea-noreply@example.com>
48 #error_email_from = Kallithea Errors <kallithea-noreply@example.com>
49 #error_email_from = kallithea_errors@example.com
49 #error_email_from = kallithea_errors@example.com
50 error_email_from =
50 error_email_from =
51
51
52 <%text>## SMTP server settings</%text>
52 <%text>## SMTP server settings</%text>
53 <%text>## If specifying credentials, make sure to use secure connections.</%text>
53 <%text>## If specifying credentials, make sure to use secure connections.</%text>
54 <%text>## Default: Send unencrypted unauthenticated mails to the specified smtp_server.</%text>
54 <%text>## Default: Send unencrypted unauthenticated mails to the specified smtp_server.</%text>
55 <%text>## For "SSL", use smtp_use_ssl = true and smtp_port = 465.</%text>
55 <%text>## For "SSL", use smtp_use_ssl = true and smtp_port = 465.</%text>
56 <%text>## For "STARTTLS", use smtp_use_tls = true and smtp_port = 587.</%text>
56 <%text>## For "STARTTLS", use smtp_use_tls = true and smtp_port = 587.</%text>
57 smtp_server =
57 smtp_server =
58 #smtp_username =
58 #smtp_username =
59 #smtp_password =
59 #smtp_password =
60 smtp_port =
60 smtp_port =
61 #smtp_use_ssl = false
61 #smtp_use_ssl = false
62 #smtp_use_tls = false
62 #smtp_use_tls = false
63
63
64 [server:main]
64 [server:main]
65 %if http_server == 'gearbox':
65 %if http_server == 'gearbox':
66 <%text>## Gearbox default web server ##</%text>
66 <%text>## Gearbox default web server ##</%text>
67 use = egg:gearbox#wsgiref
67 use = egg:gearbox#wsgiref
68 <%text>## nr of worker threads to spawn</%text>
68 <%text>## nr of worker threads to spawn</%text>
69 threadpool_workers = 1
69 threadpool_workers = 1
70 <%text>## max request before thread respawn</%text>
70 <%text>## max request before thread respawn</%text>
71 threadpool_max_requests = 100
71 threadpool_max_requests = 100
72 <%text>## option to use threads of process</%text>
72 <%text>## option to use threads of process</%text>
73 use_threadpool = true
73 use_threadpool = true
74
74
75 %elif http_server == 'gevent':
75 %elif http_server == 'gevent':
76 <%text>## Gearbox gevent web server ##</%text>
76 <%text>## Gearbox gevent web server ##</%text>
77 use = egg:gearbox#gevent
77 use = egg:gearbox#gevent
78
78
79 %elif http_server == 'waitress':
79 %elif http_server == 'waitress':
80 <%text>## WAITRESS ##</%text>
80 <%text>## WAITRESS ##</%text>
81 use = egg:waitress#main
81 use = egg:waitress#main
82 <%text>## number of worker threads</%text>
82 <%text>## number of worker threads</%text>
83 threads = 1
83 threads = 1
84 <%text>## MAX BODY SIZE 100GB</%text>
84 <%text>## MAX BODY SIZE 100GB</%text>
85 max_request_body_size = 107374182400
85 max_request_body_size = 107374182400
86 <%text>## use poll instead of select, fixes fd limits, may not work on old</%text>
86 <%text>## use poll instead of select, fixes fd limits, may not work on old</%text>
87 <%text>## windows systems.</%text>
87 <%text>## windows systems.</%text>
88 #asyncore_use_poll = True
88 #asyncore_use_poll = True
89
89
90 %elif http_server == 'gunicorn':
90 %elif http_server == 'gunicorn':
91 <%text>## GUNICORN ##</%text>
91 <%text>## GUNICORN ##</%text>
92 use = egg:gunicorn#main
92 use = egg:gunicorn#main
93 <%text>## number of process workers. You must set `instance_id = *` when this option</%text>
93 <%text>## number of process workers. You must set `instance_id = *` when this option</%text>
94 <%text>## is set to more than one worker</%text>
94 <%text>## is set to more than one worker</%text>
95 workers = 1
95 workers = 1
96 <%text>## process name</%text>
96 <%text>## process name</%text>
97 proc_name = kallithea
97 proc_name = kallithea
98 <%text>## type of worker class, one of sync, eventlet, gevent, tornado</%text>
98 <%text>## type of worker class, one of sync, eventlet, gevent, tornado</%text>
99 <%text>## recommended for bigger setup is using of of other than sync one</%text>
99 <%text>## recommended for bigger setup is using of of other than sync one</%text>
100 worker_class = sync
100 worker_class = sync
101 max_requests = 1000
101 max_requests = 1000
102 <%text>## amount of time a worker can handle request before it gets killed and</%text>
102 <%text>## amount of time a worker can handle request before it gets killed and</%text>
103 <%text>## restarted</%text>
103 <%text>## restarted</%text>
104 timeout = 3600
104 timeout = 3600
105
105
106 %elif http_server == 'uwsgi':
106 %elif http_server == 'uwsgi':
107 <%text>## UWSGI ##</%text>
107 <%text>## UWSGI ##</%text>
108 <%text>## run with uwsgi --ini-paste-logged <inifile.ini></%text>
108 <%text>## run with uwsgi --ini-paste-logged <inifile.ini></%text>
109 [uwsgi]
109 [uwsgi]
110 socket = /tmp/uwsgi.sock
110 socket = /tmp/uwsgi.sock
111 master = true
111 master = true
112 http = 127.0.0.1:5000
112 http = 127.0.0.1:5000
113
113
114 <%text>## set as deamon and redirect all output to file</%text>
114 <%text>## set as deamon and redirect all output to file</%text>
115 #daemonize = ./uwsgi_kallithea.log
115 #daemonize = ./uwsgi_kallithea.log
116
116
117 <%text>## master process PID</%text>
117 <%text>## master process PID</%text>
118 pidfile = ./uwsgi_kallithea.pid
118 pidfile = ./uwsgi_kallithea.pid
119
119
120 <%text>## stats server with workers statistics, use uwsgitop</%text>
120 <%text>## stats server with workers statistics, use uwsgitop</%text>
121 <%text>## for monitoring, `uwsgitop 127.0.0.1:1717`</%text>
121 <%text>## for monitoring, `uwsgitop 127.0.0.1:1717`</%text>
122 stats = 127.0.0.1:1717
122 stats = 127.0.0.1:1717
123 memory-report = true
123 memory-report = true
124
124
125 <%text>## log 5XX errors</%text>
125 <%text>## log 5XX errors</%text>
126 log-5xx = true
126 log-5xx = true
127
127
128 <%text>## Set the socket listen queue size.</%text>
128 <%text>## Set the socket listen queue size.</%text>
129 listen = 256
129 listen = 256
130
130
131 <%text>## Gracefully Reload workers after the specified amount of managed requests</%text>
131 <%text>## Gracefully Reload workers after the specified amount of managed requests</%text>
132 <%text>## (avoid memory leaks).</%text>
132 <%text>## (avoid memory leaks).</%text>
133 max-requests = 1000
133 max-requests = 1000
134
134
135 <%text>## enable large buffers</%text>
135 <%text>## enable large buffers</%text>
136 buffer-size = 65535
136 buffer-size = 65535
137
137
138 <%text>## socket and http timeouts ##</%text>
138 <%text>## socket and http timeouts ##</%text>
139 http-timeout = 3600
139 http-timeout = 3600
140 socket-timeout = 3600
140 socket-timeout = 3600
141
141
142 <%text>## Log requests slower than the specified number of milliseconds.</%text>
142 <%text>## Log requests slower than the specified number of milliseconds.</%text>
143 log-slow = 10
143 log-slow = 10
144
144
145 <%text>## Exit if no app can be loaded.</%text>
145 <%text>## Exit if no app can be loaded.</%text>
146 need-app = true
146 need-app = true
147
147
148 <%text>## Set lazy mode (load apps in workers instead of master).</%text>
148 <%text>## Set lazy mode (load apps in workers instead of master).</%text>
149 lazy = true
149 lazy = true
150
150
151 <%text>## scaling ##</%text>
151 <%text>## scaling ##</%text>
152 <%text>## set cheaper algorithm to use, if not set default will be used</%text>
152 <%text>## set cheaper algorithm to use, if not set default will be used</%text>
153 cheaper-algo = spare
153 cheaper-algo = spare
154
154
155 <%text>## minimum number of workers to keep at all times</%text>
155 <%text>## minimum number of workers to keep at all times</%text>
156 cheaper = 1
156 cheaper = 1
157
157
158 <%text>## number of workers to spawn at startup</%text>
158 <%text>## number of workers to spawn at startup</%text>
159 cheaper-initial = 1
159 cheaper-initial = 1
160
160
161 <%text>## maximum number of workers that can be spawned</%text>
161 <%text>## maximum number of workers that can be spawned</%text>
162 workers = 4
162 workers = 4
163
163
164 <%text>## how many workers should be spawned at a time</%text>
164 <%text>## how many workers should be spawned at a time</%text>
165 cheaper-step = 1
165 cheaper-step = 1
166
166
167 %endif
167 %endif
168 <%text>## COMMON ##</%text>
168 <%text>## COMMON ##</%text>
169 host = ${host}
169 host = ${host}
170 port = ${port}
170 port = ${port}
171
171
172 <%text>## middleware for hosting the WSGI application under a URL prefix</%text>
172 <%text>## middleware for hosting the WSGI application under a URL prefix</%text>
173 #[filter:proxy-prefix]
173 #[filter:proxy-prefix]
174 #use = egg:PasteDeploy#prefix
174 #use = egg:PasteDeploy#prefix
175 #prefix = /<your-prefix>
175 #prefix = /<your-prefix>
176
176
177 [app:main]
177 [app:main]
178 use = egg:kallithea
178 use = egg:kallithea
179 <%text>## enable proxy prefix middleware</%text>
179 <%text>## enable proxy prefix middleware</%text>
180 #filter-with = proxy-prefix
180 #filter-with = proxy-prefix
181
181
182 full_stack = true
182 full_stack = true
183 static_files = true
183 static_files = true
184 <%text>## Available Languages:</%text>
184
185 <%text>## cs de fr hu ja nl_BE pl pt_BR ru sk zh_CN zh_TW</%text>
185 <%text>## Internationalization (see setup documentation for details)</%text>
186 lang =
186 <%text>## By default, the language requested by the browser is used if available.</%text>
187 #i18n.enable = false
188 <%text>## Fallback language, empty for English (valid values are the names of subdirectories in kallithea/i18n):</%text>
189 i18n.lang =
190
187 cache_dir = %(here)s/data
191 cache_dir = %(here)s/data
188 index_dir = %(here)s/data/index
192 index_dir = %(here)s/data/index
189
193
190 <%text>## perform a full repository scan on each server start, this should be</%text>
194 <%text>## perform a full repository scan on each server start, this should be</%text>
191 <%text>## set to false after first startup, to allow faster server restarts.</%text>
195 <%text>## set to false after first startup, to allow faster server restarts.</%text>
192 initial_repo_scan = false
196 initial_repo_scan = false
193
197
194 <%text>## uncomment and set this path to use archive download cache</%text>
198 <%text>## uncomment and set this path to use archive download cache</%text>
195 archive_cache_dir = %(here)s/tarballcache
199 archive_cache_dir = %(here)s/tarballcache
196
200
197 <%text>## change this to unique ID for security</%text>
201 <%text>## change this to unique ID for security</%text>
198 app_instance_uuid = ${uuid()}
202 app_instance_uuid = ${uuid()}
199
203
200 <%text>## cut off limit for large diffs (size in bytes)</%text>
204 <%text>## cut off limit for large diffs (size in bytes)</%text>
201 cut_off_limit = 256000
205 cut_off_limit = 256000
202
206
203 <%text>## force https in Kallithea, fixes https redirects, assumes it's always https</%text>
207 <%text>## force https in Kallithea, fixes https redirects, assumes it's always https</%text>
204 force_https = false
208 force_https = false
205
209
206 <%text>## use Strict-Transport-Security headers</%text>
210 <%text>## use Strict-Transport-Security headers</%text>
207 use_htsts = false
211 use_htsts = false
208
212
209 <%text>## number of commits stats will parse on each iteration</%text>
213 <%text>## number of commits stats will parse on each iteration</%text>
210 commit_parse_limit = 25
214 commit_parse_limit = 25
211
215
212 <%text>## path to git executable</%text>
216 <%text>## path to git executable</%text>
213 git_path = git
217 git_path = git
214
218
215 <%text>## git rev filter option, --all is the default filter, if you need to</%text>
219 <%text>## git rev filter option, --all is the default filter, if you need to</%text>
216 <%text>## hide all refs in changelog switch this to --branches --tags</%text>
220 <%text>## hide all refs in changelog switch this to --branches --tags</%text>
217 #git_rev_filter = --branches --tags
221 #git_rev_filter = --branches --tags
218
222
219 <%text>## RSS feed options</%text>
223 <%text>## RSS feed options</%text>
220 rss_cut_off_limit = 256000
224 rss_cut_off_limit = 256000
221 rss_items_per_page = 10
225 rss_items_per_page = 10
222 rss_include_diff = false
226 rss_include_diff = false
223
227
224 <%text>## options for showing and identifying changesets</%text>
228 <%text>## options for showing and identifying changesets</%text>
225 show_sha_length = 12
229 show_sha_length = 12
226 show_revision_number = false
230 show_revision_number = false
227
231
228 <%text>## Canonical URL to use when creating full URLs in UI and texts.</%text>
232 <%text>## Canonical URL to use when creating full URLs in UI and texts.</%text>
229 <%text>## Useful when the site is available under different names or protocols.</%text>
233 <%text>## Useful when the site is available under different names or protocols.</%text>
230 <%text>## Defaults to what is provided in the WSGI environment.</%text>
234 <%text>## Defaults to what is provided in the WSGI environment.</%text>
231 #canonical_url = https://kallithea.example.com/repos
235 #canonical_url = https://kallithea.example.com/repos
232
236
233 <%text>## gist URL alias, used to create nicer urls for gist. This should be an</%text>
237 <%text>## gist URL alias, used to create nicer urls for gist. This should be an</%text>
234 <%text>## url that does rewrites to _admin/gists/<gistid>.</%text>
238 <%text>## url that does rewrites to _admin/gists/<gistid>.</%text>
235 <%text>## example: http://gist.example.com/{gistid}. Empty means use the internal</%text>
239 <%text>## example: http://gist.example.com/{gistid}. Empty means use the internal</%text>
236 <%text>## Kallithea url, ie. http[s]://kallithea.example.com/_admin/gists/<gistid></%text>
240 <%text>## Kallithea url, ie. http[s]://kallithea.example.com/_admin/gists/<gistid></%text>
237 gist_alias_url =
241 gist_alias_url =
238
242
239 <%text>## white list of API enabled controllers. This allows to add list of</%text>
243 <%text>## white list of API enabled controllers. This allows to add list of</%text>
240 <%text>## controllers to which access will be enabled by api_key. eg: to enable</%text>
244 <%text>## controllers to which access will be enabled by api_key. eg: to enable</%text>
241 <%text>## api access to raw_files put `FilesController:raw`, to enable access to patches</%text>
245 <%text>## api access to raw_files put `FilesController:raw`, to enable access to patches</%text>
242 <%text>## add `ChangesetController:changeset_patch`. This list should be "," separated</%text>
246 <%text>## add `ChangesetController:changeset_patch`. This list should be "," separated</%text>
243 <%text>## Syntax is <ControllerClass>:<function>. Check debug logs for generated names</%text>
247 <%text>## Syntax is <ControllerClass>:<function>. Check debug logs for generated names</%text>
244 <%text>## Recommended settings below are commented out:</%text>
248 <%text>## Recommended settings below are commented out:</%text>
245 api_access_controllers_whitelist =
249 api_access_controllers_whitelist =
246 # ChangesetController:changeset_patch,
250 # ChangesetController:changeset_patch,
247 # ChangesetController:changeset_raw,
251 # ChangesetController:changeset_raw,
248 # FilesController:raw,
252 # FilesController:raw,
249 # FilesController:archivefile
253 # FilesController:archivefile
250
254
251 <%text>## default encoding used to convert from and to unicode</%text>
255 <%text>## default encoding used to convert from and to unicode</%text>
252 <%text>## can be also a comma separated list of encoding in case of mixed encodings</%text>
256 <%text>## can be also a comma separated list of encoding in case of mixed encodings</%text>
253 default_encoding = utf8
257 default_encoding = utf8
254
258
255 <%text>## issue tracker for Kallithea (leave blank to disable, absent for default)</%text>
259 <%text>## issue tracker for Kallithea (leave blank to disable, absent for default)</%text>
256 #bugtracker = https://bitbucket.org/conservancy/kallithea/issues
260 #bugtracker = https://bitbucket.org/conservancy/kallithea/issues
257
261
258 <%text>## issue tracking mapping for commits messages</%text>
262 <%text>## issue tracking mapping for commits messages</%text>
259 <%text>## comment out issue_pat, issue_server, issue_prefix to enable</%text>
263 <%text>## comment out issue_pat, issue_server, issue_prefix to enable</%text>
260
264
261 <%text>## pattern to get the issues from commit messages</%text>
265 <%text>## pattern to get the issues from commit messages</%text>
262 <%text>## default one used here is #<numbers> with a regex passive group for `#`</%text>
266 <%text>## default one used here is #<numbers> with a regex passive group for `#`</%text>
263 <%text>## {id} will be all groups matched from this pattern</%text>
267 <%text>## {id} will be all groups matched from this pattern</%text>
264
268
265 issue_pat = (?:\s*#)(\d+)
269 issue_pat = (?:\s*#)(\d+)
266
270
267 <%text>## server url to the issue, each {id} will be replaced with match</%text>
271 <%text>## server url to the issue, each {id} will be replaced with match</%text>
268 <%text>## fetched from the regex and {repo} is replaced with full repository name</%text>
272 <%text>## fetched from the regex and {repo} is replaced with full repository name</%text>
269 <%text>## including groups {repo_name} is replaced with just name of repo</%text>
273 <%text>## including groups {repo_name} is replaced with just name of repo</%text>
270
274
271 issue_server_link = https://issues.example.com/{repo}/issue/{id}
275 issue_server_link = https://issues.example.com/{repo}/issue/{id}
272
276
273 <%text>## prefix to add to link to indicate it's an url</%text>
277 <%text>## prefix to add to link to indicate it's an url</%text>
274 <%text>## #314 will be replaced by <issue_prefix><id></%text>
278 <%text>## #314 will be replaced by <issue_prefix><id></%text>
275
279
276 issue_prefix = #
280 issue_prefix = #
277
281
278 <%text>## issue_pat, issue_server_link, issue_prefix can have suffixes to specify</%text>
282 <%text>## issue_pat, issue_server_link, issue_prefix can have suffixes to specify</%text>
279 <%text>## multiple patterns, to other issues server, wiki or others</%text>
283 <%text>## multiple patterns, to other issues server, wiki or others</%text>
280 <%text>## below an example how to create a wiki pattern</%text>
284 <%text>## below an example how to create a wiki pattern</%text>
281 # wiki-some-id -> https://wiki.example.com/some-id
285 # wiki-some-id -> https://wiki.example.com/some-id
282
286
283 #issue_pat_wiki = (?:wiki-)(.+)
287 #issue_pat_wiki = (?:wiki-)(.+)
284 #issue_server_link_wiki = https://wiki.example.com/{id}
288 #issue_server_link_wiki = https://wiki.example.com/{id}
285 #issue_prefix_wiki = WIKI-
289 #issue_prefix_wiki = WIKI-
286
290
287 <%text>## alternative return HTTP header for failed authentication. Default HTTP</%text>
291 <%text>## alternative return HTTP header for failed authentication. Default HTTP</%text>
288 <%text>## response is 401 HTTPUnauthorized. Currently Mercurial clients have trouble with</%text>
292 <%text>## response is 401 HTTPUnauthorized. Currently Mercurial clients have trouble with</%text>
289 <%text>## handling that. Set this variable to 403 to return HTTPForbidden</%text>
293 <%text>## handling that. Set this variable to 403 to return HTTPForbidden</%text>
290 auth_ret_code =
294 auth_ret_code =
291
295
292 <%text>## locking return code. When repository is locked return this HTTP code. 2XX</%text>
296 <%text>## locking return code. When repository is locked return this HTTP code. 2XX</%text>
293 <%text>## codes don't break the transactions while 4XX codes do</%text>
297 <%text>## codes don't break the transactions while 4XX codes do</%text>
294 lock_ret_code = 423
298 lock_ret_code = 423
295
299
296 <%text>## allows to change the repository location in settings page</%text>
300 <%text>## allows to change the repository location in settings page</%text>
297 allow_repo_location_change = True
301 allow_repo_location_change = True
298
302
299 <%text>## allows to setup custom hooks in settings page</%text>
303 <%text>## allows to setup custom hooks in settings page</%text>
300 allow_custom_hooks_settings = True
304 allow_custom_hooks_settings = True
301
305
302 <%text>## extra extensions for indexing, space separated and without the leading '.'.</%text>
306 <%text>## extra extensions for indexing, space separated and without the leading '.'.</%text>
303 # index.extensions =
307 # index.extensions =
304 # gemfile
308 # gemfile
305 # lock
309 # lock
306
310
307 <%text>## extra filenames for indexing, space separated</%text>
311 <%text>## extra filenames for indexing, space separated</%text>
308 # index.filenames =
312 # index.filenames =
309 # .dockerignore
313 # .dockerignore
310 # .editorconfig
314 # .editorconfig
311 # INSTALL
315 # INSTALL
312 # CHANGELOG
316 # CHANGELOG
313
317
314 <%text>####################################</%text>
318 <%text>####################################</%text>
315 <%text>### CELERY CONFIG ####</%text>
319 <%text>### CELERY CONFIG ####</%text>
316 <%text>####################################</%text>
320 <%text>####################################</%text>
317
321
318 use_celery = false
322 use_celery = false
319
323
320 <%text>## Example: connect to the virtual host 'rabbitmqhost' on localhost as rabbitmq:</%text>
324 <%text>## Example: connect to the virtual host 'rabbitmqhost' on localhost as rabbitmq:</%text>
321 broker.url = amqp://rabbitmq:qewqew@localhost:5672/rabbitmqhost
325 broker.url = amqp://rabbitmq:qewqew@localhost:5672/rabbitmqhost
322
326
323 celery.imports = kallithea.lib.celerylib.tasks
327 celery.imports = kallithea.lib.celerylib.tasks
324 celery.accept.content = pickle
328 celery.accept.content = pickle
325 celery.result.backend = amqp
329 celery.result.backend = amqp
326 celery.result.dburi = amqp://
330 celery.result.dburi = amqp://
327 celery.result.serialier = json
331 celery.result.serialier = json
328
332
329 #celery.send.task.error.emails = true
333 #celery.send.task.error.emails = true
330 #celery.amqp.task.result.expires = 18000
334 #celery.amqp.task.result.expires = 18000
331
335
332 celeryd.concurrency = 2
336 celeryd.concurrency = 2
333 celeryd.max.tasks.per.child = 1
337 celeryd.max.tasks.per.child = 1
334
338
335 <%text>## If true, tasks will never be sent to the queue, but executed locally instead.</%text>
339 <%text>## If true, tasks will never be sent to the queue, but executed locally instead.</%text>
336 celery.always.eager = false
340 celery.always.eager = false
337
341
338 <%text>####################################</%text>
342 <%text>####################################</%text>
339 <%text>### BEAKER CACHE ####</%text>
343 <%text>### BEAKER CACHE ####</%text>
340 <%text>####################################</%text>
344 <%text>####################################</%text>
341
345
342 beaker.cache.data_dir = %(here)s/data/cache/data
346 beaker.cache.data_dir = %(here)s/data/cache/data
343 beaker.cache.lock_dir = %(here)s/data/cache/lock
347 beaker.cache.lock_dir = %(here)s/data/cache/lock
344
348
345 beaker.cache.regions = short_term,long_term,sql_cache_short
349 beaker.cache.regions = short_term,long_term,sql_cache_short
346
350
347 beaker.cache.short_term.type = memory
351 beaker.cache.short_term.type = memory
348 beaker.cache.short_term.expire = 60
352 beaker.cache.short_term.expire = 60
349 beaker.cache.short_term.key_length = 256
353 beaker.cache.short_term.key_length = 256
350
354
351 beaker.cache.long_term.type = memory
355 beaker.cache.long_term.type = memory
352 beaker.cache.long_term.expire = 36000
356 beaker.cache.long_term.expire = 36000
353 beaker.cache.long_term.key_length = 256
357 beaker.cache.long_term.key_length = 256
354
358
355 beaker.cache.sql_cache_short.type = memory
359 beaker.cache.sql_cache_short.type = memory
356 beaker.cache.sql_cache_short.expire = 10
360 beaker.cache.sql_cache_short.expire = 10
357 beaker.cache.sql_cache_short.key_length = 256
361 beaker.cache.sql_cache_short.key_length = 256
358
362
359 <%text>####################################</%text>
363 <%text>####################################</%text>
360 <%text>### BEAKER SESSION ####</%text>
364 <%text>### BEAKER SESSION ####</%text>
361 <%text>####################################</%text>
365 <%text>####################################</%text>
362
366
363 <%text>## Name of session cookie. Should be unique for a given host and path, even when running</%text>
367 <%text>## Name of session cookie. Should be unique for a given host and path, even when running</%text>
364 <%text>## on different ports. Otherwise, cookie sessions will be shared and messed up.</%text>
368 <%text>## on different ports. Otherwise, cookie sessions will be shared and messed up.</%text>
365 beaker.session.key = kallithea
369 beaker.session.key = kallithea
366 <%text>## Sessions should always only be accessible by the browser, not directly by JavaScript.</%text>
370 <%text>## Sessions should always only be accessible by the browser, not directly by JavaScript.</%text>
367 beaker.session.httponly = true
371 beaker.session.httponly = true
368 <%text>## Session lifetime. 2592000 seconds is 30 days.</%text>
372 <%text>## Session lifetime. 2592000 seconds is 30 days.</%text>
369 beaker.session.timeout = 2592000
373 beaker.session.timeout = 2592000
370
374
371 <%text>## Server secret used with HMAC to ensure integrity of cookies.</%text>
375 <%text>## Server secret used with HMAC to ensure integrity of cookies.</%text>
372 beaker.session.secret = ${uuid()}
376 beaker.session.secret = ${uuid()}
373 <%text>## Further, encrypt the data with AES.</%text>
377 <%text>## Further, encrypt the data with AES.</%text>
374 #beaker.session.encrypt_key = <key_for_encryption>
378 #beaker.session.encrypt_key = <key_for_encryption>
375 #beaker.session.validate_key = <validation_key>
379 #beaker.session.validate_key = <validation_key>
376
380
377 <%text>## Type of storage used for the session, current types are</%text>
381 <%text>## Type of storage used for the session, current types are</%text>
378 <%text>## dbm, file, memcached, database, and memory.</%text>
382 <%text>## dbm, file, memcached, database, and memory.</%text>
379
383
380 <%text>## File system storage of session data. (default)</%text>
384 <%text>## File system storage of session data. (default)</%text>
381 #beaker.session.type = file
385 #beaker.session.type = file
382
386
383 <%text>## Cookie only, store all session data inside the cookie. Requires secure secrets.</%text>
387 <%text>## Cookie only, store all session data inside the cookie. Requires secure secrets.</%text>
384 #beaker.session.type = cookie
388 #beaker.session.type = cookie
385
389
386 <%text>## Database storage of session data.</%text>
390 <%text>## Database storage of session data.</%text>
387 #beaker.session.type = ext:database
391 #beaker.session.type = ext:database
388 #beaker.session.sa.url = postgresql://postgres:qwe@localhost/kallithea
392 #beaker.session.sa.url = postgresql://postgres:qwe@localhost/kallithea
389 #beaker.session.table_name = db_session
393 #beaker.session.table_name = db_session
390
394
391 %if error_aggregation_service == 'appenlight':
395 %if error_aggregation_service == 'appenlight':
392 <%text>############################</%text>
396 <%text>############################</%text>
393 <%text>## ERROR HANDLING SYSTEMS ##</%text>
397 <%text>## ERROR HANDLING SYSTEMS ##</%text>
394 <%text>############################</%text>
398 <%text>############################</%text>
395
399
396 # Propagate email settings to ErrorReporter of TurboGears2
400 # Propagate email settings to ErrorReporter of TurboGears2
397 # You do not normally need to change these lines
401 # You do not normally need to change these lines
398 get trace_errors.error_email = email_to
402 get trace_errors.error_email = email_to
399 get trace_errors.smtp_server = smtp_server
403 get trace_errors.smtp_server = smtp_server
400 get trace_errors.smtp_port = smtp_port
404 get trace_errors.smtp_port = smtp_port
401 get trace_errors.from_address = error_email_from
405 get trace_errors.from_address = error_email_from
402
406
403 <%text>####################</%text>
407 <%text>####################</%text>
404 <%text>### [appenlight] ###</%text>
408 <%text>### [appenlight] ###</%text>
405 <%text>####################</%text>
409 <%text>####################</%text>
406
410
407 <%text>## AppEnlight is tailored to work with Kallithea, see</%text>
411 <%text>## AppEnlight is tailored to work with Kallithea, see</%text>
408 <%text>## http://appenlight.com for details how to obtain an account</%text>
412 <%text>## http://appenlight.com for details how to obtain an account</%text>
409 <%text>## you must install python package `appenlight_client` to make it work</%text>
413 <%text>## you must install python package `appenlight_client` to make it work</%text>
410
414
411 <%text>## appenlight enabled</%text>
415 <%text>## appenlight enabled</%text>
412 appenlight = false
416 appenlight = false
413
417
414 appenlight.server_url = https://api.appenlight.com
418 appenlight.server_url = https://api.appenlight.com
415 appenlight.api_key = YOUR_API_KEY
419 appenlight.api_key = YOUR_API_KEY
416
420
417 <%text>## TWEAK AMOUNT OF INFO SENT HERE</%text>
421 <%text>## TWEAK AMOUNT OF INFO SENT HERE</%text>
418
422
419 <%text>## enables 404 error logging (default False)</%text>
423 <%text>## enables 404 error logging (default False)</%text>
420 appenlight.report_404 = false
424 appenlight.report_404 = false
421
425
422 <%text>## time in seconds after request is considered being slow (default 1)</%text>
426 <%text>## time in seconds after request is considered being slow (default 1)</%text>
423 appenlight.slow_request_time = 1
427 appenlight.slow_request_time = 1
424
428
425 <%text>## record slow requests in application</%text>
429 <%text>## record slow requests in application</%text>
426 <%text>## (needs to be enabled for slow datastore recording and time tracking)</%text>
430 <%text>## (needs to be enabled for slow datastore recording and time tracking)</%text>
427 appenlight.slow_requests = true
431 appenlight.slow_requests = true
428
432
429 <%text>## enable hooking to application loggers</%text>
433 <%text>## enable hooking to application loggers</%text>
430 #appenlight.logging = true
434 #appenlight.logging = true
431
435
432 <%text>## minimum log level for log capture</%text>
436 <%text>## minimum log level for log capture</%text>
433 #appenlight.logging.level = WARNING
437 #appenlight.logging.level = WARNING
434
438
435 <%text>## send logs only from erroneous/slow requests</%text>
439 <%text>## send logs only from erroneous/slow requests</%text>
436 <%text>## (saves API quota for intensive logging)</%text>
440 <%text>## (saves API quota for intensive logging)</%text>
437 appenlight.logging_on_error = false
441 appenlight.logging_on_error = false
438
442
439 <%text>## list of additional keywords that should be grabbed from environ object</%text>
443 <%text>## list of additional keywords that should be grabbed from environ object</%text>
440 <%text>## can be string with comma separated list of words in lowercase</%text>
444 <%text>## can be string with comma separated list of words in lowercase</%text>
441 <%text>## (by default client will always send following info:</%text>
445 <%text>## (by default client will always send following info:</%text>
442 <%text>## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that</%text>
446 <%text>## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that</%text>
443 <%text>## start with HTTP* this list be extended with additional keywords here</%text>
447 <%text>## start with HTTP* this list be extended with additional keywords here</%text>
444 appenlight.environ_keys_whitelist =
448 appenlight.environ_keys_whitelist =
445
449
446 <%text>## list of keywords that should be blanked from request object</%text>
450 <%text>## list of keywords that should be blanked from request object</%text>
447 <%text>## can be string with comma separated list of words in lowercase</%text>
451 <%text>## can be string with comma separated list of words in lowercase</%text>
448 <%text>## (by default client will always blank keys that contain following words</%text>
452 <%text>## (by default client will always blank keys that contain following words</%text>
449 <%text>## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'</%text>
453 <%text>## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'</%text>
450 <%text>## this list be extended with additional keywords set here</%text>
454 <%text>## this list be extended with additional keywords set here</%text>
451 appenlight.request_keys_blacklist =
455 appenlight.request_keys_blacklist =
452
456
453 <%text>## list of namespaces that should be ignores when gathering log entries</%text>
457 <%text>## list of namespaces that should be ignores when gathering log entries</%text>
454 <%text>## can be string with comma separated list of namespaces</%text>
458 <%text>## can be string with comma separated list of namespaces</%text>
455 <%text>## (by default the client ignores own entries: appenlight_client.client)</%text>
459 <%text>## (by default the client ignores own entries: appenlight_client.client)</%text>
456 appenlight.log_namespace_blacklist =
460 appenlight.log_namespace_blacklist =
457
461
458 %elif error_aggregation_service == 'sentry':
462 %elif error_aggregation_service == 'sentry':
459 <%text>################</%text>
463 <%text>################</%text>
460 <%text>### [sentry] ###</%text>
464 <%text>### [sentry] ###</%text>
461 <%text>################</%text>
465 <%text>################</%text>
462
466
463 <%text>## sentry is a alternative open source error aggregator</%text>
467 <%text>## sentry is a alternative open source error aggregator</%text>
464 <%text>## you must install python packages `sentry` and `raven` to enable</%text>
468 <%text>## you must install python packages `sentry` and `raven` to enable</%text>
465
469
466 sentry.dsn = YOUR_DNS
470 sentry.dsn = YOUR_DNS
467 sentry.servers =
471 sentry.servers =
468 sentry.name =
472 sentry.name =
469 sentry.key =
473 sentry.key =
470 sentry.public_key =
474 sentry.public_key =
471 sentry.secret_key =
475 sentry.secret_key =
472 sentry.project =
476 sentry.project =
473 sentry.site =
477 sentry.site =
474 sentry.include_paths =
478 sentry.include_paths =
475 sentry.exclude_paths =
479 sentry.exclude_paths =
476
480
477 %endif
481 %endif
478 <%text>################################################################################</%text>
482 <%text>################################################################################</%text>
479 <%text>## WARNING: *DEBUG MODE MUST BE OFF IN A PRODUCTION ENVIRONMENT* ##</%text>
483 <%text>## WARNING: *DEBUG MODE MUST BE OFF IN A PRODUCTION ENVIRONMENT* ##</%text>
480 <%text>## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##</%text>
484 <%text>## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##</%text>
481 <%text>## execute malicious code after an exception is raised. ##</%text>
485 <%text>## execute malicious code after an exception is raised. ##</%text>
482 <%text>################################################################################</%text>
486 <%text>################################################################################</%text>
483 debug = false
487 debug = false
484
488
485 <%text>##################################</%text>
489 <%text>##################################</%text>
486 <%text>### LOGVIEW CONFIG ###</%text>
490 <%text>### LOGVIEW CONFIG ###</%text>
487 <%text>##################################</%text>
491 <%text>##################################</%text>
488
492
489 logview.sqlalchemy = #faa
493 logview.sqlalchemy = #faa
490 logview.pylons.templating = #bfb
494 logview.pylons.templating = #bfb
491 logview.pylons.util = #eee
495 logview.pylons.util = #eee
492
496
493 <%text>#########################################################</%text>
497 <%text>#########################################################</%text>
494 <%text>### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###</%text>
498 <%text>### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###</%text>
495 <%text>#########################################################</%text>
499 <%text>#########################################################</%text>
496
500
497 %if database_engine == 'sqlite':
501 %if database_engine == 'sqlite':
498 # SQLITE [default]
502 # SQLITE [default]
499 sqlalchemy.url = sqlite:///%(here)s/kallithea.db?timeout=60
503 sqlalchemy.url = sqlite:///%(here)s/kallithea.db?timeout=60
500
504
501 %elif database_engine == 'postgres':
505 %elif database_engine == 'postgres':
502 # POSTGRESQL
506 # POSTGRESQL
503 sqlalchemy.url = postgresql://user:pass@localhost/kallithea
507 sqlalchemy.url = postgresql://user:pass@localhost/kallithea
504
508
505 %elif database_engine == 'mysql':
509 %elif database_engine == 'mysql':
506 # MySQL
510 # MySQL
507 sqlalchemy.url = mysql://user:pass@localhost/kallithea?charset=utf8
511 sqlalchemy.url = mysql://user:pass@localhost/kallithea?charset=utf8
508
512
509 %endif
513 %endif
510 # see sqlalchemy docs for others
514 # see sqlalchemy docs for others
511
515
512 sqlalchemy.pool_recycle = 3600
516 sqlalchemy.pool_recycle = 3600
513
517
514 <%text>################################</%text>
518 <%text>################################</%text>
515 <%text>### ALEMBIC CONFIGURATION ####</%text>
519 <%text>### ALEMBIC CONFIGURATION ####</%text>
516 <%text>################################</%text>
520 <%text>################################</%text>
517
521
518 [alembic]
522 [alembic]
519 script_location = kallithea:alembic
523 script_location = kallithea:alembic
520
524
521 <%text>################################</%text>
525 <%text>################################</%text>
522 <%text>### LOGGING CONFIGURATION ####</%text>
526 <%text>### LOGGING CONFIGURATION ####</%text>
523 <%text>################################</%text>
527 <%text>################################</%text>
524
528
525 [loggers]
529 [loggers]
526 keys = root, routes, kallithea, sqlalchemy, tg, gearbox, beaker, templates, whoosh_indexer
530 keys = root, routes, kallithea, sqlalchemy, tg, gearbox, beaker, templates, whoosh_indexer
527
531
528 [handlers]
532 [handlers]
529 keys = console, console_sql
533 keys = console, console_sql
530
534
531 [formatters]
535 [formatters]
532 keys = generic, color_formatter, color_formatter_sql
536 keys = generic, color_formatter, color_formatter_sql
533
537
534 <%text>#############</%text>
538 <%text>#############</%text>
535 <%text>## LOGGERS ##</%text>
539 <%text>## LOGGERS ##</%text>
536 <%text>#############</%text>
540 <%text>#############</%text>
537
541
538 [logger_root]
542 [logger_root]
539 level = NOTSET
543 level = NOTSET
540 handlers = console
544 handlers = console
541
545
542 [logger_routes]
546 [logger_routes]
543 level = DEBUG
547 level = DEBUG
544 handlers =
548 handlers =
545 qualname = routes.middleware
549 qualname = routes.middleware
546 <%text>## "level = DEBUG" logs the route matched and routing variables.</%text>
550 <%text>## "level = DEBUG" logs the route matched and routing variables.</%text>
547 propagate = 1
551 propagate = 1
548
552
549 [logger_beaker]
553 [logger_beaker]
550 level = DEBUG
554 level = DEBUG
551 handlers =
555 handlers =
552 qualname = beaker.container
556 qualname = beaker.container
553 propagate = 1
557 propagate = 1
554
558
555 [logger_templates]
559 [logger_templates]
556 level = INFO
560 level = INFO
557 handlers =
561 handlers =
558 qualname = pylons.templating
562 qualname = pylons.templating
559 propagate = 1
563 propagate = 1
560
564
561 [logger_kallithea]
565 [logger_kallithea]
562 level = DEBUG
566 level = DEBUG
563 handlers =
567 handlers =
564 qualname = kallithea
568 qualname = kallithea
565 propagate = 1
569 propagate = 1
566
570
567 [logger_tg]
571 [logger_tg]
568 level = DEBUG
572 level = DEBUG
569 handlers =
573 handlers =
570 qualname = tg
574 qualname = tg
571 propagate = 1
575 propagate = 1
572
576
573 [logger_gearbox]
577 [logger_gearbox]
574 level = DEBUG
578 level = DEBUG
575 handlers =
579 handlers =
576 qualname = gearbox
580 qualname = gearbox
577 propagate = 1
581 propagate = 1
578
582
579 [logger_sqlalchemy]
583 [logger_sqlalchemy]
580 level = WARN
584 level = WARN
581 handlers = console_sql
585 handlers = console_sql
582 qualname = sqlalchemy.engine
586 qualname = sqlalchemy.engine
583 propagate = 0
587 propagate = 0
584
588
585 [logger_whoosh_indexer]
589 [logger_whoosh_indexer]
586 level = DEBUG
590 level = DEBUG
587 handlers =
591 handlers =
588 qualname = whoosh_indexer
592 qualname = whoosh_indexer
589 propagate = 1
593 propagate = 1
590
594
591 <%text>##############</%text>
595 <%text>##############</%text>
592 <%text>## HANDLERS ##</%text>
596 <%text>## HANDLERS ##</%text>
593 <%text>##############</%text>
597 <%text>##############</%text>
594
598
595 [handler_console]
599 [handler_console]
596 class = StreamHandler
600 class = StreamHandler
597 args = (sys.stderr,)
601 args = (sys.stderr,)
598 formatter = generic
602 formatter = generic
599
603
600 [handler_console_sql]
604 [handler_console_sql]
601 class = StreamHandler
605 class = StreamHandler
602 args = (sys.stderr,)
606 args = (sys.stderr,)
603 formatter = generic
607 formatter = generic
604
608
605 <%text>################</%text>
609 <%text>################</%text>
606 <%text>## FORMATTERS ##</%text>
610 <%text>## FORMATTERS ##</%text>
607 <%text>################</%text>
611 <%text>################</%text>
608
612
609 [formatter_generic]
613 [formatter_generic]
610 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
614 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
611 datefmt = %Y-%m-%d %H:%M:%S
615 datefmt = %Y-%m-%d %H:%M:%S
612
616
613 [formatter_color_formatter]
617 [formatter_color_formatter]
614 class = kallithea.lib.colored_formatter.ColorFormatter
618 class = kallithea.lib.colored_formatter.ColorFormatter
615 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
619 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
616 datefmt = %Y-%m-%d %H:%M:%S
620 datefmt = %Y-%m-%d %H:%M:%S
617
621
618 [formatter_color_formatter_sql]
622 [formatter_color_formatter_sql]
619 class = kallithea.lib.colored_formatter.ColorFormatterSql
623 class = kallithea.lib.colored_formatter.ColorFormatterSql
620 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
624 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
621 datefmt = %Y-%m-%d %H:%M:%S
625 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,620 +1,624 b''
1 ################################################################################
1 ################################################################################
2 ################################################################################
2 ################################################################################
3 # Kallithea - config for tests: #
3 # Kallithea - config for tests: #
4 # sqlalchemy and kallithea_test.sqlite #
4 # sqlalchemy and kallithea_test.sqlite #
5 # custom logging #
5 # custom logging #
6 # #
6 # #
7 # The %(here)s variable will be replaced with the parent directory of this file#
7 # The %(here)s variable will be replaced with the parent directory of this file#
8 ################################################################################
8 ################################################################################
9 ################################################################################
9 ################################################################################
10
10
11 [DEFAULT]
11 [DEFAULT]
12
12
13 ################################################################################
13 ################################################################################
14 ## Email settings ##
14 ## Email settings ##
15 ## ##
15 ## ##
16 ## Refer to the documentation ("Email settings") for more details. ##
16 ## Refer to the documentation ("Email settings") for more details. ##
17 ## ##
17 ## ##
18 ## It is recommended to use a valid sender address that passes access ##
18 ## It is recommended to use a valid sender address that passes access ##
19 ## validation and spam filtering in mail servers. ##
19 ## validation and spam filtering in mail servers. ##
20 ################################################################################
20 ################################################################################
21
21
22 ## 'From' header for application emails. You can optionally add a name.
22 ## 'From' header for application emails. You can optionally add a name.
23 ## Default:
23 ## Default:
24 #app_email_from = Kallithea
24 #app_email_from = Kallithea
25 ## Examples:
25 ## Examples:
26 #app_email_from = Kallithea <kallithea-noreply@example.com>
26 #app_email_from = Kallithea <kallithea-noreply@example.com>
27 #app_email_from = kallithea-noreply@example.com
27 #app_email_from = kallithea-noreply@example.com
28
28
29 ## Subject prefix for application emails.
29 ## Subject prefix for application emails.
30 ## A space between this prefix and the real subject is automatically added.
30 ## A space between this prefix and the real subject is automatically added.
31 ## Default:
31 ## Default:
32 #email_prefix =
32 #email_prefix =
33 ## Example:
33 ## Example:
34 #email_prefix = [Kallithea]
34 #email_prefix = [Kallithea]
35
35
36 ## Recipients for error emails and fallback recipients of application mails.
36 ## Recipients for error emails and fallback recipients of application mails.
37 ## Multiple addresses can be specified, space-separated.
37 ## Multiple addresses can be specified, space-separated.
38 ## Only addresses are allowed, do not add any name part.
38 ## Only addresses are allowed, do not add any name part.
39 ## Default:
39 ## Default:
40 #email_to =
40 #email_to =
41 ## Examples:
41 ## Examples:
42 #email_to = admin@example.com
42 #email_to = admin@example.com
43 #email_to = admin@example.com another_admin@example.com
43 #email_to = admin@example.com another_admin@example.com
44 email_to =
44 email_to =
45
45
46 ## 'From' header for error emails. You can optionally add a name.
46 ## 'From' header for error emails. You can optionally add a name.
47 ## Default: (none)
47 ## Default: (none)
48 ## Examples:
48 ## Examples:
49 #error_email_from = Kallithea Errors <kallithea-noreply@example.com>
49 #error_email_from = Kallithea Errors <kallithea-noreply@example.com>
50 #error_email_from = kallithea_errors@example.com
50 #error_email_from = kallithea_errors@example.com
51 error_email_from =
51 error_email_from =
52
52
53 ## SMTP server settings
53 ## SMTP server settings
54 ## If specifying credentials, make sure to use secure connections.
54 ## If specifying credentials, make sure to use secure connections.
55 ## Default: Send unencrypted unauthenticated mails to the specified smtp_server.
55 ## Default: Send unencrypted unauthenticated mails to the specified smtp_server.
56 ## For "SSL", use smtp_use_ssl = true and smtp_port = 465.
56 ## For "SSL", use smtp_use_ssl = true and smtp_port = 465.
57 ## For "STARTTLS", use smtp_use_tls = true and smtp_port = 587.
57 ## For "STARTTLS", use smtp_use_tls = true and smtp_port = 587.
58 smtp_server =
58 smtp_server =
59 #smtp_username =
59 #smtp_username =
60 #smtp_password =
60 #smtp_password =
61 smtp_port =
61 smtp_port =
62 #smtp_use_ssl = false
62 #smtp_use_ssl = false
63 #smtp_use_tls = false
63 #smtp_use_tls = false
64
64
65 [server:main]
65 [server:main]
66 ## Gearbox default web server ##
66 ## Gearbox default web server ##
67 #use = egg:gearbox#wsgiref
67 #use = egg:gearbox#wsgiref
68 ## nr of worker threads to spawn
68 ## nr of worker threads to spawn
69 #threadpool_workers = 1
69 #threadpool_workers = 1
70 ## max request before thread respawn
70 ## max request before thread respawn
71 #threadpool_max_requests = 100
71 #threadpool_max_requests = 100
72 ## option to use threads of process
72 ## option to use threads of process
73 #use_threadpool = true
73 #use_threadpool = true
74
74
75 ## Gearbox gevent web server ##
75 ## Gearbox gevent web server ##
76 #use = egg:gearbox#gevent
76 #use = egg:gearbox#gevent
77
77
78 ## WAITRESS ##
78 ## WAITRESS ##
79 use = egg:waitress#main
79 use = egg:waitress#main
80 ## number of worker threads
80 ## number of worker threads
81 threads = 1
81 threads = 1
82 ## MAX BODY SIZE 100GB
82 ## MAX BODY SIZE 100GB
83 max_request_body_size = 107374182400
83 max_request_body_size = 107374182400
84 ## use poll instead of select, fixes fd limits, may not work on old
84 ## use poll instead of select, fixes fd limits, may not work on old
85 ## windows systems.
85 ## windows systems.
86 #asyncore_use_poll = True
86 #asyncore_use_poll = True
87
87
88 ## GUNICORN ##
88 ## GUNICORN ##
89 #use = egg:gunicorn#main
89 #use = egg:gunicorn#main
90 ## number of process workers. You must set `instance_id = *` when this option
90 ## number of process workers. You must set `instance_id = *` when this option
91 ## is set to more than one worker
91 ## is set to more than one worker
92 #workers = 1
92 #workers = 1
93 ## process name
93 ## process name
94 #proc_name = kallithea
94 #proc_name = kallithea
95 ## type of worker class, one of sync, eventlet, gevent, tornado
95 ## type of worker class, one of sync, eventlet, gevent, tornado
96 ## recommended for bigger setup is using of of other than sync one
96 ## recommended for bigger setup is using of of other than sync one
97 #worker_class = sync
97 #worker_class = sync
98 #max_requests = 1000
98 #max_requests = 1000
99 ## amount of time a worker can handle request before it gets killed and
99 ## amount of time a worker can handle request before it gets killed and
100 ## restarted
100 ## restarted
101 #timeout = 3600
101 #timeout = 3600
102
102
103 ## UWSGI ##
103 ## UWSGI ##
104 ## run with uwsgi --ini-paste-logged <inifile.ini>
104 ## run with uwsgi --ini-paste-logged <inifile.ini>
105 #[uwsgi]
105 #[uwsgi]
106 #socket = /tmp/uwsgi.sock
106 #socket = /tmp/uwsgi.sock
107 #master = true
107 #master = true
108 #http = 127.0.0.1:5000
108 #http = 127.0.0.1:5000
109
109
110 ## set as deamon and redirect all output to file
110 ## set as deamon and redirect all output to file
111 #daemonize = ./uwsgi_kallithea.log
111 #daemonize = ./uwsgi_kallithea.log
112
112
113 ## master process PID
113 ## master process PID
114 #pidfile = ./uwsgi_kallithea.pid
114 #pidfile = ./uwsgi_kallithea.pid
115
115
116 ## stats server with workers statistics, use uwsgitop
116 ## stats server with workers statistics, use uwsgitop
117 ## for monitoring, `uwsgitop 127.0.0.1:1717`
117 ## for monitoring, `uwsgitop 127.0.0.1:1717`
118 #stats = 127.0.0.1:1717
118 #stats = 127.0.0.1:1717
119 #memory-report = true
119 #memory-report = true
120
120
121 ## log 5XX errors
121 ## log 5XX errors
122 #log-5xx = true
122 #log-5xx = true
123
123
124 ## Set the socket listen queue size.
124 ## Set the socket listen queue size.
125 #listen = 256
125 #listen = 256
126
126
127 ## Gracefully Reload workers after the specified amount of managed requests
127 ## Gracefully Reload workers after the specified amount of managed requests
128 ## (avoid memory leaks).
128 ## (avoid memory leaks).
129 #max-requests = 1000
129 #max-requests = 1000
130
130
131 ## enable large buffers
131 ## enable large buffers
132 #buffer-size = 65535
132 #buffer-size = 65535
133
133
134 ## socket and http timeouts ##
134 ## socket and http timeouts ##
135 #http-timeout = 3600
135 #http-timeout = 3600
136 #socket-timeout = 3600
136 #socket-timeout = 3600
137
137
138 ## Log requests slower than the specified number of milliseconds.
138 ## Log requests slower than the specified number of milliseconds.
139 #log-slow = 10
139 #log-slow = 10
140
140
141 ## Exit if no app can be loaded.
141 ## Exit if no app can be loaded.
142 #need-app = true
142 #need-app = true
143
143
144 ## Set lazy mode (load apps in workers instead of master).
144 ## Set lazy mode (load apps in workers instead of master).
145 #lazy = true
145 #lazy = true
146
146
147 ## scaling ##
147 ## scaling ##
148 ## set cheaper algorithm to use, if not set default will be used
148 ## set cheaper algorithm to use, if not set default will be used
149 #cheaper-algo = spare
149 #cheaper-algo = spare
150
150
151 ## minimum number of workers to keep at all times
151 ## minimum number of workers to keep at all times
152 #cheaper = 1
152 #cheaper = 1
153
153
154 ## number of workers to spawn at startup
154 ## number of workers to spawn at startup
155 #cheaper-initial = 1
155 #cheaper-initial = 1
156
156
157 ## maximum number of workers that can be spawned
157 ## maximum number of workers that can be spawned
158 #workers = 4
158 #workers = 4
159
159
160 ## how many workers should be spawned at a time
160 ## how many workers should be spawned at a time
161 #cheaper-step = 1
161 #cheaper-step = 1
162
162
163 ## COMMON ##
163 ## COMMON ##
164 host = 127.0.0.1
164 host = 127.0.0.1
165 #port = 5000
165 #port = 5000
166 port = 4999
166 port = 4999
167
167
168 ## middleware for hosting the WSGI application under a URL prefix
168 ## middleware for hosting the WSGI application under a URL prefix
169 #[filter:proxy-prefix]
169 #[filter:proxy-prefix]
170 #use = egg:PasteDeploy#prefix
170 #use = egg:PasteDeploy#prefix
171 #prefix = /<your-prefix>
171 #prefix = /<your-prefix>
172
172
173 [app:main]
173 [app:main]
174 use = egg:kallithea
174 use = egg:kallithea
175 ## enable proxy prefix middleware
175 ## enable proxy prefix middleware
176 #filter-with = proxy-prefix
176 #filter-with = proxy-prefix
177
177
178 full_stack = true
178 full_stack = true
179 static_files = true
179 static_files = true
180 ## Available Languages:
180
181 ## cs de fr hu ja nl_BE pl pt_BR ru sk zh_CN zh_TW
181 ## Internationalization (see setup documentation for details)
182 lang =
182 ## By default, the language requested by the browser is used if available.
183 #i18n.enable = false
184 ## Fallback language, empty for English (valid values are the names of subdirectories in kallithea/i18n):
185 i18n.lang =
186
183 #cache_dir = %(here)s/data
187 #cache_dir = %(here)s/data
184 cache_dir = %(here)s/../../data/test/cache
188 cache_dir = %(here)s/../../data/test/cache
185 #index_dir = %(here)s/data/index
189 #index_dir = %(here)s/data/index
186 index_dir = %(here)s/../../data/test/index
190 index_dir = %(here)s/../../data/test/index
187
191
188 ## perform a full repository scan on each server start, this should be
192 ## perform a full repository scan on each server start, this should be
189 ## set to false after first startup, to allow faster server restarts.
193 ## set to false after first startup, to allow faster server restarts.
190 initial_repo_scan = false
194 initial_repo_scan = false
191
195
192 ## uncomment and set this path to use archive download cache
196 ## uncomment and set this path to use archive download cache
193 #archive_cache_dir = %(here)s/tarballcache
197 #archive_cache_dir = %(here)s/tarballcache
194 archive_cache_dir = %(here)s/../../data/test/tarballcache
198 archive_cache_dir = %(here)s/../../data/test/tarballcache
195
199
196 ## change this to unique ID for security
200 ## change this to unique ID for security
197 app_instance_uuid = test
201 app_instance_uuid = test
198
202
199 ## cut off limit for large diffs (size in bytes)
203 ## cut off limit for large diffs (size in bytes)
200 cut_off_limit = 256000
204 cut_off_limit = 256000
201
205
202 ## force https in Kallithea, fixes https redirects, assumes it's always https
206 ## force https in Kallithea, fixes https redirects, assumes it's always https
203 force_https = false
207 force_https = false
204
208
205 ## use Strict-Transport-Security headers
209 ## use Strict-Transport-Security headers
206 use_htsts = false
210 use_htsts = false
207
211
208 ## number of commits stats will parse on each iteration
212 ## number of commits stats will parse on each iteration
209 commit_parse_limit = 25
213 commit_parse_limit = 25
210
214
211 ## path to git executable
215 ## path to git executable
212 git_path = git
216 git_path = git
213
217
214 ## git rev filter option, --all is the default filter, if you need to
218 ## git rev filter option, --all is the default filter, if you need to
215 ## hide all refs in changelog switch this to --branches --tags
219 ## hide all refs in changelog switch this to --branches --tags
216 #git_rev_filter = --branches --tags
220 #git_rev_filter = --branches --tags
217
221
218 ## RSS feed options
222 ## RSS feed options
219 rss_cut_off_limit = 256000
223 rss_cut_off_limit = 256000
220 rss_items_per_page = 10
224 rss_items_per_page = 10
221 rss_include_diff = false
225 rss_include_diff = false
222
226
223 ## options for showing and identifying changesets
227 ## options for showing and identifying changesets
224 show_sha_length = 12
228 show_sha_length = 12
225 #show_revision_number = false
229 #show_revision_number = false
226 show_revision_number = true
230 show_revision_number = true
227
231
228 ## Canonical URL to use when creating full URLs in UI and texts.
232 ## Canonical URL to use when creating full URLs in UI and texts.
229 ## Useful when the site is available under different names or protocols.
233 ## Useful when the site is available under different names or protocols.
230 ## Defaults to what is provided in the WSGI environment.
234 ## Defaults to what is provided in the WSGI environment.
231 #canonical_url = https://kallithea.example.com/repos
235 #canonical_url = https://kallithea.example.com/repos
232
236
233 ## gist URL alias, used to create nicer urls for gist. This should be an
237 ## gist URL alias, used to create nicer urls for gist. This should be an
234 ## url that does rewrites to _admin/gists/<gistid>.
238 ## url that does rewrites to _admin/gists/<gistid>.
235 ## example: http://gist.example.com/{gistid}. Empty means use the internal
239 ## example: http://gist.example.com/{gistid}. Empty means use the internal
236 ## Kallithea url, ie. http[s]://kallithea.example.com/_admin/gists/<gistid>
240 ## Kallithea url, ie. http[s]://kallithea.example.com/_admin/gists/<gistid>
237 gist_alias_url =
241 gist_alias_url =
238
242
239 ## white list of API enabled controllers. This allows to add list of
243 ## white list of API enabled controllers. This allows to add list of
240 ## controllers to which access will be enabled by api_key. eg: to enable
244 ## controllers to which access will be enabled by api_key. eg: to enable
241 ## api access to raw_files put `FilesController:raw`, to enable access to patches
245 ## api access to raw_files put `FilesController:raw`, to enable access to patches
242 ## add `ChangesetController:changeset_patch`. This list should be "," separated
246 ## add `ChangesetController:changeset_patch`. This list should be "," separated
243 ## Syntax is <ControllerClass>:<function>. Check debug logs for generated names
247 ## Syntax is <ControllerClass>:<function>. Check debug logs for generated names
244 ## Recommended settings below are commented out:
248 ## Recommended settings below are commented out:
245 api_access_controllers_whitelist =
249 api_access_controllers_whitelist =
246 # ChangesetController:changeset_patch,
250 # ChangesetController:changeset_patch,
247 # ChangesetController:changeset_raw,
251 # ChangesetController:changeset_raw,
248 # FilesController:raw,
252 # FilesController:raw,
249 # FilesController:archivefile
253 # FilesController:archivefile
250
254
251 ## default encoding used to convert from and to unicode
255 ## default encoding used to convert from and to unicode
252 ## can be also a comma separated list of encoding in case of mixed encodings
256 ## can be also a comma separated list of encoding in case of mixed encodings
253 default_encoding = utf8
257 default_encoding = utf8
254
258
255 ## issue tracker for Kallithea (leave blank to disable, absent for default)
259 ## issue tracker for Kallithea (leave blank to disable, absent for default)
256 #bugtracker = https://bitbucket.org/conservancy/kallithea/issues
260 #bugtracker = https://bitbucket.org/conservancy/kallithea/issues
257
261
258 ## issue tracking mapping for commits messages
262 ## issue tracking mapping for commits messages
259 ## comment out issue_pat, issue_server, issue_prefix to enable
263 ## comment out issue_pat, issue_server, issue_prefix to enable
260
264
261 ## pattern to get the issues from commit messages
265 ## pattern to get the issues from commit messages
262 ## default one used here is #<numbers> with a regex passive group for `#`
266 ## default one used here is #<numbers> with a regex passive group for `#`
263 ## {id} will be all groups matched from this pattern
267 ## {id} will be all groups matched from this pattern
264
268
265 issue_pat = (?:\s*#)(\d+)
269 issue_pat = (?:\s*#)(\d+)
266
270
267 ## server url to the issue, each {id} will be replaced with match
271 ## server url to the issue, each {id} will be replaced with match
268 ## fetched from the regex and {repo} is replaced with full repository name
272 ## fetched from the regex and {repo} is replaced with full repository name
269 ## including groups {repo_name} is replaced with just name of repo
273 ## including groups {repo_name} is replaced with just name of repo
270
274
271 issue_server_link = https://issues.example.com/{repo}/issue/{id}
275 issue_server_link = https://issues.example.com/{repo}/issue/{id}
272
276
273 ## prefix to add to link to indicate it's an url
277 ## prefix to add to link to indicate it's an url
274 ## #314 will be replaced by <issue_prefix><id>
278 ## #314 will be replaced by <issue_prefix><id>
275
279
276 issue_prefix = #
280 issue_prefix = #
277
281
278 ## issue_pat, issue_server_link, issue_prefix can have suffixes to specify
282 ## issue_pat, issue_server_link, issue_prefix can have suffixes to specify
279 ## multiple patterns, to other issues server, wiki or others
283 ## multiple patterns, to other issues server, wiki or others
280 ## below an example how to create a wiki pattern
284 ## below an example how to create a wiki pattern
281 # wiki-some-id -> https://wiki.example.com/some-id
285 # wiki-some-id -> https://wiki.example.com/some-id
282
286
283 #issue_pat_wiki = (?:wiki-)(.+)
287 #issue_pat_wiki = (?:wiki-)(.+)
284 #issue_server_link_wiki = https://wiki.example.com/{id}
288 #issue_server_link_wiki = https://wiki.example.com/{id}
285 #issue_prefix_wiki = WIKI-
289 #issue_prefix_wiki = WIKI-
286
290
287 ## alternative return HTTP header for failed authentication. Default HTTP
291 ## alternative return HTTP header for failed authentication. Default HTTP
288 ## response is 401 HTTPUnauthorized. Currently Mercurial clients have trouble with
292 ## response is 401 HTTPUnauthorized. Currently Mercurial clients have trouble with
289 ## handling that. Set this variable to 403 to return HTTPForbidden
293 ## handling that. Set this variable to 403 to return HTTPForbidden
290 auth_ret_code =
294 auth_ret_code =
291
295
292 ## locking return code. When repository is locked return this HTTP code. 2XX
296 ## locking return code. When repository is locked return this HTTP code. 2XX
293 ## codes don't break the transactions while 4XX codes do
297 ## codes don't break the transactions while 4XX codes do
294 lock_ret_code = 423
298 lock_ret_code = 423
295
299
296 ## allows to change the repository location in settings page
300 ## allows to change the repository location in settings page
297 allow_repo_location_change = True
301 allow_repo_location_change = True
298
302
299 ## allows to setup custom hooks in settings page
303 ## allows to setup custom hooks in settings page
300 allow_custom_hooks_settings = True
304 allow_custom_hooks_settings = True
301
305
302 ## extra extensions for indexing, space separated and without the leading '.'.
306 ## extra extensions for indexing, space separated and without the leading '.'.
303 # index.extensions =
307 # index.extensions =
304 # gemfile
308 # gemfile
305 # lock
309 # lock
306
310
307 ## extra filenames for indexing, space separated
311 ## extra filenames for indexing, space separated
308 # index.filenames =
312 # index.filenames =
309 # .dockerignore
313 # .dockerignore
310 # .editorconfig
314 # .editorconfig
311 # INSTALL
315 # INSTALL
312 # CHANGELOG
316 # CHANGELOG
313
317
314 ####################################
318 ####################################
315 ### CELERY CONFIG ####
319 ### CELERY CONFIG ####
316 ####################################
320 ####################################
317
321
318 use_celery = false
322 use_celery = false
319
323
320 ## Example: connect to the virtual host 'rabbitmqhost' on localhost as rabbitmq:
324 ## Example: connect to the virtual host 'rabbitmqhost' on localhost as rabbitmq:
321 broker.url = amqp://rabbitmq:qewqew@localhost:5672/rabbitmqhost
325 broker.url = amqp://rabbitmq:qewqew@localhost:5672/rabbitmqhost
322
326
323 celery.imports = kallithea.lib.celerylib.tasks
327 celery.imports = kallithea.lib.celerylib.tasks
324 celery.accept.content = pickle
328 celery.accept.content = pickle
325 celery.result.backend = amqp
329 celery.result.backend = amqp
326 celery.result.dburi = amqp://
330 celery.result.dburi = amqp://
327 celery.result.serialier = json
331 celery.result.serialier = json
328
332
329 #celery.send.task.error.emails = true
333 #celery.send.task.error.emails = true
330 #celery.amqp.task.result.expires = 18000
334 #celery.amqp.task.result.expires = 18000
331
335
332 celeryd.concurrency = 2
336 celeryd.concurrency = 2
333 celeryd.max.tasks.per.child = 1
337 celeryd.max.tasks.per.child = 1
334
338
335 ## If true, tasks will never be sent to the queue, but executed locally instead.
339 ## If true, tasks will never be sent to the queue, but executed locally instead.
336 celery.always.eager = false
340 celery.always.eager = false
337
341
338 ####################################
342 ####################################
339 ### BEAKER CACHE ####
343 ### BEAKER CACHE ####
340 ####################################
344 ####################################
341
345
342 #beaker.cache.data_dir = %(here)s/data/cache/data
346 #beaker.cache.data_dir = %(here)s/data/cache/data
343 beaker.cache.data_dir = %(here)s/../../data/test/cache/data
347 beaker.cache.data_dir = %(here)s/../../data/test/cache/data
344 #beaker.cache.lock_dir = %(here)s/data/cache/lock
348 #beaker.cache.lock_dir = %(here)s/data/cache/lock
345 beaker.cache.lock_dir = %(here)s/../../data/test/cache/lock
349 beaker.cache.lock_dir = %(here)s/../../data/test/cache/lock
346
350
347 beaker.cache.regions = short_term,long_term,sql_cache_short
351 beaker.cache.regions = short_term,long_term,sql_cache_short
348
352
349 beaker.cache.short_term.type = memory
353 beaker.cache.short_term.type = memory
350 beaker.cache.short_term.expire = 60
354 beaker.cache.short_term.expire = 60
351 beaker.cache.short_term.key_length = 256
355 beaker.cache.short_term.key_length = 256
352
356
353 beaker.cache.long_term.type = memory
357 beaker.cache.long_term.type = memory
354 beaker.cache.long_term.expire = 36000
358 beaker.cache.long_term.expire = 36000
355 beaker.cache.long_term.key_length = 256
359 beaker.cache.long_term.key_length = 256
356
360
357 beaker.cache.sql_cache_short.type = memory
361 beaker.cache.sql_cache_short.type = memory
358 #beaker.cache.sql_cache_short.expire = 10
362 #beaker.cache.sql_cache_short.expire = 10
359 beaker.cache.sql_cache_short.expire = 1
363 beaker.cache.sql_cache_short.expire = 1
360 beaker.cache.sql_cache_short.key_length = 256
364 beaker.cache.sql_cache_short.key_length = 256
361
365
362 ####################################
366 ####################################
363 ### BEAKER SESSION ####
367 ### BEAKER SESSION ####
364 ####################################
368 ####################################
365
369
366 ## Name of session cookie. Should be unique for a given host and path, even when running
370 ## Name of session cookie. Should be unique for a given host and path, even when running
367 ## on different ports. Otherwise, cookie sessions will be shared and messed up.
371 ## on different ports. Otherwise, cookie sessions will be shared and messed up.
368 beaker.session.key = kallithea
372 beaker.session.key = kallithea
369 ## Sessions should always only be accessible by the browser, not directly by JavaScript.
373 ## Sessions should always only be accessible by the browser, not directly by JavaScript.
370 beaker.session.httponly = true
374 beaker.session.httponly = true
371 ## Session lifetime. 2592000 seconds is 30 days.
375 ## Session lifetime. 2592000 seconds is 30 days.
372 beaker.session.timeout = 2592000
376 beaker.session.timeout = 2592000
373
377
374 ## Server secret used with HMAC to ensure integrity of cookies.
378 ## Server secret used with HMAC to ensure integrity of cookies.
375 beaker.session.secret = {74e0cd75-b339-478b-b129-07dd221def1f}
379 beaker.session.secret = {74e0cd75-b339-478b-b129-07dd221def1f}
376 ## Further, encrypt the data with AES.
380 ## Further, encrypt the data with AES.
377 #beaker.session.encrypt_key = <key_for_encryption>
381 #beaker.session.encrypt_key = <key_for_encryption>
378 #beaker.session.validate_key = <validation_key>
382 #beaker.session.validate_key = <validation_key>
379
383
380 ## Type of storage used for the session, current types are
384 ## Type of storage used for the session, current types are
381 ## dbm, file, memcached, database, and memory.
385 ## dbm, file, memcached, database, and memory.
382
386
383 ## File system storage of session data. (default)
387 ## File system storage of session data. (default)
384 #beaker.session.type = file
388 #beaker.session.type = file
385
389
386 ## Cookie only, store all session data inside the cookie. Requires secure secrets.
390 ## Cookie only, store all session data inside the cookie. Requires secure secrets.
387 #beaker.session.type = cookie
391 #beaker.session.type = cookie
388
392
389 ## Database storage of session data.
393 ## Database storage of session data.
390 #beaker.session.type = ext:database
394 #beaker.session.type = ext:database
391 #beaker.session.sa.url = postgresql://postgres:qwe@localhost/kallithea
395 #beaker.session.sa.url = postgresql://postgres:qwe@localhost/kallithea
392 #beaker.session.table_name = db_session
396 #beaker.session.table_name = db_session
393
397
394 ############################
398 ############################
395 ## ERROR HANDLING SYSTEMS ##
399 ## ERROR HANDLING SYSTEMS ##
396 ############################
400 ############################
397
401
398 # Propagate email settings to ErrorReporter of TurboGears2
402 # Propagate email settings to ErrorReporter of TurboGears2
399 # You do not normally need to change these lines
403 # You do not normally need to change these lines
400 get trace_errors.error_email = email_to
404 get trace_errors.error_email = email_to
401 get trace_errors.smtp_server = smtp_server
405 get trace_errors.smtp_server = smtp_server
402 get trace_errors.smtp_port = smtp_port
406 get trace_errors.smtp_port = smtp_port
403 get trace_errors.from_address = error_email_from
407 get trace_errors.from_address = error_email_from
404
408
405 ####################
409 ####################
406 ### [appenlight] ###
410 ### [appenlight] ###
407 ####################
411 ####################
408
412
409 ## AppEnlight is tailored to work with Kallithea, see
413 ## AppEnlight is tailored to work with Kallithea, see
410 ## http://appenlight.com for details how to obtain an account
414 ## http://appenlight.com for details how to obtain an account
411 ## you must install python package `appenlight_client` to make it work
415 ## you must install python package `appenlight_client` to make it work
412
416
413 ## appenlight enabled
417 ## appenlight enabled
414 appenlight = false
418 appenlight = false
415
419
416 appenlight.server_url = https://api.appenlight.com
420 appenlight.server_url = https://api.appenlight.com
417 appenlight.api_key = YOUR_API_KEY
421 appenlight.api_key = YOUR_API_KEY
418
422
419 ## TWEAK AMOUNT OF INFO SENT HERE
423 ## TWEAK AMOUNT OF INFO SENT HERE
420
424
421 ## enables 404 error logging (default False)
425 ## enables 404 error logging (default False)
422 appenlight.report_404 = false
426 appenlight.report_404 = false
423
427
424 ## time in seconds after request is considered being slow (default 1)
428 ## time in seconds after request is considered being slow (default 1)
425 appenlight.slow_request_time = 1
429 appenlight.slow_request_time = 1
426
430
427 ## record slow requests in application
431 ## record slow requests in application
428 ## (needs to be enabled for slow datastore recording and time tracking)
432 ## (needs to be enabled for slow datastore recording and time tracking)
429 appenlight.slow_requests = true
433 appenlight.slow_requests = true
430
434
431 ## enable hooking to application loggers
435 ## enable hooking to application loggers
432 #appenlight.logging = true
436 #appenlight.logging = true
433
437
434 ## minimum log level for log capture
438 ## minimum log level for log capture
435 #appenlight.logging.level = WARNING
439 #appenlight.logging.level = WARNING
436
440
437 ## send logs only from erroneous/slow requests
441 ## send logs only from erroneous/slow requests
438 ## (saves API quota for intensive logging)
442 ## (saves API quota for intensive logging)
439 appenlight.logging_on_error = false
443 appenlight.logging_on_error = false
440
444
441 ## list of additional keywords that should be grabbed from environ object
445 ## list of additional keywords that should be grabbed from environ object
442 ## can be string with comma separated list of words in lowercase
446 ## can be string with comma separated list of words in lowercase
443 ## (by default client will always send following info:
447 ## (by default client will always send following info:
444 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
448 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
445 ## start with HTTP* this list be extended with additional keywords here
449 ## start with HTTP* this list be extended with additional keywords here
446 appenlight.environ_keys_whitelist =
450 appenlight.environ_keys_whitelist =
447
451
448 ## list of keywords that should be blanked from request object
452 ## list of keywords that should be blanked from request object
449 ## can be string with comma separated list of words in lowercase
453 ## can be string with comma separated list of words in lowercase
450 ## (by default client will always blank keys that contain following words
454 ## (by default client will always blank keys that contain following words
451 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
455 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
452 ## this list be extended with additional keywords set here
456 ## this list be extended with additional keywords set here
453 appenlight.request_keys_blacklist =
457 appenlight.request_keys_blacklist =
454
458
455 ## list of namespaces that should be ignores when gathering log entries
459 ## list of namespaces that should be ignores when gathering log entries
456 ## can be string with comma separated list of namespaces
460 ## can be string with comma separated list of namespaces
457 ## (by default the client ignores own entries: appenlight_client.client)
461 ## (by default the client ignores own entries: appenlight_client.client)
458 appenlight.log_namespace_blacklist =
462 appenlight.log_namespace_blacklist =
459
463
460 ################
464 ################
461 ### [sentry] ###
465 ### [sentry] ###
462 ################
466 ################
463
467
464 ## sentry is a alternative open source error aggregator
468 ## sentry is a alternative open source error aggregator
465 ## you must install python packages `sentry` and `raven` to enable
469 ## you must install python packages `sentry` and `raven` to enable
466
470
467 sentry.dsn = YOUR_DNS
471 sentry.dsn = YOUR_DNS
468 sentry.servers =
472 sentry.servers =
469 sentry.name =
473 sentry.name =
470 sentry.key =
474 sentry.key =
471 sentry.public_key =
475 sentry.public_key =
472 sentry.secret_key =
476 sentry.secret_key =
473 sentry.project =
477 sentry.project =
474 sentry.site =
478 sentry.site =
475 sentry.include_paths =
479 sentry.include_paths =
476 sentry.exclude_paths =
480 sentry.exclude_paths =
477
481
478 ################################################################################
482 ################################################################################
479 ## WARNING: *DEBUG MODE MUST BE OFF IN A PRODUCTION ENVIRONMENT* ##
483 ## WARNING: *DEBUG MODE MUST BE OFF IN A PRODUCTION ENVIRONMENT* ##
480 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
484 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
481 ## execute malicious code after an exception is raised. ##
485 ## execute malicious code after an exception is raised. ##
482 ################################################################################
486 ################################################################################
483 debug = false
487 debug = false
484
488
485 ##################################
489 ##################################
486 ### LOGVIEW CONFIG ###
490 ### LOGVIEW CONFIG ###
487 ##################################
491 ##################################
488
492
489 logview.sqlalchemy = #faa
493 logview.sqlalchemy = #faa
490 logview.pylons.templating = #bfb
494 logview.pylons.templating = #bfb
491 logview.pylons.util = #eee
495 logview.pylons.util = #eee
492
496
493 #########################################################
497 #########################################################
494 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
498 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
495 #########################################################
499 #########################################################
496
500
497 # SQLITE [default]
501 # SQLITE [default]
498 #sqlalchemy.url = sqlite:///%(here)s/kallithea.db?timeout=60
502 #sqlalchemy.url = sqlite:///%(here)s/kallithea.db?timeout=60
499 sqlalchemy.url = sqlite:///%(here)s/kallithea_test.sqlite
503 sqlalchemy.url = sqlite:///%(here)s/kallithea_test.sqlite
500
504
501 # POSTGRESQL
505 # POSTGRESQL
502 #sqlalchemy.url = postgresql://user:pass@localhost/kallithea
506 #sqlalchemy.url = postgresql://user:pass@localhost/kallithea
503
507
504 # MySQL
508 # MySQL
505 #sqlalchemy.url = mysql://user:pass@localhost/kallithea?charset=utf8
509 #sqlalchemy.url = mysql://user:pass@localhost/kallithea?charset=utf8
506
510
507 # see sqlalchemy docs for others
511 # see sqlalchemy docs for others
508
512
509 sqlalchemy.pool_recycle = 3600
513 sqlalchemy.pool_recycle = 3600
510
514
511 ################################
515 ################################
512 ### ALEMBIC CONFIGURATION ####
516 ### ALEMBIC CONFIGURATION ####
513 ################################
517 ################################
514
518
515 [alembic]
519 [alembic]
516 script_location = kallithea:alembic
520 script_location = kallithea:alembic
517
521
518 ################################
522 ################################
519 ### LOGGING CONFIGURATION ####
523 ### LOGGING CONFIGURATION ####
520 ################################
524 ################################
521
525
522 [loggers]
526 [loggers]
523 keys = root, routes, kallithea, sqlalchemy, tg, gearbox, beaker, templates, whoosh_indexer
527 keys = root, routes, kallithea, sqlalchemy, tg, gearbox, beaker, templates, whoosh_indexer
524
528
525 [handlers]
529 [handlers]
526 keys = console, console_sql
530 keys = console, console_sql
527
531
528 [formatters]
532 [formatters]
529 keys = generic, color_formatter, color_formatter_sql
533 keys = generic, color_formatter, color_formatter_sql
530
534
531 #############
535 #############
532 ## LOGGERS ##
536 ## LOGGERS ##
533 #############
537 #############
534
538
535 [logger_root]
539 [logger_root]
536 level = NOTSET
540 level = NOTSET
537 handlers = console
541 handlers = console
538
542
539 [logger_routes]
543 [logger_routes]
540 level = DEBUG
544 level = DEBUG
541 handlers =
545 handlers =
542 qualname = routes.middleware
546 qualname = routes.middleware
543 ## "level = DEBUG" logs the route matched and routing variables.
547 ## "level = DEBUG" logs the route matched and routing variables.
544 propagate = 1
548 propagate = 1
545
549
546 [logger_beaker]
550 [logger_beaker]
547 level = DEBUG
551 level = DEBUG
548 handlers =
552 handlers =
549 qualname = beaker.container
553 qualname = beaker.container
550 propagate = 1
554 propagate = 1
551
555
552 [logger_templates]
556 [logger_templates]
553 level = INFO
557 level = INFO
554 handlers =
558 handlers =
555 qualname = pylons.templating
559 qualname = pylons.templating
556 propagate = 1
560 propagate = 1
557
561
558 [logger_kallithea]
562 [logger_kallithea]
559 level = DEBUG
563 level = DEBUG
560 handlers =
564 handlers =
561 qualname = kallithea
565 qualname = kallithea
562 propagate = 1
566 propagate = 1
563
567
564 [logger_tg]
568 [logger_tg]
565 level = DEBUG
569 level = DEBUG
566 handlers =
570 handlers =
567 qualname = tg
571 qualname = tg
568 propagate = 1
572 propagate = 1
569
573
570 [logger_gearbox]
574 [logger_gearbox]
571 level = DEBUG
575 level = DEBUG
572 handlers =
576 handlers =
573 qualname = gearbox
577 qualname = gearbox
574 propagate = 1
578 propagate = 1
575
579
576 [logger_sqlalchemy]
580 [logger_sqlalchemy]
577 level = WARN
581 level = WARN
578 handlers = console_sql
582 handlers = console_sql
579 qualname = sqlalchemy.engine
583 qualname = sqlalchemy.engine
580 propagate = 0
584 propagate = 0
581
585
582 [logger_whoosh_indexer]
586 [logger_whoosh_indexer]
583 level = DEBUG
587 level = DEBUG
584 handlers =
588 handlers =
585 qualname = whoosh_indexer
589 qualname = whoosh_indexer
586 propagate = 1
590 propagate = 1
587
591
588 ##############
592 ##############
589 ## HANDLERS ##
593 ## HANDLERS ##
590 ##############
594 ##############
591
595
592 [handler_console]
596 [handler_console]
593 class = StreamHandler
597 class = StreamHandler
594 args = (sys.stderr,)
598 args = (sys.stderr,)
595 #formatter = generic
599 #formatter = generic
596 formatter = color_formatter
600 formatter = color_formatter
597
601
598 [handler_console_sql]
602 [handler_console_sql]
599 class = StreamHandler
603 class = StreamHandler
600 args = (sys.stderr,)
604 args = (sys.stderr,)
601 #formatter = generic
605 #formatter = generic
602 formatter = color_formatter_sql
606 formatter = color_formatter_sql
603
607
604 ################
608 ################
605 ## FORMATTERS ##
609 ## FORMATTERS ##
606 ################
610 ################
607
611
608 [formatter_generic]
612 [formatter_generic]
609 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
613 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
610 datefmt = %Y-%m-%d %H:%M:%S
614 datefmt = %Y-%m-%d %H:%M:%S
611
615
612 [formatter_color_formatter]
616 [formatter_color_formatter]
613 class = kallithea.lib.colored_formatter.ColorFormatter
617 class = kallithea.lib.colored_formatter.ColorFormatter
614 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
618 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
615 datefmt = %Y-%m-%d %H:%M:%S
619 datefmt = %Y-%m-%d %H:%M:%S
616
620
617 [formatter_color_formatter_sql]
621 [formatter_color_formatter_sql]
618 class = kallithea.lib.colored_formatter.ColorFormatterSql
622 class = kallithea.lib.colored_formatter.ColorFormatterSql
619 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
623 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
620 datefmt = %Y-%m-%d %H:%M:%S
624 datefmt = %Y-%m-%d %H:%M:%S
General Comments 0
You need to be logged in to leave comments. Login now