##// END OF EJS Templates
channelstream: try to use proxy url's unless ws urls are not explictly defined
ergo -
r813:da2b7294 default
parent child Browse files
Show More
@@ -1,672 +1,674 b''
1 1
2 2
3 3 ################################################################################
4 4 ## RHODECODE ENTERPRISE CONFIGURATION ##
5 5 # The %(here)s variable will be replaced with the parent directory of this file#
6 6 ################################################################################
7 7
8 8 [DEFAULT]
9 9 debug = true
10 10
11 11 ################################################################################
12 12 ## EMAIL CONFIGURATION ##
13 13 ## Uncomment and replace with the email address which should receive ##
14 14 ## any error reports after an application crash ##
15 15 ## Additionally these settings will be used by the RhodeCode mailing system ##
16 16 ################################################################################
17 17
18 18 ## prefix all emails subjects with given prefix, helps filtering out emails
19 19 #email_prefix = [RhodeCode]
20 20
21 21 ## email FROM address all mails will be sent
22 22 #app_email_from = rhodecode-noreply@localhost
23 23
24 24 ## Uncomment and replace with the address which should receive any error report
25 25 ## note: using appenlight for error handling doesn't need this to be uncommented
26 26 #email_to = admin@localhost
27 27
28 28 ## in case of Application errors, sent an error email form
29 29 #error_email_from = rhodecode_error@localhost
30 30
31 31 ## additional error message to be send in case of server crash
32 32 #error_message =
33 33
34 34
35 35 #smtp_server = mail.server.com
36 36 #smtp_username =
37 37 #smtp_password =
38 38 #smtp_port =
39 39 #smtp_use_tls = false
40 40 #smtp_use_ssl = true
41 41 ## Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
42 42 #smtp_auth =
43 43
44 44 [server:main]
45 45 ## COMMON ##
46 46 host = 127.0.0.1
47 47 port = 5000
48 48
49 49 ##################################
50 50 ## WAITRESS WSGI SERVER ##
51 51 ## Recommended for Development ##
52 52 ##################################
53 53
54 54 use = egg:waitress#main
55 55 ## number of worker threads
56 56 threads = 5
57 57 ## MAX BODY SIZE 100GB
58 58 max_request_body_size = 107374182400
59 59 ## Use poll instead of select, fixes file descriptors limits problems.
60 60 ## May not work on old windows systems.
61 61 asyncore_use_poll = true
62 62
63 63
64 64 ##########################
65 65 ## GUNICORN WSGI SERVER ##
66 66 ##########################
67 67 ## run with gunicorn --log-config <inifile.ini> --paste <inifile.ini>
68 68
69 69 #use = egg:gunicorn#main
70 70 ## Sets the number of process workers. You must set `instance_id = *`
71 71 ## when this option is set to more than one worker, recommended
72 72 ## value is (2 * NUMBER_OF_CPUS + 1), eg 2CPU = 5 workers
73 73 ## The `instance_id = *` must be set in the [app:main] section below
74 74 #workers = 2
75 75 ## number of threads for each of the worker, must be set to 1 for gevent
76 76 ## generally recommened to be at 1
77 77 #threads = 1
78 78 ## process name
79 79 #proc_name = rhodecode
80 80 ## type of worker class, one of sync, gevent
81 81 ## recommended for bigger setup is using of of other than sync one
82 82 #worker_class = sync
83 83 ## The maximum number of simultaneous clients. Valid only for Gevent
84 84 #worker_connections = 10
85 85 ## max number of requests that worker will handle before being gracefully
86 86 ## restarted, could prevent memory leaks
87 87 #max_requests = 1000
88 88 #max_requests_jitter = 30
89 89 ## amount of time a worker can spend with handling a request before it
90 90 ## gets killed and restarted. Set to 6hrs
91 91 #timeout = 21600
92 92
93 93
94 94 ## prefix middleware for RhodeCode, disables force_https flag.
95 95 ## recommended when using proxy setup.
96 96 ## allows to set RhodeCode under a prefix in server.
97 97 ## eg https://server.com/<prefix>. Enable `filter-with =` option below as well.
98 98 ## optionally set prefix like: `prefix = /<your-prefix>`
99 99 [filter:proxy-prefix]
100 100 use = egg:PasteDeploy#prefix
101 101 prefix = /
102 102
103 103 [app:main]
104 104 use = egg:rhodecode-enterprise-ce
105 105
106 106 ## enable proxy prefix middleware, defined above
107 107 #filter-with = proxy-prefix
108 108
109 109 # During development the we want to have the debug toolbar enabled
110 110 pyramid.includes =
111 111 pyramid_debugtoolbar
112 112 rhodecode.utils.debugtoolbar
113 113 rhodecode.lib.middleware.request_wrapper
114 114
115 115 pyramid.reload_templates = true
116 116
117 117 debugtoolbar.hosts = 0.0.0.0/0
118 118 debugtoolbar.exclude_prefixes =
119 119 /css
120 120 /fonts
121 121 /images
122 122 /js
123 123
124 124 ## RHODECODE PLUGINS ##
125 125 rhodecode.includes =
126 126 rhodecode.api
127 127
128 128
129 129 # api prefix url
130 130 rhodecode.api.url = /_admin/api
131 131
132 132
133 133 ## END RHODECODE PLUGINS ##
134 134
135 135 ## encryption key used to encrypt social plugin tokens,
136 136 ## remote_urls with credentials etc, if not set it defaults to
137 137 ## `beaker.session.secret`
138 138 #rhodecode.encrypted_values.secret =
139 139
140 140 ## decryption strict mode (enabled by default). It controls if decryption raises
141 141 ## `SignatureVerificationError` in case of wrong key, or damaged encryption data.
142 142 #rhodecode.encrypted_values.strict = false
143 143
144 144 ## return gzipped responses from Rhodecode (static files/application)
145 145 gzip_responses = false
146 146
147 147 ## autogenerate javascript routes file on startup
148 148 generate_js_files = false
149 149
150 150 ## Optional Languages
151 151 ## en(default), be, de, es, fr, it, ja, pl, pt, ru, zh
152 152 lang = en
153 153
154 154 ## perform a full repository scan on each server start, this should be
155 155 ## set to false after first startup, to allow faster server restarts.
156 156 startup.import_repos = false
157 157
158 158 ## Uncomment and set this path to use archive download cache.
159 159 ## Once enabled, generated archives will be cached at this location
160 160 ## and served from the cache during subsequent requests for the same archive of
161 161 ## the repository.
162 162 #archive_cache_dir = /tmp/tarballcache
163 163
164 164 ## change this to unique ID for security
165 165 app_instance_uuid = rc-production
166 166
167 167 ## cut off limit for large diffs (size in bytes)
168 168 cut_off_limit_diff = 1024000
169 169 cut_off_limit_file = 256000
170 170
171 171 ## use cache version of scm repo everywhere
172 172 vcs_full_cache = true
173 173
174 174 ## force https in RhodeCode, fixes https redirects, assumes it's always https
175 175 ## Normally this is controlled by proper http flags sent from http server
176 176 force_https = false
177 177
178 178 ## use Strict-Transport-Security headers
179 179 use_htsts = false
180 180
181 181 ## number of commits stats will parse on each iteration
182 182 commit_parse_limit = 25
183 183
184 184 ## git rev filter option, --all is the default filter, if you need to
185 185 ## hide all refs in changelog switch this to --branches --tags
186 186 git_rev_filter = --branches --tags
187 187
188 188 # Set to true if your repos are exposed using the dumb protocol
189 189 git_update_server_info = false
190 190
191 191 ## RSS/ATOM feed options
192 192 rss_cut_off_limit = 256000
193 193 rss_items_per_page = 10
194 194 rss_include_diff = false
195 195
196 196 ## gist URL alias, used to create nicer urls for gist. This should be an
197 197 ## url that does rewrites to _admin/gists/<gistid>.
198 198 ## example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
199 199 ## RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/<gistid>
200 200 gist_alias_url =
201 201
202 202 ## List of controllers (using glob pattern syntax) that AUTH TOKENS could be
203 203 ## used for access.
204 204 ## Adding ?auth_token = <token> to the url authenticates this request as if it
205 205 ## came from the the logged in user who own this authentication token.
206 206 ##
207 207 ## Syntax is <ControllerClass>:<function_pattern>.
208 208 ## To enable access to raw_files put `FilesController:raw`.
209 209 ## To enable access to patches add `ChangesetController:changeset_patch`.
210 210 ## The list should be "," separated and on a single line.
211 211 ##
212 212 ## Recommended controllers to enable:
213 213 # ChangesetController:changeset_patch,
214 214 # ChangesetController:changeset_raw,
215 215 # FilesController:raw,
216 216 # FilesController:archivefile,
217 217 # GistsController:*,
218 218 api_access_controllers_whitelist =
219 219
220 220 ## default encoding used to convert from and to unicode
221 221 ## can be also a comma separated list of encoding in case of mixed encodings
222 222 default_encoding = UTF-8
223 223
224 224 ## instance-id prefix
225 225 ## a prefix key for this instance used for cache invalidation when running
226 226 ## multiple instances of rhodecode, make sure it's globally unique for
227 227 ## all running rhodecode instances. Leave empty if you don't use it
228 228 instance_id =
229 229
230 230 ## Fallback authentication plugin. Set this to a plugin ID to force the usage
231 231 ## of an authentication plugin also if it is disabled by it's settings.
232 232 ## This could be useful if you are unable to log in to the system due to broken
233 233 ## authentication settings. Then you can enable e.g. the internal rhodecode auth
234 234 ## module to log in again and fix the settings.
235 235 ##
236 236 ## Available builtin plugin IDs (hash is part of the ID):
237 237 ## egg:rhodecode-enterprise-ce#rhodecode
238 238 ## egg:rhodecode-enterprise-ce#pam
239 239 ## egg:rhodecode-enterprise-ce#ldap
240 240 ## egg:rhodecode-enterprise-ce#jasig_cas
241 241 ## egg:rhodecode-enterprise-ce#headers
242 242 ## egg:rhodecode-enterprise-ce#crowd
243 243 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
244 244
245 245 ## alternative return HTTP header for failed authentication. Default HTTP
246 246 ## response is 401 HTTPUnauthorized. Currently HG clients have troubles with
247 247 ## handling that causing a series of failed authentication calls.
248 248 ## Set this variable to 403 to return HTTPForbidden, or any other HTTP code
249 249 ## This will be served instead of default 401 on bad authnetication
250 250 auth_ret_code =
251 251
252 252 ## use special detection method when serving auth_ret_code, instead of serving
253 253 ## ret_code directly, use 401 initially (Which triggers credentials prompt)
254 254 ## and then serve auth_ret_code to clients
255 255 auth_ret_code_detection = false
256 256
257 257 ## locking return code. When repository is locked return this HTTP code. 2XX
258 258 ## codes don't break the transactions while 4XX codes do
259 259 lock_ret_code = 423
260 260
261 261 ## allows to change the repository location in settings page
262 262 allow_repo_location_change = true
263 263
264 264 ## allows to setup custom hooks in settings page
265 265 allow_custom_hooks_settings = true
266 266
267 267 ## generated license token, goto license page in RhodeCode settings to obtain
268 268 ## new token
269 269 license_token =
270 270
271 271 ## supervisor connection uri, for managing supervisor and logs.
272 272 supervisor.uri =
273 273 ## supervisord group name/id we only want this RC instance to handle
274 274 supervisor.group_id = dev
275 275
276 276 ## Display extended labs settings
277 277 labs_settings_active = true
278 278
279 279 ####################################
280 280 ### CELERY CONFIG ####
281 281 ####################################
282 282 use_celery = false
283 283 broker.host = localhost
284 284 broker.vhost = rabbitmqhost
285 285 broker.port = 5672
286 286 broker.user = rabbitmq
287 287 broker.password = qweqwe
288 288
289 289 celery.imports = rhodecode.lib.celerylib.tasks
290 290
291 291 celery.result.backend = amqp
292 292 celery.result.dburi = amqp://
293 293 celery.result.serialier = json
294 294
295 295 #celery.send.task.error.emails = true
296 296 #celery.amqp.task.result.expires = 18000
297 297
298 298 celeryd.concurrency = 2
299 299 #celeryd.log.file = celeryd.log
300 300 celeryd.log.level = debug
301 301 celeryd.max.tasks.per.child = 1
302 302
303 303 ## tasks will never be sent to the queue, but executed locally instead.
304 304 celery.always.eager = false
305 305
306 306 ####################################
307 307 ### BEAKER CACHE ####
308 308 ####################################
309 309 # default cache dir for templates. Putting this into a ramdisk
310 310 ## can boost performance, eg. %(here)s/data_ramdisk
311 311 cache_dir = %(here)s/data
312 312
313 313 ## locking and default file storage for Beaker. Putting this into a ramdisk
314 314 ## can boost performance, eg. %(here)s/data_ramdisk/cache/beaker_data
315 315 beaker.cache.data_dir = %(here)s/data/cache/beaker_data
316 316 beaker.cache.lock_dir = %(here)s/data/cache/beaker_lock
317 317
318 318 beaker.cache.regions = super_short_term, short_term, long_term, sql_cache_short, auth_plugins, repo_cache_long
319 319
320 320 beaker.cache.super_short_term.type = memory
321 321 beaker.cache.super_short_term.expire = 10
322 322 beaker.cache.super_short_term.key_length = 256
323 323
324 324 beaker.cache.short_term.type = memory
325 325 beaker.cache.short_term.expire = 60
326 326 beaker.cache.short_term.key_length = 256
327 327
328 328 beaker.cache.long_term.type = memory
329 329 beaker.cache.long_term.expire = 36000
330 330 beaker.cache.long_term.key_length = 256
331 331
332 332 beaker.cache.sql_cache_short.type = memory
333 333 beaker.cache.sql_cache_short.expire = 10
334 334 beaker.cache.sql_cache_short.key_length = 256
335 335
336 336 ## default is memory cache, configure only if required
337 337 ## using multi-node or multi-worker setup
338 338 #beaker.cache.auth_plugins.type = ext:database
339 339 #beaker.cache.auth_plugins.lock_dir = %(here)s/data/cache/auth_plugin_lock
340 340 #beaker.cache.auth_plugins.url = postgresql://postgres:secret@localhost/rhodecode
341 341 #beaker.cache.auth_plugins.url = mysql://root:secret@127.0.0.1/rhodecode
342 342 #beaker.cache.auth_plugins.sa.pool_recycle = 3600
343 343 #beaker.cache.auth_plugins.sa.pool_size = 10
344 344 #beaker.cache.auth_plugins.sa.max_overflow = 0
345 345
346 346 beaker.cache.repo_cache_long.type = memorylru_base
347 347 beaker.cache.repo_cache_long.max_items = 4096
348 348 beaker.cache.repo_cache_long.expire = 2592000
349 349
350 350 ## default is memorylru_base cache, configure only if required
351 351 ## using multi-node or multi-worker setup
352 352 #beaker.cache.repo_cache_long.type = ext:memcached
353 353 #beaker.cache.repo_cache_long.url = localhost:11211
354 354 #beaker.cache.repo_cache_long.expire = 1209600
355 355 #beaker.cache.repo_cache_long.key_length = 256
356 356
357 357 ####################################
358 358 ### BEAKER SESSION ####
359 359 ####################################
360 360
361 361 ## .session.type is type of storage options for the session, current allowed
362 362 ## types are file, ext:memcached, ext:database, and memory (default).
363 363 beaker.session.type = file
364 364 beaker.session.data_dir = %(here)s/data/sessions/data
365 365
366 366 ## db based session, fast, and allows easy management over logged in users
367 367 #beaker.session.type = ext:database
368 368 #beaker.session.table_name = db_session
369 369 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
370 370 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
371 371 #beaker.session.sa.pool_recycle = 3600
372 372 #beaker.session.sa.echo = false
373 373
374 374 beaker.session.key = rhodecode
375 375 beaker.session.secret = develop-rc-uytcxaz
376 376 beaker.session.lock_dir = %(here)s/data/sessions/lock
377 377
378 378 ## Secure encrypted cookie. Requires AES and AES python libraries
379 379 ## you must disable beaker.session.secret to use this
380 380 #beaker.session.encrypt_key = <key_for_encryption>
381 381 #beaker.session.validate_key = <validation_key>
382 382
383 383 ## sets session as invalid(also logging out user) if it haven not been
384 384 ## accessed for given amount of time in seconds
385 385 beaker.session.timeout = 2592000
386 386 beaker.session.httponly = true
387 387 ## Path to use for the cookie.
388 388 #beaker.session.cookie_path = /<your-prefix>
389 389
390 390 ## uncomment for https secure cookie
391 391 beaker.session.secure = false
392 392
393 393 ## auto save the session to not to use .save()
394 394 beaker.session.auto = false
395 395
396 396 ## default cookie expiration time in seconds, set to `true` to set expire
397 397 ## at browser close
398 398 #beaker.session.cookie_expires = 3600
399 399
400 400 ###################################
401 401 ## SEARCH INDEXING CONFIGURATION ##
402 402 ###################################
403 403 ## Full text search indexer is available in rhodecode-tools under
404 404 ## `rhodecode-tools index` command
405 405
406 406 # WHOOSH Backend, doesn't require additional services to run
407 407 # it works good with few dozen repos
408 408 search.module = rhodecode.lib.index.whoosh
409 409 search.location = %(here)s/data/index
410 410
411 411 ########################################
412 412 ### CHANNELSTREAM CONFIG ####
413 413 ########################################
414 414 ## channelstream enables persistent connections and live notification
415 415 ## in the system. It's also used by the chat system
416 416
417 417 channelstream.enabled = false
418 418 ## location of channelstream server on the backend
419 419 channelstream.server = 127.0.0.1:9800
420 420 ## location of the channelstream server from outside world
421 421 ## most likely this would be an http server special backend URL, that handles
422 422 ## websocket connections see nginx example for config
423 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
423 # channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
424 ## proxy path that can be used by http daemons for exposing channelstream
425 # channelstream.proxy_path = /_channelstream
424 426 channelstream.secret = secret
425 427 channelstream.history.location = %(here)s/channelstream_history
426 428
427 429
428 430 ###################################
429 431 ## APPENLIGHT CONFIG ##
430 432 ###################################
431 433
432 434 ## Appenlight is tailored to work with RhodeCode, see
433 435 ## http://appenlight.com for details how to obtain an account
434 436
435 437 ## appenlight integration enabled
436 438 appenlight = false
437 439
438 440 appenlight.server_url = https://api.appenlight.com
439 441 appenlight.api_key = YOUR_API_KEY
440 442 #appenlight.transport_config = https://api.appenlight.com?threaded=1&timeout=5
441 443
442 444 # used for JS client
443 445 appenlight.api_public_key = YOUR_API_PUBLIC_KEY
444 446
445 447 ## TWEAK AMOUNT OF INFO SENT HERE
446 448
447 449 ## enables 404 error logging (default False)
448 450 appenlight.report_404 = false
449 451
450 452 ## time in seconds after request is considered being slow (default 1)
451 453 appenlight.slow_request_time = 1
452 454
453 455 ## record slow requests in application
454 456 ## (needs to be enabled for slow datastore recording and time tracking)
455 457 appenlight.slow_requests = true
456 458
457 459 ## enable hooking to application loggers
458 460 appenlight.logging = true
459 461
460 462 ## minimum log level for log capture
461 463 appenlight.logging.level = WARNING
462 464
463 465 ## send logs only from erroneous/slow requests
464 466 ## (saves API quota for intensive logging)
465 467 appenlight.logging_on_error = false
466 468
467 469 ## list of additonal keywords that should be grabbed from environ object
468 470 ## can be string with comma separated list of words in lowercase
469 471 ## (by default client will always send following info:
470 472 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
471 473 ## start with HTTP* this list be extended with additional keywords here
472 474 appenlight.environ_keys_whitelist =
473 475
474 476 ## list of keywords that should be blanked from request object
475 477 ## can be string with comma separated list of words in lowercase
476 478 ## (by default client will always blank keys that contain following words
477 479 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
478 480 ## this list be extended with additional keywords set here
479 481 appenlight.request_keys_blacklist =
480 482
481 483 ## list of namespaces that should be ignores when gathering log entries
482 484 ## can be string with comma separated list of namespaces
483 485 ## (by default the client ignores own entries: appenlight_client.client)
484 486 appenlight.log_namespace_blacklist =
485 487
486 488
487 489 ################################################################################
488 490 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
489 491 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
490 492 ## execute malicious code after an exception is raised. ##
491 493 ################################################################################
492 494 #set debug = false
493 495
494 496
495 497 ##############
496 498 ## STYLING ##
497 499 ##############
498 500 debug_style = true
499 501
500 502 #########################################################
501 503 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
502 504 #########################################################
503 505 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
504 506 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
505 507 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode
506 508 sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
507 509
508 510 # see sqlalchemy docs for other advanced settings
509 511
510 512 ## print the sql statements to output
511 513 sqlalchemy.db1.echo = false
512 514 ## recycle the connections after this ammount of seconds
513 515 sqlalchemy.db1.pool_recycle = 3600
514 516 sqlalchemy.db1.convert_unicode = true
515 517
516 518 ## the number of connections to keep open inside the connection pool.
517 519 ## 0 indicates no limit
518 520 #sqlalchemy.db1.pool_size = 5
519 521
520 522 ## the number of connections to allow in connection pool "overflow", that is
521 523 ## connections that can be opened above and beyond the pool_size setting,
522 524 ## which defaults to five.
523 525 #sqlalchemy.db1.max_overflow = 10
524 526
525 527
526 528 ##################
527 529 ### VCS CONFIG ###
528 530 ##################
529 531 vcs.server.enable = true
530 532 vcs.server = localhost:9900
531 533
532 534 ## Web server connectivity protocol, responsible for web based VCS operatations
533 535 ## Available protocols are:
534 536 ## `pyro4` - using pyro4 server
535 537 ## `http` - using http-rpc backend
536 538 vcs.server.protocol = http
537 539
538 540 ## Push/Pull operations protocol, available options are:
539 541 ## `pyro4` - using pyro4 server
540 542 ## `rhodecode.lib.middleware.utils.scm_app_http` - Http based, recommended
541 543 ## `vcsserver.scm_app` - internal app (EE only)
542 544 vcs.scm_app_implementation = rhodecode.lib.middleware.utils.scm_app_http
543 545
544 546 ## Push/Pull operations hooks protocol, available options are:
545 547 ## `pyro4` - using pyro4 server
546 548 ## `http` - using http-rpc backend
547 549 vcs.hooks.protocol = http
548 550
549 551 vcs.server.log_level = debug
550 552 ## Start VCSServer with this instance as a subprocess, usefull for development
551 553 vcs.start_server = true
552 554
553 555 ## List of enabled VCS backends, available options are:
554 556 ## `hg` - mercurial
555 557 ## `git` - git
556 558 ## `svn` - subversion
557 559 vcs.backends = hg, git, svn
558 560
559 561 vcs.connection_timeout = 3600
560 562 ## Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
561 563 ## Available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible
562 564 #vcs.svn.compatible_version = pre-1.8-compatible
563 565
564 566
565 567 ############################################################
566 568 ### Subversion proxy support (mod_dav_svn) ###
567 569 ### Maps RhodeCode repo groups into SVN paths for Apache ###
568 570 ############################################################
569 571 ## Enable or disable the config file generation.
570 572 svn.proxy.generate_config = false
571 573 ## Generate config file with `SVNListParentPath` set to `On`.
572 574 svn.proxy.list_parent_path = true
573 575 ## Set location and file name of generated config file.
574 576 svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
575 577 ## File system path to the directory containing the repositories served by
576 578 ## RhodeCode.
577 579 svn.proxy.parent_path_root = /path/to/repo_store
578 580 ## Used as a prefix to the <Location> block in the generated config file. In
579 581 ## most cases it should be set to `/`.
580 582 svn.proxy.location_root = /
581 583
582 584
583 585 ################################
584 586 ### LOGGING CONFIGURATION ####
585 587 ################################
586 588 [loggers]
587 589 keys = root, routes, rhodecode, sqlalchemy, beaker, pyro4, templates
588 590
589 591 [handlers]
590 592 keys = console, console_sql
591 593
592 594 [formatters]
593 595 keys = generic, color_formatter, color_formatter_sql
594 596
595 597 #############
596 598 ## LOGGERS ##
597 599 #############
598 600 [logger_root]
599 601 level = NOTSET
600 602 handlers = console
601 603
602 604 [logger_routes]
603 605 level = DEBUG
604 606 handlers =
605 607 qualname = routes.middleware
606 608 ## "level = DEBUG" logs the route matched and routing variables.
607 609 propagate = 1
608 610
609 611 [logger_beaker]
610 612 level = DEBUG
611 613 handlers =
612 614 qualname = beaker.container
613 615 propagate = 1
614 616
615 617 [logger_pyro4]
616 618 level = DEBUG
617 619 handlers =
618 620 qualname = Pyro4
619 621 propagate = 1
620 622
621 623 [logger_templates]
622 624 level = INFO
623 625 handlers =
624 626 qualname = pylons.templating
625 627 propagate = 1
626 628
627 629 [logger_rhodecode]
628 630 level = DEBUG
629 631 handlers =
630 632 qualname = rhodecode
631 633 propagate = 1
632 634
633 635 [logger_sqlalchemy]
634 636 level = INFO
635 637 handlers = console_sql
636 638 qualname = sqlalchemy.engine
637 639 propagate = 0
638 640
639 641 ##############
640 642 ## HANDLERS ##
641 643 ##############
642 644
643 645 [handler_console]
644 646 class = StreamHandler
645 647 args = (sys.stderr,)
646 648 level = DEBUG
647 649 formatter = color_formatter
648 650
649 651 [handler_console_sql]
650 652 class = StreamHandler
651 653 args = (sys.stderr,)
652 654 level = DEBUG
653 655 formatter = color_formatter_sql
654 656
655 657 ################
656 658 ## FORMATTERS ##
657 659 ################
658 660
659 661 [formatter_generic]
660 662 class = rhodecode.lib.logging_formatter.Pyro4AwareFormatter
661 663 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
662 664 datefmt = %Y-%m-%d %H:%M:%S
663 665
664 666 [formatter_color_formatter]
665 667 class = rhodecode.lib.logging_formatter.ColorFormatter
666 668 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
667 669 datefmt = %Y-%m-%d %H:%M:%S
668 670
669 671 [formatter_color_formatter_sql]
670 672 class = rhodecode.lib.logging_formatter.ColorFormatterSql
671 673 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
672 674 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,641 +1,643 b''
1 1
2 2
3 3 ################################################################################
4 4 ## RHODECODE ENTERPRISE CONFIGURATION ##
5 5 # The %(here)s variable will be replaced with the parent directory of this file#
6 6 ################################################################################
7 7
8 8 [DEFAULT]
9 9 debug = true
10 10
11 11 ################################################################################
12 12 ## EMAIL CONFIGURATION ##
13 13 ## Uncomment and replace with the email address which should receive ##
14 14 ## any error reports after an application crash ##
15 15 ## Additionally these settings will be used by the RhodeCode mailing system ##
16 16 ################################################################################
17 17
18 18 ## prefix all emails subjects with given prefix, helps filtering out emails
19 19 #email_prefix = [RhodeCode]
20 20
21 21 ## email FROM address all mails will be sent
22 22 #app_email_from = rhodecode-noreply@localhost
23 23
24 24 ## Uncomment and replace with the address which should receive any error report
25 25 ## note: using appenlight for error handling doesn't need this to be uncommented
26 26 #email_to = admin@localhost
27 27
28 28 ## in case of Application errors, sent an error email form
29 29 #error_email_from = rhodecode_error@localhost
30 30
31 31 ## additional error message to be send in case of server crash
32 32 #error_message =
33 33
34 34
35 35 #smtp_server = mail.server.com
36 36 #smtp_username =
37 37 #smtp_password =
38 38 #smtp_port =
39 39 #smtp_use_tls = false
40 40 #smtp_use_ssl = true
41 41 ## Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
42 42 #smtp_auth =
43 43
44 44 [server:main]
45 45 ## COMMON ##
46 46 host = 127.0.0.1
47 47 port = 5000
48 48
49 49 ##################################
50 50 ## WAITRESS WSGI SERVER ##
51 51 ## Recommended for Development ##
52 52 ##################################
53 53
54 54 #use = egg:waitress#main
55 55 ## number of worker threads
56 56 #threads = 5
57 57 ## MAX BODY SIZE 100GB
58 58 #max_request_body_size = 107374182400
59 59 ## Use poll instead of select, fixes file descriptors limits problems.
60 60 ## May not work on old windows systems.
61 61 #asyncore_use_poll = true
62 62
63 63
64 64 ##########################
65 65 ## GUNICORN WSGI SERVER ##
66 66 ##########################
67 67 ## run with gunicorn --log-config <inifile.ini> --paste <inifile.ini>
68 68
69 69 use = egg:gunicorn#main
70 70 ## Sets the number of process workers. You must set `instance_id = *`
71 71 ## when this option is set to more than one worker, recommended
72 72 ## value is (2 * NUMBER_OF_CPUS + 1), eg 2CPU = 5 workers
73 73 ## The `instance_id = *` must be set in the [app:main] section below
74 74 workers = 2
75 75 ## number of threads for each of the worker, must be set to 1 for gevent
76 76 ## generally recommened to be at 1
77 77 #threads = 1
78 78 ## process name
79 79 proc_name = rhodecode
80 80 ## type of worker class, one of sync, gevent
81 81 ## recommended for bigger setup is using of of other than sync one
82 82 worker_class = sync
83 83 ## The maximum number of simultaneous clients. Valid only for Gevent
84 84 #worker_connections = 10
85 85 ## max number of requests that worker will handle before being gracefully
86 86 ## restarted, could prevent memory leaks
87 87 max_requests = 1000
88 88 max_requests_jitter = 30
89 89 ## amount of time a worker can spend with handling a request before it
90 90 ## gets killed and restarted. Set to 6hrs
91 91 timeout = 21600
92 92
93 93
94 94 ## prefix middleware for RhodeCode, disables force_https flag.
95 95 ## recommended when using proxy setup.
96 96 ## allows to set RhodeCode under a prefix in server.
97 97 ## eg https://server.com/<prefix>. Enable `filter-with =` option below as well.
98 98 ## optionally set prefix like: `prefix = /<your-prefix>`
99 99 [filter:proxy-prefix]
100 100 use = egg:PasteDeploy#prefix
101 101 prefix = /
102 102
103 103 [app:main]
104 104 use = egg:rhodecode-enterprise-ce
105 105
106 106 ## enable proxy prefix middleware, defined above
107 107 #filter-with = proxy-prefix
108 108
109 109 ## encryption key used to encrypt social plugin tokens,
110 110 ## remote_urls with credentials etc, if not set it defaults to
111 111 ## `beaker.session.secret`
112 112 #rhodecode.encrypted_values.secret =
113 113
114 114 ## decryption strict mode (enabled by default). It controls if decryption raises
115 115 ## `SignatureVerificationError` in case of wrong key, or damaged encryption data.
116 116 #rhodecode.encrypted_values.strict = false
117 117
118 118 ## return gzipped responses from Rhodecode (static files/application)
119 119 gzip_responses = false
120 120
121 121 ## autogenerate javascript routes file on startup
122 122 generate_js_files = false
123 123
124 124 ## Optional Languages
125 125 ## en(default), be, de, es, fr, it, ja, pl, pt, ru, zh
126 126 lang = en
127 127
128 128 ## perform a full repository scan on each server start, this should be
129 129 ## set to false after first startup, to allow faster server restarts.
130 130 startup.import_repos = false
131 131
132 132 ## Uncomment and set this path to use archive download cache.
133 133 ## Once enabled, generated archives will be cached at this location
134 134 ## and served from the cache during subsequent requests for the same archive of
135 135 ## the repository.
136 136 #archive_cache_dir = /tmp/tarballcache
137 137
138 138 ## change this to unique ID for security
139 139 app_instance_uuid = rc-production
140 140
141 141 ## cut off limit for large diffs (size in bytes)
142 142 cut_off_limit_diff = 1024000
143 143 cut_off_limit_file = 256000
144 144
145 145 ## use cache version of scm repo everywhere
146 146 vcs_full_cache = true
147 147
148 148 ## force https in RhodeCode, fixes https redirects, assumes it's always https
149 149 ## Normally this is controlled by proper http flags sent from http server
150 150 force_https = false
151 151
152 152 ## use Strict-Transport-Security headers
153 153 use_htsts = false
154 154
155 155 ## number of commits stats will parse on each iteration
156 156 commit_parse_limit = 25
157 157
158 158 ## git rev filter option, --all is the default filter, if you need to
159 159 ## hide all refs in changelog switch this to --branches --tags
160 160 git_rev_filter = --branches --tags
161 161
162 162 # Set to true if your repos are exposed using the dumb protocol
163 163 git_update_server_info = false
164 164
165 165 ## RSS/ATOM feed options
166 166 rss_cut_off_limit = 256000
167 167 rss_items_per_page = 10
168 168 rss_include_diff = false
169 169
170 170 ## gist URL alias, used to create nicer urls for gist. This should be an
171 171 ## url that does rewrites to _admin/gists/<gistid>.
172 172 ## example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
173 173 ## RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/<gistid>
174 174 gist_alias_url =
175 175
176 176 ## List of controllers (using glob pattern syntax) that AUTH TOKENS could be
177 177 ## used for access.
178 178 ## Adding ?auth_token = <token> to the url authenticates this request as if it
179 179 ## came from the the logged in user who own this authentication token.
180 180 ##
181 181 ## Syntax is <ControllerClass>:<function_pattern>.
182 182 ## To enable access to raw_files put `FilesController:raw`.
183 183 ## To enable access to patches add `ChangesetController:changeset_patch`.
184 184 ## The list should be "," separated and on a single line.
185 185 ##
186 186 ## Recommended controllers to enable:
187 187 # ChangesetController:changeset_patch,
188 188 # ChangesetController:changeset_raw,
189 189 # FilesController:raw,
190 190 # FilesController:archivefile,
191 191 # GistsController:*,
192 192 api_access_controllers_whitelist =
193 193
194 194 ## default encoding used to convert from and to unicode
195 195 ## can be also a comma separated list of encoding in case of mixed encodings
196 196 default_encoding = UTF-8
197 197
198 198 ## instance-id prefix
199 199 ## a prefix key for this instance used for cache invalidation when running
200 200 ## multiple instances of rhodecode, make sure it's globally unique for
201 201 ## all running rhodecode instances. Leave empty if you don't use it
202 202 instance_id =
203 203
204 204 ## Fallback authentication plugin. Set this to a plugin ID to force the usage
205 205 ## of an authentication plugin also if it is disabled by it's settings.
206 206 ## This could be useful if you are unable to log in to the system due to broken
207 207 ## authentication settings. Then you can enable e.g. the internal rhodecode auth
208 208 ## module to log in again and fix the settings.
209 209 ##
210 210 ## Available builtin plugin IDs (hash is part of the ID):
211 211 ## egg:rhodecode-enterprise-ce#rhodecode
212 212 ## egg:rhodecode-enterprise-ce#pam
213 213 ## egg:rhodecode-enterprise-ce#ldap
214 214 ## egg:rhodecode-enterprise-ce#jasig_cas
215 215 ## egg:rhodecode-enterprise-ce#headers
216 216 ## egg:rhodecode-enterprise-ce#crowd
217 217 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
218 218
219 219 ## alternative return HTTP header for failed authentication. Default HTTP
220 220 ## response is 401 HTTPUnauthorized. Currently HG clients have troubles with
221 221 ## handling that causing a series of failed authentication calls.
222 222 ## Set this variable to 403 to return HTTPForbidden, or any other HTTP code
223 223 ## This will be served instead of default 401 on bad authnetication
224 224 auth_ret_code =
225 225
226 226 ## use special detection method when serving auth_ret_code, instead of serving
227 227 ## ret_code directly, use 401 initially (Which triggers credentials prompt)
228 228 ## and then serve auth_ret_code to clients
229 229 auth_ret_code_detection = false
230 230
231 231 ## locking return code. When repository is locked return this HTTP code. 2XX
232 232 ## codes don't break the transactions while 4XX codes do
233 233 lock_ret_code = 423
234 234
235 235 ## allows to change the repository location in settings page
236 236 allow_repo_location_change = true
237 237
238 238 ## allows to setup custom hooks in settings page
239 239 allow_custom_hooks_settings = true
240 240
241 241 ## generated license token, goto license page in RhodeCode settings to obtain
242 242 ## new token
243 243 license_token =
244 244
245 245 ## supervisor connection uri, for managing supervisor and logs.
246 246 supervisor.uri =
247 247 ## supervisord group name/id we only want this RC instance to handle
248 248 supervisor.group_id = prod
249 249
250 250 ## Display extended labs settings
251 251 labs_settings_active = true
252 252
253 253 ####################################
254 254 ### CELERY CONFIG ####
255 255 ####################################
256 256 use_celery = false
257 257 broker.host = localhost
258 258 broker.vhost = rabbitmqhost
259 259 broker.port = 5672
260 260 broker.user = rabbitmq
261 261 broker.password = qweqwe
262 262
263 263 celery.imports = rhodecode.lib.celerylib.tasks
264 264
265 265 celery.result.backend = amqp
266 266 celery.result.dburi = amqp://
267 267 celery.result.serialier = json
268 268
269 269 #celery.send.task.error.emails = true
270 270 #celery.amqp.task.result.expires = 18000
271 271
272 272 celeryd.concurrency = 2
273 273 #celeryd.log.file = celeryd.log
274 274 celeryd.log.level = debug
275 275 celeryd.max.tasks.per.child = 1
276 276
277 277 ## tasks will never be sent to the queue, but executed locally instead.
278 278 celery.always.eager = false
279 279
280 280 ####################################
281 281 ### BEAKER CACHE ####
282 282 ####################################
283 283 # default cache dir for templates. Putting this into a ramdisk
284 284 ## can boost performance, eg. %(here)s/data_ramdisk
285 285 cache_dir = %(here)s/data
286 286
287 287 ## locking and default file storage for Beaker. Putting this into a ramdisk
288 288 ## can boost performance, eg. %(here)s/data_ramdisk/cache/beaker_data
289 289 beaker.cache.data_dir = %(here)s/data/cache/beaker_data
290 290 beaker.cache.lock_dir = %(here)s/data/cache/beaker_lock
291 291
292 292 beaker.cache.regions = super_short_term, short_term, long_term, sql_cache_short, auth_plugins, repo_cache_long
293 293
294 294 beaker.cache.super_short_term.type = memory
295 295 beaker.cache.super_short_term.expire = 10
296 296 beaker.cache.super_short_term.key_length = 256
297 297
298 298 beaker.cache.short_term.type = memory
299 299 beaker.cache.short_term.expire = 60
300 300 beaker.cache.short_term.key_length = 256
301 301
302 302 beaker.cache.long_term.type = memory
303 303 beaker.cache.long_term.expire = 36000
304 304 beaker.cache.long_term.key_length = 256
305 305
306 306 beaker.cache.sql_cache_short.type = memory
307 307 beaker.cache.sql_cache_short.expire = 10
308 308 beaker.cache.sql_cache_short.key_length = 256
309 309
310 310 ## default is memory cache, configure only if required
311 311 ## using multi-node or multi-worker setup
312 312 #beaker.cache.auth_plugins.type = ext:database
313 313 #beaker.cache.auth_plugins.lock_dir = %(here)s/data/cache/auth_plugin_lock
314 314 #beaker.cache.auth_plugins.url = postgresql://postgres:secret@localhost/rhodecode
315 315 #beaker.cache.auth_plugins.url = mysql://root:secret@127.0.0.1/rhodecode
316 316 #beaker.cache.auth_plugins.sa.pool_recycle = 3600
317 317 #beaker.cache.auth_plugins.sa.pool_size = 10
318 318 #beaker.cache.auth_plugins.sa.max_overflow = 0
319 319
320 320 beaker.cache.repo_cache_long.type = memorylru_base
321 321 beaker.cache.repo_cache_long.max_items = 4096
322 322 beaker.cache.repo_cache_long.expire = 2592000
323 323
324 324 ## default is memorylru_base cache, configure only if required
325 325 ## using multi-node or multi-worker setup
326 326 #beaker.cache.repo_cache_long.type = ext:memcached
327 327 #beaker.cache.repo_cache_long.url = localhost:11211
328 328 #beaker.cache.repo_cache_long.expire = 1209600
329 329 #beaker.cache.repo_cache_long.key_length = 256
330 330
331 331 ####################################
332 332 ### BEAKER SESSION ####
333 333 ####################################
334 334
335 335 ## .session.type is type of storage options for the session, current allowed
336 336 ## types are file, ext:memcached, ext:database, and memory (default).
337 337 beaker.session.type = file
338 338 beaker.session.data_dir = %(here)s/data/sessions/data
339 339
340 340 ## db based session, fast, and allows easy management over logged in users
341 341 #beaker.session.type = ext:database
342 342 #beaker.session.table_name = db_session
343 343 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
344 344 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
345 345 #beaker.session.sa.pool_recycle = 3600
346 346 #beaker.session.sa.echo = false
347 347
348 348 beaker.session.key = rhodecode
349 349 beaker.session.secret = production-rc-uytcxaz
350 350 beaker.session.lock_dir = %(here)s/data/sessions/lock
351 351
352 352 ## Secure encrypted cookie. Requires AES and AES python libraries
353 353 ## you must disable beaker.session.secret to use this
354 354 #beaker.session.encrypt_key = <key_for_encryption>
355 355 #beaker.session.validate_key = <validation_key>
356 356
357 357 ## sets session as invalid(also logging out user) if it haven not been
358 358 ## accessed for given amount of time in seconds
359 359 beaker.session.timeout = 2592000
360 360 beaker.session.httponly = true
361 361 ## Path to use for the cookie.
362 362 #beaker.session.cookie_path = /<your-prefix>
363 363
364 364 ## uncomment for https secure cookie
365 365 beaker.session.secure = false
366 366
367 367 ## auto save the session to not to use .save()
368 368 beaker.session.auto = false
369 369
370 370 ## default cookie expiration time in seconds, set to `true` to set expire
371 371 ## at browser close
372 372 #beaker.session.cookie_expires = 3600
373 373
374 374 ###################################
375 375 ## SEARCH INDEXING CONFIGURATION ##
376 376 ###################################
377 377 ## Full text search indexer is available in rhodecode-tools under
378 378 ## `rhodecode-tools index` command
379 379
380 380 # WHOOSH Backend, doesn't require additional services to run
381 381 # it works good with few dozen repos
382 382 search.module = rhodecode.lib.index.whoosh
383 383 search.location = %(here)s/data/index
384 384
385 385 ########################################
386 386 ### CHANNELSTREAM CONFIG ####
387 387 ########################################
388 388 ## channelstream enables persistent connections and live notification
389 389 ## in the system. It's also used by the chat system
390 390
391 391 channelstream.enabled = false
392 392 ## location of channelstream server on the backend
393 393 channelstream.server = 127.0.0.1:9800
394 394 ## location of the channelstream server from outside world
395 395 ## most likely this would be an http server special backend URL, that handles
396 396 ## websocket connections see nginx example for config
397 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
397 # channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
398 ## proxy path that can be used by http daemons for exposing channelstream
399 # channelstream.proxy_path = /_channelstream
398 400 channelstream.secret = secret
399 401 channelstream.history.location = %(here)s/channelstream_history
400 402
401 403
402 404 ###################################
403 405 ## APPENLIGHT CONFIG ##
404 406 ###################################
405 407
406 408 ## Appenlight is tailored to work with RhodeCode, see
407 409 ## http://appenlight.com for details how to obtain an account
408 410
409 411 ## appenlight integration enabled
410 412 appenlight = false
411 413
412 414 appenlight.server_url = https://api.appenlight.com
413 415 appenlight.api_key = YOUR_API_KEY
414 416 #appenlight.transport_config = https://api.appenlight.com?threaded=1&timeout=5
415 417
416 418 # used for JS client
417 419 appenlight.api_public_key = YOUR_API_PUBLIC_KEY
418 420
419 421 ## TWEAK AMOUNT OF INFO SENT HERE
420 422
421 423 ## enables 404 error logging (default False)
422 424 appenlight.report_404 = false
423 425
424 426 ## time in seconds after request is considered being slow (default 1)
425 427 appenlight.slow_request_time = 1
426 428
427 429 ## record slow requests in application
428 430 ## (needs to be enabled for slow datastore recording and time tracking)
429 431 appenlight.slow_requests = true
430 432
431 433 ## enable hooking to application loggers
432 434 appenlight.logging = true
433 435
434 436 ## minimum log level for log capture
435 437 appenlight.logging.level = WARNING
436 438
437 439 ## send logs only from erroneous/slow requests
438 440 ## (saves API quota for intensive logging)
439 441 appenlight.logging_on_error = false
440 442
441 443 ## list of additonal keywords that should be grabbed from environ object
442 444 ## can be string with comma separated list of words in lowercase
443 445 ## (by default client will always send following info:
444 446 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
445 447 ## start with HTTP* this list be extended with additional keywords here
446 448 appenlight.environ_keys_whitelist =
447 449
448 450 ## list of keywords that should be blanked from request object
449 451 ## can be string with comma separated list of words in lowercase
450 452 ## (by default client will always blank keys that contain following words
451 453 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
452 454 ## this list be extended with additional keywords set here
453 455 appenlight.request_keys_blacklist =
454 456
455 457 ## list of namespaces that should be ignores when gathering log entries
456 458 ## can be string with comma separated list of namespaces
457 459 ## (by default the client ignores own entries: appenlight_client.client)
458 460 appenlight.log_namespace_blacklist =
459 461
460 462
461 463 ################################################################################
462 464 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
463 465 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
464 466 ## execute malicious code after an exception is raised. ##
465 467 ################################################################################
466 468 set debug = false
467 469
468 470
469 471 #########################################################
470 472 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
471 473 #########################################################
472 474 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
473 475 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
474 476 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode
475 477 sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
476 478
477 479 # see sqlalchemy docs for other advanced settings
478 480
479 481 ## print the sql statements to output
480 482 sqlalchemy.db1.echo = false
481 483 ## recycle the connections after this ammount of seconds
482 484 sqlalchemy.db1.pool_recycle = 3600
483 485 sqlalchemy.db1.convert_unicode = true
484 486
485 487 ## the number of connections to keep open inside the connection pool.
486 488 ## 0 indicates no limit
487 489 #sqlalchemy.db1.pool_size = 5
488 490
489 491 ## the number of connections to allow in connection pool "overflow", that is
490 492 ## connections that can be opened above and beyond the pool_size setting,
491 493 ## which defaults to five.
492 494 #sqlalchemy.db1.max_overflow = 10
493 495
494 496
495 497 ##################
496 498 ### VCS CONFIG ###
497 499 ##################
498 500 vcs.server.enable = true
499 501 vcs.server = localhost:9900
500 502
501 503 ## Web server connectivity protocol, responsible for web based VCS operatations
502 504 ## Available protocols are:
503 505 ## `pyro4` - using pyro4 server
504 506 ## `http` - using http-rpc backend
505 507 #vcs.server.protocol = http
506 508
507 509 ## Push/Pull operations protocol, available options are:
508 510 ## `pyro4` - using pyro4 server
509 511 ## `rhodecode.lib.middleware.utils.scm_app_http` - Http based, recommended
510 512 ## `vcsserver.scm_app` - internal app (EE only)
511 513 #vcs.scm_app_implementation = rhodecode.lib.middleware.utils.scm_app_http
512 514
513 515 ## Push/Pull operations hooks protocol, available options are:
514 516 ## `pyro4` - using pyro4 server
515 517 ## `http` - using http-rpc backend
516 518 #vcs.hooks.protocol = http
517 519
518 520 vcs.server.log_level = info
519 521 ## Start VCSServer with this instance as a subprocess, usefull for development
520 522 vcs.start_server = false
521 523
522 524 ## List of enabled VCS backends, available options are:
523 525 ## `hg` - mercurial
524 526 ## `git` - git
525 527 ## `svn` - subversion
526 528 vcs.backends = hg, git, svn
527 529
528 530 vcs.connection_timeout = 3600
529 531 ## Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
530 532 ## Available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible
531 533 #vcs.svn.compatible_version = pre-1.8-compatible
532 534
533 535
534 536 ############################################################
535 537 ### Subversion proxy support (mod_dav_svn) ###
536 538 ### Maps RhodeCode repo groups into SVN paths for Apache ###
537 539 ############################################################
538 540 ## Enable or disable the config file generation.
539 541 svn.proxy.generate_config = false
540 542 ## Generate config file with `SVNListParentPath` set to `On`.
541 543 svn.proxy.list_parent_path = true
542 544 ## Set location and file name of generated config file.
543 545 svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
544 546 ## File system path to the directory containing the repositories served by
545 547 ## RhodeCode.
546 548 svn.proxy.parent_path_root = /path/to/repo_store
547 549 ## Used as a prefix to the <Location> block in the generated config file. In
548 550 ## most cases it should be set to `/`.
549 551 svn.proxy.location_root = /
550 552
551 553
552 554 ################################
553 555 ### LOGGING CONFIGURATION ####
554 556 ################################
555 557 [loggers]
556 558 keys = root, routes, rhodecode, sqlalchemy, beaker, pyro4, templates
557 559
558 560 [handlers]
559 561 keys = console, console_sql
560 562
561 563 [formatters]
562 564 keys = generic, color_formatter, color_formatter_sql
563 565
564 566 #############
565 567 ## LOGGERS ##
566 568 #############
567 569 [logger_root]
568 570 level = NOTSET
569 571 handlers = console
570 572
571 573 [logger_routes]
572 574 level = DEBUG
573 575 handlers =
574 576 qualname = routes.middleware
575 577 ## "level = DEBUG" logs the route matched and routing variables.
576 578 propagate = 1
577 579
578 580 [logger_beaker]
579 581 level = DEBUG
580 582 handlers =
581 583 qualname = beaker.container
582 584 propagate = 1
583 585
584 586 [logger_pyro4]
585 587 level = DEBUG
586 588 handlers =
587 589 qualname = Pyro4
588 590 propagate = 1
589 591
590 592 [logger_templates]
591 593 level = INFO
592 594 handlers =
593 595 qualname = pylons.templating
594 596 propagate = 1
595 597
596 598 [logger_rhodecode]
597 599 level = DEBUG
598 600 handlers =
599 601 qualname = rhodecode
600 602 propagate = 1
601 603
602 604 [logger_sqlalchemy]
603 605 level = INFO
604 606 handlers = console_sql
605 607 qualname = sqlalchemy.engine
606 608 propagate = 0
607 609
608 610 ##############
609 611 ## HANDLERS ##
610 612 ##############
611 613
612 614 [handler_console]
613 615 class = StreamHandler
614 616 args = (sys.stderr,)
615 617 level = INFO
616 618 formatter = generic
617 619
618 620 [handler_console_sql]
619 621 class = StreamHandler
620 622 args = (sys.stderr,)
621 623 level = WARN
622 624 formatter = generic
623 625
624 626 ################
625 627 ## FORMATTERS ##
626 628 ################
627 629
628 630 [formatter_generic]
629 631 class = rhodecode.lib.logging_formatter.Pyro4AwareFormatter
630 632 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
631 633 datefmt = %Y-%m-%d %H:%M:%S
632 634
633 635 [formatter_color_formatter]
634 636 class = rhodecode.lib.logging_formatter.ColorFormatter
635 637 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
636 638 datefmt = %Y-%m-%d %H:%M:%S
637 639
638 640 [formatter_color_formatter_sql]
639 641 class = rhodecode.lib.logging_formatter.ColorFormatterSql
640 642 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
641 643 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,81 +1,88 b''
1 1 # -*- coding: utf-8 -*-
2 2
3 3 # Copyright (C) 2010-2016 RhodeCode GmbH
4 4 #
5 5 # This program is free software: you can redistribute it and/or modify
6 6 # it under the terms of the GNU Affero General Public License, version 3
7 7 # (only), as published by the Free Software Foundation.
8 8 #
9 9 # This program is distributed in the hope that it will be useful,
10 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 12 # GNU General Public License for more details.
13 13 #
14 14 # You should have received a copy of the GNU Affero General Public License
15 15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16 16 #
17 17 # This program is dual-licensed. If you wish to learn more about the
18 18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20 20
21 21 import os
22 22
23 23 from pyramid.settings import asbool
24 24
25 25 from rhodecode.config.routing import ADMIN_PREFIX
26 26 from rhodecode.lib.ext_json import json
27 27
28 28
29 29 def url_gen(request):
30 registry = request.registry
31 longpoll_url = registry.settings.get('channelstream.longpoll_url', '')
32 ws_url = registry.settings.get('channelstream.ws_url', '')
33 proxy_url = request.route_url('channelstream_proxy')
30 34 urls = {
31 'connect': request.route_url('channelstream_connect'),
32 'subscribe': request.route_url('channelstream_subscribe'),
33 'longpoll': request.registry.settings.get('channelstream.longpoll_url', ''),
34 'ws': request.registry.settings.get('channelstream.ws_url', '')
35 'connect': request.route_path('channelstream_connect'),
36 'subscribe': request.route_path('channelstream_subscribe'),
37 'longpoll': longpoll_url or proxy_url,
38 'ws': ws_url or proxy_url.replace('http', 'ws')
35 39 }
36 40 return json.dumps(urls)
37 41
38 42
39 43 PLUGIN_DEFINITION = {
40 44 'name': 'channelstream',
41 45 'config': {
42 46 'javascript': [],
43 47 'css': [],
44 48 'template_hooks': {
45 49 'plugin_init_template': 'rhodecode:templates/channelstream/plugin_init.html'
46 50 },
47 51 'url_gen': url_gen,
48 52 'static': None,
49 53 'enabled': False,
50 54 'server': '',
51 55 'secret': ''
52 56 }
53 57 }
54 58
55 59
56 60 def includeme(config):
57 61 settings = config.registry.settings
58 62 PLUGIN_DEFINITION['config']['enabled'] = asbool(
59 63 settings.get('channelstream.enabled'))
60 64 PLUGIN_DEFINITION['config']['server'] = settings.get(
61 65 'channelstream.server', '')
62 66 PLUGIN_DEFINITION['config']['secret'] = settings.get(
63 67 'channelstream.secret', '')
64 68 PLUGIN_DEFINITION['config']['history.location'] = settings.get(
65 69 'channelstream.history.location', '')
66 70 config.register_rhodecode_plugin(
67 71 PLUGIN_DEFINITION['name'],
68 72 PLUGIN_DEFINITION['config']
69 73 )
70 74 # create plugin history location
71 75 history_dir = PLUGIN_DEFINITION['config']['history.location']
72 76 if history_dir and not os.path.exists(history_dir):
73 77 os.makedirs(history_dir, 0750)
74 78
75 79 config.add_route(
76 80 name='channelstream_connect',
77 81 pattern=ADMIN_PREFIX + '/channelstream/connect')
78 82 config.add_route(
79 83 name='channelstream_subscribe',
80 84 pattern=ADMIN_PREFIX + '/channelstream/subscribe')
85 config.add_route(
86 name='channelstream_proxy',
87 pattern=settings.get('channelstream.proxy_path') or '/_channelstream')
81 88 config.scan('rhodecode.channelstream')
General Comments 0
You need to be logged in to leave comments. Login now