##// END OF EJS Templates
middleware: replace references to Errormator with AppEnlight....
Brandon Jones -
r6335:b4dd4c16 stable
parent child Browse files
Show More
@@ -1,591 +1,591 b''
1 1 ################################################################################
2 2 ################################################################################
3 3 # Kallithea - Development config: #
4 4 # listening on *:5000 #
5 5 # sqlite and kallithea.db #
6 6 # initial_repo_scan = true #
7 7 # set debug = true #
8 8 # verbose and colorful logging #
9 9 # #
10 10 # The %(here)s variable will be replaced with the parent directory of this file#
11 11 ################################################################################
12 12 ################################################################################
13 13
14 14 [DEFAULT]
15 15 debug = true
16 16 pdebug = false
17 17
18 18 ################################################################################
19 19 ## Email settings ##
20 20 ## ##
21 21 ## Refer to the documentation ("Email settings") for more details. ##
22 22 ## ##
23 23 ## It is recommended to use a valid sender address that passes access ##
24 24 ## validation and spam filtering in mail servers. ##
25 25 ################################################################################
26 26
27 27 ## 'From' header for application emails. You can optionally add a name.
28 28 ## Default:
29 29 #app_email_from = Kallithea
30 30 ## Examples:
31 31 #app_email_from = Kallithea <kallithea-noreply@example.com>
32 32 #app_email_from = kallithea-noreply@example.com
33 33
34 34 ## Subject prefix for application emails.
35 35 ## A space between this prefix and the real subject is automatically added.
36 36 ## Default:
37 37 #email_prefix =
38 38 ## Example:
39 39 #email_prefix = [Kallithea]
40 40
41 41 ## Recipients for error emails and fallback recipients of application mails.
42 42 ## Multiple addresses can be specified, space-separated.
43 43 ## Only addresses are allowed, do not add any name part.
44 44 ## Default:
45 45 #email_to =
46 46 ## Examples:
47 47 #email_to = admin@example.com
48 48 #email_to = admin@example.com another_admin@example.com
49 49
50 50 ## 'From' header for error emails. You can optionally add a name.
51 51 ## Default:
52 52 #error_email_from = pylons@yourapp.com
53 53 ## Examples:
54 54 #error_email_from = Kallithea Errors <kallithea-noreply@example.com>
55 55 #error_email_from = paste_error@example.com
56 56
57 57 ## SMTP server settings
58 58 ## Only smtp_server is mandatory. All other settings take the specified default
59 59 ## values.
60 60 #smtp_server = smtp.example.com
61 61 #smtp_username =
62 62 #smtp_password =
63 63 #smtp_port = 25
64 64 #smtp_use_tls = false
65 65 #smtp_use_ssl = false
66 66 ## SMTP authentication parameters to use (e.g. LOGIN PLAIN CRAM-MD5, etc.).
67 67 ## If empty, use any of the authentication parameters supported by the server.
68 68 #smtp_auth =
69 69
70 70 [server:main]
71 71 ## PASTE ##
72 72 #use = egg:Paste#http
73 73 ## nr of worker threads to spawn
74 74 #threadpool_workers = 5
75 75 ## max request before thread respawn
76 76 #threadpool_max_requests = 10
77 77 ## option to use threads of process
78 78 #use_threadpool = true
79 79
80 80 ## WAITRESS ##
81 81 use = egg:waitress#main
82 82 ## number of worker threads
83 83 threads = 5
84 84 ## MAX BODY SIZE 100GB
85 85 max_request_body_size = 107374182400
86 86 ## use poll instead of select, fixes fd limits, may not work on old
87 87 ## windows systems.
88 88 #asyncore_use_poll = True
89 89
90 90 ## GUNICORN ##
91 91 #use = egg:gunicorn#main
92 92 ## number of process workers. You must set `instance_id = *` when this option
93 93 ## is set to more than one worker
94 94 #workers = 1
95 95 ## process name
96 96 #proc_name = kallithea
97 97 ## type of worker class, one of sync, eventlet, gevent, tornado
98 98 ## recommended for bigger setup is using of of other than sync one
99 99 #worker_class = sync
100 100 #max_requests = 1000
101 101 ## ammount of time a worker can handle request before it gets killed and
102 102 ## restarted
103 103 #timeout = 3600
104 104
105 105 ## UWSGI ##
106 106 ## run with uwsgi --ini-paste-logged <inifile.ini>
107 107 #[uwsgi]
108 108 #socket = /tmp/uwsgi.sock
109 109 #master = true
110 110 #http = 127.0.0.1:5000
111 111
112 112 ## set as deamon and redirect all output to file
113 113 #daemonize = ./uwsgi_kallithea.log
114 114
115 115 ## master process PID
116 116 #pidfile = ./uwsgi_kallithea.pid
117 117
118 118 ## stats server with workers statistics, use uwsgitop
119 119 ## for monitoring, `uwsgitop 127.0.0.1:1717`
120 120 #stats = 127.0.0.1:1717
121 121 #memory-report = true
122 122
123 123 ## log 5XX errors
124 124 #log-5xx = true
125 125
126 126 ## Set the socket listen queue size.
127 127 #listen = 256
128 128
129 129 ## Gracefully Reload workers after the specified amount of managed requests
130 130 ## (avoid memory leaks).
131 131 #max-requests = 1000
132 132
133 133 ## enable large buffers
134 134 #buffer-size = 65535
135 135
136 136 ## socket and http timeouts ##
137 137 #http-timeout = 3600
138 138 #socket-timeout = 3600
139 139
140 140 ## Log requests slower than the specified number of milliseconds.
141 141 #log-slow = 10
142 142
143 143 ## Exit if no app can be loaded.
144 144 #need-app = true
145 145
146 146 ## Set lazy mode (load apps in workers instead of master).
147 147 #lazy = true
148 148
149 149 ## scaling ##
150 150 ## set cheaper algorithm to use, if not set default will be used
151 151 #cheaper-algo = spare
152 152
153 153 ## minimum number of workers to keep at all times
154 154 #cheaper = 1
155 155
156 156 ## number of workers to spawn at startup
157 157 #cheaper-initial = 1
158 158
159 159 ## maximum number of workers that can be spawned
160 160 #workers = 4
161 161
162 162 ## how many workers should be spawned at a time
163 163 #cheaper-step = 1
164 164
165 165 ## COMMON ##
166 166 host = 0.0.0.0
167 167 port = 5000
168 168
169 169 ## middleware for hosting the WSGI application under a URL prefix
170 170 #[filter:proxy-prefix]
171 171 #use = egg:PasteDeploy#prefix
172 172 #prefix = /<your-prefix>
173 173
174 174 [app:main]
175 175 use = egg:kallithea
176 176 ## enable proxy prefix middleware
177 177 #filter-with = proxy-prefix
178 178
179 179 full_stack = true
180 180 static_files = true
181 181 ## Available Languages:
182 182 ## cs de fr hu ja nl_BE pl pt_BR ru sk zh_CN zh_TW
183 183 lang =
184 184 cache_dir = %(here)s/data
185 185 index_dir = %(here)s/data/index
186 186
187 187 ## perform a full repository scan on each server start, this should be
188 188 ## set to false after first startup, to allow faster server restarts.
189 189 #initial_repo_scan = false
190 190 initial_repo_scan = true
191 191
192 192 ## uncomment and set this path to use archive download cache
193 193 archive_cache_dir = %(here)s/tarballcache
194 194
195 195 ## change this to unique ID for security
196 196 app_instance_uuid = development-not-secret
197 197
198 198 ## cut off limit for large diffs (size in bytes)
199 199 cut_off_limit = 256000
200 200
201 201 ## use cache version of scm repo everywhere
202 202 vcs_full_cache = true
203 203
204 204 ## force https in Kallithea, fixes https redirects, assumes it's always https
205 205 force_https = false
206 206
207 207 ## use Strict-Transport-Security headers
208 208 use_htsts = false
209 209
210 210 ## number of commits stats will parse on each iteration
211 211 commit_parse_limit = 25
212 212
213 213 ## path to git executable
214 214 git_path = git
215 215
216 216 ## git rev filter option, --all is the default filter, if you need to
217 217 ## hide all refs in changelog switch this to --branches --tags
218 218 #git_rev_filter = --branches --tags
219 219
220 220 ## RSS feed options
221 221 rss_cut_off_limit = 256000
222 222 rss_items_per_page = 10
223 223 rss_include_diff = false
224 224
225 225 ## options for showing and identifying changesets
226 226 show_sha_length = 12
227 227 show_revision_number = false
228 228
229 229 ## gist URL alias, used to create nicer urls for gist. This should be an
230 230 ## url that does rewrites to _admin/gists/<gistid>.
231 231 ## example: http://gist.example.com/{gistid}. Empty means use the internal
232 232 ## Kallithea url, ie. http[s]://kallithea.example.com/_admin/gists/<gistid>
233 233 gist_alias_url =
234 234
235 235 ## white list of API enabled controllers. This allows to add list of
236 236 ## controllers to which access will be enabled by api_key. eg: to enable
237 237 ## api access to raw_files put `FilesController:raw`, to enable access to patches
238 238 ## add `ChangesetController:changeset_patch`. This list should be "," separated
239 239 ## Syntax is <ControllerClass>:<function>. Check debug logs for generated names
240 240 ## Recommended settings below are commented out:
241 241 api_access_controllers_whitelist =
242 242 # ChangesetController:changeset_patch,
243 243 # ChangesetController:changeset_raw,
244 244 # FilesController:raw,
245 245 # FilesController:archivefile
246 246
247 247 ## default encoding used to convert from and to unicode
248 248 ## can be also a comma seperated list of encoding in case of mixed encodings
249 249 default_encoding = utf8
250 250
251 251 ## issue tracker for Kallithea (leave blank to disable, absent for default)
252 252 #bugtracker = https://bitbucket.org/conservancy/kallithea/issues
253 253
254 254 ## issue tracking mapping for commits messages
255 255 ## comment out issue_pat, issue_server, issue_prefix to enable
256 256
257 257 ## pattern to get the issues from commit messages
258 258 ## default one used here is #<numbers> with a regex passive group for `#`
259 259 ## {id} will be all groups matched from this pattern
260 260
261 261 issue_pat = (?:\s*#)(\d+)
262 262
263 263 ## server url to the issue, each {id} will be replaced with match
264 264 ## fetched from the regex and {repo} is replaced with full repository name
265 265 ## including groups {repo_name} is replaced with just name of repo
266 266
267 267 issue_server_link = https://issues.example.com/{repo}/issue/{id}
268 268
269 269 ## prefix to add to link to indicate it's an url
270 270 ## #314 will be replaced by <issue_prefix><id>
271 271
272 272 issue_prefix = #
273 273
274 274 ## issue_pat, issue_server_link, issue_prefix can have suffixes to specify
275 275 ## multiple patterns, to other issues server, wiki or others
276 276 ## below an example how to create a wiki pattern
277 277 # wiki-some-id -> https://wiki.example.com/some-id
278 278
279 279 #issue_pat_wiki = (?:wiki-)(.+)
280 280 #issue_server_link_wiki = https://wiki.example.com/{id}
281 281 #issue_prefix_wiki = WIKI-
282 282
283 283 ## instance-id prefix
284 284 ## a prefix key for this instance used for cache invalidation when running
285 285 ## multiple instances of kallithea, make sure it's globally unique for
286 286 ## all running kallithea instances. Leave empty if you don't use it
287 287 instance_id =
288 288
289 289 ## alternative return HTTP header for failed authentication. Default HTTP
290 290 ## response is 401 HTTPUnauthorized. Currently Mercurial clients have trouble with
291 291 ## handling that. Set this variable to 403 to return HTTPForbidden
292 292 auth_ret_code =
293 293
294 294 ## locking return code. When repository is locked return this HTTP code. 2XX
295 295 ## codes don't break the transactions while 4XX codes do
296 296 lock_ret_code = 423
297 297
298 298 ## allows to change the repository location in settings page
299 299 allow_repo_location_change = True
300 300
301 301 ## allows to setup custom hooks in settings page
302 302 allow_custom_hooks_settings = True
303 303
304 304 ####################################
305 305 ### CELERY CONFIG ####
306 306 ####################################
307 307
308 308 use_celery = false
309 309 broker.host = localhost
310 310 broker.vhost = rabbitmqhost
311 311 broker.port = 5672
312 312 broker.user = rabbitmq
313 313 broker.password = qweqwe
314 314
315 315 celery.imports = kallithea.lib.celerylib.tasks
316 316
317 317 celery.result.backend = amqp
318 318 celery.result.dburi = amqp://
319 319 celery.result.serialier = json
320 320
321 321 #celery.send.task.error.emails = true
322 322 #celery.amqp.task.result.expires = 18000
323 323
324 324 celeryd.concurrency = 2
325 325 #celeryd.log.file = celeryd.log
326 326 celeryd.log.level = DEBUG
327 327 celeryd.max.tasks.per.child = 1
328 328
329 329 ## tasks will never be sent to the queue, but executed locally instead.
330 330 celery.always.eager = false
331 331
332 332 ####################################
333 333 ### BEAKER CACHE ####
334 334 ####################################
335 335
336 336 beaker.cache.data_dir = %(here)s/data/cache/data
337 337 beaker.cache.lock_dir = %(here)s/data/cache/lock
338 338
339 339 beaker.cache.regions = short_term,long_term,sql_cache_short
340 340
341 341 beaker.cache.short_term.type = memory
342 342 beaker.cache.short_term.expire = 60
343 343 beaker.cache.short_term.key_length = 256
344 344
345 345 beaker.cache.long_term.type = memory
346 346 beaker.cache.long_term.expire = 36000
347 347 beaker.cache.long_term.key_length = 256
348 348
349 349 beaker.cache.sql_cache_short.type = memory
350 350 beaker.cache.sql_cache_short.expire = 10
351 351 beaker.cache.sql_cache_short.key_length = 256
352 352
353 353 ####################################
354 354 ### BEAKER SESSION ####
355 355 ####################################
356 356
357 357 ## Name of session cookie. Should be unique for a given host and path, even when running
358 358 ## on different ports. Otherwise, cookie sessions will be shared and messed up.
359 359 beaker.session.key = kallithea
360 360 ## Sessions should always only be accessible by the browser, not directly by JavaScript.
361 361 beaker.session.httponly = true
362 362 ## Session lifetime. 2592000 seconds is 30 days.
363 363 beaker.session.timeout = 2592000
364 364
365 365 ## Server secret used with HMAC to ensure integrity of cookies.
366 366 beaker.session.secret = development-not-secret
367 367 ## Further, encrypt the data with AES.
368 368 #beaker.session.encrypt_key = <key_for_encryption>
369 369 #beaker.session.validate_key = <validation_key>
370 370
371 371 ## Type of storage used for the session, current types are
372 372 ## dbm, file, memcached, database, and memory.
373 373
374 374 ## File system storage of session data. (default)
375 375 #beaker.session.type = file
376 376
377 377 ## Cookie only, store all session data inside the cookie. Requires secure secrets.
378 378 #beaker.session.type = cookie
379 379
380 380 ## Database storage of session data.
381 381 #beaker.session.type = ext:database
382 382 #beaker.session.sa.url = postgresql://postgres:qwe@localhost/kallithea
383 383 #beaker.session.table_name = db_session
384 384
385 385 ############################
386 386 ## ERROR HANDLING SYSTEMS ##
387 387 ############################
388 388
389 389 ####################
390 ### [errormator] ###
390 ### [appenlight] ###
391 391 ####################
392 392
393 ## Errormator is tailored to work with Kallithea, see
394 ## http://errormator.com for details how to obtain an account
395 ## you must install python package `errormator_client` to make it work
393 ## AppEnlight is tailored to work with Kallithea, see
394 ## http://appenlight.com for details how to obtain an account
395 ## you must install python package `appenlight_client` to make it work
396 396
397 ## errormator enabled
398 errormator = false
397 ## appenlight enabled
398 appenlight = false
399 399
400 errormator.server_url = https://api.errormator.com
401 errormator.api_key = YOUR_API_KEY
400 appenlight.server_url = https://api.appenlight.com
401 appenlight.api_key = YOUR_API_KEY
402 402
403 403 ## TWEAK AMOUNT OF INFO SENT HERE
404 404
405 405 ## enables 404 error logging (default False)
406 errormator.report_404 = false
406 appenlight.report_404 = false
407 407
408 408 ## time in seconds after request is considered being slow (default 1)
409 errormator.slow_request_time = 1
409 appenlight.slow_request_time = 1
410 410
411 411 ## record slow requests in application
412 412 ## (needs to be enabled for slow datastore recording and time tracking)
413 errormator.slow_requests = true
413 appenlight.slow_requests = true
414 414
415 415 ## enable hooking to application loggers
416 #errormator.logging = true
416 #appenlight.logging = true
417 417
418 418 ## minimum log level for log capture
419 #errormator.logging.level = WARNING
419 #appenlight.logging.level = WARNING
420 420
421 421 ## send logs only from erroneous/slow requests
422 422 ## (saves API quota for intensive logging)
423 errormator.logging_on_error = false
423 appenlight.logging_on_error = false
424 424
425 425 ## list of additonal keywords that should be grabbed from environ object
426 426 ## can be string with comma separated list of words in lowercase
427 427 ## (by default client will always send following info:
428 428 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
429 429 ## start with HTTP* this list be extended with additional keywords here
430 errormator.environ_keys_whitelist =
430 appenlight.environ_keys_whitelist =
431 431
432 432 ## list of keywords that should be blanked from request object
433 433 ## can be string with comma separated list of words in lowercase
434 434 ## (by default client will always blank keys that contain following words
435 435 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
436 436 ## this list be extended with additional keywords set here
437 errormator.request_keys_blacklist =
437 appenlight.request_keys_blacklist =
438 438
439 439 ## list of namespaces that should be ignores when gathering log entries
440 440 ## can be string with comma separated list of namespaces
441 ## (by default the client ignores own entries: errormator_client.client)
442 errormator.log_namespace_blacklist =
441 ## (by default the client ignores own entries: appenlight_client.client)
442 appenlight.log_namespace_blacklist =
443 443
444 444 ################
445 445 ### [sentry] ###
446 446 ################
447 447
448 448 ## sentry is a alternative open source error aggregator
449 449 ## you must install python packages `sentry` and `raven` to enable
450 450
451 451 sentry.dsn = YOUR_DNS
452 452 sentry.servers =
453 453 sentry.name =
454 454 sentry.key =
455 455 sentry.public_key =
456 456 sentry.secret_key =
457 457 sentry.project =
458 458 sentry.site =
459 459 sentry.include_paths =
460 460 sentry.exclude_paths =
461 461
462 462 ################################################################################
463 463 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
464 464 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
465 465 ## execute malicious code after an exception is raised. ##
466 466 ################################################################################
467 467 #set debug = false
468 468 set debug = true
469 469
470 470 ##################################
471 471 ### LOGVIEW CONFIG ###
472 472 ##################################
473 473
474 474 logview.sqlalchemy = #faa
475 475 logview.pylons.templating = #bfb
476 476 logview.pylons.util = #eee
477 477
478 478 #########################################################
479 479 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
480 480 #########################################################
481 481
482 482 # SQLITE [default]
483 483 sqlalchemy.db1.url = sqlite:///%(here)s/kallithea.db?timeout=60
484 484
485 485 # POSTGRESQL
486 486 #sqlalchemy.db1.url = postgresql://user:pass@localhost/kallithea
487 487
488 488 # MySQL
489 489 #sqlalchemy.db1.url = mysql://user:pass@localhost/kallithea
490 490
491 491 # see sqlalchemy docs for others
492 492
493 493 sqlalchemy.db1.echo = false
494 494 sqlalchemy.db1.pool_recycle = 3600
495 495 sqlalchemy.db1.convert_unicode = true
496 496
497 497 ################################
498 498 ### LOGGING CONFIGURATION ####
499 499 ################################
500 500
501 501 [loggers]
502 502 keys = root, routes, kallithea, sqlalchemy, beaker, templates, whoosh_indexer
503 503
504 504 [handlers]
505 505 keys = console, console_sql
506 506
507 507 [formatters]
508 508 keys = generic, color_formatter, color_formatter_sql
509 509
510 510 #############
511 511 ## LOGGERS ##
512 512 #############
513 513
514 514 [logger_root]
515 515 level = NOTSET
516 516 handlers = console
517 517
518 518 [logger_routes]
519 519 level = DEBUG
520 520 handlers =
521 521 qualname = routes.middleware
522 522 ## "level = DEBUG" logs the route matched and routing variables.
523 523 propagate = 1
524 524
525 525 [logger_beaker]
526 526 level = DEBUG
527 527 handlers =
528 528 qualname = beaker.container
529 529 propagate = 1
530 530
531 531 [logger_templates]
532 532 level = INFO
533 533 handlers =
534 534 qualname = pylons.templating
535 535 propagate = 1
536 536
537 537 [logger_kallithea]
538 538 level = DEBUG
539 539 handlers =
540 540 qualname = kallithea
541 541 propagate = 1
542 542
543 543 [logger_sqlalchemy]
544 544 level = INFO
545 545 handlers = console_sql
546 546 qualname = sqlalchemy.engine
547 547 propagate = 0
548 548
549 549 [logger_whoosh_indexer]
550 550 level = DEBUG
551 551 handlers =
552 552 qualname = whoosh_indexer
553 553 propagate = 1
554 554
555 555 ##############
556 556 ## HANDLERS ##
557 557 ##############
558 558
559 559 [handler_console]
560 560 class = StreamHandler
561 561 args = (sys.stderr,)
562 562 #level = INFO
563 563 #formatter = generic
564 564 level = DEBUG
565 565 formatter = color_formatter
566 566
567 567 [handler_console_sql]
568 568 class = StreamHandler
569 569 args = (sys.stderr,)
570 570 #level = WARN
571 571 #formatter = generic
572 572 level = DEBUG
573 573 formatter = color_formatter_sql
574 574
575 575 ################
576 576 ## FORMATTERS ##
577 577 ################
578 578
579 579 [formatter_generic]
580 580 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
581 581 datefmt = %Y-%m-%d %H:%M:%S
582 582
583 583 [formatter_color_formatter]
584 584 class = kallithea.lib.colored_formatter.ColorFormatter
585 585 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
586 586 datefmt = %Y-%m-%d %H:%M:%S
587 587
588 588 [formatter_color_formatter_sql]
589 589 class = kallithea.lib.colored_formatter.ColorFormatterSql
590 590 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
591 591 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,591 +1,591 b''
1 1 ## -*- coding: utf-8 -*-
2 2 <%text>################################################################################</%text>
3 3 <%text>################################################################################</%text>
4 4 # Kallithea - config file generated with kallithea-config #
5 5 <%text>################################################################################</%text>
6 6 <%text>################################################################################</%text>
7 7
8 8 [DEFAULT]
9 9 debug = true
10 10 pdebug = false
11 11
12 12 <%text>################################################################################</%text>
13 13 <%text>## Email settings ##</%text>
14 14 <%text>## ##</%text>
15 15 <%text>## Refer to the documentation ("Email settings") for more details. ##</%text>
16 16 <%text>## ##</%text>
17 17 <%text>## It is recommended to use a valid sender address that passes access ##</%text>
18 18 <%text>## validation and spam filtering in mail servers. ##</%text>
19 19 <%text>################################################################################</%text>
20 20
21 21 <%text>## 'From' header for application emails. You can optionally add a name.</%text>
22 22 <%text>## Default:</%text>
23 23 #app_email_from = Kallithea
24 24 <%text>## Examples:</%text>
25 25 #app_email_from = Kallithea <kallithea-noreply@example.com>
26 26 #app_email_from = kallithea-noreply@example.com
27 27
28 28 <%text>## Subject prefix for application emails.</%text>
29 29 <%text>## A space between this prefix and the real subject is automatically added.</%text>
30 30 <%text>## Default:</%text>
31 31 #email_prefix =
32 32 <%text>## Example:</%text>
33 33 #email_prefix = [Kallithea]
34 34
35 35 <%text>## Recipients for error emails and fallback recipients of application mails.</%text>
36 36 <%text>## Multiple addresses can be specified, space-separated.</%text>
37 37 <%text>## Only addresses are allowed, do not add any name part.</%text>
38 38 <%text>## Default:</%text>
39 39 #email_to =
40 40 <%text>## Examples:</%text>
41 41 #email_to = admin@example.com
42 42 #email_to = admin@example.com another_admin@example.com
43 43
44 44 <%text>## 'From' header for error emails. You can optionally add a name.</%text>
45 45 <%text>## Default:</%text>
46 46 #error_email_from = pylons@yourapp.com
47 47 <%text>## Examples:</%text>
48 48 #error_email_from = Kallithea Errors <kallithea-noreply@example.com>
49 49 #error_email_from = paste_error@example.com
50 50
51 51 <%text>## SMTP server settings</%text>
52 52 <%text>## Only smtp_server is mandatory. All other settings take the specified default</%text>
53 53 <%text>## values.</%text>
54 54 #smtp_server = smtp.example.com
55 55 #smtp_username =
56 56 #smtp_password =
57 57 #smtp_port = 25
58 58 #smtp_use_tls = false
59 59 #smtp_use_ssl = false
60 60 <%text>## SMTP authentication parameters to use (e.g. LOGIN PLAIN CRAM-MD5, etc.).</%text>
61 61 <%text>## If empty, use any of the authentication parameters supported by the server.</%text>
62 62 #smtp_auth =
63 63
64 64 [server:main]
65 65 %if http_server == 'paste':
66 66 <%text>## PASTE ##</%text>
67 67 use = egg:Paste#http
68 68 <%text>## nr of worker threads to spawn</%text>
69 69 threadpool_workers = 5
70 70 <%text>## max request before thread respawn</%text>
71 71 threadpool_max_requests = 10
72 72 <%text>## option to use threads of process</%text>
73 73 use_threadpool = true
74 74
75 75 %elif http_server == 'waitress':
76 76 <%text>## WAITRESS ##</%text>
77 77 use = egg:waitress#main
78 78 <%text>## number of worker threads</%text>
79 79 threads = 5
80 80 <%text>## MAX BODY SIZE 100GB</%text>
81 81 max_request_body_size = 107374182400
82 82 <%text>## use poll instead of select, fixes fd limits, may not work on old</%text>
83 83 <%text>## windows systems.</%text>
84 84 #asyncore_use_poll = True
85 85
86 86 %elif http_server == 'gunicorn':
87 87 <%text>## GUNICORN ##</%text>
88 88 use = egg:gunicorn#main
89 89 <%text>## number of process workers. You must set `instance_id = *` when this option</%text>
90 90 <%text>## is set to more than one worker</%text>
91 91 workers = 1
92 92 <%text>## process name</%text>
93 93 proc_name = kallithea
94 94 <%text>## type of worker class, one of sync, eventlet, gevent, tornado</%text>
95 95 <%text>## recommended for bigger setup is using of of other than sync one</%text>
96 96 worker_class = sync
97 97 max_requests = 1000
98 98 <%text>## ammount of time a worker can handle request before it gets killed and</%text>
99 99 <%text>## restarted</%text>
100 100 timeout = 3600
101 101
102 102 %elif http_server == 'uwsgi':
103 103 <%text>## UWSGI ##</%text>
104 104 <%text>## run with uwsgi --ini-paste-logged <inifile.ini></%text>
105 105 [uwsgi]
106 106 socket = /tmp/uwsgi.sock
107 107 master = true
108 108 http = 127.0.0.1:5000
109 109
110 110 <%text>## set as deamon and redirect all output to file</%text>
111 111 #daemonize = ./uwsgi_kallithea.log
112 112
113 113 <%text>## master process PID</%text>
114 114 pidfile = ./uwsgi_kallithea.pid
115 115
116 116 <%text>## stats server with workers statistics, use uwsgitop</%text>
117 117 <%text>## for monitoring, `uwsgitop 127.0.0.1:1717`</%text>
118 118 stats = 127.0.0.1:1717
119 119 memory-report = true
120 120
121 121 <%text>## log 5XX errors</%text>
122 122 log-5xx = true
123 123
124 124 <%text>## Set the socket listen queue size.</%text>
125 125 listen = 256
126 126
127 127 <%text>## Gracefully Reload workers after the specified amount of managed requests</%text>
128 128 <%text>## (avoid memory leaks).</%text>
129 129 max-requests = 1000
130 130
131 131 <%text>## enable large buffers</%text>
132 132 buffer-size = 65535
133 133
134 134 <%text>## socket and http timeouts ##</%text>
135 135 http-timeout = 3600
136 136 socket-timeout = 3600
137 137
138 138 <%text>## Log requests slower than the specified number of milliseconds.</%text>
139 139 log-slow = 10
140 140
141 141 <%text>## Exit if no app can be loaded.</%text>
142 142 need-app = true
143 143
144 144 <%text>## Set lazy mode (load apps in workers instead of master).</%text>
145 145 lazy = true
146 146
147 147 <%text>## scaling ##</%text>
148 148 <%text>## set cheaper algorithm to use, if not set default will be used</%text>
149 149 cheaper-algo = spare
150 150
151 151 <%text>## minimum number of workers to keep at all times</%text>
152 152 cheaper = 1
153 153
154 154 <%text>## number of workers to spawn at startup</%text>
155 155 cheaper-initial = 1
156 156
157 157 <%text>## maximum number of workers that can be spawned</%text>
158 158 workers = 4
159 159
160 160 <%text>## how many workers should be spawned at a time</%text>
161 161 cheaper-step = 1
162 162
163 163 %endif
164 164 <%text>## COMMON ##</%text>
165 165 host = ${host}
166 166 port = ${port}
167 167
168 168 <%text>## middleware for hosting the WSGI application under a URL prefix</%text>
169 169 #[filter:proxy-prefix]
170 170 #use = egg:PasteDeploy#prefix
171 171 #prefix = /<your-prefix>
172 172
173 173 [app:main]
174 174 use = egg:kallithea
175 175 <%text>## enable proxy prefix middleware</%text>
176 176 #filter-with = proxy-prefix
177 177
178 178 full_stack = true
179 179 static_files = true
180 180 <%text>## Available Languages:</%text>
181 181 <%text>## cs de fr hu ja nl_BE pl pt_BR ru sk zh_CN zh_TW</%text>
182 182 lang =
183 183 cache_dir = ${here}/data
184 184 index_dir = ${here}/data/index
185 185
186 186 <%text>## perform a full repository scan on each server start, this should be</%text>
187 187 <%text>## set to false after first startup, to allow faster server restarts.</%text>
188 188 initial_repo_scan = false
189 189
190 190 <%text>## uncomment and set this path to use archive download cache</%text>
191 191 archive_cache_dir = ${here}/tarballcache
192 192
193 193 <%text>## change this to unique ID for security</%text>
194 194 app_instance_uuid = ${uuid()}
195 195
196 196 <%text>## cut off limit for large diffs (size in bytes)</%text>
197 197 cut_off_limit = 256000
198 198
199 199 <%text>## use cache version of scm repo everywhere</%text>
200 200 vcs_full_cache = true
201 201
202 202 <%text>## force https in Kallithea, fixes https redirects, assumes it's always https</%text>
203 203 force_https = false
204 204
205 205 <%text>## use Strict-Transport-Security headers</%text>
206 206 use_htsts = false
207 207
208 208 <%text>## number of commits stats will parse on each iteration</%text>
209 209 commit_parse_limit = 25
210 210
211 211 <%text>## path to git executable</%text>
212 212 git_path = git
213 213
214 214 <%text>## git rev filter option, --all is the default filter, if you need to</%text>
215 215 <%text>## hide all refs in changelog switch this to --branches --tags</%text>
216 216 #git_rev_filter = --branches --tags
217 217
218 218 <%text>## RSS feed options</%text>
219 219 rss_cut_off_limit = 256000
220 220 rss_items_per_page = 10
221 221 rss_include_diff = false
222 222
223 223 <%text>## options for showing and identifying changesets</%text>
224 224 show_sha_length = 12
225 225 show_revision_number = false
226 226
227 227 <%text>## gist URL alias, used to create nicer urls for gist. This should be an</%text>
228 228 <%text>## url that does rewrites to _admin/gists/<gistid>.</%text>
229 229 <%text>## example: http://gist.example.com/{gistid}. Empty means use the internal</%text>
230 230 <%text>## Kallithea url, ie. http[s]://kallithea.example.com/_admin/gists/<gistid></%text>
231 231 gist_alias_url =
232 232
233 233 <%text>## white list of API enabled controllers. This allows to add list of</%text>
234 234 <%text>## controllers to which access will be enabled by api_key. eg: to enable</%text>
235 235 <%text>## api access to raw_files put `FilesController:raw`, to enable access to patches</%text>
236 236 <%text>## add `ChangesetController:changeset_patch`. This list should be "," separated</%text>
237 237 <%text>## Syntax is <ControllerClass>:<function>. Check debug logs for generated names</%text>
238 238 <%text>## Recommended settings below are commented out:</%text>
239 239 api_access_controllers_whitelist =
240 240 # ChangesetController:changeset_patch,
241 241 # ChangesetController:changeset_raw,
242 242 # FilesController:raw,
243 243 # FilesController:archivefile
244 244
245 245 <%text>## default encoding used to convert from and to unicode</%text>
246 246 <%text>## can be also a comma seperated list of encoding in case of mixed encodings</%text>
247 247 default_encoding = utf8
248 248
249 249 <%text>## issue tracker for Kallithea (leave blank to disable, absent for default)</%text>
250 250 #bugtracker = https://bitbucket.org/conservancy/kallithea/issues
251 251
252 252 <%text>## issue tracking mapping for commits messages</%text>
253 253 <%text>## comment out issue_pat, issue_server, issue_prefix to enable</%text>
254 254
255 255 <%text>## pattern to get the issues from commit messages</%text>
256 256 <%text>## default one used here is #<numbers> with a regex passive group for `#`</%text>
257 257 <%text>## {id} will be all groups matched from this pattern</%text>
258 258
259 259 issue_pat = (?:\s*#)(\d+)
260 260
261 261 <%text>## server url to the issue, each {id} will be replaced with match</%text>
262 262 <%text>## fetched from the regex and {repo} is replaced with full repository name</%text>
263 263 <%text>## including groups {repo_name} is replaced with just name of repo</%text>
264 264
265 265 issue_server_link = https://issues.example.com/{repo}/issue/{id}
266 266
267 267 <%text>## prefix to add to link to indicate it's an url</%text>
268 268 <%text>## #314 will be replaced by <issue_prefix><id></%text>
269 269
270 270 issue_prefix = #
271 271
272 272 <%text>## issue_pat, issue_server_link, issue_prefix can have suffixes to specify</%text>
273 273 <%text>## multiple patterns, to other issues server, wiki or others</%text>
274 274 <%text>## below an example how to create a wiki pattern</%text>
275 275 # wiki-some-id -> https://wiki.example.com/some-id
276 276
277 277 #issue_pat_wiki = (?:wiki-)(.+)
278 278 #issue_server_link_wiki = https://wiki.example.com/{id}
279 279 #issue_prefix_wiki = WIKI-
280 280
281 281 <%text>## instance-id prefix</%text>
282 282 <%text>## a prefix key for this instance used for cache invalidation when running</%text>
283 283 <%text>## multiple instances of kallithea, make sure it's globally unique for</%text>
284 284 <%text>## all running kallithea instances. Leave empty if you don't use it</%text>
285 285 instance_id =
286 286
287 287 <%text>## alternative return HTTP header for failed authentication. Default HTTP</%text>
288 288 <%text>## response is 401 HTTPUnauthorized. Currently Mercurial clients have trouble with</%text>
289 289 <%text>## handling that. Set this variable to 403 to return HTTPForbidden</%text>
290 290 auth_ret_code =
291 291
292 292 <%text>## locking return code. When repository is locked return this HTTP code. 2XX</%text>
293 293 <%text>## codes don't break the transactions while 4XX codes do</%text>
294 294 lock_ret_code = 423
295 295
296 296 <%text>## allows to change the repository location in settings page</%text>
297 297 allow_repo_location_change = True
298 298
299 299 <%text>## allows to setup custom hooks in settings page</%text>
300 300 allow_custom_hooks_settings = True
301 301
302 302 <%text>####################################</%text>
303 303 <%text>### CELERY CONFIG ####</%text>
304 304 <%text>####################################</%text>
305 305
306 306 use_celery = false
307 307 broker.host = localhost
308 308 broker.vhost = rabbitmqhost
309 309 broker.port = 5672
310 310 broker.user = rabbitmq
311 311 broker.password = qweqwe
312 312
313 313 celery.imports = kallithea.lib.celerylib.tasks
314 314
315 315 celery.result.backend = amqp
316 316 celery.result.dburi = amqp://
317 317 celery.result.serialier = json
318 318
319 319 #celery.send.task.error.emails = true
320 320 #celery.amqp.task.result.expires = 18000
321 321
322 322 celeryd.concurrency = 2
323 323 #celeryd.log.file = celeryd.log
324 324 celeryd.log.level = DEBUG
325 325 celeryd.max.tasks.per.child = 1
326 326
327 327 <%text>## tasks will never be sent to the queue, but executed locally instead.</%text>
328 328 celery.always.eager = false
329 329
330 330 <%text>####################################</%text>
331 331 <%text>### BEAKER CACHE ####</%text>
332 332 <%text>####################################</%text>
333 333
334 334 beaker.cache.data_dir = ${here}/data/cache/data
335 335 beaker.cache.lock_dir = ${here}/data/cache/lock
336 336
337 337 beaker.cache.regions = short_term,long_term,sql_cache_short
338 338
339 339 beaker.cache.short_term.type = memory
340 340 beaker.cache.short_term.expire = 60
341 341 beaker.cache.short_term.key_length = 256
342 342
343 343 beaker.cache.long_term.type = memory
344 344 beaker.cache.long_term.expire = 36000
345 345 beaker.cache.long_term.key_length = 256
346 346
347 347 beaker.cache.sql_cache_short.type = memory
348 348 beaker.cache.sql_cache_short.expire = 10
349 349 beaker.cache.sql_cache_short.key_length = 256
350 350
351 351 <%text>####################################</%text>
352 352 <%text>### BEAKER SESSION ####</%text>
353 353 <%text>####################################</%text>
354 354
355 355 <%text>## Name of session cookie. Should be unique for a given host and path, even when running</%text>
356 356 <%text>## on different ports. Otherwise, cookie sessions will be shared and messed up.</%text>
357 357 beaker.session.key = kallithea
358 358 <%text>## Sessions should always only be accessible by the browser, not directly by JavaScript.</%text>
359 359 beaker.session.httponly = true
360 360 <%text>## Session lifetime. 2592000 seconds is 30 days.</%text>
361 361 beaker.session.timeout = 2592000
362 362
363 363 <%text>## Server secret used with HMAC to ensure integrity of cookies.</%text>
364 364 beaker.session.secret = ${uuid()}
365 365 <%text>## Further, encrypt the data with AES.</%text>
366 366 #beaker.session.encrypt_key = <key_for_encryption>
367 367 #beaker.session.validate_key = <validation_key>
368 368
369 369 <%text>## Type of storage used for the session, current types are</%text>
370 370 <%text>## dbm, file, memcached, database, and memory.</%text>
371 371
372 372 <%text>## File system storage of session data. (default)</%text>
373 373 #beaker.session.type = file
374 374
375 375 <%text>## Cookie only, store all session data inside the cookie. Requires secure secrets.</%text>
376 376 #beaker.session.type = cookie
377 377
378 378 <%text>## Database storage of session data.</%text>
379 379 #beaker.session.type = ext:database
380 380 #beaker.session.sa.url = postgresql://postgres:qwe@localhost/kallithea
381 381 #beaker.session.table_name = db_session
382 382
383 %if error_aggregation_service == 'errormator':
383 %if error_aggregation_service == 'appenlight':
384 384 <%text>############################</%text>
385 385 <%text>## ERROR HANDLING SYSTEMS ##</%text>
386 386 <%text>############################</%text>
387 387
388 388 <%text>####################</%text>
389 <%text>### [errormator] ###</%text>
389 <%text>### [appenlight] ###</%text>
390 390 <%text>####################</%text>
391 391
392 <%text>## Errormator is tailored to work with Kallithea, see</%text>
393 <%text>## http://errormator.com for details how to obtain an account</%text>
394 <%text>## you must install python package `errormator_client` to make it work</%text>
392 <%text>## AppEnlight is tailored to work with Kallithea, see</%text>
393 <%text>## http://appenlight.com for details how to obtain an account</%text>
394 <%text>## you must install python package `appenlight_client` to make it work</%text>
395 395
396 <%text>## errormator enabled</%text>
397 errormator = false
396 <%text>## appenlight enabled</%text>
397 appenlight = false
398 398
399 errormator.server_url = https://api.errormator.com
400 errormator.api_key = YOUR_API_KEY
399 appenlight.server_url = https://api.appenlight.com
400 appenlight.api_key = YOUR_API_KEY
401 401
402 402 <%text>## TWEAK AMOUNT OF INFO SENT HERE</%text>
403 403
404 404 <%text>## enables 404 error logging (default False)</%text>
405 errormator.report_404 = false
405 appenlight.report_404 = false
406 406
407 407 <%text>## time in seconds after request is considered being slow (default 1)</%text>
408 errormator.slow_request_time = 1
408 appenlight.slow_request_time = 1
409 409
410 410 <%text>## record slow requests in application</%text>
411 411 <%text>## (needs to be enabled for slow datastore recording and time tracking)</%text>
412 errormator.slow_requests = true
412 appenlight.slow_requests = true
413 413
414 414 <%text>## enable hooking to application loggers</%text>
415 #errormator.logging = true
415 #appenlight.logging = true
416 416
417 417 <%text>## minimum log level for log capture</%text>
418 #errormator.logging.level = WARNING
418 #appenlight.logging.level = WARNING
419 419
420 420 <%text>## send logs only from erroneous/slow requests</%text>
421 421 <%text>## (saves API quota for intensive logging)</%text>
422 errormator.logging_on_error = false
422 appenlight.logging_on_error = false
423 423
424 424 <%text>## list of additonal keywords that should be grabbed from environ object</%text>
425 425 <%text>## can be string with comma separated list of words in lowercase</%text>
426 426 <%text>## (by default client will always send following info:</%text>
427 427 <%text>## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that</%text>
428 428 <%text>## start with HTTP* this list be extended with additional keywords here</%text>
429 errormator.environ_keys_whitelist =
429 appenlight.environ_keys_whitelist =
430 430
431 431 <%text>## list of keywords that should be blanked from request object</%text>
432 432 <%text>## can be string with comma separated list of words in lowercase</%text>
433 433 <%text>## (by default client will always blank keys that contain following words</%text>
434 434 <%text>## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'</%text>
435 435 <%text>## this list be extended with additional keywords set here</%text>
436 errormator.request_keys_blacklist =
436 appenlight.request_keys_blacklist =
437 437
438 438 <%text>## list of namespaces that should be ignores when gathering log entries</%text>
439 439 <%text>## can be string with comma separated list of namespaces</%text>
440 <%text>## (by default the client ignores own entries: errormator_client.client)</%text>
441 errormator.log_namespace_blacklist =
440 <%text>## (by default the client ignores own entries: appenlight_client.client)</%text>
441 appenlight.log_namespace_blacklist =
442 442
443 443 %elif error_aggregation_service == 'sentry':
444 444 <%text>################</%text>
445 445 <%text>### [sentry] ###</%text>
446 446 <%text>################</%text>
447 447
448 448 <%text>## sentry is a alternative open source error aggregator</%text>
449 449 <%text>## you must install python packages `sentry` and `raven` to enable</%text>
450 450
451 451 sentry.dsn = YOUR_DNS
452 452 sentry.servers =
453 453 sentry.name =
454 454 sentry.key =
455 455 sentry.public_key =
456 456 sentry.secret_key =
457 457 sentry.project =
458 458 sentry.site =
459 459 sentry.include_paths =
460 460 sentry.exclude_paths =
461 461
462 462 %endif
463 463 <%text>################################################################################</%text>
464 464 <%text>## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##</%text>
465 465 <%text>## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##</%text>
466 466 <%text>## execute malicious code after an exception is raised. ##</%text>
467 467 <%text>################################################################################</%text>
468 468 set debug = false
469 469
470 470 <%text>##################################</%text>
471 471 <%text>### LOGVIEW CONFIG ###</%text>
472 472 <%text>##################################</%text>
473 473
474 474 logview.sqlalchemy = #faa
475 475 logview.pylons.templating = #bfb
476 476 logview.pylons.util = #eee
477 477
478 478 <%text>#########################################################</%text>
479 479 <%text>### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###</%text>
480 480 <%text>#########################################################</%text>
481 481
482 482 %if database_engine == 'sqlite':
483 483 # SQLITE [default]
484 484 sqlalchemy.db1.url = sqlite:///${here}/kallithea.db?timeout=60
485 485
486 486 %elif database_engine == 'postgres':
487 487 # POSTGRESQL
488 488 sqlalchemy.db1.url = postgresql://user:pass@localhost/kallithea
489 489
490 490 %elif database_engine == 'mysql':
491 491 # MySQL
492 492 sqlalchemy.db1.url = mysql://user:pass@localhost/kallithea
493 493
494 494 %endif
495 495 # see sqlalchemy docs for others
496 496
497 497 sqlalchemy.db1.echo = false
498 498 sqlalchemy.db1.pool_recycle = 3600
499 499 sqlalchemy.db1.convert_unicode = true
500 500
501 501 <%text>################################</%text>
502 502 <%text>### LOGGING CONFIGURATION ####</%text>
503 503 <%text>################################</%text>
504 504
505 505 [loggers]
506 506 keys = root, routes, kallithea, sqlalchemy, beaker, templates, whoosh_indexer
507 507
508 508 [handlers]
509 509 keys = console, console_sql
510 510
511 511 [formatters]
512 512 keys = generic, color_formatter, color_formatter_sql
513 513
514 514 <%text>#############</%text>
515 515 <%text>## LOGGERS ##</%text>
516 516 <%text>#############</%text>
517 517
518 518 [logger_root]
519 519 level = NOTSET
520 520 handlers = console
521 521
522 522 [logger_routes]
523 523 level = DEBUG
524 524 handlers =
525 525 qualname = routes.middleware
526 526 <%text>## "level = DEBUG" logs the route matched and routing variables.</%text>
527 527 propagate = 1
528 528
529 529 [logger_beaker]
530 530 level = DEBUG
531 531 handlers =
532 532 qualname = beaker.container
533 533 propagate = 1
534 534
535 535 [logger_templates]
536 536 level = INFO
537 537 handlers =
538 538 qualname = pylons.templating
539 539 propagate = 1
540 540
541 541 [logger_kallithea]
542 542 level = DEBUG
543 543 handlers =
544 544 qualname = kallithea
545 545 propagate = 1
546 546
547 547 [logger_sqlalchemy]
548 548 level = INFO
549 549 handlers = console_sql
550 550 qualname = sqlalchemy.engine
551 551 propagate = 0
552 552
553 553 [logger_whoosh_indexer]
554 554 level = DEBUG
555 555 handlers =
556 556 qualname = whoosh_indexer
557 557 propagate = 1
558 558
559 559 <%text>##############</%text>
560 560 <%text>## HANDLERS ##</%text>
561 561 <%text>##############</%text>
562 562
563 563 [handler_console]
564 564 class = StreamHandler
565 565 args = (sys.stderr,)
566 566 level = INFO
567 567 formatter = generic
568 568
569 569 [handler_console_sql]
570 570 class = StreamHandler
571 571 args = (sys.stderr,)
572 572 level = WARN
573 573 formatter = generic
574 574
575 575 <%text>################</%text>
576 576 <%text>## FORMATTERS ##</%text>
577 577 <%text>################</%text>
578 578
579 579 [formatter_generic]
580 580 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
581 581 datefmt = %Y-%m-%d %H:%M:%S
582 582
583 583 [formatter_color_formatter]
584 584 class = kallithea.lib.colored_formatter.ColorFormatter
585 585 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
586 586 datefmt = %Y-%m-%d %H:%M:%S
587 587
588 588 [formatter_color_formatter_sql]
589 589 class = kallithea.lib.colored_formatter.ColorFormatterSql
590 590 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
591 591 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,580 +1,580 b''
1 1 ################################################################################
2 2 ################################################################################
3 3 # Kallithea - Example config #
4 4 # #
5 5 # The %(here)s variable will be replaced with the parent directory of this file#
6 6 ################################################################################
7 7 ################################################################################
8 8
9 9 [DEFAULT]
10 10 debug = true
11 11 pdebug = false
12 12
13 13 ################################################################################
14 14 ## Email settings ##
15 15 ## ##
16 16 ## Refer to the documentation ("Email settings") for more details. ##
17 17 ## ##
18 18 ## It is recommended to use a valid sender address that passes access ##
19 19 ## validation and spam filtering in mail servers. ##
20 20 ################################################################################
21 21
22 22 ## 'From' header for application emails. You can optionally add a name.
23 23 ## Default:
24 24 #app_email_from = Kallithea
25 25 ## Examples:
26 26 #app_email_from = Kallithea <kallithea-noreply@example.com>
27 27 #app_email_from = kallithea-noreply@example.com
28 28
29 29 ## Subject prefix for application emails.
30 30 ## A space between this prefix and the real subject is automatically added.
31 31 ## Default:
32 32 #email_prefix =
33 33 ## Example:
34 34 #email_prefix = [Kallithea]
35 35
36 36 ## Recipients for error emails and fallback recipients of application mails.
37 37 ## Multiple addresses can be specified, space-separated.
38 38 ## Only addresses are allowed, do not add any name part.
39 39 ## Default:
40 40 #email_to =
41 41 ## Examples:
42 42 #email_to = admin@example.com
43 43 #email_to = admin@example.com another_admin@example.com
44 44
45 45 ## 'From' header for error emails. You can optionally add a name.
46 46 ## Default:
47 47 #error_email_from = pylons@yourapp.com
48 48 ## Examples:
49 49 #error_email_from = Kallithea Errors <kallithea-noreply@example.com>
50 50 #error_email_from = paste_error@example.com
51 51
52 52 ## SMTP server settings
53 53 ## Only smtp_server is mandatory. All other settings take the specified default
54 54 ## values.
55 55 #smtp_server = smtp.example.com
56 56 #smtp_username =
57 57 #smtp_password =
58 58 #smtp_port = 25
59 59 #smtp_use_tls = false
60 60 #smtp_use_ssl = false
61 61 ## SMTP authentication parameters to use (e.g. LOGIN PLAIN CRAM-MD5, etc.).
62 62 ## If empty, use any of the authentication parameters supported by the server.
63 63 #smtp_auth =
64 64
65 65 [server:main]
66 66 ## PASTE ##
67 67 #use = egg:Paste#http
68 68 ## nr of worker threads to spawn
69 69 #threadpool_workers = 5
70 70 ## max request before thread respawn
71 71 #threadpool_max_requests = 10
72 72 ## option to use threads of process
73 73 #use_threadpool = true
74 74
75 75 ## WAITRESS ##
76 76 use = egg:waitress#main
77 77 ## number of worker threads
78 78 threads = 5
79 79 ## MAX BODY SIZE 100GB
80 80 max_request_body_size = 107374182400
81 81 ## use poll instead of select, fixes fd limits, may not work on old
82 82 ## windows systems.
83 83 #asyncore_use_poll = True
84 84
85 85 ## GUNICORN ##
86 86 #use = egg:gunicorn#main
87 87 ## number of process workers. You must set `instance_id = *` when this option
88 88 ## is set to more than one worker
89 89 #workers = 1
90 90 ## process name
91 91 #proc_name = kallithea
92 92 ## type of worker class, one of sync, eventlet, gevent, tornado
93 93 ## recommended for bigger setup is using of of other than sync one
94 94 #worker_class = sync
95 95 #max_requests = 1000
96 96 ## ammount of time a worker can handle request before it gets killed and
97 97 ## restarted
98 98 #timeout = 3600
99 99
100 100 ## UWSGI ##
101 101 ## run with uwsgi --ini-paste-logged <inifile.ini>
102 102 #[uwsgi]
103 103 #socket = /tmp/uwsgi.sock
104 104 #master = true
105 105 #http = 127.0.0.1:5000
106 106
107 107 ## set as deamon and redirect all output to file
108 108 #daemonize = ./uwsgi_kallithea.log
109 109
110 110 ## master process PID
111 111 #pidfile = ./uwsgi_kallithea.pid
112 112
113 113 ## stats server with workers statistics, use uwsgitop
114 114 ## for monitoring, `uwsgitop 127.0.0.1:1717`
115 115 #stats = 127.0.0.1:1717
116 116 #memory-report = true
117 117
118 118 ## log 5XX errors
119 119 #log-5xx = true
120 120
121 121 ## Set the socket listen queue size.
122 122 #listen = 256
123 123
124 124 ## Gracefully Reload workers after the specified amount of managed requests
125 125 ## (avoid memory leaks).
126 126 #max-requests = 1000
127 127
128 128 ## enable large buffers
129 129 #buffer-size = 65535
130 130
131 131 ## socket and http timeouts ##
132 132 #http-timeout = 3600
133 133 #socket-timeout = 3600
134 134
135 135 ## Log requests slower than the specified number of milliseconds.
136 136 #log-slow = 10
137 137
138 138 ## Exit if no app can be loaded.
139 139 #need-app = true
140 140
141 141 ## Set lazy mode (load apps in workers instead of master).
142 142 #lazy = true
143 143
144 144 ## scaling ##
145 145 ## set cheaper algorithm to use, if not set default will be used
146 146 #cheaper-algo = spare
147 147
148 148 ## minimum number of workers to keep at all times
149 149 #cheaper = 1
150 150
151 151 ## number of workers to spawn at startup
152 152 #cheaper-initial = 1
153 153
154 154 ## maximum number of workers that can be spawned
155 155 #workers = 4
156 156
157 157 ## how many workers should be spawned at a time
158 158 #cheaper-step = 1
159 159
160 160 ## COMMON ##
161 161 host = 127.0.0.1
162 162 port = 5000
163 163
164 164 ## middleware for hosting the WSGI application under a URL prefix
165 165 #[filter:proxy-prefix]
166 166 #use = egg:PasteDeploy#prefix
167 167 #prefix = /<your-prefix>
168 168
169 169 [app:main]
170 170 use = egg:kallithea
171 171 ## enable proxy prefix middleware
172 172 #filter-with = proxy-prefix
173 173
174 174 full_stack = true
175 175 static_files = true
176 176 ## Available Languages:
177 177 ## cs de fr hu ja nl_BE pl pt_BR ru sk zh_CN zh_TW
178 178 lang =
179 179 cache_dir = %(here)s/data
180 180 index_dir = %(here)s/data/index
181 181
182 182 ## perform a full repository scan on each server start, this should be
183 183 ## set to false after first startup, to allow faster server restarts.
184 184 initial_repo_scan = false
185 185
186 186 ## uncomment and set this path to use archive download cache
187 187 archive_cache_dir = %(here)s/tarballcache
188 188
189 189 ## change this to unique ID for security
190 190 app_instance_uuid = ${app_instance_uuid}
191 191
192 192 ## cut off limit for large diffs (size in bytes)
193 193 cut_off_limit = 256000
194 194
195 195 ## use cache version of scm repo everywhere
196 196 vcs_full_cache = true
197 197
198 198 ## force https in Kallithea, fixes https redirects, assumes it's always https
199 199 force_https = false
200 200
201 201 ## use Strict-Transport-Security headers
202 202 use_htsts = false
203 203
204 204 ## number of commits stats will parse on each iteration
205 205 commit_parse_limit = 25
206 206
207 207 ## path to git executable
208 208 git_path = git
209 209
210 210 ## git rev filter option, --all is the default filter, if you need to
211 211 ## hide all refs in changelog switch this to --branches --tags
212 212 #git_rev_filter = --branches --tags
213 213
214 214 ## RSS feed options
215 215 rss_cut_off_limit = 256000
216 216 rss_items_per_page = 10
217 217 rss_include_diff = false
218 218
219 219 ## options for showing and identifying changesets
220 220 show_sha_length = 12
221 221 show_revision_number = false
222 222
223 223 ## gist URL alias, used to create nicer urls for gist. This should be an
224 224 ## url that does rewrites to _admin/gists/<gistid>.
225 225 ## example: http://gist.example.com/{gistid}. Empty means use the internal
226 226 ## Kallithea url, ie. http[s]://kallithea.example.com/_admin/gists/<gistid>
227 227 gist_alias_url =
228 228
229 229 ## white list of API enabled controllers. This allows to add list of
230 230 ## controllers to which access will be enabled by api_key. eg: to enable
231 231 ## api access to raw_files put `FilesController:raw`, to enable access to patches
232 232 ## add `ChangesetController:changeset_patch`. This list should be "," separated
233 233 ## Syntax is <ControllerClass>:<function>. Check debug logs for generated names
234 234 ## Recommended settings below are commented out:
235 235 api_access_controllers_whitelist =
236 236 # ChangesetController:changeset_patch,
237 237 # ChangesetController:changeset_raw,
238 238 # FilesController:raw,
239 239 # FilesController:archivefile
240 240
241 241 ## default encoding used to convert from and to unicode
242 242 ## can be also a comma seperated list of encoding in case of mixed encodings
243 243 default_encoding = utf8
244 244
245 245 ## issue tracker for Kallithea (leave blank to disable, absent for default)
246 246 #bugtracker = https://bitbucket.org/conservancy/kallithea/issues
247 247
248 248 ## issue tracking mapping for commits messages
249 249 ## comment out issue_pat, issue_server, issue_prefix to enable
250 250
251 251 ## pattern to get the issues from commit messages
252 252 ## default one used here is #<numbers> with a regex passive group for `#`
253 253 ## {id} will be all groups matched from this pattern
254 254
255 255 issue_pat = (?:\s*#)(\d+)
256 256
257 257 ## server url to the issue, each {id} will be replaced with match
258 258 ## fetched from the regex and {repo} is replaced with full repository name
259 259 ## including groups {repo_name} is replaced with just name of repo
260 260
261 261 issue_server_link = https://issues.example.com/{repo}/issue/{id}
262 262
263 263 ## prefix to add to link to indicate it's an url
264 264 ## #314 will be replaced by <issue_prefix><id>
265 265
266 266 issue_prefix = #
267 267
268 268 ## issue_pat, issue_server_link, issue_prefix can have suffixes to specify
269 269 ## multiple patterns, to other issues server, wiki or others
270 270 ## below an example how to create a wiki pattern
271 271 # wiki-some-id -> https://wiki.example.com/some-id
272 272
273 273 #issue_pat_wiki = (?:wiki-)(.+)
274 274 #issue_server_link_wiki = https://wiki.example.com/{id}
275 275 #issue_prefix_wiki = WIKI-
276 276
277 277 ## instance-id prefix
278 278 ## a prefix key for this instance used for cache invalidation when running
279 279 ## multiple instances of kallithea, make sure it's globally unique for
280 280 ## all running kallithea instances. Leave empty if you don't use it
281 281 instance_id =
282 282
283 283 ## alternative return HTTP header for failed authentication. Default HTTP
284 284 ## response is 401 HTTPUnauthorized. Currently Mercurial clients have trouble with
285 285 ## handling that. Set this variable to 403 to return HTTPForbidden
286 286 auth_ret_code =
287 287
288 288 ## locking return code. When repository is locked return this HTTP code. 2XX
289 289 ## codes don't break the transactions while 4XX codes do
290 290 lock_ret_code = 423
291 291
292 292 ## allows to change the repository location in settings page
293 293 allow_repo_location_change = True
294 294
295 295 ## allows to setup custom hooks in settings page
296 296 allow_custom_hooks_settings = True
297 297
298 298 ####################################
299 299 ### CELERY CONFIG ####
300 300 ####################################
301 301
302 302 use_celery = false
303 303 broker.host = localhost
304 304 broker.vhost = rabbitmqhost
305 305 broker.port = 5672
306 306 broker.user = rabbitmq
307 307 broker.password = qweqwe
308 308
309 309 celery.imports = kallithea.lib.celerylib.tasks
310 310
311 311 celery.result.backend = amqp
312 312 celery.result.dburi = amqp://
313 313 celery.result.serialier = json
314 314
315 315 #celery.send.task.error.emails = true
316 316 #celery.amqp.task.result.expires = 18000
317 317
318 318 celeryd.concurrency = 2
319 319 #celeryd.log.file = celeryd.log
320 320 celeryd.log.level = DEBUG
321 321 celeryd.max.tasks.per.child = 1
322 322
323 323 ## tasks will never be sent to the queue, but executed locally instead.
324 324 celery.always.eager = false
325 325
326 326 ####################################
327 327 ### BEAKER CACHE ####
328 328 ####################################
329 329
330 330 beaker.cache.data_dir = %(here)s/data/cache/data
331 331 beaker.cache.lock_dir = %(here)s/data/cache/lock
332 332
333 333 beaker.cache.regions = short_term,long_term,sql_cache_short
334 334
335 335 beaker.cache.short_term.type = memory
336 336 beaker.cache.short_term.expire = 60
337 337 beaker.cache.short_term.key_length = 256
338 338
339 339 beaker.cache.long_term.type = memory
340 340 beaker.cache.long_term.expire = 36000
341 341 beaker.cache.long_term.key_length = 256
342 342
343 343 beaker.cache.sql_cache_short.type = memory
344 344 beaker.cache.sql_cache_short.expire = 10
345 345 beaker.cache.sql_cache_short.key_length = 256
346 346
347 347 ####################################
348 348 ### BEAKER SESSION ####
349 349 ####################################
350 350
351 351 ## Name of session cookie. Should be unique for a given host and path, even when running
352 352 ## on different ports. Otherwise, cookie sessions will be shared and messed up.
353 353 beaker.session.key = kallithea
354 354 ## Sessions should always only be accessible by the browser, not directly by JavaScript.
355 355 beaker.session.httponly = true
356 356 ## Session lifetime. 2592000 seconds is 30 days.
357 357 beaker.session.timeout = 2592000
358 358
359 359 ## Server secret used with HMAC to ensure integrity of cookies.
360 360 beaker.session.secret = ${app_instance_uuid}
361 361 ## Further, encrypt the data with AES.
362 362 #beaker.session.encrypt_key = <key_for_encryption>
363 363 #beaker.session.validate_key = <validation_key>
364 364
365 365 ## Type of storage used for the session, current types are
366 366 ## dbm, file, memcached, database, and memory.
367 367
368 368 ## File system storage of session data. (default)
369 369 #beaker.session.type = file
370 370
371 371 ## Cookie only, store all session data inside the cookie. Requires secure secrets.
372 372 #beaker.session.type = cookie
373 373
374 374 ## Database storage of session data.
375 375 #beaker.session.type = ext:database
376 376 #beaker.session.sa.url = postgresql://postgres:qwe@localhost/kallithea
377 377 #beaker.session.table_name = db_session
378 378
379 379 ############################
380 380 ## ERROR HANDLING SYSTEMS ##
381 381 ############################
382 382
383 383 ####################
384 ### [errormator] ###
384 ### [appenlight] ###
385 385 ####################
386 386
387 ## Errormator is tailored to work with Kallithea, see
388 ## http://errormator.com for details how to obtain an account
389 ## you must install python package `errormator_client` to make it work
387 ## AppEnlight is tailored to work with Kallithea, see
388 ## http://appenlight.com for details how to obtain an account
389 ## you must install python package `appenlight_client` to make it work
390 390
391 ## errormator enabled
392 errormator = false
391 ## appenlight enabled
392 appenlight = false
393 393
394 errormator.server_url = https://api.errormator.com
395 errormator.api_key = YOUR_API_KEY
394 appenlight.server_url = https://api.appenlight.com
395 appenlight.api_key = YOUR_API_KEY
396 396
397 397 ## TWEAK AMOUNT OF INFO SENT HERE
398 398
399 399 ## enables 404 error logging (default False)
400 errormator.report_404 = false
400 appenlight.report_404 = false
401 401
402 402 ## time in seconds after request is considered being slow (default 1)
403 errormator.slow_request_time = 1
403 appenlight.slow_request_time = 1
404 404
405 405 ## record slow requests in application
406 406 ## (needs to be enabled for slow datastore recording and time tracking)
407 errormator.slow_requests = true
407 appenlight.slow_requests = true
408 408
409 409 ## enable hooking to application loggers
410 #errormator.logging = true
410 #appenlight.logging = true
411 411
412 412 ## minimum log level for log capture
413 #errormator.logging.level = WARNING
413 #appenlight.logging.level = WARNING
414 414
415 415 ## send logs only from erroneous/slow requests
416 416 ## (saves API quota for intensive logging)
417 errormator.logging_on_error = false
417 appenlight.logging_on_error = false
418 418
419 419 ## list of additonal keywords that should be grabbed from environ object
420 420 ## can be string with comma separated list of words in lowercase
421 421 ## (by default client will always send following info:
422 422 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
423 423 ## start with HTTP* this list be extended with additional keywords here
424 errormator.environ_keys_whitelist =
424 appenlight.environ_keys_whitelist =
425 425
426 426 ## list of keywords that should be blanked from request object
427 427 ## can be string with comma separated list of words in lowercase
428 428 ## (by default client will always blank keys that contain following words
429 429 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
430 430 ## this list be extended with additional keywords set here
431 errormator.request_keys_blacklist =
431 appenlight.request_keys_blacklist =
432 432
433 433 ## list of namespaces that should be ignores when gathering log entries
434 434 ## can be string with comma separated list of namespaces
435 ## (by default the client ignores own entries: errormator_client.client)
436 errormator.log_namespace_blacklist =
435 ## (by default the client ignores own entries: appenlight_client.client)
436 appenlight.log_namespace_blacklist =
437 437
438 438 ################
439 439 ### [sentry] ###
440 440 ################
441 441
442 442 ## sentry is a alternative open source error aggregator
443 443 ## you must install python packages `sentry` and `raven` to enable
444 444
445 445 sentry.dsn = YOUR_DNS
446 446 sentry.servers =
447 447 sentry.name =
448 448 sentry.key =
449 449 sentry.public_key =
450 450 sentry.secret_key =
451 451 sentry.project =
452 452 sentry.site =
453 453 sentry.include_paths =
454 454 sentry.exclude_paths =
455 455
456 456 ################################################################################
457 457 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
458 458 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
459 459 ## execute malicious code after an exception is raised. ##
460 460 ################################################################################
461 461 set debug = false
462 462
463 463 ##################################
464 464 ### LOGVIEW CONFIG ###
465 465 ##################################
466 466
467 467 logview.sqlalchemy = #faa
468 468 logview.pylons.templating = #bfb
469 469 logview.pylons.util = #eee
470 470
471 471 #########################################################
472 472 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
473 473 #########################################################
474 474
475 475 # SQLITE [default]
476 476 sqlalchemy.db1.url = sqlite:///%(here)s/kallithea.db?timeout=60
477 477
478 478 # POSTGRESQL
479 479 #sqlalchemy.db1.url = postgresql://user:pass@localhost/kallithea
480 480
481 481 # MySQL
482 482 #sqlalchemy.db1.url = mysql://user:pass@localhost/kallithea
483 483
484 484 # see sqlalchemy docs for others
485 485
486 486 sqlalchemy.db1.echo = false
487 487 sqlalchemy.db1.pool_recycle = 3600
488 488 sqlalchemy.db1.convert_unicode = true
489 489
490 490 ################################
491 491 ### LOGGING CONFIGURATION ####
492 492 ################################
493 493
494 494 [loggers]
495 495 keys = root, routes, kallithea, sqlalchemy, beaker, templates, whoosh_indexer
496 496
497 497 [handlers]
498 498 keys = console, console_sql
499 499
500 500 [formatters]
501 501 keys = generic, color_formatter, color_formatter_sql
502 502
503 503 #############
504 504 ## LOGGERS ##
505 505 #############
506 506
507 507 [logger_root]
508 508 level = NOTSET
509 509 handlers = console
510 510
511 511 [logger_routes]
512 512 level = DEBUG
513 513 handlers =
514 514 qualname = routes.middleware
515 515 ## "level = DEBUG" logs the route matched and routing variables.
516 516 propagate = 1
517 517
518 518 [logger_beaker]
519 519 level = DEBUG
520 520 handlers =
521 521 qualname = beaker.container
522 522 propagate = 1
523 523
524 524 [logger_templates]
525 525 level = INFO
526 526 handlers =
527 527 qualname = pylons.templating
528 528 propagate = 1
529 529
530 530 [logger_kallithea]
531 531 level = DEBUG
532 532 handlers =
533 533 qualname = kallithea
534 534 propagate = 1
535 535
536 536 [logger_sqlalchemy]
537 537 level = INFO
538 538 handlers = console_sql
539 539 qualname = sqlalchemy.engine
540 540 propagate = 0
541 541
542 542 [logger_whoosh_indexer]
543 543 level = DEBUG
544 544 handlers =
545 545 qualname = whoosh_indexer
546 546 propagate = 1
547 547
548 548 ##############
549 549 ## HANDLERS ##
550 550 ##############
551 551
552 552 [handler_console]
553 553 class = StreamHandler
554 554 args = (sys.stderr,)
555 555 level = INFO
556 556 formatter = generic
557 557
558 558 [handler_console_sql]
559 559 class = StreamHandler
560 560 args = (sys.stderr,)
561 561 level = WARN
562 562 formatter = generic
563 563
564 564 ################
565 565 ## FORMATTERS ##
566 566 ################
567 567
568 568 [formatter_generic]
569 569 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
570 570 datefmt = %Y-%m-%d %H:%M:%S
571 571
572 572 [formatter_color_formatter]
573 573 class = kallithea.lib.colored_formatter.ColorFormatter
574 574 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
575 575 datefmt = %Y-%m-%d %H:%M:%S
576 576
577 577 [formatter_color_formatter_sql]
578 578 class = kallithea.lib.colored_formatter.ColorFormatterSql
579 579 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
580 580 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,112 +1,112 b''
1 1 # -*- coding: utf-8 -*-
2 2 # This program is free software: you can redistribute it and/or modify
3 3 # it under the terms of the GNU General Public License as published by
4 4 # the Free Software Foundation, either version 3 of the License, or
5 5 # (at your option) any later version.
6 6 #
7 7 # This program is distributed in the hope that it will be useful,
8 8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 10 # GNU General Public License for more details.
11 11 #
12 12 # You should have received a copy of the GNU General Public License
13 13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 14 """
15 15 Pylons middleware initialization
16 16 """
17 17
18 18 from routes.middleware import RoutesMiddleware
19 19 from paste.cascade import Cascade
20 20 from paste.registry import RegistryManager
21 21 from paste.urlparser import StaticURLParser
22 22 from paste.deploy.converters import asbool
23 23 from paste.gzipper import make_gzip_middleware
24 24
25 25 from pylons.middleware import ErrorHandler, StatusCodeRedirect
26 26 from pylons.wsgiapp import PylonsApp
27 27
28 28 from kallithea.lib.middleware.simplehg import SimpleHg
29 29 from kallithea.lib.middleware.simplegit import SimpleGit
30 30 from kallithea.lib.middleware.https_fixup import HttpsFixup
31 31 from kallithea.lib.middleware.sessionmiddleware import SecureSessionMiddleware
32 32 from kallithea.config.environment import load_environment
33 33 from kallithea.lib.middleware.wrapper import RequestWrapper
34 34
35 35
36 36 def make_app(global_conf, full_stack=True, static_files=True, **app_conf):
37 37 """Create a Pylons WSGI application and return it
38 38
39 39 ``global_conf``
40 40 The inherited configuration for this application. Normally from
41 41 the [DEFAULT] section of the Paste ini file.
42 42
43 43 ``full_stack``
44 44 Whether or not this application provides a full WSGI stack (by
45 45 default, meaning it handles its own exceptions and errors).
46 46 Disable full_stack when this application is "managed" by
47 47 another WSGI middleware.
48 48
49 49 ``app_conf``
50 50 The application's local configuration. Normally specified in
51 51 the [app:<name>] section of the Paste ini file (where <name>
52 52 defaults to main).
53 53
54 54 """
55 55 # Configure the Pylons environment
56 56 config = load_environment(global_conf, app_conf)
57 57
58 58 # The Pylons WSGI app
59 59 app = PylonsApp(config=config)
60 60
61 61 # Routing/Session/Cache Middleware
62 62 app = RoutesMiddleware(app, config['routes.map'])
63 63 app = SecureSessionMiddleware(app, config)
64 64
65 65 # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares)
66 66 if asbool(config['pdebug']):
67 67 from kallithea.lib.profiler import ProfilingMiddleware
68 68 app = ProfilingMiddleware(app)
69 69
70 70 if asbool(full_stack):
71 71
72 72 from kallithea.lib.middleware.sentry import Sentry
73 from kallithea.lib.middleware.errormator import Errormator
74 if Errormator and asbool(config['app_conf'].get('errormator')):
75 app = Errormator(app, config)
73 from kallithea.lib.middleware.appenlight import AppEnlight
74 if AppEnlight and asbool(config['app_conf'].get('appenlight')):
75 app = AppEnlight(app, config)
76 76 elif Sentry:
77 77 app = Sentry(app, config)
78 78
79 79 # Handle Python exceptions
80 80 app = ErrorHandler(app, global_conf, **config['pylons.errorware'])
81 81
82 82 # Display error documents for 401, 403, 404 status codes (and
83 83 # 500 when debug is disabled)
84 84 # Note: will buffer the output in memory!
85 85 if asbool(config['debug']):
86 86 app = StatusCodeRedirect(app)
87 87 else:
88 88 app = StatusCodeRedirect(app, [400, 401, 403, 404, 500])
89 89
90 90 # we want our low level middleware to get to the request ASAP. We don't
91 91 # need any pylons stack middleware in them - especially no StatusCodeRedirect buffering
92 92 app = SimpleHg(app, config)
93 93 app = SimpleGit(app, config)
94 94
95 95 # Enable https redirects based on HTTP_X_URL_SCHEME set by proxy
96 96 if any(asbool(config.get(x)) for x in ['https_fixup', 'force_https', 'use_htsts']):
97 97 app = HttpsFixup(app, config)
98 98
99 99 app = RequestWrapper(app, config) # logging
100 100
101 101 # Establish the Registry for this application
102 102 app = RegistryManager(app) # thread / request-local module globals / variables
103 103
104 104 if asbool(static_files):
105 105 # Serve static files
106 106 static_app = StaticURLParser(config['pylons.paths']['static_files'])
107 107 app = Cascade([static_app, app])
108 108 app = make_gzip_middleware(app, global_conf, compress_level=1)
109 109
110 110 app.config = config
111 111
112 112 return app
@@ -1,34 +1,34 b''
1 1 # -*- coding: utf-8 -*-
2 2 # This program is free software: you can redistribute it and/or modify
3 3 # it under the terms of the GNU General Public License as published by
4 4 # the Free Software Foundation, either version 3 of the License, or
5 5 # (at your option) any later version.
6 6 #
7 7 # This program is distributed in the hope that it will be useful,
8 8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 10 # GNU General Public License for more details.
11 11 #
12 12 # You should have received a copy of the GNU General Public License
13 13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 14 """
15 kallithea.lib.middleware.errormator
15 kallithea.lib.middleware.appenlight
16 16 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17 17
18 middleware to handle errormator publishing of errors
18 middleware to handle appenlight publishing of errors
19 19
20 20 This file was forked by the Kallithea project in July 2014.
21 21 Original author and date, and relevant copyright and licensing information is below:
22 22 :created_on: October 18, 2012
23 23 :author: marcink
24 24 :copyright: (c) 2013 RhodeCode GmbH, and others.
25 25 :license: GPLv3, see LICENSE.md for more details.
26 26 """
27 27
28 28
29 29 try:
30 from errormator_client import make_errormator_middleware
30 from appenlight_client import make_appenlight_middleware
31 31 except ImportError:
32 Errormator = None
32 AppEnlight = None
33 33 else:
34 Errormator = make_errormator_middleware
34 AppEnlight = make_appenlight_middleware
@@ -1,591 +1,591 b''
1 1 ################################################################################
2 2 ################################################################################
3 3 # Kallithea - config for tests: #
4 4 # initial_repo_scan = true #
5 5 # vcs_full_cache = false #
6 6 # sqlalchemy and kallithea_test.sqlite #
7 7 # custom logging #
8 8 # #
9 9 # The %(here)s variable will be replaced with the parent directory of this file#
10 10 ################################################################################
11 11 ################################################################################
12 12
13 13 [DEFAULT]
14 14 debug = true
15 15 pdebug = false
16 16
17 17 ################################################################################
18 18 ## Email settings ##
19 19 ## ##
20 20 ## Refer to the documentation ("Email settings") for more details. ##
21 21 ## ##
22 22 ## It is recommended to use a valid sender address that passes access ##
23 23 ## validation and spam filtering in mail servers. ##
24 24 ################################################################################
25 25
26 26 ## 'From' header for application emails. You can optionally add a name.
27 27 ## Default:
28 28 #app_email_from = Kallithea
29 29 ## Examples:
30 30 #app_email_from = Kallithea <kallithea-noreply@example.com>
31 31 #app_email_from = kallithea-noreply@example.com
32 32
33 33 ## Subject prefix for application emails.
34 34 ## A space between this prefix and the real subject is automatically added.
35 35 ## Default:
36 36 #email_prefix =
37 37 ## Example:
38 38 #email_prefix = [Kallithea]
39 39
40 40 ## Recipients for error emails and fallback recipients of application mails.
41 41 ## Multiple addresses can be specified, space-separated.
42 42 ## Only addresses are allowed, do not add any name part.
43 43 ## Default:
44 44 #email_to =
45 45 ## Examples:
46 46 #email_to = admin@example.com
47 47 #email_to = admin@example.com another_admin@example.com
48 48
49 49 ## 'From' header for error emails. You can optionally add a name.
50 50 ## Default:
51 51 #error_email_from = pylons@yourapp.com
52 52 ## Examples:
53 53 #error_email_from = Kallithea Errors <kallithea-noreply@example.com>
54 54 #error_email_from = paste_error@example.com
55 55
56 56 ## SMTP server settings
57 57 ## Only smtp_server is mandatory. All other settings take the specified default
58 58 ## values.
59 59 #smtp_server = smtp.example.com
60 60 #smtp_username =
61 61 #smtp_password =
62 62 #smtp_port = 25
63 63 #smtp_use_tls = false
64 64 #smtp_use_ssl = false
65 65 ## SMTP authentication parameters to use (e.g. LOGIN PLAIN CRAM-MD5, etc.).
66 66 ## If empty, use any of the authentication parameters supported by the server.
67 67 #smtp_auth =
68 68
69 69 [server:main]
70 70 ## PASTE ##
71 71 #use = egg:Paste#http
72 72 ## nr of worker threads to spawn
73 73 #threadpool_workers = 5
74 74 ## max request before thread respawn
75 75 #threadpool_max_requests = 10
76 76 ## option to use threads of process
77 77 #use_threadpool = true
78 78
79 79 ## WAITRESS ##
80 80 use = egg:waitress#main
81 81 ## number of worker threads
82 82 threads = 5
83 83 ## MAX BODY SIZE 100GB
84 84 max_request_body_size = 107374182400
85 85 ## use poll instead of select, fixes fd limits, may not work on old
86 86 ## windows systems.
87 87 #asyncore_use_poll = True
88 88
89 89 ## GUNICORN ##
90 90 #use = egg:gunicorn#main
91 91 ## number of process workers. You must set `instance_id = *` when this option
92 92 ## is set to more than one worker
93 93 #workers = 1
94 94 ## process name
95 95 #proc_name = kallithea
96 96 ## type of worker class, one of sync, eventlet, gevent, tornado
97 97 ## recommended for bigger setup is using of of other than sync one
98 98 #worker_class = sync
99 99 #max_requests = 1000
100 100 ## ammount of time a worker can handle request before it gets killed and
101 101 ## restarted
102 102 #timeout = 3600
103 103
104 104 ## UWSGI ##
105 105 ## run with uwsgi --ini-paste-logged <inifile.ini>
106 106 #[uwsgi]
107 107 #socket = /tmp/uwsgi.sock
108 108 #master = true
109 109 #http = 127.0.0.1:5000
110 110
111 111 ## set as deamon and redirect all output to file
112 112 #daemonize = ./uwsgi_kallithea.log
113 113
114 114 ## master process PID
115 115 #pidfile = ./uwsgi_kallithea.pid
116 116
117 117 ## stats server with workers statistics, use uwsgitop
118 118 ## for monitoring, `uwsgitop 127.0.0.1:1717`
119 119 #stats = 127.0.0.1:1717
120 120 #memory-report = true
121 121
122 122 ## log 5XX errors
123 123 #log-5xx = true
124 124
125 125 ## Set the socket listen queue size.
126 126 #listen = 256
127 127
128 128 ## Gracefully Reload workers after the specified amount of managed requests
129 129 ## (avoid memory leaks).
130 130 #max-requests = 1000
131 131
132 132 ## enable large buffers
133 133 #buffer-size = 65535
134 134
135 135 ## socket and http timeouts ##
136 136 #http-timeout = 3600
137 137 #socket-timeout = 3600
138 138
139 139 ## Log requests slower than the specified number of milliseconds.
140 140 #log-slow = 10
141 141
142 142 ## Exit if no app can be loaded.
143 143 #need-app = true
144 144
145 145 ## Set lazy mode (load apps in workers instead of master).
146 146 #lazy = true
147 147
148 148 ## scaling ##
149 149 ## set cheaper algorithm to use, if not set default will be used
150 150 #cheaper-algo = spare
151 151
152 152 ## minimum number of workers to keep at all times
153 153 #cheaper = 1
154 154
155 155 ## number of workers to spawn at startup
156 156 #cheaper-initial = 1
157 157
158 158 ## maximum number of workers that can be spawned
159 159 #workers = 4
160 160
161 161 ## how many workers should be spawned at a time
162 162 #cheaper-step = 1
163 163
164 164 ## COMMON ##
165 165 host = 127.0.0.1
166 166 port = 4999
167 167
168 168 ## middleware for hosting the WSGI application under a URL prefix
169 169 #[filter:proxy-prefix]
170 170 #use = egg:PasteDeploy#prefix
171 171 #prefix = /<your-prefix>
172 172
173 173 [app:main]
174 174 use = egg:kallithea
175 175 ## enable proxy prefix middleware
176 176 #filter-with = proxy-prefix
177 177
178 178 full_stack = true
179 179 static_files = true
180 180 ## Available Languages:
181 181 ## cs de fr hu ja nl_BE pl pt_BR ru sk zh_CN zh_TW
182 182 lang =
183 183 cache_dir = %(here)s/data
184 184 index_dir = %(here)s/data/index
185 185
186 186 ## perform a full repository scan on each server start, this should be
187 187 ## set to false after first startup, to allow faster server restarts.
188 188 #initial_repo_scan = false
189 189 initial_repo_scan = true
190 190
191 191 ## uncomment and set this path to use archive download cache
192 192 archive_cache_dir = %(here)s/tarballcache
193 193
194 194 ## change this to unique ID for security
195 195 app_instance_uuid = test
196 196
197 197 ## cut off limit for large diffs (size in bytes)
198 198 cut_off_limit = 256000
199 199
200 200 ## use cache version of scm repo everywhere
201 201 #vcs_full_cache = true
202 202 vcs_full_cache = false
203 203
204 204 ## force https in Kallithea, fixes https redirects, assumes it's always https
205 205 force_https = false
206 206
207 207 ## use Strict-Transport-Security headers
208 208 use_htsts = false
209 209
210 210 ## number of commits stats will parse on each iteration
211 211 commit_parse_limit = 25
212 212
213 213 ## path to git executable
214 214 git_path = git
215 215
216 216 ## git rev filter option, --all is the default filter, if you need to
217 217 ## hide all refs in changelog switch this to --branches --tags
218 218 #git_rev_filter = --branches --tags
219 219
220 220 ## RSS feed options
221 221 rss_cut_off_limit = 256000
222 222 rss_items_per_page = 10
223 223 rss_include_diff = false
224 224
225 225 ## options for showing and identifying changesets
226 226 show_sha_length = 12
227 227 show_revision_number = true
228 228
229 229 ## gist URL alias, used to create nicer urls for gist. This should be an
230 230 ## url that does rewrites to _admin/gists/<gistid>.
231 231 ## example: http://gist.example.com/{gistid}. Empty means use the internal
232 232 ## Kallithea url, ie. http[s]://kallithea.example.com/_admin/gists/<gistid>
233 233 gist_alias_url =
234 234
235 235 ## white list of API enabled controllers. This allows to add list of
236 236 ## controllers to which access will be enabled by api_key. eg: to enable
237 237 ## api access to raw_files put `FilesController:raw`, to enable access to patches
238 238 ## add `ChangesetController:changeset_patch`. This list should be "," separated
239 239 ## Syntax is <ControllerClass>:<function>. Check debug logs for generated names
240 240 ## Recommended settings below are commented out:
241 241 api_access_controllers_whitelist =
242 242 # ChangesetController:changeset_patch,
243 243 # ChangesetController:changeset_raw,
244 244 # FilesController:raw,
245 245 # FilesController:archivefile
246 246
247 247 ## default encoding used to convert from and to unicode
248 248 ## can be also a comma seperated list of encoding in case of mixed encodings
249 249 default_encoding = utf8
250 250
251 251 ## issue tracker for Kallithea (leave blank to disable, absent for default)
252 252 #bugtracker = https://bitbucket.org/conservancy/kallithea/issues
253 253
254 254 ## issue tracking mapping for commits messages
255 255 ## comment out issue_pat, issue_server, issue_prefix to enable
256 256
257 257 ## pattern to get the issues from commit messages
258 258 ## default one used here is #<numbers> with a regex passive group for `#`
259 259 ## {id} will be all groups matched from this pattern
260 260
261 261 issue_pat = (?:\s*#)(\d+)
262 262
263 263 ## server url to the issue, each {id} will be replaced with match
264 264 ## fetched from the regex and {repo} is replaced with full repository name
265 265 ## including groups {repo_name} is replaced with just name of repo
266 266
267 267 issue_server_link = https://issues.example.com/{repo}/issue/{id}
268 268
269 269 ## prefix to add to link to indicate it's an url
270 270 ## #314 will be replaced by <issue_prefix><id>
271 271
272 272 issue_prefix = #
273 273
274 274 ## issue_pat, issue_server_link, issue_prefix can have suffixes to specify
275 275 ## multiple patterns, to other issues server, wiki or others
276 276 ## below an example how to create a wiki pattern
277 277 # wiki-some-id -> https://wiki.example.com/some-id
278 278
279 279 #issue_pat_wiki = (?:wiki-)(.+)
280 280 #issue_server_link_wiki = https://wiki.example.com/{id}
281 281 #issue_prefix_wiki = WIKI-
282 282
283 283 ## instance-id prefix
284 284 ## a prefix key for this instance used for cache invalidation when running
285 285 ## multiple instances of kallithea, make sure it's globally unique for
286 286 ## all running kallithea instances. Leave empty if you don't use it
287 287 instance_id =
288 288
289 289 ## alternative return HTTP header for failed authentication. Default HTTP
290 290 ## response is 401 HTTPUnauthorized. Currently Mercurial clients have trouble with
291 291 ## handling that. Set this variable to 403 to return HTTPForbidden
292 292 auth_ret_code =
293 293
294 294 ## locking return code. When repository is locked return this HTTP code. 2XX
295 295 ## codes don't break the transactions while 4XX codes do
296 296 lock_ret_code = 423
297 297
298 298 ## allows to change the repository location in settings page
299 299 allow_repo_location_change = True
300 300
301 301 ## allows to setup custom hooks in settings page
302 302 allow_custom_hooks_settings = True
303 303
304 304 ####################################
305 305 ### CELERY CONFIG ####
306 306 ####################################
307 307
308 308 use_celery = false
309 309 broker.host = localhost
310 310 broker.vhost = rabbitmqhost
311 311 broker.port = 5672
312 312 broker.user = rabbitmq
313 313 broker.password = qweqwe
314 314
315 315 celery.imports = kallithea.lib.celerylib.tasks
316 316
317 317 celery.result.backend = amqp
318 318 celery.result.dburi = amqp://
319 319 celery.result.serialier = json
320 320
321 321 #celery.send.task.error.emails = true
322 322 #celery.amqp.task.result.expires = 18000
323 323
324 324 celeryd.concurrency = 2
325 325 #celeryd.log.file = celeryd.log
326 326 celeryd.log.level = DEBUG
327 327 celeryd.max.tasks.per.child = 1
328 328
329 329 ## tasks will never be sent to the queue, but executed locally instead.
330 330 celery.always.eager = false
331 331
332 332 ####################################
333 333 ### BEAKER CACHE ####
334 334 ####################################
335 335
336 336 beaker.cache.data_dir = %(here)s/data/cache/data
337 337 beaker.cache.lock_dir = %(here)s/data/cache/lock
338 338
339 339 beaker.cache.regions = short_term,long_term,sql_cache_short
340 340
341 341 beaker.cache.short_term.type = memory
342 342 beaker.cache.short_term.expire = 60
343 343 beaker.cache.short_term.key_length = 256
344 344
345 345 beaker.cache.long_term.type = memory
346 346 beaker.cache.long_term.expire = 36000
347 347 beaker.cache.long_term.key_length = 256
348 348
349 349 beaker.cache.sql_cache_short.type = memory
350 350 beaker.cache.sql_cache_short.expire = 1
351 351 beaker.cache.sql_cache_short.key_length = 256
352 352
353 353 ####################################
354 354 ### BEAKER SESSION ####
355 355 ####################################
356 356
357 357 ## Name of session cookie. Should be unique for a given host and path, even when running
358 358 ## on different ports. Otherwise, cookie sessions will be shared and messed up.
359 359 beaker.session.key = kallithea
360 360 ## Sessions should always only be accessible by the browser, not directly by JavaScript.
361 361 beaker.session.httponly = true
362 362 ## Session lifetime. 2592000 seconds is 30 days.
363 363 beaker.session.timeout = 2592000
364 364
365 365 ## Server secret used with HMAC to ensure integrity of cookies.
366 366 beaker.session.secret = {74e0cd75-b339-478b-b129-07dd221def1f}
367 367 ## Further, encrypt the data with AES.
368 368 #beaker.session.encrypt_key = <key_for_encryption>
369 369 #beaker.session.validate_key = <validation_key>
370 370
371 371 ## Type of storage used for the session, current types are
372 372 ## dbm, file, memcached, database, and memory.
373 373
374 374 ## File system storage of session data. (default)
375 375 #beaker.session.type = file
376 376
377 377 ## Cookie only, store all session data inside the cookie. Requires secure secrets.
378 378 #beaker.session.type = cookie
379 379
380 380 ## Database storage of session data.
381 381 #beaker.session.type = ext:database
382 382 #beaker.session.sa.url = postgresql://postgres:qwe@localhost/kallithea
383 383 #beaker.session.table_name = db_session
384 384
385 385 ############################
386 386 ## ERROR HANDLING SYSTEMS ##
387 387 ############################
388 388
389 389 ####################
390 ### [errormator] ###
390 ### [appenlight] ###
391 391 ####################
392 392
393 ## Errormator is tailored to work with Kallithea, see
394 ## http://errormator.com for details how to obtain an account
395 ## you must install python package `errormator_client` to make it work
393 ## AppEnlight is tailored to work with Kallithea, see
394 ## http://appenlight.com for details how to obtain an account
395 ## you must install python package `appenlight_client` to make it work
396 396
397 ## errormator enabled
398 errormator = false
397 ## appenlight enabled
398 appenlight = false
399 399
400 errormator.server_url = https://api.errormator.com
401 errormator.api_key = YOUR_API_KEY
400 appenlight.server_url = https://api.appenlight.com
401 appenlight.api_key = YOUR_API_KEY
402 402
403 403 ## TWEAK AMOUNT OF INFO SENT HERE
404 404
405 405 ## enables 404 error logging (default False)
406 errormator.report_404 = false
406 appenlight.report_404 = false
407 407
408 408 ## time in seconds after request is considered being slow (default 1)
409 errormator.slow_request_time = 1
409 appenlight.slow_request_time = 1
410 410
411 411 ## record slow requests in application
412 412 ## (needs to be enabled for slow datastore recording and time tracking)
413 errormator.slow_requests = true
413 appenlight.slow_requests = true
414 414
415 415 ## enable hooking to application loggers
416 #errormator.logging = true
416 #appenlight.logging = true
417 417
418 418 ## minimum log level for log capture
419 #errormator.logging.level = WARNING
419 #appenlight.logging.level = WARNING
420 420
421 421 ## send logs only from erroneous/slow requests
422 422 ## (saves API quota for intensive logging)
423 errormator.logging_on_error = false
423 appenlight.logging_on_error = false
424 424
425 425 ## list of additonal keywords that should be grabbed from environ object
426 426 ## can be string with comma separated list of words in lowercase
427 427 ## (by default client will always send following info:
428 428 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
429 429 ## start with HTTP* this list be extended with additional keywords here
430 errormator.environ_keys_whitelist =
430 appenlight.environ_keys_whitelist =
431 431
432 432 ## list of keywords that should be blanked from request object
433 433 ## can be string with comma separated list of words in lowercase
434 434 ## (by default client will always blank keys that contain following words
435 435 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
436 436 ## this list be extended with additional keywords set here
437 errormator.request_keys_blacklist =
437 appenlight.request_keys_blacklist =
438 438
439 439 ## list of namespaces that should be ignores when gathering log entries
440 440 ## can be string with comma separated list of namespaces
441 ## (by default the client ignores own entries: errormator_client.client)
442 errormator.log_namespace_blacklist =
441 ## (by default the client ignores own entries: appenlight_client.client)
442 appenlight.log_namespace_blacklist =
443 443
444 444 ################
445 445 ### [sentry] ###
446 446 ################
447 447
448 448 ## sentry is a alternative open source error aggregator
449 449 ## you must install python packages `sentry` and `raven` to enable
450 450
451 451 sentry.dsn = YOUR_DNS
452 452 sentry.servers =
453 453 sentry.name =
454 454 sentry.key =
455 455 sentry.public_key =
456 456 sentry.secret_key =
457 457 sentry.project =
458 458 sentry.site =
459 459 sentry.include_paths =
460 460 sentry.exclude_paths =
461 461
462 462 ################################################################################
463 463 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
464 464 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
465 465 ## execute malicious code after an exception is raised. ##
466 466 ################################################################################
467 467 set debug = false
468 468
469 469 ##################################
470 470 ### LOGVIEW CONFIG ###
471 471 ##################################
472 472
473 473 logview.sqlalchemy = #faa
474 474 logview.pylons.templating = #bfb
475 475 logview.pylons.util = #eee
476 476
477 477 #########################################################
478 478 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
479 479 #########################################################
480 480
481 481 # SQLITE [default]
482 482 #sqlalchemy.db1.url = sqlite:///%(here)s/kallithea.db?timeout=60
483 483 sqlalchemy.db1.url = sqlite:///%(here)s/kallithea_test.sqlite
484 484
485 485 # POSTGRESQL
486 486 #sqlalchemy.db1.url = postgresql://user:pass@localhost/kallithea
487 487
488 488 # MySQL
489 489 #sqlalchemy.db1.url = mysql://user:pass@localhost/kallithea
490 490
491 491 # see sqlalchemy docs for others
492 492
493 493 sqlalchemy.db1.echo = false
494 494 sqlalchemy.db1.pool_recycle = 3600
495 495 sqlalchemy.db1.convert_unicode = true
496 496
497 497 ################################
498 498 ### LOGGING CONFIGURATION ####
499 499 ################################
500 500
501 501 [loggers]
502 502 keys = root, routes, kallithea, sqlalchemy, beaker, templates, whoosh_indexer
503 503
504 504 [handlers]
505 505 keys = console, console_sql
506 506
507 507 [formatters]
508 508 keys = generic, color_formatter, color_formatter_sql
509 509
510 510 #############
511 511 ## LOGGERS ##
512 512 #############
513 513
514 514 [logger_root]
515 515 #level = NOTSET
516 516 level = DEBUG
517 517 handlers = console
518 518
519 519 [logger_routes]
520 520 level = DEBUG
521 521 handlers =
522 522 qualname = routes.middleware
523 523 ## "level = DEBUG" logs the route matched and routing variables.
524 524 propagate = 1
525 525
526 526 [logger_beaker]
527 527 level = DEBUG
528 528 handlers =
529 529 qualname = beaker.container
530 530 propagate = 1
531 531
532 532 [logger_templates]
533 533 level = INFO
534 534 handlers =
535 535 qualname = pylons.templating
536 536 propagate = 1
537 537
538 538 [logger_kallithea]
539 539 level = DEBUG
540 540 handlers =
541 541 qualname = kallithea
542 542 propagate = 1
543 543
544 544 [logger_sqlalchemy]
545 545 #level = INFO
546 546 #handlers = console_sql
547 547 level = ERROR
548 548 handlers = console
549 549 qualname = sqlalchemy.engine
550 550 propagate = 0
551 551
552 552 [logger_whoosh_indexer]
553 553 level = DEBUG
554 554 handlers =
555 555 qualname = whoosh_indexer
556 556 propagate = 1
557 557
558 558 ##############
559 559 ## HANDLERS ##
560 560 ##############
561 561
562 562 [handler_console]
563 563 class = StreamHandler
564 564 args = (sys.stderr,)
565 565 #level = INFO
566 566 level = NOTSET
567 567 formatter = generic
568 568
569 569 [handler_console_sql]
570 570 class = StreamHandler
571 571 args = (sys.stderr,)
572 572 level = WARN
573 573 formatter = generic
574 574
575 575 ################
576 576 ## FORMATTERS ##
577 577 ################
578 578
579 579 [formatter_generic]
580 580 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
581 581 datefmt = %Y-%m-%d %H:%M:%S
582 582
583 583 [formatter_color_formatter]
584 584 class = kallithea.lib.colored_formatter.ColorFormatter
585 585 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
586 586 datefmt = %Y-%m-%d %H:%M:%S
587 587
588 588 [formatter_color_formatter_sql]
589 589 class = kallithea.lib.colored_formatter.ColorFormatterSql
590 590 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
591 591 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,952 +1,952 b''
1 1
2 2 Apache-License-2.0.txt
3 3 CONTRIBUTORS
4 4 COPYING
5 5 Kallithea.egg-info/
6 6 Kallithea.egg-info/PKG-INFO
7 7 Kallithea.egg-info/SOURCES.txt
8 8 Kallithea.egg-info/dependency_links.txt
9 9 Kallithea.egg-info/entry_points.txt
10 10 Kallithea.egg-info/not-zip-safe
11 11 Kallithea.egg-info/paster_plugins.txt
12 12 Kallithea.egg-info/requires.txt
13 13 Kallithea.egg-info/top_level.txt
14 14 LICENSE-MERGELY.html
15 15 LICENSE.md
16 16 MANIFEST.in
17 17 MIT-Permissive-License.txt
18 18 PKG-INFO
19 19 README.rst
20 20 development.ini
21 21 docs/
22 22 docs/Makefile
23 23 docs/api/
24 24 docs/api/api.rst
25 25 docs/api/models.rst
26 26 docs/changelog.rst
27 27 docs/conf.py
28 28 docs/contributing.rst
29 29 docs/images/
30 30 docs/images/.img
31 31 docs/index.rst
32 32 docs/installation.rst
33 33 docs/installation_iis.rst
34 34 docs/installation_puppet.rst
35 35 docs/installation_win.rst
36 36 docs/installation_win_old.rst
37 37 docs/make.bat
38 38 docs/overview.rst
39 39 docs/readme.rst
40 40 docs/setup.rst
41 41 docs/theme/
42 42 docs/theme/nature/
43 43 docs/theme/nature/layout.html
44 44 docs/theme/nature/static/
45 45 docs/theme/nature/static/kallithea-logo.svg
46 46 docs/theme/nature/static/nature.css_t
47 47 docs/theme/nature/static/pygments.css
48 48 docs/theme/nature/theme.conf
49 49 docs/usage/
50 50 docs/usage/backup.rst
51 51 docs/usage/debugging.rst
52 52 docs/usage/email.rst
53 53 docs/usage/general.rst
54 54 docs/usage/locking.rst
55 55 docs/usage/performance.rst
56 56 docs/usage/statistics.rst
57 57 docs/usage/troubleshooting.rst
58 58 docs/usage/vcs_support.rst
59 59 init.d/
60 60 init.d/celeryd-upstart.conf
61 61 init.d/kallithea-daemon-arch
62 62 init.d/kallithea-daemon-debian
63 63 init.d/kallithea-daemon-gentoo
64 64 init.d/kallithea-daemon-redhat
65 65 init.d/kallithea-upstart.conf
66 66 init.d/supervisord.conf
67 67 kallithea/
68 68 kallithea/__init__.py
69 69 kallithea/bin/
70 70 kallithea/bin/__init__.py
71 71 kallithea/bin/base.py
72 72 kallithea/bin/kallithea_api.py
73 73 kallithea/bin/kallithea_backup.py
74 74 kallithea/bin/kallithea_config.py
75 75 kallithea/bin/kallithea_gist.py
76 76 kallithea/bin/ldap_sync.conf
77 77 kallithea/bin/ldap_sync.py
78 78 kallithea/bin/rebranddb.py
79 79 kallithea/bin/template.ini.mako
80 80 kallithea/config/
81 81 kallithea/config/__init__.py
82 82 kallithea/config/conf.py
83 83 kallithea/config/deployment.ini_tmpl
84 84 kallithea/config/environment.py
85 85 kallithea/config/middleware.py
86 86 kallithea/config/post_receive_tmpl.py
87 87 kallithea/config/pre_receive_tmpl.py
88 88 kallithea/config/rcextensions/
89 89 kallithea/config/rcextensions/__init__.py
90 90 kallithea/config/routing.py
91 91 kallithea/controllers/
92 92 kallithea/controllers/__init__.py
93 93 kallithea/controllers/admin/
94 94 kallithea/controllers/admin/__init__.py
95 95 kallithea/controllers/admin/admin.py
96 96 kallithea/controllers/admin/auth_settings.py
97 97 kallithea/controllers/admin/defaults.py
98 98 kallithea/controllers/admin/gists.py
99 99 kallithea/controllers/admin/my_account.py
100 100 kallithea/controllers/admin/notifications.py
101 101 kallithea/controllers/admin/permissions.py
102 102 kallithea/controllers/admin/repo_groups.py
103 103 kallithea/controllers/admin/repos.py
104 104 kallithea/controllers/admin/settings.py
105 105 kallithea/controllers/admin/user_groups.py
106 106 kallithea/controllers/admin/users.py
107 107 kallithea/controllers/api/
108 108 kallithea/controllers/api/__init__.py
109 109 kallithea/controllers/api/api.py
110 110 kallithea/controllers/bookmarks.py
111 111 kallithea/controllers/branches.py
112 112 kallithea/controllers/changelog.py
113 113 kallithea/controllers/changeset.py
114 114 kallithea/controllers/compare.py
115 115 kallithea/controllers/error.py
116 116 kallithea/controllers/feed.py
117 117 kallithea/controllers/files.py
118 118 kallithea/controllers/followers.py
119 119 kallithea/controllers/forks.py
120 120 kallithea/controllers/home.py
121 121 kallithea/controllers/journal.py
122 122 kallithea/controllers/login.py
123 123 kallithea/controllers/pullrequests.py
124 124 kallithea/controllers/search.py
125 125 kallithea/controllers/summary.py
126 126 kallithea/controllers/tags.py
127 127 kallithea/i18n/
128 128 kallithea/i18n/be/
129 129 kallithea/i18n/be/LC_MESSAGES/
130 130 kallithea/i18n/be/LC_MESSAGES/kallithea.mo
131 131 kallithea/i18n/be/LC_MESSAGES/kallithea.po
132 132 kallithea/i18n/cs/
133 133 kallithea/i18n/cs/LC_MESSAGES/
134 134 kallithea/i18n/cs/LC_MESSAGES/kallithea.mo
135 135 kallithea/i18n/cs/LC_MESSAGES/kallithea.po
136 136 kallithea/i18n/de/
137 137 kallithea/i18n/de/LC_MESSAGES/
138 138 kallithea/i18n/de/LC_MESSAGES/kallithea.mo
139 139 kallithea/i18n/de/LC_MESSAGES/kallithea.po
140 140 kallithea/i18n/en/
141 141 kallithea/i18n/en/LC_MESSAGES/
142 142 kallithea/i18n/en/LC_MESSAGES/kallithea.mo
143 143 kallithea/i18n/fr/
144 144 kallithea/i18n/fr/LC_MESSAGES/
145 145 kallithea/i18n/fr/LC_MESSAGES/kallithea.mo
146 146 kallithea/i18n/fr/LC_MESSAGES/kallithea.po
147 147 kallithea/i18n/how_to
148 148 kallithea/i18n/hu/
149 149 kallithea/i18n/hu/LC_MESSAGES/
150 150 kallithea/i18n/hu/LC_MESSAGES/kallithea.mo
151 151 kallithea/i18n/hu/LC_MESSAGES/kallithea.po
152 152 kallithea/i18n/ja/
153 153 kallithea/i18n/ja/LC_MESSAGES/
154 154 kallithea/i18n/ja/LC_MESSAGES/kallithea.mo
155 155 kallithea/i18n/ja/LC_MESSAGES/kallithea.po
156 156 kallithea/i18n/kallithea.pot
157 157 kallithea/i18n/nl_BE/
158 158 kallithea/i18n/nl_BE/LC_MESSAGES/
159 159 kallithea/i18n/nl_BE/LC_MESSAGES/kallithea.mo
160 160 kallithea/i18n/nl_BE/LC_MESSAGES/kallithea.po
161 161 kallithea/i18n/pl/
162 162 kallithea/i18n/pl/LC_MESSAGES/
163 163 kallithea/i18n/pl/LC_MESSAGES/kallithea.mo
164 164 kallithea/i18n/pl/LC_MESSAGES/kallithea.po
165 165 kallithea/i18n/pt_BR/
166 166 kallithea/i18n/pt_BR/LC_MESSAGES/
167 167 kallithea/i18n/pt_BR/LC_MESSAGES/kallithea.mo
168 168 kallithea/i18n/pt_BR/LC_MESSAGES/kallithea.po
169 169 kallithea/i18n/ru/
170 170 kallithea/i18n/ru/LC_MESSAGES/
171 171 kallithea/i18n/ru/LC_MESSAGES/kallithea.mo
172 172 kallithea/i18n/ru/LC_MESSAGES/kallithea.po
173 173 kallithea/i18n/sk/
174 174 kallithea/i18n/sk/LC_MESSAGES/
175 175 kallithea/i18n/sk/LC_MESSAGES/kallithea.mo
176 176 kallithea/i18n/sk/LC_MESSAGES/kallithea.po
177 177 kallithea/i18n/zh_CN/
178 178 kallithea/i18n/zh_CN/LC_MESSAGES/
179 179 kallithea/i18n/zh_CN/LC_MESSAGES/kallithea.mo
180 180 kallithea/i18n/zh_CN/LC_MESSAGES/kallithea.po
181 181 kallithea/i18n/zh_TW/
182 182 kallithea/i18n/zh_TW/LC_MESSAGES/
183 183 kallithea/i18n/zh_TW/LC_MESSAGES/kallithea.mo
184 184 kallithea/i18n/zh_TW/LC_MESSAGES/kallithea.po
185 185 kallithea/lib/
186 186 kallithea/lib/__init__.py
187 187 kallithea/lib/annotate.py
188 188 kallithea/lib/app_globals.py
189 189 kallithea/lib/auth.py
190 190 kallithea/lib/auth_modules/
191 191 kallithea/lib/auth_modules/__init__.py
192 192 kallithea/lib/auth_modules/auth_container.py
193 193 kallithea/lib/auth_modules/auth_crowd.py
194 194 kallithea/lib/auth_modules/auth_internal.py
195 195 kallithea/lib/auth_modules/auth_ldap.py
196 196 kallithea/lib/auth_modules/auth_pam.py
197 197 kallithea/lib/base.py
198 198 kallithea/lib/caching_query.py
199 199 kallithea/lib/celerylib/
200 200 kallithea/lib/celerylib/__init__.py
201 201 kallithea/lib/celerylib/tasks.py
202 202 kallithea/lib/celerypylons/
203 203 kallithea/lib/celerypylons/__init__.py
204 204 kallithea/lib/celerypylons/commands.py
205 205 kallithea/lib/celerypylons/loader.py
206 206 kallithea/lib/colored_formatter.py
207 207 kallithea/lib/compat.py
208 208 kallithea/lib/db_manage.py
209 209 kallithea/lib/dbmigrate/
210 210 kallithea/lib/dbmigrate/__init__.py
211 211 kallithea/lib/dbmigrate/migrate.cfg
212 212 kallithea/lib/dbmigrate/migrate/
213 213 kallithea/lib/dbmigrate/migrate/__init__.py
214 214 kallithea/lib/dbmigrate/migrate/changeset/
215 215 kallithea/lib/dbmigrate/migrate/changeset/__init__.py
216 216 kallithea/lib/dbmigrate/migrate/changeset/ansisql.py
217 217 kallithea/lib/dbmigrate/migrate/changeset/constraint.py
218 218 kallithea/lib/dbmigrate/migrate/changeset/databases/
219 219 kallithea/lib/dbmigrate/migrate/changeset/databases/__init__.py
220 220 kallithea/lib/dbmigrate/migrate/changeset/databases/firebird.py
221 221 kallithea/lib/dbmigrate/migrate/changeset/databases/mysql.py
222 222 kallithea/lib/dbmigrate/migrate/changeset/databases/oracle.py
223 223 kallithea/lib/dbmigrate/migrate/changeset/databases/postgres.py
224 224 kallithea/lib/dbmigrate/migrate/changeset/databases/sqlite.py
225 225 kallithea/lib/dbmigrate/migrate/changeset/databases/visitor.py
226 226 kallithea/lib/dbmigrate/migrate/changeset/schema.py
227 227 kallithea/lib/dbmigrate/migrate/exceptions.py
228 228 kallithea/lib/dbmigrate/migrate/versioning/
229 229 kallithea/lib/dbmigrate/migrate/versioning/__init__.py
230 230 kallithea/lib/dbmigrate/migrate/versioning/api.py
231 231 kallithea/lib/dbmigrate/migrate/versioning/cfgparse.py
232 232 kallithea/lib/dbmigrate/migrate/versioning/config.py
233 233 kallithea/lib/dbmigrate/migrate/versioning/genmodel.py
234 234 kallithea/lib/dbmigrate/migrate/versioning/migrate_repository.py
235 235 kallithea/lib/dbmigrate/migrate/versioning/pathed.py
236 236 kallithea/lib/dbmigrate/migrate/versioning/repository.py
237 237 kallithea/lib/dbmigrate/migrate/versioning/schema.py
238 238 kallithea/lib/dbmigrate/migrate/versioning/schemadiff.py
239 239 kallithea/lib/dbmigrate/migrate/versioning/script/
240 240 kallithea/lib/dbmigrate/migrate/versioning/script/__init__.py
241 241 kallithea/lib/dbmigrate/migrate/versioning/script/base.py
242 242 kallithea/lib/dbmigrate/migrate/versioning/script/py.py
243 243 kallithea/lib/dbmigrate/migrate/versioning/script/sql.py
244 244 kallithea/lib/dbmigrate/migrate/versioning/shell.py
245 245 kallithea/lib/dbmigrate/migrate/versioning/template.py
246 246 kallithea/lib/dbmigrate/migrate/versioning/templates/
247 247 kallithea/lib/dbmigrate/migrate/versioning/templates/__init__.py
248 248 kallithea/lib/dbmigrate/migrate/versioning/templates/manage.py_tmpl
249 249 kallithea/lib/dbmigrate/migrate/versioning/templates/manage/
250 250 kallithea/lib/dbmigrate/migrate/versioning/templates/manage/default.py_tmpl
251 251 kallithea/lib/dbmigrate/migrate/versioning/templates/manage/pylons.py_tmpl
252 252 kallithea/lib/dbmigrate/migrate/versioning/templates/repository/
253 253 kallithea/lib/dbmigrate/migrate/versioning/templates/repository/__init__.py
254 254 kallithea/lib/dbmigrate/migrate/versioning/templates/repository/default/
255 255 kallithea/lib/dbmigrate/migrate/versioning/templates/repository/default/README
256 256 kallithea/lib/dbmigrate/migrate/versioning/templates/repository/default/__init__.py
257 257 kallithea/lib/dbmigrate/migrate/versioning/templates/repository/default/migrate.cfg
258 258 kallithea/lib/dbmigrate/migrate/versioning/templates/repository/default/versions/
259 259 kallithea/lib/dbmigrate/migrate/versioning/templates/repository/default/versions/__init__.py
260 260 kallithea/lib/dbmigrate/migrate/versioning/templates/repository/pylons/
261 261 kallithea/lib/dbmigrate/migrate/versioning/templates/repository/pylons/README
262 262 kallithea/lib/dbmigrate/migrate/versioning/templates/repository/pylons/__init__.py
263 263 kallithea/lib/dbmigrate/migrate/versioning/templates/repository/pylons/migrate.cfg
264 264 kallithea/lib/dbmigrate/migrate/versioning/templates/repository/pylons/versions/
265 265 kallithea/lib/dbmigrate/migrate/versioning/templates/repository/pylons/versions/__init__.py
266 266 kallithea/lib/dbmigrate/migrate/versioning/templates/script/
267 267 kallithea/lib/dbmigrate/migrate/versioning/templates/script/__init__.py
268 268 kallithea/lib/dbmigrate/migrate/versioning/templates/script/default.py_tmpl
269 269 kallithea/lib/dbmigrate/migrate/versioning/templates/script/pylons.py_tmpl
270 270 kallithea/lib/dbmigrate/migrate/versioning/templates/sql_script/
271 271 kallithea/lib/dbmigrate/migrate/versioning/templates/sql_script/default.py_tmpl
272 272 kallithea/lib/dbmigrate/migrate/versioning/templates/sql_script/pylons.py_tmpl
273 273 kallithea/lib/dbmigrate/migrate/versioning/util/
274 274 kallithea/lib/dbmigrate/migrate/versioning/util/__init__.py
275 275 kallithea/lib/dbmigrate/migrate/versioning/util/importpath.py
276 276 kallithea/lib/dbmigrate/migrate/versioning/util/keyedinstance.py
277 277 kallithea/lib/dbmigrate/migrate/versioning/version.py
278 278 kallithea/lib/dbmigrate/schema/
279 279 kallithea/lib/dbmigrate/schema/__init__.py
280 280 kallithea/lib/dbmigrate/schema/db_1_1_0.py
281 281 kallithea/lib/dbmigrate/schema/db_1_2_0.py
282 282 kallithea/lib/dbmigrate/schema/db_1_3_0.py
283 283 kallithea/lib/dbmigrate/schema/db_1_4_0.py
284 284 kallithea/lib/dbmigrate/schema/db_1_5_0.py
285 285 kallithea/lib/dbmigrate/schema/db_1_5_2.py
286 286 kallithea/lib/dbmigrate/schema/db_1_6_0.py
287 287 kallithea/lib/dbmigrate/schema/db_1_7_0.py
288 288 kallithea/lib/dbmigrate/schema/db_1_8_0.py
289 289 kallithea/lib/dbmigrate/schema/db_2_0_0.py
290 290 kallithea/lib/dbmigrate/schema/db_2_0_1.py
291 291 kallithea/lib/dbmigrate/schema/db_2_0_2.py
292 292 kallithea/lib/dbmigrate/schema/db_2_1_0.py
293 293 kallithea/lib/dbmigrate/schema/db_2_2_0.py
294 294 kallithea/lib/dbmigrate/schema/db_2_2_3.py
295 295 kallithea/lib/dbmigrate/versions/
296 296 kallithea/lib/dbmigrate/versions/001_initial_release.py
297 297 kallithea/lib/dbmigrate/versions/002_version_1_1_0.py
298 298 kallithea/lib/dbmigrate/versions/003_version_1_2_0.py
299 299 kallithea/lib/dbmigrate/versions/004_version_1_3_0.py
300 300 kallithea/lib/dbmigrate/versions/005_version_1_3_0.py
301 301 kallithea/lib/dbmigrate/versions/006_version_1_4_0.py
302 302 kallithea/lib/dbmigrate/versions/007_version_1_4_0.py
303 303 kallithea/lib/dbmigrate/versions/008_version_1_5_0.py
304 304 kallithea/lib/dbmigrate/versions/009_version_1_5_1.py
305 305 kallithea/lib/dbmigrate/versions/010_version_1_5_2.py
306 306 kallithea/lib/dbmigrate/versions/011_version_1_6_0.py
307 307 kallithea/lib/dbmigrate/versions/012_version_1_7_0.py
308 308 kallithea/lib/dbmigrate/versions/013_version_1_7_0.py
309 309 kallithea/lib/dbmigrate/versions/014_version_1_7_1.py
310 310 kallithea/lib/dbmigrate/versions/015_version_1_8_0.py
311 311 kallithea/lib/dbmigrate/versions/016_version_2_0_0.py
312 312 kallithea/lib/dbmigrate/versions/017_version_2_0_0.py
313 313 kallithea/lib/dbmigrate/versions/018_version_2_0_0.py
314 314 kallithea/lib/dbmigrate/versions/019_version_2_0_0.py
315 315 kallithea/lib/dbmigrate/versions/020_version_2_0_1.py
316 316 kallithea/lib/dbmigrate/versions/021_version_2_0_2.py
317 317 kallithea/lib/dbmigrate/versions/022_version_2_0_2.py
318 318 kallithea/lib/dbmigrate/versions/023_version_2_1_0.py
319 319 kallithea/lib/dbmigrate/versions/024_version_2_1_0.py
320 320 kallithea/lib/dbmigrate/versions/025_version_2_1_0.py
321 321 kallithea/lib/dbmigrate/versions/026_version_2_2_0.py
322 322 kallithea/lib/dbmigrate/versions/027_version_2_2_0.py
323 323 kallithea/lib/dbmigrate/versions/028_version_2_2_3.py
324 324 kallithea/lib/dbmigrate/versions/029_version_2_2_3.py
325 325 kallithea/lib/dbmigrate/versions/030_version_2_2_3.py
326 326 kallithea/lib/dbmigrate/versions/031_version_2_2_3.py
327 327 kallithea/lib/dbmigrate/versions/__init__.py
328 328 kallithea/lib/diffs.py
329 329 kallithea/lib/exceptions.py
330 330 kallithea/lib/ext_json.py
331 331 kallithea/lib/graphmod.py
332 332 kallithea/lib/helpers.py
333 333 kallithea/lib/hooks.py
334 334 kallithea/lib/indexers/
335 335 kallithea/lib/indexers/__init__.py
336 336 kallithea/lib/indexers/daemon.py
337 337 kallithea/lib/ipaddr.py
338 338 kallithea/lib/markup_renderer.py
339 339 kallithea/lib/middleware/
340 340 kallithea/lib/middleware/__init__.py
341 kallithea/lib/middleware/errormator.py
341 kallithea/lib/middleware/appenlight.py
342 342 kallithea/lib/middleware/https_fixup.py
343 343 kallithea/lib/middleware/pygrack.py
344 344 kallithea/lib/middleware/sentry.py
345 345 kallithea/lib/middleware/sessionmiddleware.py
346 346 kallithea/lib/middleware/simplegit.py
347 347 kallithea/lib/middleware/simplehg.py
348 348 kallithea/lib/middleware/wrapper.py
349 349 kallithea/lib/paster_commands/
350 350 kallithea/lib/paster_commands/__init__.py
351 351 kallithea/lib/paster_commands/cache_keys.py
352 352 kallithea/lib/paster_commands/cleanup.py
353 353 kallithea/lib/paster_commands/install_iis.py
354 354 kallithea/lib/paster_commands/ishell.py
355 355 kallithea/lib/paster_commands/make_index.py
356 356 kallithea/lib/paster_commands/make_rcextensions.py
357 357 kallithea/lib/paster_commands/repo_scan.py
358 358 kallithea/lib/paster_commands/setup_db.py
359 359 kallithea/lib/paster_commands/update_repoinfo.py
360 360 kallithea/lib/pidlock.py
361 361 kallithea/lib/profiler.py
362 362 kallithea/lib/rcmail/
363 363 kallithea/lib/rcmail/__init__.py
364 364 kallithea/lib/rcmail/exceptions.py
365 365 kallithea/lib/rcmail/message.py
366 366 kallithea/lib/rcmail/response.py
367 367 kallithea/lib/rcmail/smtp_mailer.py
368 368 kallithea/lib/rcmail/utils.py
369 369 kallithea/lib/recaptcha.py
370 370 kallithea/lib/timerproxy.py
371 371 kallithea/lib/utils.py
372 372 kallithea/lib/utils2.py
373 373 kallithea/lib/vcs/
374 374 kallithea/lib/vcs/__init__.py
375 375 kallithea/lib/vcs/backends/
376 376 kallithea/lib/vcs/backends/__init__.py
377 377 kallithea/lib/vcs/backends/base.py
378 378 kallithea/lib/vcs/backends/git/
379 379 kallithea/lib/vcs/backends/git/__init__.py
380 380 kallithea/lib/vcs/backends/git/changeset.py
381 381 kallithea/lib/vcs/backends/git/inmemory.py
382 382 kallithea/lib/vcs/backends/git/repository.py
383 383 kallithea/lib/vcs/backends/git/workdir.py
384 384 kallithea/lib/vcs/backends/hg/
385 385 kallithea/lib/vcs/backends/hg/__init__.py
386 386 kallithea/lib/vcs/backends/hg/changeset.py
387 387 kallithea/lib/vcs/backends/hg/inmemory.py
388 388 kallithea/lib/vcs/backends/hg/repository.py
389 389 kallithea/lib/vcs/backends/hg/workdir.py
390 390 kallithea/lib/vcs/conf/
391 391 kallithea/lib/vcs/conf/__init__.py
392 392 kallithea/lib/vcs/conf/settings.py
393 393 kallithea/lib/vcs/exceptions.py
394 394 kallithea/lib/vcs/nodes.py
395 395 kallithea/lib/vcs/subprocessio.py
396 396 kallithea/lib/vcs/utils/
397 397 kallithea/lib/vcs/utils/__init__.py
398 398 kallithea/lib/vcs/utils/annotate.py
399 399 kallithea/lib/vcs/utils/archivers.py
400 400 kallithea/lib/vcs/utils/baseui_config.py
401 401 kallithea/lib/vcs/utils/compat.py
402 402 kallithea/lib/vcs/utils/diffs.py
403 403 kallithea/lib/vcs/utils/fakemod.py
404 404 kallithea/lib/vcs/utils/filesize.py
405 405 kallithea/lib/vcs/utils/helpers.py
406 406 kallithea/lib/vcs/utils/hgcompat.py
407 407 kallithea/lib/vcs/utils/imports.py
408 408 kallithea/lib/vcs/utils/lazy.py
409 409 kallithea/lib/vcs/utils/lockfiles.py
410 410 kallithea/lib/vcs/utils/ordered_dict.py
411 411 kallithea/lib/vcs/utils/paths.py
412 412 kallithea/lib/vcs/utils/progressbar.py
413 413 kallithea/lib/vcs/utils/termcolors.py
414 414 kallithea/lib/verlib.py
415 415 kallithea/model/
416 416 kallithea/model/__init__.py
417 417 kallithea/model/api_key.py
418 418 kallithea/model/changeset_status.py
419 419 kallithea/model/comment.py
420 420 kallithea/model/db.py
421 421 kallithea/model/forms.py
422 422 kallithea/model/gist.py
423 423 kallithea/model/meta.py
424 424 kallithea/model/notification.py
425 425 kallithea/model/permission.py
426 426 kallithea/model/pull_request.py
427 427 kallithea/model/repo.py
428 428 kallithea/model/repo_group.py
429 429 kallithea/model/repo_permission.py
430 430 kallithea/model/scm.py
431 431 kallithea/model/user.py
432 432 kallithea/model/user_group.py
433 433 kallithea/model/validators.py
434 434 kallithea/public/
435 435 kallithea/public/codemirror/
436 436 kallithea/public/codemirror/LICENSE
437 437 kallithea/public/codemirror/lib/
438 438 kallithea/public/codemirror/lib/codemirror.css
439 439 kallithea/public/codemirror/lib/codemirror.js
440 440 kallithea/public/codemirror/mode/
441 441 kallithea/public/codemirror/mode/apl/
442 442 kallithea/public/codemirror/mode/apl/apl.js
443 443 kallithea/public/codemirror/mode/asterisk/
444 444 kallithea/public/codemirror/mode/asterisk/asterisk.js
445 445 kallithea/public/codemirror/mode/clike/
446 446 kallithea/public/codemirror/mode/clike/clike.js
447 447 kallithea/public/codemirror/mode/clojure/
448 448 kallithea/public/codemirror/mode/clojure/clojure.js
449 449 kallithea/public/codemirror/mode/cobol/
450 450 kallithea/public/codemirror/mode/cobol/cobol.js
451 451 kallithea/public/codemirror/mode/coffeescript/
452 452 kallithea/public/codemirror/mode/coffeescript/coffeescript.js
453 453 kallithea/public/codemirror/mode/commonlisp/
454 454 kallithea/public/codemirror/mode/commonlisp/commonlisp.js
455 455 kallithea/public/codemirror/mode/css/
456 456 kallithea/public/codemirror/mode/css/css.js
457 457 kallithea/public/codemirror/mode/css/less_test.js
458 458 kallithea/public/codemirror/mode/css/scss_test.js
459 459 kallithea/public/codemirror/mode/cypher/
460 460 kallithea/public/codemirror/mode/cypher/cypher.js
461 461 kallithea/public/codemirror/mode/d/
462 462 kallithea/public/codemirror/mode/d/d.js
463 463 kallithea/public/codemirror/mode/diff/
464 464 kallithea/public/codemirror/mode/diff/diff.js
465 465 kallithea/public/codemirror/mode/django/
466 466 kallithea/public/codemirror/mode/django/django.js
467 467 kallithea/public/codemirror/mode/dtd/
468 468 kallithea/public/codemirror/mode/dtd/dtd.js
469 469 kallithea/public/codemirror/mode/dylan/
470 470 kallithea/public/codemirror/mode/dylan/dylan.js
471 471 kallithea/public/codemirror/mode/ecl/
472 472 kallithea/public/codemirror/mode/ecl/ecl.js
473 473 kallithea/public/codemirror/mode/eiffel/
474 474 kallithea/public/codemirror/mode/eiffel/eiffel.js
475 475 kallithea/public/codemirror/mode/erlang/
476 476 kallithea/public/codemirror/mode/erlang/erlang.js
477 477 kallithea/public/codemirror/mode/fortran/
478 478 kallithea/public/codemirror/mode/fortran/fortran.js
479 479 kallithea/public/codemirror/mode/gas/
480 480 kallithea/public/codemirror/mode/gas/gas.js
481 481 kallithea/public/codemirror/mode/gfm/
482 482 kallithea/public/codemirror/mode/gfm/gfm.js
483 483 kallithea/public/codemirror/mode/gherkin/
484 484 kallithea/public/codemirror/mode/gherkin/gherkin.js
485 485 kallithea/public/codemirror/mode/go/
486 486 kallithea/public/codemirror/mode/go/go.js
487 487 kallithea/public/codemirror/mode/groovy/
488 488 kallithea/public/codemirror/mode/groovy/groovy.js
489 489 kallithea/public/codemirror/mode/haml/
490 490 kallithea/public/codemirror/mode/haml/haml.js
491 491 kallithea/public/codemirror/mode/haskell/
492 492 kallithea/public/codemirror/mode/haskell/haskell.js
493 493 kallithea/public/codemirror/mode/haxe/
494 494 kallithea/public/codemirror/mode/haxe/haxe.js
495 495 kallithea/public/codemirror/mode/htmlembedded/
496 496 kallithea/public/codemirror/mode/htmlembedded/htmlembedded.js
497 497 kallithea/public/codemirror/mode/htmlmixed/
498 498 kallithea/public/codemirror/mode/htmlmixed/htmlmixed.js
499 499 kallithea/public/codemirror/mode/http/
500 500 kallithea/public/codemirror/mode/http/http.js
501 501 kallithea/public/codemirror/mode/jade/
502 502 kallithea/public/codemirror/mode/jade/jade.js
503 503 kallithea/public/codemirror/mode/javascript/
504 504 kallithea/public/codemirror/mode/javascript/javascript.js
505 505 kallithea/public/codemirror/mode/jinja2/
506 506 kallithea/public/codemirror/mode/jinja2/jinja2.js
507 507 kallithea/public/codemirror/mode/julia/
508 508 kallithea/public/codemirror/mode/julia/julia.js
509 509 kallithea/public/codemirror/mode/kotlin/
510 510 kallithea/public/codemirror/mode/kotlin/kotlin.js
511 511 kallithea/public/codemirror/mode/livescript/
512 512 kallithea/public/codemirror/mode/livescript/livescript.js
513 513 kallithea/public/codemirror/mode/lua/
514 514 kallithea/public/codemirror/mode/lua/lua.js
515 515 kallithea/public/codemirror/mode/markdown/
516 516 kallithea/public/codemirror/mode/markdown/markdown.js
517 517 kallithea/public/codemirror/mode/meta.js
518 518 kallithea/public/codemirror/mode/mirc/
519 519 kallithea/public/codemirror/mode/mirc/mirc.js
520 520 kallithea/public/codemirror/mode/mllike/
521 521 kallithea/public/codemirror/mode/mllike/mllike.js
522 522 kallithea/public/codemirror/mode/modelica/
523 523 kallithea/public/codemirror/mode/modelica/modelica.js
524 524 kallithea/public/codemirror/mode/nginx/
525 525 kallithea/public/codemirror/mode/nginx/nginx.js
526 526 kallithea/public/codemirror/mode/ntriples/
527 527 kallithea/public/codemirror/mode/ntriples/ntriples.js
528 528 kallithea/public/codemirror/mode/octave/
529 529 kallithea/public/codemirror/mode/octave/octave.js
530 530 kallithea/public/codemirror/mode/pascal/
531 531 kallithea/public/codemirror/mode/pascal/pascal.js
532 532 kallithea/public/codemirror/mode/pegjs/
533 533 kallithea/public/codemirror/mode/pegjs/pegjs.js
534 534 kallithea/public/codemirror/mode/perl/
535 535 kallithea/public/codemirror/mode/perl/perl.js
536 536 kallithea/public/codemirror/mode/php/
537 537 kallithea/public/codemirror/mode/php/php.js
538 538 kallithea/public/codemirror/mode/pig/
539 539 kallithea/public/codemirror/mode/pig/pig.js
540 540 kallithea/public/codemirror/mode/properties/
541 541 kallithea/public/codemirror/mode/properties/properties.js
542 542 kallithea/public/codemirror/mode/puppet/
543 543 kallithea/public/codemirror/mode/puppet/puppet.js
544 544 kallithea/public/codemirror/mode/python/
545 545 kallithea/public/codemirror/mode/python/python.js
546 546 kallithea/public/codemirror/mode/q/
547 547 kallithea/public/codemirror/mode/q/q.js
548 548 kallithea/public/codemirror/mode/r/
549 549 kallithea/public/codemirror/mode/r/r.js
550 550 kallithea/public/codemirror/mode/rpm/
551 551 kallithea/public/codemirror/mode/rpm/rpm.js
552 552 kallithea/public/codemirror/mode/rst/
553 553 kallithea/public/codemirror/mode/rst/rst.js
554 554 kallithea/public/codemirror/mode/ruby/
555 555 kallithea/public/codemirror/mode/ruby/ruby.js
556 556 kallithea/public/codemirror/mode/rust/
557 557 kallithea/public/codemirror/mode/rust/rust.js
558 558 kallithea/public/codemirror/mode/sass/
559 559 kallithea/public/codemirror/mode/sass/sass.js
560 560 kallithea/public/codemirror/mode/scheme/
561 561 kallithea/public/codemirror/mode/scheme/scheme.js
562 562 kallithea/public/codemirror/mode/shell/
563 563 kallithea/public/codemirror/mode/shell/shell.js
564 564 kallithea/public/codemirror/mode/sieve/
565 565 kallithea/public/codemirror/mode/sieve/sieve.js
566 566 kallithea/public/codemirror/mode/slim/
567 567 kallithea/public/codemirror/mode/slim/slim.js
568 568 kallithea/public/codemirror/mode/smalltalk/
569 569 kallithea/public/codemirror/mode/smalltalk/smalltalk.js
570 570 kallithea/public/codemirror/mode/smarty/
571 571 kallithea/public/codemirror/mode/smarty/smarty.js
572 572 kallithea/public/codemirror/mode/smartymixed/
573 573 kallithea/public/codemirror/mode/smartymixed/smartymixed.js
574 574 kallithea/public/codemirror/mode/solr/
575 575 kallithea/public/codemirror/mode/solr/solr.js
576 576 kallithea/public/codemirror/mode/sparql/
577 577 kallithea/public/codemirror/mode/sparql/sparql.js
578 578 kallithea/public/codemirror/mode/sql/
579 579 kallithea/public/codemirror/mode/sql/sql.js
580 580 kallithea/public/codemirror/mode/stex/
581 581 kallithea/public/codemirror/mode/stex/stex.js
582 582 kallithea/public/codemirror/mode/tcl/
583 583 kallithea/public/codemirror/mode/tcl/tcl.js
584 584 kallithea/public/codemirror/mode/textile/
585 585 kallithea/public/codemirror/mode/textile/textile.js
586 586 kallithea/public/codemirror/mode/tiddlywiki/
587 587 kallithea/public/codemirror/mode/tiddlywiki/tiddlywiki.css
588 588 kallithea/public/codemirror/mode/tiddlywiki/tiddlywiki.js
589 589 kallithea/public/codemirror/mode/tiki/
590 590 kallithea/public/codemirror/mode/tiki/tiki.css
591 591 kallithea/public/codemirror/mode/tiki/tiki.js
592 592 kallithea/public/codemirror/mode/toml/
593 593 kallithea/public/codemirror/mode/toml/toml.js
594 594 kallithea/public/codemirror/mode/tornado/
595 595 kallithea/public/codemirror/mode/tornado/tornado.js
596 596 kallithea/public/codemirror/mode/turtle/
597 597 kallithea/public/codemirror/mode/turtle/turtle.js
598 598 kallithea/public/codemirror/mode/vb/
599 599 kallithea/public/codemirror/mode/vb/vb.js
600 600 kallithea/public/codemirror/mode/vbscript/
601 601 kallithea/public/codemirror/mode/vbscript/vbscript.js
602 602 kallithea/public/codemirror/mode/velocity/
603 603 kallithea/public/codemirror/mode/velocity/velocity.js
604 604 kallithea/public/codemirror/mode/verilog/
605 605 kallithea/public/codemirror/mode/verilog/verilog.js
606 606 kallithea/public/codemirror/mode/xml/
607 607 kallithea/public/codemirror/mode/xml/xml.js
608 608 kallithea/public/codemirror/mode/xquery/
609 609 kallithea/public/codemirror/mode/xquery/xquery.js
610 610 kallithea/public/codemirror/mode/yaml/
611 611 kallithea/public/codemirror/mode/yaml/yaml.js
612 612 kallithea/public/codemirror/mode/z80/
613 613 kallithea/public/codemirror/mode/z80/z80.js
614 614 kallithea/public/css/
615 615 kallithea/public/css/bootstrap.css
616 616 kallithea/public/css/contextbar.css
617 617 kallithea/public/css/mergely.css
618 618 kallithea/public/css/pygments.css
619 619 kallithea/public/css/style.css
620 620 kallithea/public/fontello/
621 621 kallithea/public/fontello/README-kallithea.txt
622 622 kallithea/public/fontello/README.txt
623 623 kallithea/public/fontello/config.json
624 624 kallithea/public/fontello/css/
625 625 kallithea/public/fontello/css/kallithea.css
626 626 kallithea/public/fontello/font/
627 627 kallithea/public/fontello/font/kallithea.eot
628 628 kallithea/public/fontello/font/kallithea.svg
629 629 kallithea/public/fontello/font/kallithea.ttf
630 630 kallithea/public/fontello/font/kallithea.woff
631 631 kallithea/public/images/
632 632 kallithea/public/images/background.png
633 633 kallithea/public/images/favicon.ico
634 634 kallithea/public/images/kallithea-logo.png
635 635 kallithea/public/images/kallithea-logo.svg
636 636 kallithea/public/images/pager.png
637 637 kallithea/public/images/pager_selected.png
638 638 kallithea/public/js/
639 639 kallithea/public/js/base.js
640 640 kallithea/public/js/bootstrap.js
641 641 kallithea/public/js/codemirror_loadmode.js
642 642 kallithea/public/js/graph.js
643 643 kallithea/public/js/jquery-1.11.1.min.js
644 644 kallithea/public/js/mergely.js
645 645 kallithea/public/js/mousetrap.js
646 646 kallithea/public/js/native.history.js
647 647 kallithea/public/js/select2/
648 648 kallithea/public/js/select2/select2-bootstrap.css
649 649 kallithea/public/js/select2/select2-spinner.gif
650 650 kallithea/public/js/select2/select2.css
651 651 kallithea/public/js/select2/select2.js
652 652 kallithea/public/js/select2/select2.png
653 653 kallithea/public/js/select2/select2x2.png
654 654 kallithea/public/js/yui.2.9.js
655 655 kallithea/public/js/yui.flot.js
656 656 kallithea/templates/
657 657 kallithea/templates/about.html
658 658 kallithea/templates/admin/
659 659 kallithea/templates/admin/admin.html
660 660 kallithea/templates/admin/admin_log.html
661 661 kallithea/templates/admin/auth/
662 662 kallithea/templates/admin/auth/auth_settings.html
663 663 kallithea/templates/admin/defaults/
664 664 kallithea/templates/admin/defaults/defaults.html
665 665 kallithea/templates/admin/gists/
666 666 kallithea/templates/admin/gists/edit.html
667 667 kallithea/templates/admin/gists/index.html
668 668 kallithea/templates/admin/gists/new.html
669 669 kallithea/templates/admin/gists/show.html
670 670 kallithea/templates/admin/my_account/
671 671 kallithea/templates/admin/my_account/my_account.html
672 672 kallithea/templates/admin/my_account/my_account_api_keys.html
673 673 kallithea/templates/admin/my_account/my_account_emails.html
674 674 kallithea/templates/admin/my_account/my_account_password.html
675 675 kallithea/templates/admin/my_account/my_account_perms.html
676 676 kallithea/templates/admin/my_account/my_account_profile.html
677 677 kallithea/templates/admin/my_account/my_account_repos.html
678 678 kallithea/templates/admin/my_account/my_account_watched.html
679 679 kallithea/templates/admin/notifications/
680 680 kallithea/templates/admin/notifications/notifications.html
681 681 kallithea/templates/admin/notifications/notifications_data.html
682 682 kallithea/templates/admin/notifications/show_notification.html
683 683 kallithea/templates/admin/permissions/
684 684 kallithea/templates/admin/permissions/permissions.html
685 685 kallithea/templates/admin/permissions/permissions_globals.html
686 686 kallithea/templates/admin/permissions/permissions_ips.html
687 687 kallithea/templates/admin/permissions/permissions_perms.html
688 688 kallithea/templates/admin/repo_groups/
689 689 kallithea/templates/admin/repo_groups/repo_group_add.html
690 690 kallithea/templates/admin/repo_groups/repo_group_edit.html
691 691 kallithea/templates/admin/repo_groups/repo_group_edit_advanced.html
692 692 kallithea/templates/admin/repo_groups/repo_group_edit_perms.html
693 693 kallithea/templates/admin/repo_groups/repo_group_edit_settings.html
694 694 kallithea/templates/admin/repo_groups/repo_group_show.html
695 695 kallithea/templates/admin/repo_groups/repo_groups.html
696 696 kallithea/templates/admin/repos/
697 697 kallithea/templates/admin/repos/repo_add.html
698 698 kallithea/templates/admin/repos/repo_add_base.html
699 699 kallithea/templates/admin/repos/repo_creating.html
700 700 kallithea/templates/admin/repos/repo_edit.html
701 701 kallithea/templates/admin/repos/repo_edit_advanced.html
702 702 kallithea/templates/admin/repos/repo_edit_caches.html
703 703 kallithea/templates/admin/repos/repo_edit_fields.html
704 704 kallithea/templates/admin/repos/repo_edit_fork.html
705 705 kallithea/templates/admin/repos/repo_edit_permissions.html
706 706 kallithea/templates/admin/repos/repo_edit_remote.html
707 707 kallithea/templates/admin/repos/repo_edit_settings.html
708 708 kallithea/templates/admin/repos/repo_edit_statistics.html
709 709 kallithea/templates/admin/repos/repos.html
710 710 kallithea/templates/admin/settings/
711 711 kallithea/templates/admin/settings/settings.html
712 712 kallithea/templates/admin/settings/settings_email.html
713 713 kallithea/templates/admin/settings/settings_global.html
714 714 kallithea/templates/admin/settings/settings_hooks.html
715 715 kallithea/templates/admin/settings/settings_mapping.html
716 716 kallithea/templates/admin/settings/settings_search.html
717 717 kallithea/templates/admin/settings/settings_system.html
718 718 kallithea/templates/admin/settings/settings_system_update.html
719 719 kallithea/templates/admin/settings/settings_vcs.html
720 720 kallithea/templates/admin/settings/settings_visual.html
721 721 kallithea/templates/admin/user_groups/
722 722 kallithea/templates/admin/user_groups/user_group_add.html
723 723 kallithea/templates/admin/user_groups/user_group_edit.html
724 724 kallithea/templates/admin/user_groups/user_group_edit_advanced.html
725 725 kallithea/templates/admin/user_groups/user_group_edit_default_perms.html
726 726 kallithea/templates/admin/user_groups/user_group_edit_members.html
727 727 kallithea/templates/admin/user_groups/user_group_edit_perms.html
728 728 kallithea/templates/admin/user_groups/user_group_edit_settings.html
729 729 kallithea/templates/admin/user_groups/user_groups.html
730 730 kallithea/templates/admin/users/
731 731 kallithea/templates/admin/users/user_add.html
732 732 kallithea/templates/admin/users/user_edit.html
733 733 kallithea/templates/admin/users/user_edit_advanced.html
734 734 kallithea/templates/admin/users/user_edit_api_keys.html
735 735 kallithea/templates/admin/users/user_edit_emails.html
736 736 kallithea/templates/admin/users/user_edit_ips.html
737 737 kallithea/templates/admin/users/user_edit_perms.html
738 738 kallithea/templates/admin/users/user_edit_profile.html
739 739 kallithea/templates/admin/users/users.html
740 740 kallithea/templates/base/
741 741 kallithea/templates/base/base.html
742 742 kallithea/templates/base/default_perms_box.html
743 743 kallithea/templates/base/flash_msg.html
744 744 kallithea/templates/base/perms_summary.html
745 745 kallithea/templates/base/root.html
746 746 kallithea/templates/bookmarks/
747 747 kallithea/templates/bookmarks/bookmarks.html
748 748 kallithea/templates/bookmarks/bookmarks_data.html
749 749 kallithea/templates/branches/
750 750 kallithea/templates/branches/branches.html
751 751 kallithea/templates/branches/branches_data.html
752 752 kallithea/templates/changelog/
753 753 kallithea/templates/changelog/changelog.html
754 754 kallithea/templates/changelog/changelog_details.html
755 755 kallithea/templates/changelog/changelog_summary_data.html
756 756 kallithea/templates/changeset/
757 757 kallithea/templates/changeset/changeset.html
758 758 kallithea/templates/changeset/changeset_comment_block.html
759 759 kallithea/templates/changeset/changeset_file_comment.html
760 760 kallithea/templates/changeset/changeset_range.html
761 761 kallithea/templates/changeset/diff_block.html
762 762 kallithea/templates/changeset/patch_changeset.html
763 763 kallithea/templates/compare/
764 764 kallithea/templates/compare/compare_cs.html
765 765 kallithea/templates/compare/compare_diff.html
766 766 kallithea/templates/data_table/
767 767 kallithea/templates/data_table/_dt_elements.html
768 768 kallithea/templates/email_templates/
769 769 kallithea/templates/email_templates/changeset_comment.html
770 770 kallithea/templates/email_templates/changeset_comment.txt
771 771 kallithea/templates/email_templates/default.html
772 772 kallithea/templates/email_templates/default.txt
773 773 kallithea/templates/email_templates/main.html
774 774 kallithea/templates/email_templates/main.txt
775 775 kallithea/templates/email_templates/password_reset.html
776 776 kallithea/templates/email_templates/password_reset.txt
777 777 kallithea/templates/email_templates/pull_request.html
778 778 kallithea/templates/email_templates/pull_request.txt
779 779 kallithea/templates/email_templates/pull_request_comment.html
780 780 kallithea/templates/email_templates/pull_request_comment.txt
781 781 kallithea/templates/email_templates/registration.html
782 782 kallithea/templates/email_templates/registration.txt
783 783 kallithea/templates/errors/
784 784 kallithea/templates/errors/error_document.html
785 785 kallithea/templates/files/
786 786 kallithea/templates/files/diff_2way.html
787 787 kallithea/templates/files/file_diff.html
788 788 kallithea/templates/files/files.html
789 789 kallithea/templates/files/files_add.html
790 790 kallithea/templates/files/files_browser.html
791 791 kallithea/templates/files/files_delete.html
792 792 kallithea/templates/files/files_edit.html
793 793 kallithea/templates/files/files_history_box.html
794 794 kallithea/templates/files/files_source.html
795 795 kallithea/templates/files/files_ypjax.html
796 796 kallithea/templates/followers/
797 797 kallithea/templates/followers/followers.html
798 798 kallithea/templates/followers/followers_data.html
799 799 kallithea/templates/forks/
800 800 kallithea/templates/forks/fork.html
801 801 kallithea/templates/forks/forks.html
802 802 kallithea/templates/forks/forks_data.html
803 803 kallithea/templates/index.html
804 804 kallithea/templates/index_base.html
805 805 kallithea/templates/journal/
806 806 kallithea/templates/journal/journal.html
807 807 kallithea/templates/journal/journal_data.html
808 808 kallithea/templates/journal/public_journal.html
809 809 kallithea/templates/login.html
810 810 kallithea/templates/password_reset.html
811 811 kallithea/templates/password_reset_confirmation.html
812 812 kallithea/templates/pullrequests/
813 813 kallithea/templates/pullrequests/pullrequest.html
814 814 kallithea/templates/pullrequests/pullrequest_data.html
815 815 kallithea/templates/pullrequests/pullrequest_show.html
816 816 kallithea/templates/pullrequests/pullrequest_show_all.html
817 817 kallithea/templates/pullrequests/pullrequest_show_my.html
818 818 kallithea/templates/register.html
819 819 kallithea/templates/search/
820 820 kallithea/templates/search/search.html
821 821 kallithea/templates/search/search_commit.html
822 822 kallithea/templates/search/search_content.html
823 823 kallithea/templates/search/search_path.html
824 824 kallithea/templates/search/search_repository.html
825 825 kallithea/templates/summary/
826 826 kallithea/templates/summary/statistics.html
827 827 kallithea/templates/summary/summary.html
828 828 kallithea/templates/switch_to_list.html
829 829 kallithea/templates/tags/
830 830 kallithea/templates/tags/tags.html
831 831 kallithea/templates/tags/tags_data.html
832 832 kallithea/tests/
833 833 kallithea/tests/__init__.py
834 834 kallithea/tests/api/
835 835 kallithea/tests/api/__init__.py
836 836 kallithea/tests/api/api_base.py
837 837 kallithea/tests/api/test_api_git.py
838 838 kallithea/tests/api/test_api_hg.py
839 839 kallithea/tests/conftest.py
840 840 kallithea/tests/fixture.py
841 841 kallithea/tests/fixtures/
842 842 kallithea/tests/fixtures/diff_with_diff_data.diff
843 843 kallithea/tests/fixtures/git_diff_binary_and_normal.diff
844 844 kallithea/tests/fixtures/git_diff_chmod.diff
845 845 kallithea/tests/fixtures/git_diff_mod_single_binary_file.diff
846 846 kallithea/tests/fixtures/git_diff_modify_binary_file.diff
847 847 kallithea/tests/fixtures/git_diff_rename_file.diff
848 848 kallithea/tests/fixtures/git_node_history_response.json
849 849 kallithea/tests/fixtures/hg_diff_add_single_binary_file.diff
850 850 kallithea/tests/fixtures/hg_diff_binary_and_normal.diff
851 851 kallithea/tests/fixtures/hg_diff_chmod.diff
852 852 kallithea/tests/fixtures/hg_diff_chmod_and_mod_single_binary_file.diff
853 853 kallithea/tests/fixtures/hg_diff_copy_and_chmod_file.diff
854 854 kallithea/tests/fixtures/hg_diff_copy_and_modify_file.diff
855 855 kallithea/tests/fixtures/hg_diff_copy_chmod_and_edit_file.diff
856 856 kallithea/tests/fixtures/hg_diff_copy_file.diff
857 857 kallithea/tests/fixtures/hg_diff_del_single_binary_file.diff
858 858 kallithea/tests/fixtures/hg_diff_mod_file_and_rename.diff
859 859 kallithea/tests/fixtures/hg_diff_mod_single_binary_file.diff
860 860 kallithea/tests/fixtures/hg_diff_mod_single_file_and_rename_and_chmod.diff
861 861 kallithea/tests/fixtures/hg_diff_rename_and_chmod_file.diff
862 862 kallithea/tests/fixtures/hg_diff_rename_file.diff
863 863 kallithea/tests/fixtures/hg_diff_rename_space_cr.diff
864 864 kallithea/tests/fixtures/hg_node_history_response.json
865 865 kallithea/tests/fixtures/journal_dump.csv
866 866 kallithea/tests/fixtures/markuptest.diff
867 867 kallithea/tests/fixtures/vcs_test_git.tar.gz
868 868 kallithea/tests/fixtures/vcs_test_hg.tar.gz
869 869 kallithea/tests/functional/
870 870 kallithea/tests/functional/__init__.py
871 871 kallithea/tests/functional/test_admin.py
872 872 kallithea/tests/functional/test_admin_auth_settings.py
873 873 kallithea/tests/functional/test_admin_defaults.py
874 874 kallithea/tests/functional/test_admin_gists.py
875 875 kallithea/tests/functional/test_admin_notifications.py
876 876 kallithea/tests/functional/test_admin_permissions.py
877 877 kallithea/tests/functional/test_admin_repo_groups.py
878 878 kallithea/tests/functional/test_admin_repos.py
879 879 kallithea/tests/functional/test_admin_settings.py
880 880 kallithea/tests/functional/test_admin_user_groups.py
881 881 kallithea/tests/functional/test_admin_users.py
882 882 kallithea/tests/functional/test_branches.py
883 883 kallithea/tests/functional/test_changelog.py
884 884 kallithea/tests/functional/test_changeset.py
885 885 kallithea/tests/functional/test_changeset_comments.py
886 886 kallithea/tests/functional/test_compare.py
887 887 kallithea/tests/functional/test_compare_local.py
888 888 kallithea/tests/functional/test_feed.py
889 889 kallithea/tests/functional/test_files.py
890 890 kallithea/tests/functional/test_followers.py
891 891 kallithea/tests/functional/test_forks.py
892 892 kallithea/tests/functional/test_home.py
893 893 kallithea/tests/functional/test_journal.py
894 894 kallithea/tests/functional/test_login.py
895 895 kallithea/tests/functional/test_my_account.py
896 896 kallithea/tests/functional/test_pullrequests.py
897 897 kallithea/tests/functional/test_repo_groups.py
898 898 kallithea/tests/functional/test_search.py
899 899 kallithea/tests/functional/test_summary.py
900 900 kallithea/tests/functional/test_tags.py
901 901 kallithea/tests/models/
902 902 kallithea/tests/models/__init__.py
903 903 kallithea/tests/models/common.py
904 904 kallithea/tests/models/test_changeset_status.py
905 905 kallithea/tests/models/test_diff_parsers.py
906 906 kallithea/tests/models/test_notifications.py
907 907 kallithea/tests/models/test_permissions.py
908 908 kallithea/tests/models/test_repo_groups.py
909 909 kallithea/tests/models/test_repos.py
910 910 kallithea/tests/models/test_user_group_permissions_on_repo_groups.py
911 911 kallithea/tests/models/test_user_groups.py
912 912 kallithea/tests/models/test_user_permissions_on_repo_groups.py
913 913 kallithea/tests/models/test_user_permissions_on_repos.py
914 914 kallithea/tests/models/test_users.py
915 915 kallithea/tests/other/
916 916 kallithea/tests/other/__init__.py
917 917 kallithea/tests/other/manual_test_vcs_operations.py
918 918 kallithea/tests/other/test_libs.py
919 919 kallithea/tests/other/test_mail.py
920 920 kallithea/tests/other/test_validators.py
921 921 kallithea/tests/parameterized.py
922 922 kallithea/tests/scripts/
923 923 kallithea/tests/scripts/create_rc.sh
924 924 kallithea/tests/scripts/manual_test_concurrency.py
925 925 kallithea/tests/scripts/manual_test_crawler.py
926 926 kallithea/tests/scripts/mem_watch
927 927 kallithea/tests/test.ini
928 928 kallithea/tests/vcs/
929 929 kallithea/tests/vcs/__init__.py
930 930 kallithea/tests/vcs/aconfig
931 931 kallithea/tests/vcs/base.py
932 932 kallithea/tests/vcs/conf.py
933 933 kallithea/tests/vcs/test_archives.py
934 934 kallithea/tests/vcs/test_branches.py
935 935 kallithea/tests/vcs/test_changesets.py
936 936 kallithea/tests/vcs/test_filenodes_unicode_path.py
937 937 kallithea/tests/vcs/test_getitem.py
938 938 kallithea/tests/vcs/test_getslice.py
939 939 kallithea/tests/vcs/test_git.py
940 940 kallithea/tests/vcs/test_hg.py
941 941 kallithea/tests/vcs/test_inmemchangesets.py
942 942 kallithea/tests/vcs/test_nodes.py
943 943 kallithea/tests/vcs/test_repository.py
944 944 kallithea/tests/vcs/test_tags.py
945 945 kallithea/tests/vcs/test_utils.py
946 946 kallithea/tests/vcs/test_utils_filesize.py
947 947 kallithea/tests/vcs/test_vcs.py
948 948 kallithea/tests/vcs/test_workdirs.py
949 949 kallithea/tests/vcs/utils.py
950 950 kallithea/websetup.py
951 951 setup.cfg
952 952 setup.py
General Comments 0
You need to be logged in to leave comments. Login now