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