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