##// END OF EJS Templates
binaries: cleanup new upcomming rc-* commands that will replace paster * commands from pylons
marcink -
r2119:065ff5ed default
parent child Browse files
Show More
@@ -0,0 +1,61 b''
1 # -*- coding: utf-8 -*-
2
3 # Copyright (C) 2016-2017 RhodeCode GmbH
4 #
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU Affero General Public License, version 3
7 # (only), as published by the Free Software Foundation.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU Affero General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16 #
17 # This program is dual-licensed. If you wish to learn more about the
18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20
21 import click
22
23 from pyramid.paster import bootstrap
24 from pyramid.request import Request
25 import pyramid.paster
26
27 # imports, used in ipython shell
28 import os
29 import sys
30 import time
31 import shutil
32 import datetime
33 from rhodecode.model.db import *
34
35 welcome_banner = """Welcome to RhodeCode iShell.
36 Type `exit` to exit the shell.
37 iShell is interactive shell to interact directly with the
38 internal RhodeCode APIs. You can rescue your lost password,
39 or reset some user/system settings.
40 """
41
42
43 @click.command()
44 @click.argument('ini_path', type=click.Path(exists=True))
45 def main(ini_path):
46 pyramid.paster.setup_logging(ini_path)
47
48 request = Request.blank('/', base_url='https://rhodecode-app.com/')
49 with bootstrap(ini_path, request=request) as env:
50
51 try:
52 from IPython import embed
53 from traitlets.config import Config
54 cfg = Config()
55 cfg.InteractiveShellEmbed.confirm_exit = False
56 embed(config=cfg, banner1=welcome_banner)
57 except ImportError:
58 print('ipython installation required for ishell')
59 sys.exit(-1)
60
61
@@ -1,739 +1,739 b''
1 1
2 2
3 3 ################################################################################
4 4 ## RHODECODE COMMUNITY EDITION 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 rhodecode.ini --paste rhodecode.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.
95 95 ## recommended when using proxy setup.
96 96 ## allows to set RhodeCode under a prefix in server.
97 97 ## eg https://server.com/custom_prefix. Enable `filter-with =` option below as well.
98 98 ## And set your prefix like: `prefix = /custom_prefix`
99 99 ## be sure to also set beaker.session.cookie_path = /custom_prefix if you need
100 100 ## to make your cookies only work on prefix url
101 101 [filter:proxy-prefix]
102 102 use = egg:PasteDeploy#prefix
103 103 prefix = /
104 104
105 105 [app:main]
106 106 use = egg:rhodecode-enterprise-ce
107 107
108 108 ## enable proxy prefix middleware, defined above
109 109 #filter-with = proxy-prefix
110 110
111 111 # During development the we want to have the debug toolbar enabled
112 112 pyramid.includes =
113 113 pyramid_debugtoolbar
114 114 rhodecode.utils.debugtoolbar
115 115 rhodecode.lib.middleware.request_wrapper
116 116
117 117 pyramid.reload_templates = true
118 118
119 119 debugtoolbar.hosts = 0.0.0.0/0
120 120 debugtoolbar.exclude_prefixes =
121 121 /css
122 122 /fonts
123 123 /images
124 124 /js
125 125
126 126 ## RHODECODE PLUGINS ##
127 127 rhodecode.includes =
128 128 rhodecode.api
129 129
130 130
131 131 # api prefix url
132 132 rhodecode.api.url = /_admin/api
133 133
134 134
135 135 ## END RHODECODE PLUGINS ##
136 136
137 137 ## encryption key used to encrypt social plugin tokens,
138 138 ## remote_urls with credentials etc, if not set it defaults to
139 139 ## `beaker.session.secret`
140 140 #rhodecode.encrypted_values.secret =
141 141
142 142 ## decryption strict mode (enabled by default). It controls if decryption raises
143 143 ## `SignatureVerificationError` in case of wrong key, or damaged encryption data.
144 144 #rhodecode.encrypted_values.strict = false
145 145
146 146 ## return gzipped responses from Rhodecode (static files/application)
147 147 gzip_responses = false
148 148
149 149 ## autogenerate javascript routes file on startup
150 150 generate_js_files = false
151 151
152 152 ## Optional Languages
153 153 ## en(default), be, de, es, fr, it, ja, pl, pt, ru, zh
154 154 lang = en
155 155
156 156 ## perform a full repository scan on each server start, this should be
157 157 ## set to false after first startup, to allow faster server restarts.
158 158 startup.import_repos = false
159 159
160 160 ## Uncomment and set this path to use archive download cache.
161 161 ## Once enabled, generated archives will be cached at this location
162 162 ## and served from the cache during subsequent requests for the same archive of
163 163 ## the repository.
164 164 #archive_cache_dir = /tmp/tarballcache
165 165
166 166 ## change this to unique ID for security
167 167 app_instance_uuid = rc-production
168 168
169 169 ## cut off limit for large diffs (size in bytes). If overall diff size on
170 170 ## commit, or pull request exceeds this limit this diff will be displayed
171 171 ## partially. E.g 512000 == 512Kb
172 172 cut_off_limit_diff = 512000
173 173
174 174 ## cut off limit for large files inside diffs (size in bytes). Each individual
175 175 ## file inside diff which exceeds this limit will be displayed partially.
176 176 ## E.g 128000 == 128Kb
177 177 cut_off_limit_file = 128000
178 178
179 179 ## use cache version of scm repo everywhere
180 180 vcs_full_cache = true
181 181
182 182 ## force https in RhodeCode, fixes https redirects, assumes it's always https
183 183 ## Normally this is controlled by proper http flags sent from http server
184 184 force_https = false
185 185
186 186 ## use Strict-Transport-Security headers
187 187 use_htsts = false
188 188
189 189 ## number of commits stats will parse on each iteration
190 190 commit_parse_limit = 25
191 191
192 192 ## git rev filter option, --all is the default filter, if you need to
193 193 ## hide all refs in changelog switch this to --branches --tags
194 194 git_rev_filter = --branches --tags
195 195
196 196 # Set to true if your repos are exposed using the dumb protocol
197 197 git_update_server_info = false
198 198
199 199 ## RSS/ATOM feed options
200 200 rss_cut_off_limit = 256000
201 201 rss_items_per_page = 10
202 202 rss_include_diff = false
203 203
204 204 ## gist URL alias, used to create nicer urls for gist. This should be an
205 205 ## url that does rewrites to _admin/gists/{gistid}.
206 206 ## example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
207 207 ## RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/{gistid}
208 208 gist_alias_url =
209 209
210 210 ## List of views (using glob pattern syntax) that AUTH TOKENS could be
211 211 ## used for access.
212 212 ## Adding ?auth_token=TOKEN_HASH to the url authenticates this request as if it
213 213 ## came from the the logged in user who own this authentication token.
214 214 ## Additionally @TOKEN syntaxt can be used to bound the view to specific
215 215 ## authentication token. Such view would be only accessible when used together
216 216 ## with this authentication token
217 217 ##
218 218 ## list of all views can be found under `/_admin/permissions/auth_token_access`
219 219 ## The list should be "," separated and on a single line.
220 220 ##
221 221 ## Most common views to enable:
222 222 # RepoCommitsView:repo_commit_download
223 223 # RepoCommitsView:repo_commit_patch
224 224 # RepoCommitsView:repo_commit_raw
225 225 # RepoCommitsView:repo_commit_raw@TOKEN
226 226 # RepoFilesView:repo_files_diff
227 227 # RepoFilesView:repo_archivefile
228 228 # RepoFilesView:repo_file_raw
229 229 # GistView:*
230 230 api_access_controllers_whitelist =
231 231
232 232 ## default encoding used to convert from and to unicode
233 233 ## can be also a comma separated list of encoding in case of mixed encodings
234 234 default_encoding = UTF-8
235 235
236 236 ## instance-id prefix
237 237 ## a prefix key for this instance used for cache invalidation when running
238 238 ## multiple instances of rhodecode, make sure it's globally unique for
239 239 ## all running rhodecode instances. Leave empty if you don't use it
240 240 instance_id =
241 241
242 242 ## Fallback authentication plugin. Set this to a plugin ID to force the usage
243 243 ## of an authentication plugin also if it is disabled by it's settings.
244 244 ## This could be useful if you are unable to log in to the system due to broken
245 245 ## authentication settings. Then you can enable e.g. the internal rhodecode auth
246 246 ## module to log in again and fix the settings.
247 247 ##
248 248 ## Available builtin plugin IDs (hash is part of the ID):
249 249 ## egg:rhodecode-enterprise-ce#rhodecode
250 250 ## egg:rhodecode-enterprise-ce#pam
251 251 ## egg:rhodecode-enterprise-ce#ldap
252 252 ## egg:rhodecode-enterprise-ce#jasig_cas
253 253 ## egg:rhodecode-enterprise-ce#headers
254 254 ## egg:rhodecode-enterprise-ce#crowd
255 255 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
256 256
257 257 ## alternative return HTTP header for failed authentication. Default HTTP
258 258 ## response is 401 HTTPUnauthorized. Currently HG clients have troubles with
259 259 ## handling that causing a series of failed authentication calls.
260 260 ## Set this variable to 403 to return HTTPForbidden, or any other HTTP code
261 261 ## This will be served instead of default 401 on bad authnetication
262 262 auth_ret_code =
263 263
264 264 ## use special detection method when serving auth_ret_code, instead of serving
265 265 ## ret_code directly, use 401 initially (Which triggers credentials prompt)
266 266 ## and then serve auth_ret_code to clients
267 267 auth_ret_code_detection = false
268 268
269 269 ## locking return code. When repository is locked return this HTTP code. 2XX
270 270 ## codes don't break the transactions while 4XX codes do
271 271 lock_ret_code = 423
272 272
273 273 ## allows to change the repository location in settings page
274 274 allow_repo_location_change = true
275 275
276 276 ## allows to setup custom hooks in settings page
277 277 allow_custom_hooks_settings = true
278 278
279 279 ## generated license token, goto license page in RhodeCode settings to obtain
280 280 ## new token
281 281 license_token =
282 282
283 283 ## supervisor connection uri, for managing supervisor and logs.
284 284 supervisor.uri =
285 285 ## supervisord group name/id we only want this RC instance to handle
286 286 supervisor.group_id = dev
287 287
288 288 ## Display extended labs settings
289 289 labs_settings_active = true
290 290
291 291 ####################################
292 292 ### CELERY CONFIG ####
293 293 ####################################
294 294 use_celery = false
295 295 broker.host = localhost
296 296 broker.vhost = rabbitmqhost
297 297 broker.port = 5672
298 298 broker.user = rabbitmq
299 299 broker.password = qweqwe
300 300
301 301 celery.imports = rhodecode.lib.celerylib.tasks
302 302
303 303 celery.result.backend = amqp
304 304 celery.result.dburi = amqp://
305 305 celery.result.serialier = json
306 306
307 307 #celery.send.task.error.emails = true
308 308 #celery.amqp.task.result.expires = 18000
309 309
310 310 celeryd.concurrency = 2
311 311 #celeryd.log.file = celeryd.log
312 312 celeryd.log.level = debug
313 313 celeryd.max.tasks.per.child = 1
314 314
315 315 ## tasks will never be sent to the queue, but executed locally instead.
316 316 celery.always.eager = false
317 317
318 318 ####################################
319 319 ### BEAKER CACHE ####
320 320 ####################################
321 321 # default cache dir for templates. Putting this into a ramdisk
322 322 ## can boost performance, eg. %(here)s/data_ramdisk
323 323 cache_dir = %(here)s/data
324 324
325 325 ## locking and default file storage for Beaker. Putting this into a ramdisk
326 326 ## can boost performance, eg. %(here)s/data_ramdisk/cache/beaker_data
327 327 beaker.cache.data_dir = %(here)s/data/cache/beaker_data
328 328 beaker.cache.lock_dir = %(here)s/data/cache/beaker_lock
329 329
330 330 beaker.cache.regions = super_short_term, short_term, long_term, sql_cache_short, auth_plugins, repo_cache_long
331 331
332 332 beaker.cache.super_short_term.type = memory
333 333 beaker.cache.super_short_term.expire = 10
334 334 beaker.cache.super_short_term.key_length = 256
335 335
336 336 beaker.cache.short_term.type = memory
337 337 beaker.cache.short_term.expire = 60
338 338 beaker.cache.short_term.key_length = 256
339 339
340 340 beaker.cache.long_term.type = memory
341 341 beaker.cache.long_term.expire = 36000
342 342 beaker.cache.long_term.key_length = 256
343 343
344 344 beaker.cache.sql_cache_short.type = memory
345 345 beaker.cache.sql_cache_short.expire = 10
346 346 beaker.cache.sql_cache_short.key_length = 256
347 347
348 348 ## default is memory cache, configure only if required
349 349 ## using multi-node or multi-worker setup
350 350 #beaker.cache.auth_plugins.type = ext:database
351 351 #beaker.cache.auth_plugins.lock_dir = %(here)s/data/cache/auth_plugin_lock
352 352 #beaker.cache.auth_plugins.url = postgresql://postgres:secret@localhost/rhodecode
353 353 #beaker.cache.auth_plugins.url = mysql://root:secret@127.0.0.1/rhodecode
354 354 #beaker.cache.auth_plugins.sa.pool_recycle = 3600
355 355 #beaker.cache.auth_plugins.sa.pool_size = 10
356 356 #beaker.cache.auth_plugins.sa.max_overflow = 0
357 357
358 358 beaker.cache.repo_cache_long.type = memorylru_base
359 359 beaker.cache.repo_cache_long.max_items = 4096
360 360 beaker.cache.repo_cache_long.expire = 2592000
361 361
362 362 ## default is memorylru_base cache, configure only if required
363 363 ## using multi-node or multi-worker setup
364 364 #beaker.cache.repo_cache_long.type = ext:memcached
365 365 #beaker.cache.repo_cache_long.url = localhost:11211
366 366 #beaker.cache.repo_cache_long.expire = 1209600
367 367 #beaker.cache.repo_cache_long.key_length = 256
368 368
369 369 ####################################
370 370 ### BEAKER SESSION ####
371 371 ####################################
372 372
373 373 ## .session.type is type of storage options for the session, current allowed
374 374 ## types are file, ext:memcached, ext:database, and memory (default).
375 375 beaker.session.type = file
376 376 beaker.session.data_dir = %(here)s/data/sessions/data
377 377
378 378 ## db based session, fast, and allows easy management over logged in users
379 379 #beaker.session.type = ext:database
380 380 #beaker.session.table_name = db_session
381 381 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
382 382 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
383 383 #beaker.session.sa.pool_recycle = 3600
384 384 #beaker.session.sa.echo = false
385 385
386 386 beaker.session.key = rhodecode
387 387 beaker.session.secret = develop-rc-uytcxaz
388 388 beaker.session.lock_dir = %(here)s/data/sessions/lock
389 389
390 390 ## Secure encrypted cookie. Requires AES and AES python libraries
391 391 ## you must disable beaker.session.secret to use this
392 392 #beaker.session.encrypt_key = key_for_encryption
393 393 #beaker.session.validate_key = validation_key
394 394
395 395 ## sets session as invalid(also logging out user) if it haven not been
396 396 ## accessed for given amount of time in seconds
397 397 beaker.session.timeout = 2592000
398 398 beaker.session.httponly = true
399 399 ## Path to use for the cookie. Set to prefix if you use prefix middleware
400 400 #beaker.session.cookie_path = /custom_prefix
401 401
402 402 ## uncomment for https secure cookie
403 403 beaker.session.secure = false
404 404
405 405 ## auto save the session to not to use .save()
406 406 beaker.session.auto = false
407 407
408 408 ## default cookie expiration time in seconds, set to `true` to set expire
409 409 ## at browser close
410 410 #beaker.session.cookie_expires = 3600
411 411
412 412 ###################################
413 413 ## SEARCH INDEXING CONFIGURATION ##
414 414 ###################################
415 415 ## Full text search indexer is available in rhodecode-tools under
416 416 ## `rhodecode-tools index` command
417 417
418 418 ## WHOOSH Backend, doesn't require additional services to run
419 419 ## it works good with few dozen repos
420 420 search.module = rhodecode.lib.index.whoosh
421 421 search.location = %(here)s/data/index
422 422
423 423 ########################################
424 424 ### CHANNELSTREAM CONFIG ####
425 425 ########################################
426 426 ## channelstream enables persistent connections and live notification
427 427 ## in the system. It's also used by the chat system
428 428 channelstream.enabled = false
429 429
430 430 ## server address for channelstream server on the backend
431 431 channelstream.server = 127.0.0.1:9800
432 432
433 433 ## location of the channelstream server from outside world
434 434 ## use ws:// for http or wss:// for https. This address needs to be handled
435 435 ## by external HTTP server such as Nginx or Apache
436 436 ## see nginx/apache configuration examples in our docs
437 437 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
438 438 channelstream.secret = secret
439 439 channelstream.history.location = %(here)s/channelstream_history
440 440
441 441 ## Internal application path that Javascript uses to connect into.
442 442 ## If you use proxy-prefix the prefix should be added before /_channelstream
443 443 channelstream.proxy_path = /_channelstream
444 444
445 445
446 446 ###################################
447 447 ## APPENLIGHT CONFIG ##
448 448 ###################################
449 449
450 450 ## Appenlight is tailored to work with RhodeCode, see
451 451 ## http://appenlight.com for details how to obtain an account
452 452
453 453 ## appenlight integration enabled
454 454 appenlight = false
455 455
456 456 appenlight.server_url = https://api.appenlight.com
457 457 appenlight.api_key = YOUR_API_KEY
458 458 #appenlight.transport_config = https://api.appenlight.com?threaded=1&timeout=5
459 459
460 460 # used for JS client
461 461 appenlight.api_public_key = YOUR_API_PUBLIC_KEY
462 462
463 463 ## TWEAK AMOUNT OF INFO SENT HERE
464 464
465 465 ## enables 404 error logging (default False)
466 466 appenlight.report_404 = false
467 467
468 468 ## time in seconds after request is considered being slow (default 1)
469 469 appenlight.slow_request_time = 1
470 470
471 471 ## record slow requests in application
472 472 ## (needs to be enabled for slow datastore recording and time tracking)
473 473 appenlight.slow_requests = true
474 474
475 475 ## enable hooking to application loggers
476 476 appenlight.logging = true
477 477
478 478 ## minimum log level for log capture
479 479 appenlight.logging.level = WARNING
480 480
481 481 ## send logs only from erroneous/slow requests
482 482 ## (saves API quota for intensive logging)
483 483 appenlight.logging_on_error = false
484 484
485 485 ## list of additonal keywords that should be grabbed from environ object
486 486 ## can be string with comma separated list of words in lowercase
487 487 ## (by default client will always send following info:
488 488 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
489 489 ## start with HTTP* this list be extended with additional keywords here
490 490 appenlight.environ_keys_whitelist =
491 491
492 492 ## list of keywords that should be blanked from request object
493 493 ## can be string with comma separated list of words in lowercase
494 494 ## (by default client will always blank keys that contain following words
495 495 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
496 496 ## this list be extended with additional keywords set here
497 497 appenlight.request_keys_blacklist =
498 498
499 499 ## list of namespaces that should be ignores when gathering log entries
500 500 ## can be string with comma separated list of namespaces
501 501 ## (by default the client ignores own entries: appenlight_client.client)
502 502 appenlight.log_namespace_blacklist =
503 503
504 504
505 505 ################################################################################
506 506 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
507 507 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
508 508 ## execute malicious code after an exception is raised. ##
509 509 ################################################################################
510 510 #set debug = false
511 511
512 512
513 513 ##############
514 514 ## STYLING ##
515 515 ##############
516 516 debug_style = true
517 517
518 518 ###########################################
519 519 ### MAIN RHODECODE DATABASE CONFIG ###
520 520 ###########################################
521 521 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
522 522 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
523 523 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode
524 524 sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
525 525
526 526 # see sqlalchemy docs for other advanced settings
527 527
528 528 ## print the sql statements to output
529 529 sqlalchemy.db1.echo = false
530 530 ## recycle the connections after this amount of seconds
531 531 sqlalchemy.db1.pool_recycle = 3600
532 532 sqlalchemy.db1.convert_unicode = true
533 533
534 534 ## the number of connections to keep open inside the connection pool.
535 535 ## 0 indicates no limit
536 536 #sqlalchemy.db1.pool_size = 5
537 537
538 538 ## the number of connections to allow in connection pool "overflow", that is
539 539 ## connections that can be opened above and beyond the pool_size setting,
540 540 ## which defaults to five.
541 541 #sqlalchemy.db1.max_overflow = 10
542 542
543 543
544 544 ##################
545 545 ### VCS CONFIG ###
546 546 ##################
547 547 vcs.server.enable = true
548 548 vcs.server = localhost:9900
549 549
550 550 ## Web server connectivity protocol, responsible for web based VCS operatations
551 551 ## Available protocols are:
552 552 ## `http` - use http-rpc backend (default)
553 553 vcs.server.protocol = http
554 554
555 555 ## Push/Pull operations protocol, available options are:
556 556 ## `http` - use http-rpc backend (default)
557 557 ##
558 558 vcs.scm_app_implementation = http
559 559
560 560 ## Push/Pull operations hooks protocol, available options are:
561 561 ## `http` - use http-rpc backend (default)
562 562 vcs.hooks.protocol = http
563 563
564 564 vcs.server.log_level = debug
565 565 ## Start VCSServer with this instance as a subprocess, usefull for development
566 566 vcs.start_server = true
567 567
568 568 ## List of enabled VCS backends, available options are:
569 569 ## `hg` - mercurial
570 570 ## `git` - git
571 571 ## `svn` - subversion
572 572 vcs.backends = hg, git, svn
573 573
574 574 vcs.connection_timeout = 3600
575 575 ## Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
576 576 ## Available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
577 577 #vcs.svn.compatible_version = pre-1.8-compatible
578 578
579 579
580 580 ############################################################
581 581 ### Subversion proxy support (mod_dav_svn) ###
582 582 ### Maps RhodeCode repo groups into SVN paths for Apache ###
583 583 ############################################################
584 584 ## Enable or disable the config file generation.
585 585 svn.proxy.generate_config = false
586 586 ## Generate config file with `SVNListParentPath` set to `On`.
587 587 svn.proxy.list_parent_path = true
588 588 ## Set location and file name of generated config file.
589 589 svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
590 590 ## Used as a prefix to the `Location` block in the generated config file.
591 591 ## In most cases it should be set to `/`.
592 592 svn.proxy.location_root = /
593 593 ## Command to reload the mod dav svn configuration on change.
594 594 ## Example: `/etc/init.d/apache2 reload`
595 595 #svn.proxy.reload_cmd = /etc/init.d/apache2 reload
596 596 ## If the timeout expires before the reload command finishes, the command will
597 597 ## be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
598 598 #svn.proxy.reload_timeout = 10
599 599
600 600 ############################################################
601 601 ### SSH Support Settings ###
602 602 ############################################################
603 603
604 604 ## Defines if the authorized_keys file should be written on any change of
605 605 ## user ssh keys, setting this to false also disables posibility of adding
606 606 ## ssh keys for users from web interface.
607 607 ssh.generate_authorized_keyfile = false
608 608
609 609 ## Options for ssh, default is `no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding`
610 610 # ssh.authorized_keys_ssh_opts =
611 611
612 612 ## File to generate the authorized keys together with options
613 613 ## It is possible to have multiple key files specified in `sshd_config` e.g.
614 614 ## AuthorizedKeysFile %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode
615 615 ssh.authorized_keys_file_path = ~/.ssh/authorized_keys_rhodecode
616 616
617 617 ## Command to execute the SSH wrapper. The binary is available in the
618 618 ## rhodecode installation directory.
619 ## e.g ~/.rccontrol/community-1/profile/bin/rcssh-wrapper
620 ssh.wrapper_cmd = ~/.rccontrol/community-1/rcssh-wrapper
619 ## e.g ~/.rccontrol/community-1/profile/bin/rc-ssh-wrapper
620 ssh.wrapper_cmd = ~/.rccontrol/community-1/rc-ssh-wrapper
621 621
622 622 ## Allow shell when executing the ssh-wrapper command
623 623 ssh.wrapper_cmd_allow_shell = false
624 624
625 625 ## Enables logging, and detailed output send back to the client. Usefull for
626 626 ## debugging, shouldn't be used in production.
627 627 ssh.enable_debug_logging = false
628 628
629 629 ## API KEY for user who has access to fetch other user permission information
630 630 ## most likely an super-admin account with some IP restrictions.
631 631 ssh.api_key =
632 632
633 633 ## API Host, the server address of RhodeCode instance that the api_key will
634 634 ## access
635 635 ssh.api_host = http://localhost
636 636
637 637 ## Paths to binary executrables, by default they are the names, but we can
638 638 ## override them if we want to use a custom one
639 639 ssh.executable.hg = ~/.rccontrol/vcsserver-1/profile/bin/hg
640 640 ssh.executable.git = ~/.rccontrol/vcsserver-1/profile/bin/git
641 641 ssh.executable.svn = ~/.rccontrol/vcsserver-1/profile/bin/svnserve
642 642
643 643
644 644 ## Dummy marker to add new entries after.
645 645 ## Add any custom entries below. Please don't remove.
646 646 custom.conf = 1
647 647
648 648
649 649 ################################
650 650 ### LOGGING CONFIGURATION ####
651 651 ################################
652 652 [loggers]
653 653 keys = root, routes, rhodecode, sqlalchemy, beaker, templates, ssh_wrapper
654 654
655 655 [handlers]
656 656 keys = console, console_sql
657 657
658 658 [formatters]
659 659 keys = generic, color_formatter, color_formatter_sql
660 660
661 661 #############
662 662 ## LOGGERS ##
663 663 #############
664 664 [logger_root]
665 665 level = NOTSET
666 666 handlers = console
667 667
668 668 [logger_routes]
669 669 level = DEBUG
670 670 handlers =
671 671 qualname = routes.middleware
672 672 ## "level = DEBUG" logs the route matched and routing variables.
673 673 propagate = 1
674 674
675 675 [logger_beaker]
676 676 level = DEBUG
677 677 handlers =
678 678 qualname = beaker.container
679 679 propagate = 1
680 680
681 681 [logger_templates]
682 682 level = INFO
683 683 handlers =
684 684 qualname = pylons.templating
685 685 propagate = 1
686 686
687 687 [logger_rhodecode]
688 688 level = DEBUG
689 689 handlers =
690 690 qualname = rhodecode
691 691 propagate = 1
692 692
693 693 [logger_sqlalchemy]
694 694 level = INFO
695 695 handlers = console_sql
696 696 qualname = sqlalchemy.engine
697 697 propagate = 0
698 698
699 699 [logger_ssh_wrapper]
700 700 level = DEBUG
701 701 handlers =
702 702 qualname = ssh_wrapper
703 703 propagate = 1
704 704
705 705
706 706 ##############
707 707 ## HANDLERS ##
708 708 ##############
709 709
710 710 [handler_console]
711 711 class = StreamHandler
712 712 args = (sys.stderr, )
713 713 level = DEBUG
714 714 formatter = color_formatter
715 715
716 716 [handler_console_sql]
717 717 class = StreamHandler
718 718 args = (sys.stderr, )
719 719 level = DEBUG
720 720 formatter = color_formatter_sql
721 721
722 722 ################
723 723 ## FORMATTERS ##
724 724 ################
725 725
726 726 [formatter_generic]
727 727 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
728 728 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
729 729 datefmt = %Y-%m-%d %H:%M:%S
730 730
731 731 [formatter_color_formatter]
732 732 class = rhodecode.lib.logging_formatter.ColorFormatter
733 733 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
734 734 datefmt = %Y-%m-%d %H:%M:%S
735 735
736 736 [formatter_color_formatter_sql]
737 737 class = rhodecode.lib.logging_formatter.ColorFormatterSql
738 738 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
739 739 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,708 +1,708 b''
1 1
2 2
3 3 ################################################################################
4 4 ## RHODECODE COMMUNITY EDITION 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 rhodecode.ini --paste rhodecode.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.
95 95 ## recommended when using proxy setup.
96 96 ## allows to set RhodeCode under a prefix in server.
97 97 ## eg https://server.com/custom_prefix. Enable `filter-with =` option below as well.
98 98 ## And set your prefix like: `prefix = /custom_prefix`
99 99 ## be sure to also set beaker.session.cookie_path = /custom_prefix if you need
100 100 ## to make your cookies only work on prefix url
101 101 [filter:proxy-prefix]
102 102 use = egg:PasteDeploy#prefix
103 103 prefix = /
104 104
105 105 [app:main]
106 106 use = egg:rhodecode-enterprise-ce
107 107
108 108 ## enable proxy prefix middleware, defined above
109 109 #filter-with = proxy-prefix
110 110
111 111 ## encryption key used to encrypt social plugin tokens,
112 112 ## remote_urls with credentials etc, if not set it defaults to
113 113 ## `beaker.session.secret`
114 114 #rhodecode.encrypted_values.secret =
115 115
116 116 ## decryption strict mode (enabled by default). It controls if decryption raises
117 117 ## `SignatureVerificationError` in case of wrong key, or damaged encryption data.
118 118 #rhodecode.encrypted_values.strict = false
119 119
120 120 ## return gzipped responses from Rhodecode (static files/application)
121 121 gzip_responses = false
122 122
123 123 ## autogenerate javascript routes file on startup
124 124 generate_js_files = false
125 125
126 126 ## Optional Languages
127 127 ## en(default), be, de, es, fr, it, ja, pl, pt, ru, zh
128 128 lang = en
129 129
130 130 ## perform a full repository scan on each server start, this should be
131 131 ## set to false after first startup, to allow faster server restarts.
132 132 startup.import_repos = false
133 133
134 134 ## Uncomment and set this path to use archive download cache.
135 135 ## Once enabled, generated archives will be cached at this location
136 136 ## and served from the cache during subsequent requests for the same archive of
137 137 ## the repository.
138 138 #archive_cache_dir = /tmp/tarballcache
139 139
140 140 ## change this to unique ID for security
141 141 app_instance_uuid = rc-production
142 142
143 143 ## cut off limit for large diffs (size in bytes). If overall diff size on
144 144 ## commit, or pull request exceeds this limit this diff will be displayed
145 145 ## partially. E.g 512000 == 512Kb
146 146 cut_off_limit_diff = 512000
147 147
148 148 ## cut off limit for large files inside diffs (size in bytes). Each individual
149 149 ## file inside diff which exceeds this limit will be displayed partially.
150 150 ## E.g 128000 == 128Kb
151 151 cut_off_limit_file = 128000
152 152
153 153 ## use cache version of scm repo everywhere
154 154 vcs_full_cache = true
155 155
156 156 ## force https in RhodeCode, fixes https redirects, assumes it's always https
157 157 ## Normally this is controlled by proper http flags sent from http server
158 158 force_https = false
159 159
160 160 ## use Strict-Transport-Security headers
161 161 use_htsts = false
162 162
163 163 ## number of commits stats will parse on each iteration
164 164 commit_parse_limit = 25
165 165
166 166 ## git rev filter option, --all is the default filter, if you need to
167 167 ## hide all refs in changelog switch this to --branches --tags
168 168 git_rev_filter = --branches --tags
169 169
170 170 # Set to true if your repos are exposed using the dumb protocol
171 171 git_update_server_info = false
172 172
173 173 ## RSS/ATOM feed options
174 174 rss_cut_off_limit = 256000
175 175 rss_items_per_page = 10
176 176 rss_include_diff = false
177 177
178 178 ## gist URL alias, used to create nicer urls for gist. This should be an
179 179 ## url that does rewrites to _admin/gists/{gistid}.
180 180 ## example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
181 181 ## RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/{gistid}
182 182 gist_alias_url =
183 183
184 184 ## List of views (using glob pattern syntax) that AUTH TOKENS could be
185 185 ## used for access.
186 186 ## Adding ?auth_token=TOKEN_HASH to the url authenticates this request as if it
187 187 ## came from the the logged in user who own this authentication token.
188 188 ## Additionally @TOKEN syntaxt can be used to bound the view to specific
189 189 ## authentication token. Such view would be only accessible when used together
190 190 ## with this authentication token
191 191 ##
192 192 ## list of all views can be found under `/_admin/permissions/auth_token_access`
193 193 ## The list should be "," separated and on a single line.
194 194 ##
195 195 ## Most common views to enable:
196 196 # RepoCommitsView:repo_commit_download
197 197 # RepoCommitsView:repo_commit_patch
198 198 # RepoCommitsView:repo_commit_raw
199 199 # RepoCommitsView:repo_commit_raw@TOKEN
200 200 # RepoFilesView:repo_files_diff
201 201 # RepoFilesView:repo_archivefile
202 202 # RepoFilesView:repo_file_raw
203 203 # GistView:*
204 204 api_access_controllers_whitelist =
205 205
206 206 ## default encoding used to convert from and to unicode
207 207 ## can be also a comma separated list of encoding in case of mixed encodings
208 208 default_encoding = UTF-8
209 209
210 210 ## instance-id prefix
211 211 ## a prefix key for this instance used for cache invalidation when running
212 212 ## multiple instances of rhodecode, make sure it's globally unique for
213 213 ## all running rhodecode instances. Leave empty if you don't use it
214 214 instance_id =
215 215
216 216 ## Fallback authentication plugin. Set this to a plugin ID to force the usage
217 217 ## of an authentication plugin also if it is disabled by it's settings.
218 218 ## This could be useful if you are unable to log in to the system due to broken
219 219 ## authentication settings. Then you can enable e.g. the internal rhodecode auth
220 220 ## module to log in again and fix the settings.
221 221 ##
222 222 ## Available builtin plugin IDs (hash is part of the ID):
223 223 ## egg:rhodecode-enterprise-ce#rhodecode
224 224 ## egg:rhodecode-enterprise-ce#pam
225 225 ## egg:rhodecode-enterprise-ce#ldap
226 226 ## egg:rhodecode-enterprise-ce#jasig_cas
227 227 ## egg:rhodecode-enterprise-ce#headers
228 228 ## egg:rhodecode-enterprise-ce#crowd
229 229 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
230 230
231 231 ## alternative return HTTP header for failed authentication. Default HTTP
232 232 ## response is 401 HTTPUnauthorized. Currently HG clients have troubles with
233 233 ## handling that causing a series of failed authentication calls.
234 234 ## Set this variable to 403 to return HTTPForbidden, or any other HTTP code
235 235 ## This will be served instead of default 401 on bad authnetication
236 236 auth_ret_code =
237 237
238 238 ## use special detection method when serving auth_ret_code, instead of serving
239 239 ## ret_code directly, use 401 initially (Which triggers credentials prompt)
240 240 ## and then serve auth_ret_code to clients
241 241 auth_ret_code_detection = false
242 242
243 243 ## locking return code. When repository is locked return this HTTP code. 2XX
244 244 ## codes don't break the transactions while 4XX codes do
245 245 lock_ret_code = 423
246 246
247 247 ## allows to change the repository location in settings page
248 248 allow_repo_location_change = true
249 249
250 250 ## allows to setup custom hooks in settings page
251 251 allow_custom_hooks_settings = true
252 252
253 253 ## generated license token, goto license page in RhodeCode settings to obtain
254 254 ## new token
255 255 license_token =
256 256
257 257 ## supervisor connection uri, for managing supervisor and logs.
258 258 supervisor.uri =
259 259 ## supervisord group name/id we only want this RC instance to handle
260 260 supervisor.group_id = prod
261 261
262 262 ## Display extended labs settings
263 263 labs_settings_active = true
264 264
265 265 ####################################
266 266 ### CELERY CONFIG ####
267 267 ####################################
268 268 use_celery = false
269 269 broker.host = localhost
270 270 broker.vhost = rabbitmqhost
271 271 broker.port = 5672
272 272 broker.user = rabbitmq
273 273 broker.password = qweqwe
274 274
275 275 celery.imports = rhodecode.lib.celerylib.tasks
276 276
277 277 celery.result.backend = amqp
278 278 celery.result.dburi = amqp://
279 279 celery.result.serialier = json
280 280
281 281 #celery.send.task.error.emails = true
282 282 #celery.amqp.task.result.expires = 18000
283 283
284 284 celeryd.concurrency = 2
285 285 #celeryd.log.file = celeryd.log
286 286 celeryd.log.level = debug
287 287 celeryd.max.tasks.per.child = 1
288 288
289 289 ## tasks will never be sent to the queue, but executed locally instead.
290 290 celery.always.eager = false
291 291
292 292 ####################################
293 293 ### BEAKER CACHE ####
294 294 ####################################
295 295 # default cache dir for templates. Putting this into a ramdisk
296 296 ## can boost performance, eg. %(here)s/data_ramdisk
297 297 cache_dir = %(here)s/data
298 298
299 299 ## locking and default file storage for Beaker. Putting this into a ramdisk
300 300 ## can boost performance, eg. %(here)s/data_ramdisk/cache/beaker_data
301 301 beaker.cache.data_dir = %(here)s/data/cache/beaker_data
302 302 beaker.cache.lock_dir = %(here)s/data/cache/beaker_lock
303 303
304 304 beaker.cache.regions = super_short_term, short_term, long_term, sql_cache_short, auth_plugins, repo_cache_long
305 305
306 306 beaker.cache.super_short_term.type = memory
307 307 beaker.cache.super_short_term.expire = 10
308 308 beaker.cache.super_short_term.key_length = 256
309 309
310 310 beaker.cache.short_term.type = memory
311 311 beaker.cache.short_term.expire = 60
312 312 beaker.cache.short_term.key_length = 256
313 313
314 314 beaker.cache.long_term.type = memory
315 315 beaker.cache.long_term.expire = 36000
316 316 beaker.cache.long_term.key_length = 256
317 317
318 318 beaker.cache.sql_cache_short.type = memory
319 319 beaker.cache.sql_cache_short.expire = 10
320 320 beaker.cache.sql_cache_short.key_length = 256
321 321
322 322 ## default is memory cache, configure only if required
323 323 ## using multi-node or multi-worker setup
324 324 #beaker.cache.auth_plugins.type = ext:database
325 325 #beaker.cache.auth_plugins.lock_dir = %(here)s/data/cache/auth_plugin_lock
326 326 #beaker.cache.auth_plugins.url = postgresql://postgres:secret@localhost/rhodecode
327 327 #beaker.cache.auth_plugins.url = mysql://root:secret@127.0.0.1/rhodecode
328 328 #beaker.cache.auth_plugins.sa.pool_recycle = 3600
329 329 #beaker.cache.auth_plugins.sa.pool_size = 10
330 330 #beaker.cache.auth_plugins.sa.max_overflow = 0
331 331
332 332 beaker.cache.repo_cache_long.type = memorylru_base
333 333 beaker.cache.repo_cache_long.max_items = 4096
334 334 beaker.cache.repo_cache_long.expire = 2592000
335 335
336 336 ## default is memorylru_base cache, configure only if required
337 337 ## using multi-node or multi-worker setup
338 338 #beaker.cache.repo_cache_long.type = ext:memcached
339 339 #beaker.cache.repo_cache_long.url = localhost:11211
340 340 #beaker.cache.repo_cache_long.expire = 1209600
341 341 #beaker.cache.repo_cache_long.key_length = 256
342 342
343 343 ####################################
344 344 ### BEAKER SESSION ####
345 345 ####################################
346 346
347 347 ## .session.type is type of storage options for the session, current allowed
348 348 ## types are file, ext:memcached, ext:database, and memory (default).
349 349 beaker.session.type = file
350 350 beaker.session.data_dir = %(here)s/data/sessions/data
351 351
352 352 ## db based session, fast, and allows easy management over logged in users
353 353 #beaker.session.type = ext:database
354 354 #beaker.session.table_name = db_session
355 355 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
356 356 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
357 357 #beaker.session.sa.pool_recycle = 3600
358 358 #beaker.session.sa.echo = false
359 359
360 360 beaker.session.key = rhodecode
361 361 beaker.session.secret = production-rc-uytcxaz
362 362 beaker.session.lock_dir = %(here)s/data/sessions/lock
363 363
364 364 ## Secure encrypted cookie. Requires AES and AES python libraries
365 365 ## you must disable beaker.session.secret to use this
366 366 #beaker.session.encrypt_key = key_for_encryption
367 367 #beaker.session.validate_key = validation_key
368 368
369 369 ## sets session as invalid(also logging out user) if it haven not been
370 370 ## accessed for given amount of time in seconds
371 371 beaker.session.timeout = 2592000
372 372 beaker.session.httponly = true
373 373 ## Path to use for the cookie. Set to prefix if you use prefix middleware
374 374 #beaker.session.cookie_path = /custom_prefix
375 375
376 376 ## uncomment for https secure cookie
377 377 beaker.session.secure = false
378 378
379 379 ## auto save the session to not to use .save()
380 380 beaker.session.auto = false
381 381
382 382 ## default cookie expiration time in seconds, set to `true` to set expire
383 383 ## at browser close
384 384 #beaker.session.cookie_expires = 3600
385 385
386 386 ###################################
387 387 ## SEARCH INDEXING CONFIGURATION ##
388 388 ###################################
389 389 ## Full text search indexer is available in rhodecode-tools under
390 390 ## `rhodecode-tools index` command
391 391
392 392 ## WHOOSH Backend, doesn't require additional services to run
393 393 ## it works good with few dozen repos
394 394 search.module = rhodecode.lib.index.whoosh
395 395 search.location = %(here)s/data/index
396 396
397 397 ########################################
398 398 ### CHANNELSTREAM CONFIG ####
399 399 ########################################
400 400 ## channelstream enables persistent connections and live notification
401 401 ## in the system. It's also used by the chat system
402 402 channelstream.enabled = false
403 403
404 404 ## server address for channelstream server on the backend
405 405 channelstream.server = 127.0.0.1:9800
406 406
407 407 ## location of the channelstream server from outside world
408 408 ## use ws:// for http or wss:// for https. This address needs to be handled
409 409 ## by external HTTP server such as Nginx or Apache
410 410 ## see nginx/apache configuration examples in our docs
411 411 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
412 412 channelstream.secret = secret
413 413 channelstream.history.location = %(here)s/channelstream_history
414 414
415 415 ## Internal application path that Javascript uses to connect into.
416 416 ## If you use proxy-prefix the prefix should be added before /_channelstream
417 417 channelstream.proxy_path = /_channelstream
418 418
419 419
420 420 ###################################
421 421 ## APPENLIGHT CONFIG ##
422 422 ###################################
423 423
424 424 ## Appenlight is tailored to work with RhodeCode, see
425 425 ## http://appenlight.com for details how to obtain an account
426 426
427 427 ## appenlight integration enabled
428 428 appenlight = false
429 429
430 430 appenlight.server_url = https://api.appenlight.com
431 431 appenlight.api_key = YOUR_API_KEY
432 432 #appenlight.transport_config = https://api.appenlight.com?threaded=1&timeout=5
433 433
434 434 # used for JS client
435 435 appenlight.api_public_key = YOUR_API_PUBLIC_KEY
436 436
437 437 ## TWEAK AMOUNT OF INFO SENT HERE
438 438
439 439 ## enables 404 error logging (default False)
440 440 appenlight.report_404 = false
441 441
442 442 ## time in seconds after request is considered being slow (default 1)
443 443 appenlight.slow_request_time = 1
444 444
445 445 ## record slow requests in application
446 446 ## (needs to be enabled for slow datastore recording and time tracking)
447 447 appenlight.slow_requests = true
448 448
449 449 ## enable hooking to application loggers
450 450 appenlight.logging = true
451 451
452 452 ## minimum log level for log capture
453 453 appenlight.logging.level = WARNING
454 454
455 455 ## send logs only from erroneous/slow requests
456 456 ## (saves API quota for intensive logging)
457 457 appenlight.logging_on_error = false
458 458
459 459 ## list of additonal keywords that should be grabbed from environ object
460 460 ## can be string with comma separated list of words in lowercase
461 461 ## (by default client will always send following info:
462 462 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
463 463 ## start with HTTP* this list be extended with additional keywords here
464 464 appenlight.environ_keys_whitelist =
465 465
466 466 ## list of keywords that should be blanked from request object
467 467 ## can be string with comma separated list of words in lowercase
468 468 ## (by default client will always blank keys that contain following words
469 469 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
470 470 ## this list be extended with additional keywords set here
471 471 appenlight.request_keys_blacklist =
472 472
473 473 ## list of namespaces that should be ignores when gathering log entries
474 474 ## can be string with comma separated list of namespaces
475 475 ## (by default the client ignores own entries: appenlight_client.client)
476 476 appenlight.log_namespace_blacklist =
477 477
478 478
479 479 ################################################################################
480 480 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
481 481 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
482 482 ## execute malicious code after an exception is raised. ##
483 483 ################################################################################
484 484 set debug = false
485 485
486 486
487 487 ###########################################
488 488 ### MAIN RHODECODE DATABASE CONFIG ###
489 489 ###########################################
490 490 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
491 491 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
492 492 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode
493 493 sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
494 494
495 495 # see sqlalchemy docs for other advanced settings
496 496
497 497 ## print the sql statements to output
498 498 sqlalchemy.db1.echo = false
499 499 ## recycle the connections after this amount of seconds
500 500 sqlalchemy.db1.pool_recycle = 3600
501 501 sqlalchemy.db1.convert_unicode = true
502 502
503 503 ## the number of connections to keep open inside the connection pool.
504 504 ## 0 indicates no limit
505 505 #sqlalchemy.db1.pool_size = 5
506 506
507 507 ## the number of connections to allow in connection pool "overflow", that is
508 508 ## connections that can be opened above and beyond the pool_size setting,
509 509 ## which defaults to five.
510 510 #sqlalchemy.db1.max_overflow = 10
511 511
512 512
513 513 ##################
514 514 ### VCS CONFIG ###
515 515 ##################
516 516 vcs.server.enable = true
517 517 vcs.server = localhost:9900
518 518
519 519 ## Web server connectivity protocol, responsible for web based VCS operatations
520 520 ## Available protocols are:
521 521 ## `http` - use http-rpc backend (default)
522 522 vcs.server.protocol = http
523 523
524 524 ## Push/Pull operations protocol, available options are:
525 525 ## `http` - use http-rpc backend (default)
526 526 ##
527 527 vcs.scm_app_implementation = http
528 528
529 529 ## Push/Pull operations hooks protocol, available options are:
530 530 ## `http` - use http-rpc backend (default)
531 531 vcs.hooks.protocol = http
532 532
533 533 vcs.server.log_level = info
534 534 ## Start VCSServer with this instance as a subprocess, usefull for development
535 535 vcs.start_server = false
536 536
537 537 ## List of enabled VCS backends, available options are:
538 538 ## `hg` - mercurial
539 539 ## `git` - git
540 540 ## `svn` - subversion
541 541 vcs.backends = hg, git, svn
542 542
543 543 vcs.connection_timeout = 3600
544 544 ## Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
545 545 ## Available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
546 546 #vcs.svn.compatible_version = pre-1.8-compatible
547 547
548 548
549 549 ############################################################
550 550 ### Subversion proxy support (mod_dav_svn) ###
551 551 ### Maps RhodeCode repo groups into SVN paths for Apache ###
552 552 ############################################################
553 553 ## Enable or disable the config file generation.
554 554 svn.proxy.generate_config = false
555 555 ## Generate config file with `SVNListParentPath` set to `On`.
556 556 svn.proxy.list_parent_path = true
557 557 ## Set location and file name of generated config file.
558 558 svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
559 559 ## Used as a prefix to the `Location` block in the generated config file.
560 560 ## In most cases it should be set to `/`.
561 561 svn.proxy.location_root = /
562 562 ## Command to reload the mod dav svn configuration on change.
563 563 ## Example: `/etc/init.d/apache2 reload`
564 564 #svn.proxy.reload_cmd = /etc/init.d/apache2 reload
565 565 ## If the timeout expires before the reload command finishes, the command will
566 566 ## be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
567 567 #svn.proxy.reload_timeout = 10
568 568
569 569 ############################################################
570 570 ### SSH Support Settings ###
571 571 ############################################################
572 572
573 573 ## Defines if the authorized_keys file should be written on any change of
574 574 ## user ssh keys, setting this to false also disables posibility of adding
575 575 ## ssh keys for users from web interface.
576 576 ssh.generate_authorized_keyfile = false
577 577
578 578 ## Options for ssh, default is `no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding`
579 579 # ssh.authorized_keys_ssh_opts =
580 580
581 581 ## File to generate the authorized keys together with options
582 582 ## It is possible to have multiple key files specified in `sshd_config` e.g.
583 583 ## AuthorizedKeysFile %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode
584 584 ssh.authorized_keys_file_path = ~/.ssh/authorized_keys_rhodecode
585 585
586 586 ## Command to execute the SSH wrapper. The binary is available in the
587 587 ## rhodecode installation directory.
588 ## e.g ~/.rccontrol/community-1/profile/bin/rcssh-wrapper
589 ssh.wrapper_cmd = ~/.rccontrol/community-1/rcssh-wrapper
588 ## e.g ~/.rccontrol/community-1/profile/bin/rc-ssh-wrapper
589 ssh.wrapper_cmd = ~/.rccontrol/community-1/rc-ssh-wrapper
590 590
591 591 ## Allow shell when executing the ssh-wrapper command
592 592 ssh.wrapper_cmd_allow_shell = false
593 593
594 594 ## Enables logging, and detailed output send back to the client. Usefull for
595 595 ## debugging, shouldn't be used in production.
596 596 ssh.enable_debug_logging = false
597 597
598 598 ## API KEY for user who has access to fetch other user permission information
599 599 ## most likely an super-admin account with some IP restrictions.
600 600 ssh.api_key =
601 601
602 602 ## API Host, the server address of RhodeCode instance that the api_key will
603 603 ## access
604 604 ssh.api_host = http://localhost
605 605
606 606 ## Paths to binary executrables, by default they are the names, but we can
607 607 ## override them if we want to use a custom one
608 608 ssh.executable.hg = ~/.rccontrol/vcsserver-1/profile/bin/hg
609 609 ssh.executable.git = ~/.rccontrol/vcsserver-1/profile/bin/git
610 610 ssh.executable.svn = ~/.rccontrol/vcsserver-1/profile/bin/svnserve
611 611
612 612
613 613 ## Dummy marker to add new entries after.
614 614 ## Add any custom entries below. Please don't remove.
615 615 custom.conf = 1
616 616
617 617
618 618 ################################
619 619 ### LOGGING CONFIGURATION ####
620 620 ################################
621 621 [loggers]
622 622 keys = root, routes, rhodecode, sqlalchemy, beaker, templates, ssh_wrapper
623 623
624 624 [handlers]
625 625 keys = console, console_sql
626 626
627 627 [formatters]
628 628 keys = generic, color_formatter, color_formatter_sql
629 629
630 630 #############
631 631 ## LOGGERS ##
632 632 #############
633 633 [logger_root]
634 634 level = NOTSET
635 635 handlers = console
636 636
637 637 [logger_routes]
638 638 level = DEBUG
639 639 handlers =
640 640 qualname = routes.middleware
641 641 ## "level = DEBUG" logs the route matched and routing variables.
642 642 propagate = 1
643 643
644 644 [logger_beaker]
645 645 level = DEBUG
646 646 handlers =
647 647 qualname = beaker.container
648 648 propagate = 1
649 649
650 650 [logger_templates]
651 651 level = INFO
652 652 handlers =
653 653 qualname = pylons.templating
654 654 propagate = 1
655 655
656 656 [logger_rhodecode]
657 657 level = DEBUG
658 658 handlers =
659 659 qualname = rhodecode
660 660 propagate = 1
661 661
662 662 [logger_sqlalchemy]
663 663 level = INFO
664 664 handlers = console_sql
665 665 qualname = sqlalchemy.engine
666 666 propagate = 0
667 667
668 668 [logger_ssh_wrapper]
669 669 level = DEBUG
670 670 handlers =
671 671 qualname = ssh_wrapper
672 672 propagate = 1
673 673
674 674
675 675 ##############
676 676 ## HANDLERS ##
677 677 ##############
678 678
679 679 [handler_console]
680 680 class = StreamHandler
681 681 args = (sys.stderr, )
682 682 level = INFO
683 683 formatter = generic
684 684
685 685 [handler_console_sql]
686 686 class = StreamHandler
687 687 args = (sys.stderr, )
688 688 level = WARN
689 689 formatter = generic
690 690
691 691 ################
692 692 ## FORMATTERS ##
693 693 ################
694 694
695 695 [formatter_generic]
696 696 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
697 697 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
698 698 datefmt = %Y-%m-%d %H:%M:%S
699 699
700 700 [formatter_color_formatter]
701 701 class = rhodecode.lib.logging_formatter.ColorFormatter
702 702 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
703 703 datefmt = %Y-%m-%d %H:%M:%S
704 704
705 705 [formatter_color_formatter_sql]
706 706 class = rhodecode.lib.logging_formatter.ColorFormatterSql
707 707 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
708 708 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,85 +1,85 b''
1 1 .. _install-tools:
2 2
3 3 |RCT| Installation
4 4 ------------------
5 5
6 6 As of |RCE| 3.4.1 |RCT| is installed automatically on the server with |RCE|. You
7 7 do not need to install |RCT| on the server, but you will need to install them
8 8 on machines that need remote access. The tools are linked to the instance
9 9 folder, for example :file:`~/.rccontrol/{instance-id}/profile/bin`
10 10
11 11 You can list the available tools using the following example, and the valid
12 12 tools options are those which correspond with those in the :ref:`rc-tools`
13 13 section.
14 14
15 15 .. code-block:: bash
16 16
17 17 $ ls ~/.rccontrol/enterprise-4/profile/bin/
18 18
19 19 gen_js_i18n rhodecode-cleanup-gists rhodecode-tools svnrdump
20 20 gen_js_routes rhodecode-cleanup-repos supervisorctl svnserve
21 21 git rhodecode-config supervisord svnsync
22 22 gunicorn rhodecode-extensions svn svnversion
23 23 hg rhodecode-gist svnadmin vcsserver
24 24 paster rhodecode-index svndumpfilter
25 rcserver rhodecode-list-instances svnlook
25 rc-server rhodecode-list-instances svnlook
26 26 rhodecode-api rhodecode-setup-config svnmucc
27 27
28 28 You can then use the tools as described in the :ref:`rc-tools` section using the
29 29 following example:
30 30
31 31 .. code-block:: bash
32 32
33 33 # Running the indexer
34 34 $ ~/.rccontrol/enterprise-1/profile/bin/rhodecode-index \
35 35 --instance-name=enterprise-1
36 36
37 37 # Cleaning up gists
38 38 $ ~/.rccontrol/enterprise-4/profile/bin/rhodecode-cleanup-gists \
39 39 --instance-name=enterprise-4
40 40
41 41 Scanning for gists in /home/brian/repos/.rc_gist_store...
42 42 preparing to remove [1] found gists
43 43
44 44 Installing |RCT|
45 45 ^^^^^^^^^^^^^^^^
46 46
47 47 |RCT| enable you to automate many of the most common |RCM| functions through
48 48 the API. Installing them on a local machine lets you carry out maintenance on
49 49 the server remotely. Once installed you can use them to index your |repos|
50 50 to setup full-text search, strip commits, or install |RC| Extensions for
51 51 additional functionality.
52 52
53 53 For more detailed instructions about using |RCT| for indexing and full-text
54 54 search, see :ref:`indexing-ref`
55 55
56 56 To install |RCT|, use the following steps:
57 57
58 58 1. Set up a ``virtualenv`` on your local machine, see virtualenv_ instructions
59 59 here.
60 60 2. Install |RCT| using pip. Full url with token is available at https://rhodecode.com/u/#rhodecode-tools
61 61 ``pip install -I https://dls.rhodecode.com/dls/<token>/rhodecode-tools/latest``
62 62
63 63
64 64 Once |RCT| is installed using these steps there are a few extra
65 65 configuration changes you can make. These are explained in more detail in the
66 66 :ref:`indexing-ref` section, and the :ref:`rc-tools` section.
67 67
68 68 .. code-block:: bash
69 69
70 70 # Create a virtualenv
71 71 brian@ubuntu:~$ virtualenv venv
72 72 New python executable in venv/bin/python
73 73 Installing setuptools, pip...done.
74 74
75 75 # Activate the virtualenv
76 76 brian@ubuntu:~$ . venv/bin/activate
77 77
78 78 # Install RhodeCode Tools inside the virtualenv, full url with token is available at https://rhodecode.com/u/#rhodecode-tools
79 79 $ pip install -I https://dls.rhodecode.com/dls/<token>/rhodecode-tools/latest
80 80
81 81 # Check the installation
82 82 $ rhodecode-tools --help
83 83
84 84 .. _virtualenv: https://virtualenv.pypa.io/en/latest/index.html
85 85
@@ -1,232 +1,232 b''
1 1 #
2 2 # About
3 3 # =====
4 4 #
5 5 # This file defines jobs for our CI system and the attribute "build" is used
6 6 # as the input for packaging.
7 7 #
8 8 #
9 9 # CI details
10 10 # ==========
11 11 #
12 12 # This file defines an attribute set of derivations. Each of these attributes is
13 13 # then used in our CI system as one job to run. This way we keep the
14 14 # configuration for the CI jobs as well under version control.
15 15 #
16 16 # Run CI jobs locally
17 17 # -------------------
18 18 #
19 19 # Since it is all based on normal Nix derivations, the jobs can be tested
20 20 # locally with a run of "nix-build" like the following example:
21 21 #
22 22 # nix-build release.nix -A test-api -I vcsserver=~/rhodecode-vcsserver
23 23 #
24 24 # Note: Replace "~/rhodecode-vcsserver" with a path where a clone of the
25 25 # vcsserver resides.
26 26
27 27 { pkgs ? import <nixpkgs> {}
28 28 , doCheck ? true
29 29 }:
30 30
31 31 let
32 32
33 33 inherit (pkgs)
34 34 stdenv
35 35 system;
36 36
37 37 testing = import <nixpkgs/nixos/lib/testing.nix> {
38 38 inherit system;
39 39 };
40 40
41 41 runInMachine = testing.runInMachine;
42 42
43 43 sphinx = import ./docs/default.nix {};
44 44
45 45 mkDocs = kind: stdenv.mkDerivation {
46 46 name = kind;
47 47 srcs = [
48 48 (./. + (builtins.toPath "/${kind}"))
49 49 (builtins.filterSource
50 50 (path: type: baseNameOf path == "VERSION")
51 51 ./rhodecode)
52 52 ];
53 53 sourceRoot = kind;
54 54 buildInputs = [ sphinx ];
55 55 configurePhase = null;
56 56 buildPhase = ''
57 57 make SPHINXBUILD=sphinx-build html
58 58 '';
59 59 installPhase = ''
60 60 mkdir -p $out
61 61 mv _build/html $out/
62 62
63 63 mkdir -p $out/nix-support
64 64 echo "doc manual $out/html index.html" >> \
65 65 "$out/nix-support/hydra-build-products"
66 66 '';
67 67 };
68 68
69 69 enterprise = import ./default.nix {
70 70 inherit
71 71 pkgs;
72 72
73 73 # TODO: for quick local testing
74 74 doCheck = false;
75 75 };
76 76
77 77 test-cfg = stdenv.mkDerivation {
78 78 name = "test-cfg";
79 79 unpackPhase = "true";
80 80 buildInputs = [
81 81 enterprise.src
82 82 ];
83 83 installPhase = ''
84 84 mkdir -p $out/etc
85 85 cp ${enterprise.src}/test.ini $out/etc/enterprise.ini
86 86 # TODO: johbo: Needed, so that the login works, this causes
87 87 # probably some side effects
88 88 substituteInPlace $out/etc/enterprise.ini --replace "is_test = True" ""
89 89
90 90 # Gevent configuration
91 91 cp $out/etc/enterprise.ini $out/etc/enterprise-gevent.ini;
92 92 cat >> $out/etc/enterprise-gevent.ini <<EOF
93 93
94 94 [server:main]
95 95 use = egg:gunicorn#main
96 96 worker_class = gevent
97 97 EOF
98 98
99 99 cp ${enterprise.src}/vcsserver/test.ini $out/etc/vcsserver.ini
100 100 '';
101 101 };
102 102
103 103 ac-test-drv = import ./acceptance_tests {
104 104 withExternals = false;
105 105 };
106 106
107 107 # TODO: johbo: Currently abusing buildPythonPackage to make the
108 108 # needed environment for the ac-test tools.
109 109 mkAcTests = {
110 110 # Path to an INI file which will be used to run Enterprise.
111 111 #
112 112 # Intended usage is to provide different configuration files to
113 113 # run the tests against a different configuration.
114 114 enterpriseCfg ? "${test-cfg}/etc/enterprise.ini"
115 115
116 116 # Path to an INI file which will be used to run the VCSServer.
117 117 , vcsserverCfg ? "${test-cfg}/etc/vcsserver.ini"
118 118 }: pkgs.pythonPackages.buildPythonPackage {
119 119 name = "enterprise-ac-tests";
120 120 src = ./acceptance_tests;
121 121
122 122 buildInputs = with pkgs; [
123 123 curl
124 124 enterprise
125 125 ac-test-drv
126 126 ];
127 127
128 128 buildPhase = ''
129 129 cp ${enterpriseCfg} enterprise.ini
130 130
131 131 echo "Creating a fake home directory"
132 132 mkdir fake-home
133 133 export HOME=$PWD/fake-home
134 134
135 135 echo "Creating a repository directory"
136 136 mkdir repos
137 137
138 138 echo "Preparing the database"
139 139 paster setup-rhodecode \
140 140 --user=admin \
141 141 --email=admin@example.com \
142 142 --password=secret \
143 143 --api-key=9999999999999999999999999999999999999999 \
144 144 --force-yes \
145 145 --repos=$PWD/repos \
146 146 enterprise.ini > /dev/null
147 147
148 echo "Starting rcserver"
148 echo "Starting rc-server"
149 149 vcsserver --config ${vcsserverCfg} >vcsserver.log 2>&1 &
150 rcserver enterprise.ini >rcserver.log 2>&1 &
150 rc-server enterprise.ini >rc-server.log 2>&1 &
151 151
152 152 while ! curl -f -s http://localhost:5000 > /dev/null
153 153 do
154 154 echo "Waiting for server to be ready..."
155 155 sleep 3
156 156 done
157 157 echo "Webserver is ready."
158 158
159 159 echo "Starting the test run"
160 160 py.test -c example.ini -vs --maxfail=5 tests
161 161
162 echo "Kill rcserver"
162 echo "Kill rc-server"
163 163 kill %2
164 164 kill %1
165 165 '';
166 166
167 167 # TODO: johbo: Use the install phase again once the normal mkDerivation
168 168 # can be used again.
169 169 postInstall = ''
170 170 mkdir -p $out
171 171 cp enterprise.ini $out
172 172 cp ${vcsserverCfg} $out/vcsserver.ini
173 cp rcserver.log $out
173 cp rc-server.log $out
174 174 cp vcsserver.log $out
175 175
176 176 mkdir -p $out/nix-support
177 177 echo "report config $out enterprise.ini" >> $out/nix-support/hydra-build-products
178 178 echo "report config $out vcsserver.ini" >> $out/nix-support/hydra-build-products
179 echo "report rcserver $out rcserver.log" >> $out/nix-support/hydra-build-products
179 echo "report rc-server $out rc-server.log" >> $out/nix-support/hydra-build-products
180 180 echo "report vcsserver $out vcsserver.log" >> $out/nix-support/hydra-build-products
181 181 '';
182 182 };
183 183
184 184 vcsserver = import <vcsserver> {
185 185 inherit pkgs;
186 186
187 187 # TODO: johbo: Think of a more elegant solution to this problem
188 188 pythonExternalOverrides = self: super: (enterprise.myPythonPackagesUnfix self);
189 189 };
190 190
191 191 runTests = optionString: (enterprise.override (attrs: {
192 192 doCheck = true;
193 193 name = "test-run";
194 194 buildInputs = attrs.buildInputs ++ [
195 195 vcsserver
196 196 ];
197 197 checkPhase = ''
198 198 py.test ${optionString} -vv -ra
199 199 '';
200 200 buildPhase = attrs.shellHook;
201 201 installPhase = ''
202 202 echo "Intentionally not installing anything"
203 203 '';
204 204 meta.description = "Enterprise test run ${optionString}";
205 205 }));
206 206
207 207 jobs = {
208 208
209 209 build = enterprise;
210 210
211 211 # johbo: Currently this is simply running the tests against the sources. Nicer
212 212 # would be to run xdist and against the installed application, so that we also
213 213 # cover the impact of installing the application.
214 214 test-api = runTests "rhodecode/api";
215 215 test-functional = runTests "rhodecode/tests/functional";
216 216 test-rest = runTests "rhodecode/tests --ignore=rhodecode/tests/functional";
217 217 test-full = runTests "rhodecode";
218 218
219 219 docs = mkDocs "docs";
220 220
221 221 aggregate = pkgs.releaseTools.aggregate {
222 222 name = "aggregated-jobs";
223 223 constituents = [
224 224 jobs.build
225 225 jobs.test-api
226 226 jobs.test-rest
227 227 jobs.docs
228 228 ];
229 229 };
230 230 };
231 231
232 232 in jobs
@@ -1,264 +1,264 b''
1 1 # -*- coding: utf-8 -*-
2 2
3 3 # Copyright (C) 2010-2017 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 """
22 22 py.test config for test suite for making push/pull operations.
23 23
24 24 .. important::
25 25
26 26 You must have git >= 1.8.5 for tests to work fine. With 68b939b git started
27 27 to redirect things to stderr instead of stdout.
28 28 """
29 29
30 30 import ConfigParser
31 31 import os
32 32 import subprocess32
33 33 import tempfile
34 34 import textwrap
35 35 import pytest
36 36
37 37 import rhodecode
38 38 from rhodecode.model.db import Repository
39 39 from rhodecode.model.meta import Session
40 40 from rhodecode.model.settings import SettingsModel
41 41 from rhodecode.tests import (
42 42 GIT_REPO, HG_REPO, TEST_USER_ADMIN_LOGIN, TEST_USER_ADMIN_PASS,)
43 43 from rhodecode.tests.fixture import Fixture
44 44 from rhodecode.tests.utils import is_url_reachable, wait_for_url
45 45
46 46 RC_LOG = os.path.join(tempfile.gettempdir(), 'rc.log')
47 47 REPO_GROUP = 'a_repo_group'
48 48 HG_REPO_WITH_GROUP = '%s/%s' % (REPO_GROUP, HG_REPO)
49 49 GIT_REPO_WITH_GROUP = '%s/%s' % (REPO_GROUP, GIT_REPO)
50 50
51 51
52 52 def assert_no_running_instance(url):
53 53 if is_url_reachable(url):
54 54 print("Hint: Usually this means another instance of Enterprise "
55 55 "is running in the background.")
56 56 pytest.fail(
57 57 "Port is not free at %s, cannot start web interface" % url)
58 58
59 59
60 60 def get_host_url(pylons_config):
61 61 """Construct the host url using the port in the test configuration."""
62 62 config = ConfigParser.ConfigParser()
63 63 config.read(pylons_config)
64 64
65 65 return '127.0.0.1:%s' % config.get('server:main', 'port')
66 66
67 67
68 68 class RcWebServer(object):
69 69 """
70 70 Represents a running RCE web server used as a test fixture.
71 71 """
72 72 def __init__(self, pylons_config):
73 73 self.pylons_config = pylons_config
74 74
75 75 def repo_clone_url(self, repo_name, **kwargs):
76 76 params = {
77 77 'user': TEST_USER_ADMIN_LOGIN,
78 78 'passwd': TEST_USER_ADMIN_PASS,
79 79 'host': get_host_url(self.pylons_config),
80 80 'cloned_repo': repo_name,
81 81 }
82 82 params.update(**kwargs)
83 83 _url = 'http://%(user)s:%(passwd)s@%(host)s/%(cloned_repo)s' % params
84 84 return _url
85 85
86 86 def host_url(self):
87 87 return 'http://' + get_host_url(self.pylons_config)
88 88
89 89
90 90 @pytest.fixture(scope="module")
91 91 def rcextensions(request, pylonsapp, tmpdir_factory):
92 92 """
93 93 Installs a testing rcextensions pack to ensure they work as expected.
94 94 """
95 95 init_content = textwrap.dedent("""
96 96 # Forward import the example rcextensions to make it
97 97 # active for our tests.
98 98 from rhodecode.tests.other.example_rcextensions import *
99 99 """)
100 100
101 101 # Note: rcextensions are looked up based on the path of the ini file
102 102 root_path = tmpdir_factory.getbasetemp()
103 103 rcextensions_path = root_path.join('rcextensions')
104 104 init_path = rcextensions_path.join('__init__.py')
105 105
106 106 if rcextensions_path.check():
107 107 pytest.fail(
108 108 "Path for rcextensions already exists, please clean up before "
109 109 "test run this path: %s" % (rcextensions_path, ))
110 110 return
111 111
112 112 request.addfinalizer(rcextensions_path.remove)
113 113 init_path.write_binary(init_content, ensure=True)
114 114
115 115
116 116 @pytest.fixture(scope="module")
117 117 def repos(request, pylonsapp):
118 118 """Create a copy of each test repo in a repo group."""
119 119 fixture = Fixture()
120 120 repo_group = fixture.create_repo_group(REPO_GROUP)
121 121 repo_group_id = repo_group.group_id
122 122 fixture.create_fork(HG_REPO, HG_REPO,
123 123 repo_name_full=HG_REPO_WITH_GROUP,
124 124 repo_group=repo_group_id)
125 125 fixture.create_fork(GIT_REPO, GIT_REPO,
126 126 repo_name_full=GIT_REPO_WITH_GROUP,
127 127 repo_group=repo_group_id)
128 128
129 129 @request.addfinalizer
130 130 def cleanup():
131 131 fixture.destroy_repo(HG_REPO_WITH_GROUP)
132 132 fixture.destroy_repo(GIT_REPO_WITH_GROUP)
133 133 fixture.destroy_repo_group(repo_group_id)
134 134
135 135
136 136 @pytest.fixture(scope="module")
137 137 def rc_web_server_config(testini_factory):
138 138 """
139 139 Configuration file used for the fixture `rc_web_server`.
140 140 """
141 141 CUSTOM_PARAMS = [
142 142 {'handler_console': {'level': 'DEBUG'}},
143 143 ]
144 144 return testini_factory(CUSTOM_PARAMS)
145 145
146 146
147 147 @pytest.fixture(scope="module")
148 148 def rc_web_server(
149 149 request, pylonsapp, rc_web_server_config, repos, rcextensions):
150 150 """
151 151 Run the web server as a subprocess.
152 152
153 153 Since we have already a running vcsserver, this is not spawned again.
154 154 """
155 155 env = os.environ.copy()
156 156 env['RC_NO_TMP_PATH'] = '1'
157 157
158 158 rc_log = RC_LOG
159 159 server_out = open(rc_log, 'w')
160 160
161 161 # TODO: Would be great to capture the output and err of the subprocess
162 162 # and make it available in a section of the py.test report in case of an
163 163 # error.
164 164
165 165 host_url = 'http://' + get_host_url(rc_web_server_config)
166 166 assert_no_running_instance(host_url)
167 167 command = ['pserve', rc_web_server_config]
168 168
169 print('Starting rcserver: {}'.format(host_url))
169 print('Starting rhodecode server: {}'.format(host_url))
170 170 print('Command: {}'.format(command))
171 171 print('Logfile: {}'.format(rc_log))
172 172
173 173 proc = subprocess32.Popen(
174 174 command, bufsize=0, env=env, stdout=server_out, stderr=server_out)
175 175
176 176 wait_for_url(host_url, timeout=30)
177 177
178 178 @request.addfinalizer
179 179 def stop_web_server():
180 180 # TODO: Find out how to integrate with the reporting of py.test to
181 181 # make this information available.
182 182 print("\nServer log file written to %s" % (rc_log, ))
183 183 proc.kill()
184 184 server_out.flush()
185 185 server_out.close()
186 186
187 187 return RcWebServer(rc_web_server_config)
188 188
189 189
190 190 @pytest.fixture
191 191 def disable_locking(pylonsapp):
192 192 r = Repository.get_by_repo_name(GIT_REPO)
193 193 Repository.unlock(r)
194 194 r.enable_locking = False
195 195 Session().add(r)
196 196 Session().commit()
197 197
198 198 r = Repository.get_by_repo_name(HG_REPO)
199 199 Repository.unlock(r)
200 200 r.enable_locking = False
201 201 Session().add(r)
202 202 Session().commit()
203 203
204 204
205 205 @pytest.fixture
206 206 def enable_auth_plugins(request, pylonsapp, csrf_token):
207 207 """
208 208 Return a factory object that when called, allows to control which
209 209 authentication plugins are enabled.
210 210 """
211 211 def _enable_plugins(plugins_list, override=None):
212 212 override = override or {}
213 213 params = {
214 214 'auth_plugins': ','.join(plugins_list),
215 215 }
216 216
217 217 # helper translate some names to others
218 218 name_map = {
219 219 'token': 'authtoken'
220 220 }
221 221
222 222 for module in plugins_list:
223 223 plugin_name = module.partition('#')[-1]
224 224 if plugin_name in name_map:
225 225 plugin_name = name_map[plugin_name]
226 226 enabled_plugin = 'auth_%s_enabled' % plugin_name
227 227 cache_ttl = 'auth_%s_cache_ttl' % plugin_name
228 228
229 229 # default params that are needed for each plugin,
230 230 # `enabled` and `cache_ttl`
231 231 params.update({
232 232 enabled_plugin: True,
233 233 cache_ttl: 0
234 234 })
235 235 if override.get:
236 236 params.update(override.get(module, {}))
237 237
238 238 validated_params = params
239 239 for k, v in validated_params.items():
240 240 setting = SettingsModel().create_or_update_setting(k, v)
241 241 Session().add(setting)
242 242 Session().commit()
243 243
244 244 def cleanup():
245 245 _enable_plugins(['egg:rhodecode-enterprise-ce#rhodecode'])
246 246
247 247 request.addfinalizer(cleanup)
248 248
249 249 return _enable_plugins
250 250
251 251
252 252 @pytest.fixture
253 253 def fs_repo_only(request, rhodecode_fixtures):
254 254 def fs_repo_fabric(repo_name, repo_type):
255 255 rhodecode_fixtures.create_repo(repo_name, repo_type=repo_type)
256 256 rhodecode_fixtures.destroy_repo(repo_name, fs_remove=False)
257 257
258 258 def cleanup():
259 259 rhodecode_fixtures.destroy_repo(repo_name, fs_remove=True)
260 260 rhodecode_fixtures.destroy_repo_on_filesystem(repo_name)
261 261
262 262 request.addfinalizer(cleanup)
263 263
264 264 return fs_repo_fabric
@@ -1,777 +1,777 b''
1 1
2 2
3 3 ################################################################################
4 4 ## RHODECODE COMMUNITY EDITION 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 = 0.0.0.0
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 rhodecode.ini --paste rhodecode.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 ## UWSGI ##
94 94 ## run with uwsgi --ini-paste-logged <inifile.ini>
95 95 #[uwsgi]
96 96 #socket = /tmp/uwsgi.sock
97 97 #master = true
98 98 #http = 127.0.0.1:5000
99 99
100 100 ## set as deamon and redirect all output to file
101 101 #daemonize = ./uwsgi_rhodecode.log
102 102
103 103 ## master process PID
104 104 #pidfile = ./uwsgi_rhodecode.pid
105 105
106 106 ## stats server with workers statistics, use uwsgitop
107 107 ## for monitoring, `uwsgitop 127.0.0.1:1717`
108 108 #stats = 127.0.0.1:1717
109 109 #memory-report = true
110 110
111 111 ## log 5XX errors
112 112 #log-5xx = true
113 113
114 114 ## Set the socket listen queue size.
115 115 #listen = 256
116 116
117 117 ## Gracefully Reload workers after the specified amount of managed requests
118 118 ## (avoid memory leaks).
119 119 #max-requests = 1000
120 120
121 121 ## enable large buffers
122 122 #buffer-size=65535
123 123
124 124 ## socket and http timeouts ##
125 125 #http-timeout=3600
126 126 #socket-timeout=3600
127 127
128 128 ## Log requests slower than the specified number of milliseconds.
129 129 #log-slow = 10
130 130
131 131 ## Exit if no app can be loaded.
132 132 #need-app = true
133 133
134 134 ## Set lazy mode (load apps in workers instead of master).
135 135 #lazy = true
136 136
137 137 ## scaling ##
138 138 ## set cheaper algorithm to use, if not set default will be used
139 139 #cheaper-algo = spare
140 140
141 141 ## minimum number of workers to keep at all times
142 142 #cheaper = 1
143 143
144 144 ## number of workers to spawn at startup
145 145 #cheaper-initial = 1
146 146
147 147 ## maximum number of workers that can be spawned
148 148 #workers = 4
149 149
150 150 ## how many workers should be spawned at a time
151 151 #cheaper-step = 1
152 152
153 153 ## prefix middleware for RhodeCode.
154 154 ## recommended when using proxy setup.
155 155 ## allows to set RhodeCode under a prefix in server.
156 156 ## eg https://server.com/custom_prefix. Enable `filter-with =` option below as well.
157 157 ## And set your prefix like: `prefix = /custom_prefix`
158 158 ## be sure to also set beaker.session.cookie_path = /custom_prefix if you need
159 159 ## to make your cookies only work on prefix url
160 160 [filter:proxy-prefix]
161 161 use = egg:PasteDeploy#prefix
162 162 prefix = /
163 163
164 164 [app:main]
165 165 is_test = True
166 166 use = egg:rhodecode-enterprise-ce
167 167
168 168 ## enable proxy prefix middleware, defined above
169 169 #filter-with = proxy-prefix
170 170
171 171
172 172 ## RHODECODE PLUGINS ##
173 173 rhodecode.includes = rhodecode.api
174 174
175 175 # api prefix url
176 176 rhodecode.api.url = /_admin/api
177 177
178 178
179 179 ## END RHODECODE PLUGINS ##
180 180
181 181 ## encryption key used to encrypt social plugin tokens,
182 182 ## remote_urls with credentials etc, if not set it defaults to
183 183 ## `beaker.session.secret`
184 184 #rhodecode.encrypted_values.secret =
185 185
186 186 ## decryption strict mode (enabled by default). It controls if decryption raises
187 187 ## `SignatureVerificationError` in case of wrong key, or damaged encryption data.
188 188 #rhodecode.encrypted_values.strict = false
189 189
190 190 ## return gzipped responses from Rhodecode (static files/application)
191 191 gzip_responses = false
192 192
193 193 ## autogenerate javascript routes file on startup
194 194 generate_js_files = false
195 195
196 196 ## Optional Languages
197 197 ## en(default), be, de, es, fr, it, ja, pl, pt, ru, zh
198 198 lang = en
199 199
200 200 ## perform a full repository scan on each server start, this should be
201 201 ## set to false after first startup, to allow faster server restarts.
202 202 startup.import_repos = true
203 203
204 204 ## Uncomment and set this path to use archive download cache.
205 205 ## Once enabled, generated archives will be cached at this location
206 206 ## and served from the cache during subsequent requests for the same archive of
207 207 ## the repository.
208 208 #archive_cache_dir = /tmp/tarballcache
209 209
210 210 ## change this to unique ID for security
211 211 app_instance_uuid = rc-production
212 212
213 213 ## cut off limit for large diffs (size in bytes)
214 214 cut_off_limit_diff = 1024000
215 215 cut_off_limit_file = 256000
216 216
217 217 ## use cache version of scm repo everywhere
218 218 vcs_full_cache = false
219 219
220 220 ## force https in RhodeCode, fixes https redirects, assumes it's always https
221 221 ## Normally this is controlled by proper http flags sent from http server
222 222 force_https = false
223 223
224 224 ## use Strict-Transport-Security headers
225 225 use_htsts = false
226 226
227 227 ## number of commits stats will parse on each iteration
228 228 commit_parse_limit = 25
229 229
230 230 ## git rev filter option, --all is the default filter, if you need to
231 231 ## hide all refs in changelog switch this to --branches --tags
232 232 git_rev_filter = --all
233 233
234 234 # Set to true if your repos are exposed using the dumb protocol
235 235 git_update_server_info = false
236 236
237 237 ## RSS/ATOM feed options
238 238 rss_cut_off_limit = 256000
239 239 rss_items_per_page = 10
240 240 rss_include_diff = false
241 241
242 242 ## gist URL alias, used to create nicer urls for gist. This should be an
243 243 ## url that does rewrites to _admin/gists/{gistid}.
244 244 ## example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
245 245 ## RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/{gistid}
246 246 gist_alias_url =
247 247
248 248 ## List of views (using glob pattern syntax) that AUTH TOKENS could be
249 249 ## used for access.
250 250 ## Adding ?auth_token=TOKEN_HASH to the url authenticates this request as if it
251 251 ## came from the the logged in user who own this authentication token.
252 252 ## Additionally @TOKEN syntaxt can be used to bound the view to specific
253 253 ## authentication token. Such view would be only accessible when used together
254 254 ## with this authentication token
255 255 ##
256 256 ## list of all views can be found under `/_admin/permissions/auth_token_access`
257 257 ## The list should be "," separated and on a single line.
258 258 ##
259 259 ## Most common views to enable:
260 260 # RepoCommitsView:repo_commit_download
261 261 # RepoCommitsView:repo_commit_patch
262 262 # RepoCommitsView:repo_commit_raw
263 263 # RepoCommitsView:repo_commit_raw@TOKEN
264 264 # RepoFilesView:repo_files_diff
265 265 # RepoFilesView:repo_archivefile
266 266 # RepoFilesView:repo_file_raw
267 267 # GistView:*
268 268 api_access_controllers_whitelist =
269 269
270 270 ## default encoding used to convert from and to unicode
271 271 ## can be also a comma separated list of encoding in case of mixed encodings
272 272 default_encoding = UTF-8
273 273
274 274 ## instance-id prefix
275 275 ## a prefix key for this instance used for cache invalidation when running
276 276 ## multiple instances of rhodecode, make sure it's globally unique for
277 277 ## all running rhodecode instances. Leave empty if you don't use it
278 278 instance_id =
279 279
280 280 ## Fallback authentication plugin. Set this to a plugin ID to force the usage
281 281 ## of an authentication plugin also if it is disabled by it's settings.
282 282 ## This could be useful if you are unable to log in to the system due to broken
283 283 ## authentication settings. Then you can enable e.g. the internal rhodecode auth
284 284 ## module to log in again and fix the settings.
285 285 ##
286 286 ## Available builtin plugin IDs (hash is part of the ID):
287 287 ## egg:rhodecode-enterprise-ce#rhodecode
288 288 ## egg:rhodecode-enterprise-ce#pam
289 289 ## egg:rhodecode-enterprise-ce#ldap
290 290 ## egg:rhodecode-enterprise-ce#jasig_cas
291 291 ## egg:rhodecode-enterprise-ce#headers
292 292 ## egg:rhodecode-enterprise-ce#crowd
293 293 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
294 294
295 295 ## alternative return HTTP header for failed authentication. Default HTTP
296 296 ## response is 401 HTTPUnauthorized. Currently HG clients have troubles with
297 297 ## handling that causing a series of failed authentication calls.
298 298 ## Set this variable to 403 to return HTTPForbidden, or any other HTTP code
299 299 ## This will be served instead of default 401 on bad authnetication
300 300 auth_ret_code =
301 301
302 302 ## use special detection method when serving auth_ret_code, instead of serving
303 303 ## ret_code directly, use 401 initially (Which triggers credentials prompt)
304 304 ## and then serve auth_ret_code to clients
305 305 auth_ret_code_detection = false
306 306
307 307 ## locking return code. When repository is locked return this HTTP code. 2XX
308 308 ## codes don't break the transactions while 4XX codes do
309 309 lock_ret_code = 423
310 310
311 311 ## allows to change the repository location in settings page
312 312 allow_repo_location_change = true
313 313
314 314 ## allows to setup custom hooks in settings page
315 315 allow_custom_hooks_settings = true
316 316
317 317 ## generated license token, goto license page in RhodeCode settings to obtain
318 318 ## new token
319 319 license_token = abra-cada-bra1-rce3
320 320
321 321 ## supervisor connection uri, for managing supervisor and logs.
322 322 supervisor.uri =
323 323 ## supervisord group name/id we only want this RC instance to handle
324 324 supervisor.group_id = dev
325 325
326 326 ## Display extended labs settings
327 327 labs_settings_active = true
328 328
329 329 ####################################
330 330 ### CELERY CONFIG ####
331 331 ####################################
332 332 use_celery = false
333 333 broker.host = localhost
334 334 broker.vhost = rabbitmqhost
335 335 broker.port = 5672
336 336 broker.user = rabbitmq
337 337 broker.password = qweqwe
338 338
339 339 celery.imports = rhodecode.lib.celerylib.tasks
340 340
341 341 celery.result.backend = amqp
342 342 celery.result.dburi = amqp://
343 343 celery.result.serialier = json
344 344
345 345 #celery.send.task.error.emails = true
346 346 #celery.amqp.task.result.expires = 18000
347 347
348 348 celeryd.concurrency = 2
349 349 #celeryd.log.file = celeryd.log
350 350 celeryd.log.level = debug
351 351 celeryd.max.tasks.per.child = 1
352 352
353 353 ## tasks will never be sent to the queue, but executed locally instead.
354 354 celery.always.eager = false
355 355
356 356 ####################################
357 357 ### BEAKER CACHE ####
358 358 ####################################
359 359 # default cache dir for templates. Putting this into a ramdisk
360 360 ## can boost performance, eg. %(here)s/data_ramdisk
361 361 cache_dir = %(here)s/data
362 362
363 363 ## locking and default file storage for Beaker. Putting this into a ramdisk
364 364 ## can boost performance, eg. %(here)s/data_ramdisk/cache/beaker_data
365 365 beaker.cache.data_dir = %(here)s/rc/data/cache/beaker_data
366 366 beaker.cache.lock_dir = %(here)s/rc/data/cache/beaker_lock
367 367
368 368 beaker.cache.regions = super_short_term, short_term, long_term, sql_cache_short, auth_plugins, repo_cache_long
369 369
370 370 beaker.cache.super_short_term.type = memory
371 371 beaker.cache.super_short_term.expire = 1
372 372 beaker.cache.super_short_term.key_length = 256
373 373
374 374 beaker.cache.short_term.type = memory
375 375 beaker.cache.short_term.expire = 60
376 376 beaker.cache.short_term.key_length = 256
377 377
378 378 beaker.cache.long_term.type = memory
379 379 beaker.cache.long_term.expire = 36000
380 380 beaker.cache.long_term.key_length = 256
381 381
382 382 beaker.cache.sql_cache_short.type = memory
383 383 beaker.cache.sql_cache_short.expire = 1
384 384 beaker.cache.sql_cache_short.key_length = 256
385 385
386 386 ## default is memory cache, configure only if required
387 387 ## using multi-node or multi-worker setup
388 388 #beaker.cache.auth_plugins.type = ext:database
389 389 #beaker.cache.auth_plugins.lock_dir = %(here)s/data/cache/auth_plugin_lock
390 390 #beaker.cache.auth_plugins.url = postgresql://postgres:secret@localhost/rhodecode
391 391 #beaker.cache.auth_plugins.url = mysql://root:secret@127.0.0.1/rhodecode
392 392 #beaker.cache.auth_plugins.sa.pool_recycle = 3600
393 393 #beaker.cache.auth_plugins.sa.pool_size = 10
394 394 #beaker.cache.auth_plugins.sa.max_overflow = 0
395 395
396 396 beaker.cache.repo_cache_long.type = memorylru_base
397 397 beaker.cache.repo_cache_long.max_items = 4096
398 398 beaker.cache.repo_cache_long.expire = 2592000
399 399
400 400 ## default is memorylru_base cache, configure only if required
401 401 ## using multi-node or multi-worker setup
402 402 #beaker.cache.repo_cache_long.type = ext:memcached
403 403 #beaker.cache.repo_cache_long.url = localhost:11211
404 404 #beaker.cache.repo_cache_long.expire = 1209600
405 405 #beaker.cache.repo_cache_long.key_length = 256
406 406
407 407 ####################################
408 408 ### BEAKER SESSION ####
409 409 ####################################
410 410
411 411 ## .session.type is type of storage options for the session, current allowed
412 412 ## types are file, ext:memcached, ext:database, and memory (default).
413 413 beaker.session.type = file
414 414 beaker.session.data_dir = %(here)s/rc/data/sessions/data
415 415
416 416 ## db based session, fast, and allows easy management over logged in users
417 417 #beaker.session.type = ext:database
418 418 #beaker.session.table_name = db_session
419 419 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
420 420 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
421 421 #beaker.session.sa.pool_recycle = 3600
422 422 #beaker.session.sa.echo = false
423 423
424 424 beaker.session.key = rhodecode
425 425 beaker.session.secret = test-rc-uytcxaz
426 426 beaker.session.lock_dir = %(here)s/rc/data/sessions/lock
427 427
428 428 ## Secure encrypted cookie. Requires AES and AES python libraries
429 429 ## you must disable beaker.session.secret to use this
430 430 #beaker.session.encrypt_key = key_for_encryption
431 431 #beaker.session.validate_key = validation_key
432 432
433 433 ## sets session as invalid(also logging out user) if it haven not been
434 434 ## accessed for given amount of time in seconds
435 435 beaker.session.timeout = 2592000
436 436 beaker.session.httponly = true
437 437 ## Path to use for the cookie. Set to prefix if you use prefix middleware
438 438 #beaker.session.cookie_path = /custom_prefix
439 439
440 440 ## uncomment for https secure cookie
441 441 beaker.session.secure = false
442 442
443 443 ## auto save the session to not to use .save()
444 444 beaker.session.auto = false
445 445
446 446 ## default cookie expiration time in seconds, set to `true` to set expire
447 447 ## at browser close
448 448 #beaker.session.cookie_expires = 3600
449 449
450 450 ###################################
451 451 ## SEARCH INDEXING CONFIGURATION ##
452 452 ###################################
453 453 ## Full text search indexer is available in rhodecode-tools under
454 454 ## `rhodecode-tools index` command
455 455
456 456 ## WHOOSH Backend, doesn't require additional services to run
457 457 ## it works good with few dozen repos
458 458 search.module = rhodecode.lib.index.whoosh
459 459 search.location = %(here)s/data/index
460 460
461 461 ########################################
462 462 ### CHANNELSTREAM CONFIG ####
463 463 ########################################
464 464 ## channelstream enables persistent connections and live notification
465 465 ## in the system. It's also used by the chat system
466 466
467 467 channelstream.enabled = false
468 468
469 469 ## server address for channelstream server on the backend
470 470 channelstream.server = 127.0.0.1:9800
471 471 ## location of the channelstream server from outside world
472 472 ## use ws:// for http or wss:// for https. This address needs to be handled
473 473 ## by external HTTP server such as Nginx or Apache
474 474 ## see nginx/apache configuration examples in our docs
475 475 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
476 476 channelstream.secret = secret
477 477 channelstream.history.location = %(here)s/channelstream_history
478 478
479 479 ## Internal application path that Javascript uses to connect into.
480 480 ## If you use proxy-prefix the prefix should be added before /_channelstream
481 481 channelstream.proxy_path = /_channelstream
482 482
483 483
484 484 ###################################
485 485 ## APPENLIGHT CONFIG ##
486 486 ###################################
487 487
488 488 ## Appenlight is tailored to work with RhodeCode, see
489 489 ## http://appenlight.com for details how to obtain an account
490 490
491 491 ## appenlight integration enabled
492 492 appenlight = false
493 493
494 494 appenlight.server_url = https://api.appenlight.com
495 495 appenlight.api_key = YOUR_API_KEY
496 496 #appenlight.transport_config = https://api.appenlight.com?threaded=1&timeout=5
497 497
498 498 # used for JS client
499 499 appenlight.api_public_key = YOUR_API_PUBLIC_KEY
500 500
501 501 ## TWEAK AMOUNT OF INFO SENT HERE
502 502
503 503 ## enables 404 error logging (default False)
504 504 appenlight.report_404 = false
505 505
506 506 ## time in seconds after request is considered being slow (default 1)
507 507 appenlight.slow_request_time = 1
508 508
509 509 ## record slow requests in application
510 510 ## (needs to be enabled for slow datastore recording and time tracking)
511 511 appenlight.slow_requests = true
512 512
513 513 ## enable hooking to application loggers
514 514 appenlight.logging = true
515 515
516 516 ## minimum log level for log capture
517 517 appenlight.logging.level = WARNING
518 518
519 519 ## send logs only from erroneous/slow requests
520 520 ## (saves API quota for intensive logging)
521 521 appenlight.logging_on_error = false
522 522
523 523 ## list of additonal keywords that should be grabbed from environ object
524 524 ## can be string with comma separated list of words in lowercase
525 525 ## (by default client will always send following info:
526 526 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
527 527 ## start with HTTP* this list be extended with additional keywords here
528 528 appenlight.environ_keys_whitelist =
529 529
530 530 ## list of keywords that should be blanked from request object
531 531 ## can be string with comma separated list of words in lowercase
532 532 ## (by default client will always blank keys that contain following words
533 533 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
534 534 ## this list be extended with additional keywords set here
535 535 appenlight.request_keys_blacklist =
536 536
537 537 ## list of namespaces that should be ignores when gathering log entries
538 538 ## can be string with comma separated list of namespaces
539 539 ## (by default the client ignores own entries: appenlight_client.client)
540 540 appenlight.log_namespace_blacklist =
541 541
542 542
543 543 ################################################################################
544 544 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
545 545 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
546 546 ## execute malicious code after an exception is raised. ##
547 547 ################################################################################
548 548 set debug = false
549 549
550 550
551 551 ##############
552 552 ## STYLING ##
553 553 ##############
554 554 debug_style = false
555 555
556 556 ###########################################
557 557 ### MAIN RHODECODE DATABASE CONFIG ###
558 558 ###########################################
559 559 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode_test.db?timeout=30
560 560 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode_test
561 561 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode_test
562 562 sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode_test.db?timeout=30
563 563
564 564 # see sqlalchemy docs for other advanced settings
565 565
566 566 ## print the sql statements to output
567 567 sqlalchemy.db1.echo = false
568 568 ## recycle the connections after this amount of seconds
569 569 sqlalchemy.db1.pool_recycle = 3600
570 570 sqlalchemy.db1.convert_unicode = true
571 571
572 572 ## the number of connections to keep open inside the connection pool.
573 573 ## 0 indicates no limit
574 574 #sqlalchemy.db1.pool_size = 5
575 575
576 576 ## the number of connections to allow in connection pool "overflow", that is
577 577 ## connections that can be opened above and beyond the pool_size setting,
578 578 ## which defaults to five.
579 579 #sqlalchemy.db1.max_overflow = 10
580 580
581 581
582 582 ##################
583 583 ### VCS CONFIG ###
584 584 ##################
585 585 vcs.server.enable = true
586 586 vcs.server = localhost:9901
587 587
588 588 ## Web server connectivity protocol, responsible for web based VCS operatations
589 589 ## Available protocols are:
590 590 ## `http` - use http-rpc backend (default)
591 591 vcs.server.protocol = http
592 592
593 593 ## Push/Pull operations protocol, available options are:
594 594 ## `http` - use http-rpc backend (default)
595 595 ## `vcsserver.scm_app` - internal app (EE only)
596 596 vcs.scm_app_implementation = http
597 597
598 598 ## Push/Pull operations hooks protocol, available options are:
599 599 ## `http` - use http-rpc backend (default)
600 600 vcs.hooks.protocol = http
601 601
602 602 vcs.server.log_level = debug
603 603 ## Start VCSServer with this instance as a subprocess, usefull for development
604 604 vcs.start_server = false
605 605
606 606 ## List of enabled VCS backends, available options are:
607 607 ## `hg` - mercurial
608 608 ## `git` - git
609 609 ## `svn` - subversion
610 610 vcs.backends = hg, git, svn
611 611
612 612 vcs.connection_timeout = 3600
613 613 ## Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
614 614 ## Available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
615 615 #vcs.svn.compatible_version = pre-1.8-compatible
616 616
617 617
618 618 ############################################################
619 619 ### Subversion proxy support (mod_dav_svn) ###
620 620 ### Maps RhodeCode repo groups into SVN paths for Apache ###
621 621 ############################################################
622 622 ## Enable or disable the config file generation.
623 623 svn.proxy.generate_config = false
624 624 ## Generate config file with `SVNListParentPath` set to `On`.
625 625 svn.proxy.list_parent_path = true
626 626 ## Set location and file name of generated config file.
627 627 svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
628 628 ## Used as a prefix to the `Location` block in the generated config file.
629 629 ## In most cases it should be set to `/`.
630 630 svn.proxy.location_root = /
631 631 ## Command to reload the mod dav svn configuration on change.
632 632 ## Example: `/etc/init.d/apache2 reload`
633 633 #svn.proxy.reload_cmd = /etc/init.d/apache2 reload
634 634 ## If the timeout expires before the reload command finishes, the command will
635 635 ## be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
636 636 #svn.proxy.reload_timeout = 10
637 637
638 638 ############################################################
639 639 ### SSH Support Settings ###
640 640 ############################################################
641 641
642 642 ## Defines if the authorized_keys file should be written on any change of
643 643 ## user ssh keys, setting this to false also disables posibility of adding
644 644 ## ssh keys for users from web interface.
645 645 ssh.generate_authorized_keyfile = true
646 646
647 647 ## Options for ssh, default is `no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding`
648 648 # ssh.authorized_keys_ssh_opts =
649 649
650 650 ## File to generate the authorized keys together with options
651 651 ## It is possible to have multiple key files specified in `sshd_config` e.g.
652 652 ## AuthorizedKeysFile %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode
653 653 ssh.authorized_keys_file_path = %(here)s/rc/authorized_keys_rhodecode
654 654
655 655 ## Command to execute the SSH wrapper. The binary is available in the
656 656 ## rhodecode installation directory.
657 ## e.g ~/.rccontrol/community-1/profile/bin/rcssh-wrapper
658 ssh.wrapper_cmd = ~/.rccontrol/community-1/rcssh-wrapper
657 ## e.g ~/.rccontrol/community-1/profile/bin/rc-ssh-wrapper
658 ssh.wrapper_cmd = ~/.rccontrol/community-1/rc-ssh-wrapper
659 659
660 660 ## Allow shell when executing the ssh-wrapper command
661 661 ssh.wrapper_cmd_allow_shell = false
662 662
663 663 ## Enables logging, and detailed output send back to the client. Usefull for
664 664 ## debugging, shouldn't be used in production.
665 665 ssh.enable_debug_logging = false
666 666
667 667 ## API KEY for user who has access to fetch other user permission information
668 668 ## most likely an super-admin account with some IP restrictions.
669 669 ssh.api_key =
670 670
671 671 ## API Host, the server address of RhodeCode instance that the api_key will
672 672 ## access
673 673 ssh.api_host = http://localhost
674 674
675 675 ## Paths to binary executrables, by default they are the names, but we can
676 676 ## override them if we want to use a custom one
677 677 ssh.executable.hg = ~/.rccontrol/vcsserver-1/profile/bin/hg
678 678 ssh.executable.git = ~/.rccontrol/vcsserver-1/profile/bin/git
679 679 ssh.executable.svn = ~/.rccontrol/vcsserver-1/profile/bin/svnserve
680 680
681 681
682 682 ## Dummy marker to add new entries after.
683 683 ## Add any custom entries below. Please don't remove.
684 684 custom.conf = 1
685 685
686 686
687 687 ################################
688 688 ### LOGGING CONFIGURATION ####
689 689 ################################
690 690 [loggers]
691 691 keys = root, routes, rhodecode, sqlalchemy, beaker, templates, ssh_wrapper
692 692
693 693 [handlers]
694 694 keys = console, console_sql
695 695
696 696 [formatters]
697 697 keys = generic, color_formatter, color_formatter_sql
698 698
699 699 #############
700 700 ## LOGGERS ##
701 701 #############
702 702 [logger_root]
703 703 level = NOTSET
704 704 handlers = console
705 705
706 706 [logger_routes]
707 707 level = DEBUG
708 708 handlers =
709 709 qualname = routes.middleware
710 710 ## "level = DEBUG" logs the route matched and routing variables.
711 711 propagate = 1
712 712
713 713 [logger_beaker]
714 714 level = DEBUG
715 715 handlers =
716 716 qualname = beaker.container
717 717 propagate = 1
718 718
719 719 [logger_templates]
720 720 level = INFO
721 721 handlers =
722 722 qualname = pylons.templating
723 723 propagate = 1
724 724
725 725 [logger_rhodecode]
726 726 level = DEBUG
727 727 handlers =
728 728 qualname = rhodecode
729 729 propagate = 1
730 730
731 731 [logger_sqlalchemy]
732 732 level = ERROR
733 733 handlers = console_sql
734 734 qualname = sqlalchemy.engine
735 735 propagate = 0
736 736
737 737 [logger_ssh_wrapper]
738 738 level = DEBUG
739 739 handlers =
740 740 qualname = ssh_wrapper
741 741 propagate = 1
742 742
743 743
744 744 ##############
745 745 ## HANDLERS ##
746 746 ##############
747 747
748 748 [handler_console]
749 749 class = StreamHandler
750 750 args = (sys.stderr,)
751 751 level = DEBUG
752 752 formatter = generic
753 753
754 754 [handler_console_sql]
755 755 class = StreamHandler
756 756 args = (sys.stderr,)
757 757 level = WARN
758 758 formatter = generic
759 759
760 760 ################
761 761 ## FORMATTERS ##
762 762 ################
763 763
764 764 [formatter_generic]
765 765 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
766 766 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
767 767 datefmt = %Y-%m-%d %H:%M:%S
768 768
769 769 [formatter_color_formatter]
770 770 class = rhodecode.lib.logging_formatter.ColorFormatter
771 771 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
772 772 datefmt = %Y-%m-%d %H:%M:%S
773 773
774 774 [formatter_color_formatter_sql]
775 775 class = rhodecode.lib.logging_formatter.ColorFormatterSql
776 776 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
777 777 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,261 +1,262 b''
1 1 # -*- coding: utf-8 -*-
2 2
3 3 # Copyright (C) 2010-2017 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 early to make sure things are patched up properly
22 22 from setuptools import setup, find_packages
23 23
24 24 import os
25 25 import sys
26 26 import pkgutil
27 27 import platform
28 28
29 29 from pip.download import PipSession
30 30 from pip.req import parse_requirements
31 31
32 32 from codecs import open
33 33
34 34
35 35 if sys.version_info < (2, 7):
36 36 raise Exception('RhodeCode requires Python 2.7 or later')
37 37
38 38 here = os.path.abspath(os.path.dirname(__file__))
39 39
40 40 # defines current platform
41 41 __platform__ = platform.system()
42 42 __license__ = 'AGPLv3, and Commercial License'
43 43 __author__ = 'RhodeCode GmbH'
44 44 __url__ = 'https://code.rhodecode.com'
45 45 is_windows = __platform__ in ('Windows',)
46 46
47 47
48 48 def _get_requirements(req_filename, exclude=None, extras=None):
49 49 extras = extras or []
50 50 exclude = exclude or []
51 51
52 52 try:
53 53 parsed = parse_requirements(
54 54 os.path.join(here, req_filename), session=PipSession())
55 55 except TypeError:
56 56 # try pip < 6.0.0, that doesn't support session
57 57 parsed = parse_requirements(os.path.join(here, req_filename))
58 58
59 59 requirements = []
60 60 for ir in parsed:
61 61 if ir.req and ir.name not in exclude:
62 62 requirements.append(str(ir.req))
63 63 return requirements + extras
64 64
65 65
66 66 # requirements extract
67 67 setup_requirements = ['PasteScript', 'pytest-runner']
68 68 install_requirements = _get_requirements(
69 69 'requirements.txt', exclude=['setuptools'])
70 70 test_requirements = _get_requirements(
71 71 'requirements_test.txt', extras=['configobj'])
72 72
73 73 install_requirements = [
74 74 'Babel',
75 75 'Beaker',
76 76 'FormEncode',
77 77 'Mako',
78 78 'Markdown',
79 79 'MarkupSafe',
80 80 'MySQL-python',
81 81 'Paste',
82 82 'PasteDeploy',
83 83 'PasteScript',
84 84 'Pygments',
85 85 'pygments-markdown-lexer',
86 86 'Pylons',
87 87 'Routes',
88 88 'SQLAlchemy',
89 89 'Tempita',
90 90 'URLObject',
91 91 'WebError',
92 92 'WebHelpers',
93 93 'WebHelpers2',
94 94 'WebOb',
95 95 'WebTest',
96 96 'Whoosh',
97 97 'alembic',
98 98 'amqplib',
99 99 'anyjson',
100 100 'appenlight-client',
101 101 'authomatic',
102 102 'cssselect',
103 103 'celery',
104 104 'channelstream',
105 105 'colander',
106 106 'decorator',
107 107 'deform',
108 108 'docutils',
109 109 'gevent',
110 110 'gunicorn',
111 111 'infrae.cache',
112 112 'ipython',
113 113 'iso8601',
114 114 'kombu',
115 115 'lxml',
116 116 'msgpack-python',
117 117 'nbconvert',
118 118 'packaging',
119 119 'psycopg2',
120 120 'py-gfm',
121 121 'pycrypto',
122 122 'pycurl',
123 123 'pyparsing',
124 124 'pyramid',
125 125 'pyramid-debugtoolbar',
126 126 'pyramid-mako',
127 127 'pyramid-beaker',
128 128 'pysqlite',
129 129 'python-dateutil',
130 130 'python-ldap',
131 131 'python-memcached',
132 132 'python-pam',
133 133 'recaptcha-client',
134 134 'repoze.lru',
135 135 'requests',
136 136 'simplejson',
137 137 'sshpubkeys',
138 138 'subprocess32',
139 139 'waitress',
140 140 'zope.cachedescriptors',
141 141 'dogpile.cache',
142 142 'dogpile.core',
143 143 'psutil',
144 144 'py-bcrypt',
145 145 ]
146 146
147 147
148 148 def get_version():
149 149 version = pkgutil.get_data('rhodecode', 'VERSION')
150 150 return version.strip()
151 151
152 152
153 153 # additional files that goes into package itself
154 154 package_data = {
155 155 '': ['*.txt', '*.rst'],
156 156 'configs': ['*.ini'],
157 157 'rhodecode': ['VERSION', 'i18n/*/LC_MESSAGES/*.mo', ],
158 158 }
159 159
160 160 description = 'Source Code Management Platform'
161 161 keywords = ' '.join([
162 162 'rhodecode', 'mercurial', 'git', 'svn',
163 163 'code review',
164 164 'repo groups', 'ldap', 'repository management', 'hgweb',
165 165 'hgwebdir', 'gitweb', 'serving hgweb',
166 166 ])
167 167
168 168
169 169 # README/DESCRIPTION generation
170 170 readme_file = 'README.rst'
171 171 changelog_file = 'CHANGES.rst'
172 172 try:
173 173 long_description = open(readme_file).read() + '\n\n' + \
174 174 open(changelog_file).read()
175 175 except IOError as err:
176 176 sys.stderr.write(
177 177 "[WARNING] Cannot find file specified as long_description (%s)\n "
178 178 "or changelog (%s) skipping that file" % (readme_file, changelog_file))
179 179 long_description = description
180 180
181 181
182 182 setup(
183 183 name='rhodecode-enterprise-ce',
184 184 version=get_version(),
185 185 description=description,
186 186 long_description=long_description,
187 187 keywords=keywords,
188 188 license=__license__,
189 189 author=__author__,
190 190 author_email='marcin@rhodecode.com',
191 191 url=__url__,
192 192 setup_requires=setup_requirements,
193 193 install_requires=install_requirements,
194 194 tests_require=test_requirements,
195 195 zip_safe=False,
196 196 packages=find_packages(exclude=["docs", "tests*"]),
197 197 package_data=package_data,
198 198 include_package_data=True,
199 199 classifiers=[
200 200 'Development Status :: 6 - Mature',
201 201 'Environment :: Web Environment',
202 202 'Intended Audience :: Developers',
203 203 'Operating System :: OS Independent',
204 204 'Topic :: Software Development :: Version Control',
205 205 'License :: OSI Approved :: Affero GNU General Public License v3 or later (AGPLv3+)',
206 206 'Programming Language :: Python :: 2.7',
207 207 ],
208 208 message_extractors={
209 209 'rhodecode': [
210 210 ('**.py', 'python', None),
211 211 ('**.js', 'javascript', None),
212 212 ('templates/**.mako', 'mako', {'input_encoding': 'utf-8'}),
213 213 ('templates/**.html', 'mako', {'input_encoding': 'utf-8'}),
214 214 ('public/**', 'ignore', None),
215 215 ]
216 216 },
217 217 paster_plugins=['PasteScript', 'Pylons'],
218 218 entry_points={
219 219 'enterprise.plugins1': [
220 220 'crowd=rhodecode.authentication.plugins.auth_crowd:plugin_factory',
221 221 'headers=rhodecode.authentication.plugins.auth_headers:plugin_factory',
222 222 'jasig_cas=rhodecode.authentication.plugins.auth_jasig_cas:plugin_factory',
223 223 'ldap=rhodecode.authentication.plugins.auth_ldap:plugin_factory',
224 224 'pam=rhodecode.authentication.plugins.auth_pam:plugin_factory',
225 225 'rhodecode=rhodecode.authentication.plugins.auth_rhodecode:plugin_factory',
226 226 'token=rhodecode.authentication.plugins.auth_token:plugin_factory',
227 227 ],
228 228 'paste.app_factory': [
229 229 'main=rhodecode.config.middleware:make_pyramid_app',
230 230 'pylons=rhodecode.config.middleware:make_app',
231 231 ],
232 232 'paste.app_install': [
233 233 'main=pylons.util:PylonsInstaller',
234 234 'pylons=pylons.util:PylonsInstaller',
235 235 ],
236 236 'paste.global_paster_command': [
237 237 'make-config=rhodecode.lib.paster_commands.make_config:Command',
238 238 'setup-rhodecode=rhodecode.lib.paster_commands.setup_rhodecode:Command',
239 239 'ishell=rhodecode.lib.paster_commands.ishell:Command',
240 240 'upgrade-db=rhodecode.lib.dbmigrate:UpgradeDb',
241 241 'celeryd=rhodecode.lib.celerypylons.commands:CeleryDaemonCommand',
242 242 ],
243 243 'pyramid.pshell_runner': [
244 244 'ipython = rhodecode.lib.pyramid_shell:ipython_shell_runner',
245 245 ],
246 246 'pytest11': [
247 247 'pylons=rhodecode.tests.pylons_plugin',
248 248 'enterprise=rhodecode.tests.plugin',
249 249 ],
250 250 'console_scripts': [
251 'rcserver=rhodecode.rcserver:main',
252 'rcsetup-app=rhodecode.lib.rc_commands.setup_rc:main',
253 'rcupgrade-db=rhodecode.lib.rc_commands.upgrade_db:main',
254 'rcssh-wrapper=rhodecode.apps.ssh_support.lib.ssh_wrapper:main',
251 'rc-server=rhodecode.rcserver:main',
252 'rc-setup-app=rhodecode.lib.rc_commands.setup_rc:main',
253 'rc-upgrade-db=rhodecode.lib.rc_commands.upgrade_db:main',
254 'rc-ishell=rhodecode.lib.rc_commands.ishell:main',
255 'rc-ssh-wrapper=rhodecode.apps.ssh_support.lib.ssh_wrapper:main',
255 256 ],
256 257 'beaker.backends': [
257 258 'memorylru_base=rhodecode.lib.memory_lru_debug:MemoryLRUNamespaceManagerBase',
258 259 'memorylru_debug=rhodecode.lib.memory_lru_debug:MemoryLRUNamespaceManagerDebug'
259 260 ]
260 261 },
261 262 )
General Comments 0
You need to be logged in to leave comments. Login now