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