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