##// END OF EJS Templates
tests: updated test ini and configs for setting custom ini files
super-admin -
r5391:1a75a34b default
parent child Browse files
Show More
@@ -1,769 +1,769 b''
1
1
2 ; #########################################
2 ; #########################################
3 ; RHODECODE COMMUNITY EDITION CONFIGURATION
3 ; RHODECODE COMMUNITY EDITION CONFIGURATION
4 ; #########################################
4 ; #########################################
5
5
6 [DEFAULT]
6 [DEFAULT]
7 ; Debug flag sets all loggers to debug, and enables request tracking
7 ; Debug flag sets all loggers to debug, and enables request tracking
8 debug = false
8 debug = false
9
9
10 ; ########################################################################
10 ; ########################################################################
11 ; EMAIL CONFIGURATION
11 ; EMAIL CONFIGURATION
12 ; These settings will be used by the RhodeCode mailing system
12 ; These settings will be used by the RhodeCode mailing system
13 ; ########################################################################
13 ; ########################################################################
14
14
15 ; prefix all emails subjects with given prefix, helps filtering out emails
15 ; prefix all emails subjects with given prefix, helps filtering out emails
16 #email_prefix = [RhodeCode]
16 #email_prefix = [RhodeCode]
17
17
18 ; email FROM address all mails will be sent
18 ; email FROM address all mails will be sent
19 #app_email_from = rhodecode-noreply@localhost
19 #app_email_from = rhodecode-noreply@localhost
20
20
21 #smtp_server = mail.server.com
21 #smtp_server = mail.server.com
22 #smtp_username =
22 #smtp_username =
23 #smtp_password =
23 #smtp_password =
24 #smtp_port =
24 #smtp_port =
25 #smtp_use_tls = false
25 #smtp_use_tls = false
26 #smtp_use_ssl = true
26 #smtp_use_ssl = true
27
27
28 [server:main]
28 [server:main]
29 ; COMMON HOST/IP CONFIG, This applies mostly to develop setup,
29 ; COMMON HOST/IP CONFIG, This applies mostly to develop setup,
30 ; Host port for gunicorn are controlled by gunicorn_conf.py
30 ; Host port for gunicorn are controlled by gunicorn_conf.py
31 host = 127.0.0.1
31 host = 127.0.0.1
32 port = 10020
32 port = 10020
33
33
34
34
35 ; ###########################
35 ; ###########################
36 ; GUNICORN APPLICATION SERVER
36 ; GUNICORN APPLICATION SERVER
37 ; ###########################
37 ; ###########################
38
38
39 ; run with gunicorn --paste rhodecode.ini --config gunicorn_conf.py
39 ; run with gunicorn --paste rhodecode.ini --config gunicorn_conf.py
40
40
41 ; Module to use, this setting shouldn't be changed
41 ; Module to use, this setting shouldn't be changed
42 use = egg:gunicorn#main
42 use = egg:gunicorn#main
43
43
44 ; Prefix middleware for RhodeCode.
44 ; Prefix middleware for RhodeCode.
45 ; recommended when using proxy setup.
45 ; recommended when using proxy setup.
46 ; allows to set RhodeCode under a prefix in server.
46 ; allows to set RhodeCode under a prefix in server.
47 ; eg https://server.com/custom_prefix. Enable `filter-with =` option below as well.
47 ; eg https://server.com/custom_prefix. Enable `filter-with =` option below as well.
48 ; And set your prefix like: `prefix = /custom_prefix`
48 ; And set your prefix like: `prefix = /custom_prefix`
49 ; be sure to also set beaker.session.cookie_path = /custom_prefix if you need
49 ; be sure to also set beaker.session.cookie_path = /custom_prefix if you need
50 ; to make your cookies only work on prefix url
50 ; to make your cookies only work on prefix url
51 [filter:proxy-prefix]
51 [filter:proxy-prefix]
52 use = egg:PasteDeploy#prefix
52 use = egg:PasteDeploy#prefix
53 prefix = /
53 prefix = /
54
54
55 [app:main]
55 [app:main]
56 ; The %(here)s variable will be replaced with the absolute path of parent directory
56 ; The %(here)s variable will be replaced with the absolute path of parent directory
57 ; of this file
57 ; of this file
58 ; Each option in the app:main can be override by an environmental variable
58 ; Each option in the app:main can be override by an environmental variable
59 ;
59 ;
60 ;To override an option:
60 ;To override an option:
61 ;
61 ;
62 ;RC_<KeyName>
62 ;RC_<KeyName>
63 ;Everything should be uppercase, . and - should be replaced by _.
63 ;Everything should be uppercase, . and - should be replaced by _.
64 ;For example, if you have these configuration settings:
64 ;For example, if you have these configuration settings:
65 ;rc_cache.repo_object.backend = foo
65 ;rc_cache.repo_object.backend = foo
66 ;can be overridden by
66 ;can be overridden by
67 ;export RC_CACHE_REPO_OBJECT_BACKEND=foo
67 ;export RC_CACHE_REPO_OBJECT_BACKEND=foo
68
68
69 use = egg:rhodecode-enterprise-ce
69 use = egg:rhodecode-enterprise-ce
70
70
71 ; enable proxy prefix middleware, defined above
71 ; enable proxy prefix middleware, defined above
72 #filter-with = proxy-prefix
72 #filter-with = proxy-prefix
73
73
74 ; encryption key used to encrypt social plugin tokens,
74 ; encryption key used to encrypt social plugin tokens,
75 ; remote_urls with credentials etc, if not set it defaults to
75 ; remote_urls with credentials etc, if not set it defaults to
76 ; `beaker.session.secret`
76 ; `beaker.session.secret`
77 #rhodecode.encrypted_values.secret =
77 #rhodecode.encrypted_values.secret =
78
78
79 ; decryption strict mode (enabled by default). It controls if decryption raises
79 ; decryption strict mode (enabled by default). It controls if decryption raises
80 ; `SignatureVerificationError` in case of wrong key, or damaged encryption data.
80 ; `SignatureVerificationError` in case of wrong key, or damaged encryption data.
81 #rhodecode.encrypted_values.strict = false
81 #rhodecode.encrypted_values.strict = false
82
82
83 ; Pick algorithm for encryption. Either fernet (more secure) or aes (default)
83 ; Pick algorithm for encryption. Either fernet (more secure) or aes (default)
84 ; fernet is safer, and we strongly recommend switching to it.
84 ; fernet is safer, and we strongly recommend switching to it.
85 ; Due to backward compatibility aes is used as default.
85 ; Due to backward compatibility aes is used as default.
86 #rhodecode.encrypted_values.algorithm = fernet
86 #rhodecode.encrypted_values.algorithm = fernet
87
87
88 ; Return gzipped responses from RhodeCode (static files/application)
88 ; Return gzipped responses from RhodeCode (static files/application)
89 gzip_responses = false
89 gzip_responses = false
90
90
91 ; Auto-generate javascript routes file on startup
91 ; Auto-generate javascript routes file on startup
92 generate_js_files = false
92 generate_js_files = false
93
93
94 ; System global default language.
94 ; System global default language.
95 ; All available languages: en (default), be, de, es, fr, it, ja, pl, pt, ru, zh
95 ; All available languages: en (default), be, de, es, fr, it, ja, pl, pt, ru, zh
96 lang = en
96 lang = en
97
97
98 ; Perform a full repository scan and import on each server start.
98 ; Perform a full repository scan and import on each server start.
99 ; Settings this to true could lead to very long startup time.
99 ; Settings this to true could lead to very long startup time.
100 startup.import_repos = false
100 startup.import_repos = false
101
101
102 ; URL at which the application is running. This is used for Bootstrapping
102 ; URL at which the application is running. This is used for Bootstrapping
103 ; requests in context when no web request is available. Used in ishell, or
103 ; requests in context when no web request is available. Used in ishell, or
104 ; SSH calls. Set this for events to receive proper url for SSH calls.
104 ; SSH calls. Set this for events to receive proper url for SSH calls.
105 app.base_url = http://rhodecode.local
105 app.base_url = http://rhodecode.local
106
106
107 ; Host at which the Service API is running.
107 ; Host at which the Service API is running.
108 app.service_api.host = http://rhodecode.local:10020
108 app.service_api.host = http://rhodecode.local:10020
109
109
110 ; Secret for Service API authentication.
110 ; Secret for Service API authentication.
111 app.service_api.token =
111 app.service_api.token =
112
112
113 ; Unique application ID. Should be a random unique string for security.
113 ; Unique application ID. Should be a random unique string for security.
114 app_instance_uuid = rc-production
114 app_instance_uuid = rc-production
115
115
116 ; Cut off limit for large diffs (size in bytes). If overall diff size on
116 ; Cut off limit for large diffs (size in bytes). If overall diff size on
117 ; commit, or pull request exceeds this limit this diff will be displayed
117 ; commit, or pull request exceeds this limit this diff will be displayed
118 ; partially. E.g 512000 == 512Kb
118 ; partially. E.g 512000 == 512Kb
119 cut_off_limit_diff = 512000
119 cut_off_limit_diff = 512000
120
120
121 ; Cut off limit for large files inside diffs (size in bytes). Each individual
121 ; Cut off limit for large files inside diffs (size in bytes). Each individual
122 ; file inside diff which exceeds this limit will be displayed partially.
122 ; file inside diff which exceeds this limit will be displayed partially.
123 ; E.g 128000 == 128Kb
123 ; E.g 128000 == 128Kb
124 cut_off_limit_file = 128000
124 cut_off_limit_file = 128000
125
125
126 ; Use cached version of vcs repositories everywhere. Recommended to be `true`
126 ; Use cached version of vcs repositories everywhere. Recommended to be `true`
127 vcs_full_cache = true
127 vcs_full_cache = true
128
128
129 ; Force https in RhodeCode, fixes https redirects, assumes it's always https.
129 ; Force https in RhodeCode, fixes https redirects, assumes it's always https.
130 ; Normally this is controlled by proper flags sent from http server such as Nginx or Apache
130 ; Normally this is controlled by proper flags sent from http server such as Nginx or Apache
131 force_https = false
131 force_https = false
132
132
133 ; use Strict-Transport-Security headers
133 ; use Strict-Transport-Security headers
134 use_htsts = false
134 use_htsts = false
135
135
136 ; Set to true if your repos are exposed using the dumb protocol
136 ; Set to true if your repos are exposed using the dumb protocol
137 git_update_server_info = false
137 git_update_server_info = false
138
138
139 ; RSS/ATOM feed options
139 ; RSS/ATOM feed options
140 rss_cut_off_limit = 256000
140 rss_cut_off_limit = 256000
141 rss_items_per_page = 10
141 rss_items_per_page = 10
142 rss_include_diff = false
142 rss_include_diff = false
143
143
144 ; gist URL alias, used to create nicer urls for gist. This should be an
144 ; gist URL alias, used to create nicer urls for gist. This should be an
145 ; url that does rewrites to _admin/gists/{gistid}.
145 ; url that does rewrites to _admin/gists/{gistid}.
146 ; example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
146 ; example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
147 ; RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/{gistid}
147 ; RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/{gistid}
148 gist_alias_url =
148 gist_alias_url =
149
149
150 ; List of views (using glob pattern syntax) that AUTH TOKENS could be
150 ; List of views (using glob pattern syntax) that AUTH TOKENS could be
151 ; used for access.
151 ; used for access.
152 ; Adding ?auth_token=TOKEN_HASH to the url authenticates this request as if it
152 ; Adding ?auth_token=TOKEN_HASH to the url authenticates this request as if it
153 ; came from the the logged in user who own this authentication token.
153 ; came from the the logged in user who own this authentication token.
154 ; Additionally @TOKEN syntax can be used to bound the view to specific
154 ; Additionally @TOKEN syntax can be used to bound the view to specific
155 ; authentication token. Such view would be only accessible when used together
155 ; authentication token. Such view would be only accessible when used together
156 ; with this authentication token
156 ; with this authentication token
157 ; list of all views can be found under `/_admin/permissions/auth_token_access`
157 ; list of all views can be found under `/_admin/permissions/auth_token_access`
158 ; The list should be "," separated and on a single line.
158 ; The list should be "," separated and on a single line.
159 ; Most common views to enable:
159 ; Most common views to enable:
160
160
161 # RepoCommitsView:repo_commit_download
161 # RepoCommitsView:repo_commit_download
162 # RepoCommitsView:repo_commit_patch
162 # RepoCommitsView:repo_commit_patch
163 # RepoCommitsView:repo_commit_raw
163 # RepoCommitsView:repo_commit_raw
164 # RepoCommitsView:repo_commit_raw@TOKEN
164 # RepoCommitsView:repo_commit_raw@TOKEN
165 # RepoFilesView:repo_files_diff
165 # RepoFilesView:repo_files_diff
166 # RepoFilesView:repo_archivefile
166 # RepoFilesView:repo_archivefile
167 # RepoFilesView:repo_file_raw
167 # RepoFilesView:repo_file_raw
168 # GistView:*
168 # GistView:*
169 api_access_controllers_whitelist =
169 api_access_controllers_whitelist =
170
170
171 ; Default encoding used to convert from and to unicode
171 ; Default encoding used to convert from and to unicode
172 ; can be also a comma separated list of encoding in case of mixed encodings
172 ; can be also a comma separated list of encoding in case of mixed encodings
173 default_encoding = UTF-8
173 default_encoding = UTF-8
174
174
175 ; instance-id prefix
175 ; instance-id prefix
176 ; a prefix key for this instance used for cache invalidation when running
176 ; a prefix key for this instance used for cache invalidation when running
177 ; multiple instances of RhodeCode, make sure it's globally unique for
177 ; multiple instances of RhodeCode, make sure it's globally unique for
178 ; all running RhodeCode instances. Leave empty if you don't use it
178 ; all running RhodeCode instances. Leave empty if you don't use it
179 instance_id =
179 instance_id =
180
180
181 ; Fallback authentication plugin. Set this to a plugin ID to force the usage
181 ; Fallback authentication plugin. Set this to a plugin ID to force the usage
182 ; of an authentication plugin also if it is disabled by it's settings.
182 ; of an authentication plugin also if it is disabled by it's settings.
183 ; This could be useful if you are unable to log in to the system due to broken
183 ; This could be useful if you are unable to log in to the system due to broken
184 ; authentication settings. Then you can enable e.g. the internal RhodeCode auth
184 ; authentication settings. Then you can enable e.g. the internal RhodeCode auth
185 ; module to log in again and fix the settings.
185 ; module to log in again and fix the settings.
186 ; Available builtin plugin IDs (hash is part of the ID):
186 ; Available builtin plugin IDs (hash is part of the ID):
187 ; egg:rhodecode-enterprise-ce#rhodecode
187 ; egg:rhodecode-enterprise-ce#rhodecode
188 ; egg:rhodecode-enterprise-ce#pam
188 ; egg:rhodecode-enterprise-ce#pam
189 ; egg:rhodecode-enterprise-ce#ldap
189 ; egg:rhodecode-enterprise-ce#ldap
190 ; egg:rhodecode-enterprise-ce#jasig_cas
190 ; egg:rhodecode-enterprise-ce#jasig_cas
191 ; egg:rhodecode-enterprise-ce#headers
191 ; egg:rhodecode-enterprise-ce#headers
192 ; egg:rhodecode-enterprise-ce#crowd
192 ; egg:rhodecode-enterprise-ce#crowd
193
193
194 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
194 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
195
195
196 ; Flag to control loading of legacy plugins in py:/path format
196 ; Flag to control loading of legacy plugins in py:/path format
197 auth_plugin.import_legacy_plugins = true
197 auth_plugin.import_legacy_plugins = true
198
198
199 ; alternative return HTTP header for failed authentication. Default HTTP
199 ; alternative return HTTP header for failed authentication. Default HTTP
200 ; response is 401 HTTPUnauthorized. Currently HG clients have troubles with
200 ; response is 401 HTTPUnauthorized. Currently HG clients have troubles with
201 ; handling that causing a series of failed authentication calls.
201 ; handling that causing a series of failed authentication calls.
202 ; Set this variable to 403 to return HTTPForbidden, or any other HTTP code
202 ; Set this variable to 403 to return HTTPForbidden, or any other HTTP code
203 ; This will be served instead of default 401 on bad authentication
203 ; This will be served instead of default 401 on bad authentication
204 auth_ret_code =
204 auth_ret_code =
205
205
206 ; use special detection method when serving auth_ret_code, instead of serving
206 ; use special detection method when serving auth_ret_code, instead of serving
207 ; ret_code directly, use 401 initially (Which triggers credentials prompt)
207 ; ret_code directly, use 401 initially (Which triggers credentials prompt)
208 ; and then serve auth_ret_code to clients
208 ; and then serve auth_ret_code to clients
209 auth_ret_code_detection = false
209 auth_ret_code_detection = false
210
210
211 ; locking return code. When repository is locked return this HTTP code. 2XX
211 ; locking return code. When repository is locked return this HTTP code. 2XX
212 ; codes don't break the transactions while 4XX codes do
212 ; codes don't break the transactions while 4XX codes do
213 lock_ret_code = 423
213 lock_ret_code = 423
214
214
215 ; Filesystem location were repositories should be stored
215 ; Filesystem location were repositories should be stored
216 repo_store.path = /var/opt/rhodecode_repo_store
216 repo_store.path = /var/opt/rhodecode_repo_store
217
217
218 ; allows to setup custom hooks in settings page
218 ; allows to setup custom hooks in settings page
219 allow_custom_hooks_settings = true
219 allow_custom_hooks_settings = true
220
220
221 ; Generated license token required for EE edition license.
221 ; Generated license token required for EE edition license.
222 ; New generated token value can be found in Admin > settings > license page.
222 ; New generated token value can be found in Admin > settings > license page.
223 license_token =
223 license_token =
224
224
225 ; This flag hides sensitive information on the license page such as token, and license data
225 ; This flag hides sensitive information on the license page such as token, and license data
226 license.hide_license_info = false
226 license.hide_license_info = false
227
227
228 ; supervisor connection uri, for managing supervisor and logs.
228 ; supervisor connection uri, for managing supervisor and logs.
229 supervisor.uri =
229 supervisor.uri =
230
230
231 ; supervisord group name/id we only want this RC instance to handle
231 ; supervisord group name/id we only want this RC instance to handle
232 supervisor.group_id = prod
232 supervisor.group_id = prod
233
233
234 ; Display extended labs settings
234 ; Display extended labs settings
235 labs_settings_active = true
235 labs_settings_active = true
236
236
237 ; Custom exception store path, defaults to TMPDIR
237 ; Custom exception store path, defaults to TMPDIR
238 ; This is used to store exception from RhodeCode in shared directory
238 ; This is used to store exception from RhodeCode in shared directory
239 #exception_tracker.store_path =
239 #exception_tracker.store_path =
240
240
241 ; Send email with exception details when it happens
241 ; Send email with exception details when it happens
242 #exception_tracker.send_email = false
242 #exception_tracker.send_email = false
243
243
244 ; Comma separated list of recipients for exception emails,
244 ; Comma separated list of recipients for exception emails,
245 ; e.g admin@rhodecode.com,devops@rhodecode.com
245 ; e.g admin@rhodecode.com,devops@rhodecode.com
246 ; Can be left empty, then emails will be sent to ALL super-admins
246 ; Can be left empty, then emails will be sent to ALL super-admins
247 #exception_tracker.send_email_recipients =
247 #exception_tracker.send_email_recipients =
248
248
249 ; optional prefix to Add to email Subject
249 ; optional prefix to Add to email Subject
250 #exception_tracker.email_prefix = [RHODECODE ERROR]
250 #exception_tracker.email_prefix = [RHODECODE ERROR]
251
251
252 ; File store configuration. This is used to store and serve uploaded files
252 ; File store configuration. This is used to store and serve uploaded files
253 file_store.enabled = true
253 file_store.enabled = true
254
254
255 ; Storage backend, available options are: local
255 ; Storage backend, available options are: local
256 file_store.backend = local
256 file_store.backend = local
257
257
258 ; path to store the uploaded binaries
258 ; path to store the uploaded binaries and artifacts
259 file_store.storage_path = /var/opt/rhodecode_data/file_store
259 file_store.storage_path = /var/opt/rhodecode_data/file_store
260
260
261 ; Uncomment and set this path to control settings for archive download cache.
261 ; Uncomment and set this path to control settings for archive download cache.
262 ; Generated repo archives will be cached at this location
262 ; Generated repo archives will be cached at this location
263 ; and served from the cache during subsequent requests for the same archive of
263 ; and served from the cache during subsequent requests for the same archive of
264 ; the repository. This path is important to be shared across filesystems and with
264 ; the repository. This path is important to be shared across filesystems and with
265 ; RhodeCode and vcsserver
265 ; RhodeCode and vcsserver
266
266
267 ; Default is $cache_dir/archive_cache if not set
267 ; Default is $cache_dir/archive_cache if not set
268 archive_cache.store_dir = /var/opt/rhodecode_data/tarballcache
268 archive_cache.store_dir = /var/opt/rhodecode_data/tarballcache
269
269
270 ; The limit in GB sets how much data we cache before recycling last used, defaults to 10 gb
270 ; The limit in GB sets how much data we cache before recycling last used, defaults to 10 gb
271 archive_cache.cache_size_gb = 40
271 archive_cache.cache_size_gb = 40
272
272
273 ; By default cache uses sharding technique, this specifies how many shards are there
273 ; By default cache uses sharding technique, this specifies how many shards are there
274 archive_cache.cache_shards = 4
274 archive_cache.cache_shards = 4
275
275
276 ; #############
276 ; #############
277 ; CELERY CONFIG
277 ; CELERY CONFIG
278 ; #############
278 ; #############
279
279
280 ; manually run celery: /path/to/celery worker --task-events --beat --app rhodecode.lib.celerylib.loader --scheduler rhodecode.lib.celerylib.scheduler.RcScheduler --loglevel DEBUG --ini /path/to/rhodecode.ini
280 ; manually run celery: /path/to/celery worker --task-events --beat --app rhodecode.lib.celerylib.loader --scheduler rhodecode.lib.celerylib.scheduler.RcScheduler --loglevel DEBUG --ini /path/to/rhodecode.ini
281
281
282 use_celery = true
282 use_celery = true
283
283
284 ; path to store schedule database
284 ; path to store schedule database
285 #celerybeat-schedule.path =
285 #celerybeat-schedule.path =
286
286
287 ; connection url to the message broker (default redis)
287 ; connection url to the message broker (default redis)
288 celery.broker_url = redis://redis:6379/8
288 celery.broker_url = redis://redis:6379/8
289
289
290 ; results backend to get results for (default redis)
290 ; results backend to get results for (default redis)
291 celery.result_backend = redis://redis:6379/8
291 celery.result_backend = redis://redis:6379/8
292
292
293 ; rabbitmq example
293 ; rabbitmq example
294 #celery.broker_url = amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost
294 #celery.broker_url = amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost
295
295
296 ; maximum tasks to execute before worker restart
296 ; maximum tasks to execute before worker restart
297 celery.max_tasks_per_child = 20
297 celery.max_tasks_per_child = 20
298
298
299 ; tasks will never be sent to the queue, but executed locally instead.
299 ; tasks will never be sent to the queue, but executed locally instead.
300 celery.task_always_eager = false
300 celery.task_always_eager = false
301
301
302 ; #############
302 ; #############
303 ; DOGPILE CACHE
303 ; DOGPILE CACHE
304 ; #############
304 ; #############
305
305
306 ; Default cache dir for caches. Putting this into a ramdisk can boost performance.
306 ; Default cache dir for caches. Putting this into a ramdisk can boost performance.
307 ; eg. /tmpfs/data_ramdisk, however this directory might require large amount of space
307 ; eg. /tmpfs/data_ramdisk, however this directory might require large amount of space
308 cache_dir = /var/opt/rhodecode_data
308 cache_dir = /var/opt/rhodecode_data
309
309
310 ; *********************************************
310 ; *********************************************
311 ; `sql_cache_short` cache for heavy SQL queries
311 ; `sql_cache_short` cache for heavy SQL queries
312 ; Only supported backend is `memory_lru`
312 ; Only supported backend is `memory_lru`
313 ; *********************************************
313 ; *********************************************
314 rc_cache.sql_cache_short.backend = dogpile.cache.rc.memory_lru
314 rc_cache.sql_cache_short.backend = dogpile.cache.rc.memory_lru
315 rc_cache.sql_cache_short.expiration_time = 30
315 rc_cache.sql_cache_short.expiration_time = 30
316
316
317
317
318 ; *****************************************************
318 ; *****************************************************
319 ; `cache_repo_longterm` cache for repo object instances
319 ; `cache_repo_longterm` cache for repo object instances
320 ; Only supported backend is `memory_lru`
320 ; Only supported backend is `memory_lru`
321 ; *****************************************************
321 ; *****************************************************
322 rc_cache.cache_repo_longterm.backend = dogpile.cache.rc.memory_lru
322 rc_cache.cache_repo_longterm.backend = dogpile.cache.rc.memory_lru
323 ; by default we use 30 Days, cache is still invalidated on push
323 ; by default we use 30 Days, cache is still invalidated on push
324 rc_cache.cache_repo_longterm.expiration_time = 2592000
324 rc_cache.cache_repo_longterm.expiration_time = 2592000
325 ; max items in LRU cache, set to smaller number to save memory, and expire last used caches
325 ; max items in LRU cache, set to smaller number to save memory, and expire last used caches
326 rc_cache.cache_repo_longterm.max_size = 10000
326 rc_cache.cache_repo_longterm.max_size = 10000
327
327
328
328
329 ; *********************************************
329 ; *********************************************
330 ; `cache_general` cache for general purpose use
330 ; `cache_general` cache for general purpose use
331 ; for simplicity use rc.file_namespace backend,
331 ; for simplicity use rc.file_namespace backend,
332 ; for performance and scale use rc.redis
332 ; for performance and scale use rc.redis
333 ; *********************************************
333 ; *********************************************
334 rc_cache.cache_general.backend = dogpile.cache.rc.file_namespace
334 rc_cache.cache_general.backend = dogpile.cache.rc.file_namespace
335 rc_cache.cache_general.expiration_time = 43200
335 rc_cache.cache_general.expiration_time = 43200
336 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
336 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
337 #rc_cache.cache_general.arguments.filename = /tmp/cache_general_db
337 #rc_cache.cache_general.arguments.filename = /tmp/cache_general_db
338
338
339 ; alternative `cache_general` redis backend with distributed lock
339 ; alternative `cache_general` redis backend with distributed lock
340 #rc_cache.cache_general.backend = dogpile.cache.rc.redis
340 #rc_cache.cache_general.backend = dogpile.cache.rc.redis
341 #rc_cache.cache_general.expiration_time = 300
341 #rc_cache.cache_general.expiration_time = 300
342
342
343 ; redis_expiration_time needs to be greater then expiration_time
343 ; redis_expiration_time needs to be greater then expiration_time
344 #rc_cache.cache_general.arguments.redis_expiration_time = 7200
344 #rc_cache.cache_general.arguments.redis_expiration_time = 7200
345
345
346 #rc_cache.cache_general.arguments.host = localhost
346 #rc_cache.cache_general.arguments.host = localhost
347 #rc_cache.cache_general.arguments.port = 6379
347 #rc_cache.cache_general.arguments.port = 6379
348 #rc_cache.cache_general.arguments.db = 0
348 #rc_cache.cache_general.arguments.db = 0
349 #rc_cache.cache_general.arguments.socket_timeout = 30
349 #rc_cache.cache_general.arguments.socket_timeout = 30
350 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
350 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
351 #rc_cache.cache_general.arguments.distributed_lock = true
351 #rc_cache.cache_general.arguments.distributed_lock = true
352
352
353 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
353 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
354 #rc_cache.cache_general.arguments.lock_auto_renewal = true
354 #rc_cache.cache_general.arguments.lock_auto_renewal = true
355
355
356 ; *************************************************
356 ; *************************************************
357 ; `cache_perms` cache for permission tree, auth TTL
357 ; `cache_perms` cache for permission tree, auth TTL
358 ; for simplicity use rc.file_namespace backend,
358 ; for simplicity use rc.file_namespace backend,
359 ; for performance and scale use rc.redis
359 ; for performance and scale use rc.redis
360 ; *************************************************
360 ; *************************************************
361 rc_cache.cache_perms.backend = dogpile.cache.rc.file_namespace
361 rc_cache.cache_perms.backend = dogpile.cache.rc.file_namespace
362 rc_cache.cache_perms.expiration_time = 3600
362 rc_cache.cache_perms.expiration_time = 3600
363 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
363 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
364 #rc_cache.cache_perms.arguments.filename = /tmp/cache_perms_db
364 #rc_cache.cache_perms.arguments.filename = /tmp/cache_perms_db
365
365
366 ; alternative `cache_perms` redis backend with distributed lock
366 ; alternative `cache_perms` redis backend with distributed lock
367 #rc_cache.cache_perms.backend = dogpile.cache.rc.redis
367 #rc_cache.cache_perms.backend = dogpile.cache.rc.redis
368 #rc_cache.cache_perms.expiration_time = 300
368 #rc_cache.cache_perms.expiration_time = 300
369
369
370 ; redis_expiration_time needs to be greater then expiration_time
370 ; redis_expiration_time needs to be greater then expiration_time
371 #rc_cache.cache_perms.arguments.redis_expiration_time = 7200
371 #rc_cache.cache_perms.arguments.redis_expiration_time = 7200
372
372
373 #rc_cache.cache_perms.arguments.host = localhost
373 #rc_cache.cache_perms.arguments.host = localhost
374 #rc_cache.cache_perms.arguments.port = 6379
374 #rc_cache.cache_perms.arguments.port = 6379
375 #rc_cache.cache_perms.arguments.db = 0
375 #rc_cache.cache_perms.arguments.db = 0
376 #rc_cache.cache_perms.arguments.socket_timeout = 30
376 #rc_cache.cache_perms.arguments.socket_timeout = 30
377 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
377 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
378 #rc_cache.cache_perms.arguments.distributed_lock = true
378 #rc_cache.cache_perms.arguments.distributed_lock = true
379
379
380 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
380 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
381 #rc_cache.cache_perms.arguments.lock_auto_renewal = true
381 #rc_cache.cache_perms.arguments.lock_auto_renewal = true
382
382
383 ; ***************************************************
383 ; ***************************************************
384 ; `cache_repo` cache for file tree, Readme, RSS FEEDS
384 ; `cache_repo` cache for file tree, Readme, RSS FEEDS
385 ; for simplicity use rc.file_namespace backend,
385 ; for simplicity use rc.file_namespace backend,
386 ; for performance and scale use rc.redis
386 ; for performance and scale use rc.redis
387 ; ***************************************************
387 ; ***************************************************
388 rc_cache.cache_repo.backend = dogpile.cache.rc.file_namespace
388 rc_cache.cache_repo.backend = dogpile.cache.rc.file_namespace
389 rc_cache.cache_repo.expiration_time = 2592000
389 rc_cache.cache_repo.expiration_time = 2592000
390 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
390 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
391 #rc_cache.cache_repo.arguments.filename = /tmp/cache_repo_db
391 #rc_cache.cache_repo.arguments.filename = /tmp/cache_repo_db
392
392
393 ; alternative `cache_repo` redis backend with distributed lock
393 ; alternative `cache_repo` redis backend with distributed lock
394 #rc_cache.cache_repo.backend = dogpile.cache.rc.redis
394 #rc_cache.cache_repo.backend = dogpile.cache.rc.redis
395 #rc_cache.cache_repo.expiration_time = 2592000
395 #rc_cache.cache_repo.expiration_time = 2592000
396
396
397 ; redis_expiration_time needs to be greater then expiration_time
397 ; redis_expiration_time needs to be greater then expiration_time
398 #rc_cache.cache_repo.arguments.redis_expiration_time = 2678400
398 #rc_cache.cache_repo.arguments.redis_expiration_time = 2678400
399
399
400 #rc_cache.cache_repo.arguments.host = localhost
400 #rc_cache.cache_repo.arguments.host = localhost
401 #rc_cache.cache_repo.arguments.port = 6379
401 #rc_cache.cache_repo.arguments.port = 6379
402 #rc_cache.cache_repo.arguments.db = 1
402 #rc_cache.cache_repo.arguments.db = 1
403 #rc_cache.cache_repo.arguments.socket_timeout = 30
403 #rc_cache.cache_repo.arguments.socket_timeout = 30
404 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
404 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
405 #rc_cache.cache_repo.arguments.distributed_lock = true
405 #rc_cache.cache_repo.arguments.distributed_lock = true
406
406
407 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
407 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
408 #rc_cache.cache_repo.arguments.lock_auto_renewal = true
408 #rc_cache.cache_repo.arguments.lock_auto_renewal = true
409
409
410 ; ##############
410 ; ##############
411 ; BEAKER SESSION
411 ; BEAKER SESSION
412 ; ##############
412 ; ##############
413
413
414 ; beaker.session.type is type of storage options for the logged users sessions. Current allowed
414 ; beaker.session.type is type of storage options for the logged users sessions. Current allowed
415 ; types are file, ext:redis, ext:database, ext:memcached
415 ; types are file, ext:redis, ext:database, ext:memcached
416 ; Fastest ones are ext:redis and ext:database, DO NOT use memory type for session
416 ; Fastest ones are ext:redis and ext:database, DO NOT use memory type for session
417 #beaker.session.type = file
417 #beaker.session.type = file
418 #beaker.session.data_dir = %(here)s/data/sessions
418 #beaker.session.data_dir = %(here)s/data/sessions
419
419
420 ; Redis based sessions
420 ; Redis based sessions
421 beaker.session.type = ext:redis
421 beaker.session.type = ext:redis
422 beaker.session.url = redis://redis:6379/2
422 beaker.session.url = redis://redis:6379/2
423
423
424 ; DB based session, fast, and allows easy management over logged in users
424 ; DB based session, fast, and allows easy management over logged in users
425 #beaker.session.type = ext:database
425 #beaker.session.type = ext:database
426 #beaker.session.table_name = db_session
426 #beaker.session.table_name = db_session
427 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
427 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
428 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
428 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
429 #beaker.session.sa.pool_recycle = 3600
429 #beaker.session.sa.pool_recycle = 3600
430 #beaker.session.sa.echo = false
430 #beaker.session.sa.echo = false
431
431
432 beaker.session.key = rhodecode
432 beaker.session.key = rhodecode
433 beaker.session.secret = production-rc-uytcxaz
433 beaker.session.secret = production-rc-uytcxaz
434 beaker.session.lock_dir = /data_ramdisk/lock
434 beaker.session.lock_dir = /data_ramdisk/lock
435
435
436 ; Secure encrypted cookie. Requires AES and AES python libraries
436 ; Secure encrypted cookie. Requires AES and AES python libraries
437 ; you must disable beaker.session.secret to use this
437 ; you must disable beaker.session.secret to use this
438 #beaker.session.encrypt_key = key_for_encryption
438 #beaker.session.encrypt_key = key_for_encryption
439 #beaker.session.validate_key = validation_key
439 #beaker.session.validate_key = validation_key
440
440
441 ; Sets session as invalid (also logging out user) if it haven not been
441 ; Sets session as invalid (also logging out user) if it haven not been
442 ; accessed for given amount of time in seconds
442 ; accessed for given amount of time in seconds
443 beaker.session.timeout = 2592000
443 beaker.session.timeout = 2592000
444 beaker.session.httponly = true
444 beaker.session.httponly = true
445
445
446 ; Path to use for the cookie. Set to prefix if you use prefix middleware
446 ; Path to use for the cookie. Set to prefix if you use prefix middleware
447 #beaker.session.cookie_path = /custom_prefix
447 #beaker.session.cookie_path = /custom_prefix
448
448
449 ; Set https secure cookie
449 ; Set https secure cookie
450 beaker.session.secure = false
450 beaker.session.secure = false
451
451
452 ; default cookie expiration time in seconds, set to `true` to set expire
452 ; default cookie expiration time in seconds, set to `true` to set expire
453 ; at browser close
453 ; at browser close
454 #beaker.session.cookie_expires = 3600
454 #beaker.session.cookie_expires = 3600
455
455
456 ; #############################
456 ; #############################
457 ; SEARCH INDEXING CONFIGURATION
457 ; SEARCH INDEXING CONFIGURATION
458 ; #############################
458 ; #############################
459
459
460 ; Full text search indexer is available in rhodecode-tools under
460 ; Full text search indexer is available in rhodecode-tools under
461 ; `rhodecode-tools index` command
461 ; `rhodecode-tools index` command
462
462
463 ; WHOOSH Backend, doesn't require additional services to run
463 ; WHOOSH Backend, doesn't require additional services to run
464 ; it works good with few dozen repos
464 ; it works good with few dozen repos
465 search.module = rhodecode.lib.index.whoosh
465 search.module = rhodecode.lib.index.whoosh
466 search.location = %(here)s/data/index
466 search.location = %(here)s/data/index
467
467
468 ; ####################
468 ; ####################
469 ; CHANNELSTREAM CONFIG
469 ; CHANNELSTREAM CONFIG
470 ; ####################
470 ; ####################
471
471
472 ; channelstream enables persistent connections and live notification
472 ; channelstream enables persistent connections and live notification
473 ; in the system. It's also used by the chat system
473 ; in the system. It's also used by the chat system
474
474
475 channelstream.enabled = true
475 channelstream.enabled = true
476
476
477 ; server address for channelstream server on the backend
477 ; server address for channelstream server on the backend
478 channelstream.server = channelstream:9800
478 channelstream.server = channelstream:9800
479
479
480 ; location of the channelstream server from outside world
480 ; location of the channelstream server from outside world
481 ; use ws:// for http or wss:// for https. This address needs to be handled
481 ; use ws:// for http or wss:// for https. This address needs to be handled
482 ; by external HTTP server such as Nginx or Apache
482 ; by external HTTP server such as Nginx or Apache
483 ; see Nginx/Apache configuration examples in our docs
483 ; see Nginx/Apache configuration examples in our docs
484 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
484 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
485 channelstream.secret = ENV_GENERATED
485 channelstream.secret = ENV_GENERATED
486 channelstream.history.location = /var/opt/rhodecode_data/channelstream_history
486 channelstream.history.location = /var/opt/rhodecode_data/channelstream_history
487
487
488 ; Internal application path that Javascript uses to connect into.
488 ; Internal application path that Javascript uses to connect into.
489 ; If you use proxy-prefix the prefix should be added before /_channelstream
489 ; If you use proxy-prefix the prefix should be added before /_channelstream
490 channelstream.proxy_path = /_channelstream
490 channelstream.proxy_path = /_channelstream
491
491
492
492
493 ; ##############################
493 ; ##############################
494 ; MAIN RHODECODE DATABASE CONFIG
494 ; MAIN RHODECODE DATABASE CONFIG
495 ; ##############################
495 ; ##############################
496
496
497 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
497 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
498 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
498 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
499 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode?charset=utf8
499 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode?charset=utf8
500 ; pymysql is an alternative driver for MySQL, use in case of problems with default one
500 ; pymysql is an alternative driver for MySQL, use in case of problems with default one
501 #sqlalchemy.db1.url = mysql+pymysql://root:qweqwe@localhost/rhodecode
501 #sqlalchemy.db1.url = mysql+pymysql://root:qweqwe@localhost/rhodecode
502
502
503 sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
503 sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
504
504
505 ; see sqlalchemy docs for other advanced settings
505 ; see sqlalchemy docs for other advanced settings
506 ; print the sql statements to output
506 ; print the sql statements to output
507 sqlalchemy.db1.echo = false
507 sqlalchemy.db1.echo = false
508
508
509 ; recycle the connections after this amount of seconds
509 ; recycle the connections after this amount of seconds
510 sqlalchemy.db1.pool_recycle = 3600
510 sqlalchemy.db1.pool_recycle = 3600
511
511
512 ; the number of connections to keep open inside the connection pool.
512 ; the number of connections to keep open inside the connection pool.
513 ; 0 indicates no limit
513 ; 0 indicates no limit
514 ; the general calculus with gevent is:
514 ; the general calculus with gevent is:
515 ; if your system allows 500 concurrent greenlets (max_connections) that all do database access,
515 ; if your system allows 500 concurrent greenlets (max_connections) that all do database access,
516 ; then increase pool size + max overflow so that they add up to 500.
516 ; then increase pool size + max overflow so that they add up to 500.
517 #sqlalchemy.db1.pool_size = 5
517 #sqlalchemy.db1.pool_size = 5
518
518
519 ; The number of connections to allow in connection pool "overflow", that is
519 ; The number of connections to allow in connection pool "overflow", that is
520 ; connections that can be opened above and beyond the pool_size setting,
520 ; connections that can be opened above and beyond the pool_size setting,
521 ; which defaults to five.
521 ; which defaults to five.
522 #sqlalchemy.db1.max_overflow = 10
522 #sqlalchemy.db1.max_overflow = 10
523
523
524 ; Connection check ping, used to detect broken database connections
524 ; Connection check ping, used to detect broken database connections
525 ; could be enabled to better handle cases if MySQL has gone away errors
525 ; could be enabled to better handle cases if MySQL has gone away errors
526 #sqlalchemy.db1.ping_connection = true
526 #sqlalchemy.db1.ping_connection = true
527
527
528 ; ##########
528 ; ##########
529 ; VCS CONFIG
529 ; VCS CONFIG
530 ; ##########
530 ; ##########
531 vcs.server.enable = true
531 vcs.server.enable = true
532 vcs.server = vcsserver:10010
532 vcs.server = vcsserver:10010
533
533
534 ; Web server connectivity protocol, responsible for web based VCS operations
534 ; Web server connectivity protocol, responsible for web based VCS operations
535 ; Available protocols are:
535 ; Available protocols are:
536 ; `http` - use http-rpc backend (default)
536 ; `http` - use http-rpc backend (default)
537 vcs.server.protocol = http
537 vcs.server.protocol = http
538
538
539 ; Push/Pull operations protocol, available options are:
539 ; Push/Pull operations protocol, available options are:
540 ; `http` - use http-rpc backend (default)
540 ; `http` - use http-rpc backend (default)
541 vcs.scm_app_implementation = http
541 vcs.scm_app_implementation = http
542
542
543 ; Push/Pull operations hooks protocol, available options are:
543 ; Push/Pull operations hooks protocol, available options are:
544 ; `http` - use http-rpc backend (default)
544 ; `http` - use http-rpc backend (default)
545 vcs.hooks.protocol = http
545 vcs.hooks.protocol = http
546
546
547 ; Host on which this instance is listening for hooks. vcsserver will call this host to pull/push hooks so it should be
547 ; Host on which this instance is listening for hooks. vcsserver will call this host to pull/push hooks so it should be
548 ; accessible via network.
548 ; accessible via network.
549 ; Use vcs.hooks.host = "*" to bind to current hostname (for Docker)
549 ; Use vcs.hooks.host = "*" to bind to current hostname (for Docker)
550 vcs.hooks.host = *
550 vcs.hooks.host = *
551
551
552 ; Start VCSServer with this instance as a subprocess, useful for development
552 ; Start VCSServer with this instance as a subprocess, useful for development
553 vcs.start_server = false
553 vcs.start_server = false
554
554
555 ; List of enabled VCS backends, available options are:
555 ; List of enabled VCS backends, available options are:
556 ; `hg` - mercurial
556 ; `hg` - mercurial
557 ; `git` - git
557 ; `git` - git
558 ; `svn` - subversion
558 ; `svn` - subversion
559 vcs.backends = hg, git, svn
559 vcs.backends = hg, git, svn
560
560
561 ; Wait this number of seconds before killing connection to the vcsserver
561 ; Wait this number of seconds before killing connection to the vcsserver
562 vcs.connection_timeout = 3600
562 vcs.connection_timeout = 3600
563
563
564 ; Cache flag to cache vcsserver remote calls locally
564 ; Cache flag to cache vcsserver remote calls locally
565 ; It uses cache_region `cache_repo`
565 ; It uses cache_region `cache_repo`
566 vcs.methods.cache = true
566 vcs.methods.cache = true
567
567
568 ; ####################################################
568 ; ####################################################
569 ; Subversion proxy support (mod_dav_svn)
569 ; Subversion proxy support (mod_dav_svn)
570 ; Maps RhodeCode repo groups into SVN paths for Apache
570 ; Maps RhodeCode repo groups into SVN paths for Apache
571 ; ####################################################
571 ; ####################################################
572
572
573 ; Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
573 ; Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
574 ; Set a numeric version for your current SVN e.g 1.8, or 1.12
574 ; Set a numeric version for your current SVN e.g 1.8, or 1.12
575 ; Legacy available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
575 ; Legacy available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
576 #vcs.svn.compatible_version = 1.8
576 #vcs.svn.compatible_version = 1.8
577
577
578 ; Enable SVN proxy of requests over HTTP
578 ; Enable SVN proxy of requests over HTTP
579 vcs.svn.proxy.enabled = true
579 vcs.svn.proxy.enabled = true
580
580
581 ; host to connect to running SVN subsystem
581 ; host to connect to running SVN subsystem
582 vcs.svn.proxy.host = http://svn:8090
582 vcs.svn.proxy.host = http://svn:8090
583
583
584 ; Enable or disable the config file generation.
584 ; Enable or disable the config file generation.
585 svn.proxy.generate_config = true
585 svn.proxy.generate_config = true
586
586
587 ; Generate config file with `SVNListParentPath` set to `On`.
587 ; Generate config file with `SVNListParentPath` set to `On`.
588 svn.proxy.list_parent_path = true
588 svn.proxy.list_parent_path = true
589
589
590 ; Set location and file name of generated config file.
590 ; Set location and file name of generated config file.
591 svn.proxy.config_file_path = /etc/rhodecode/conf/svn/mod_dav_svn.conf
591 svn.proxy.config_file_path = /etc/rhodecode/conf/svn/mod_dav_svn.conf
592
592
593 ; alternative mod_dav config template. This needs to be a valid mako template
593 ; alternative mod_dav config template. This needs to be a valid mako template
594 ; Example template can be found in the source code:
594 ; Example template can be found in the source code:
595 ; rhodecode/apps/svn_support/templates/mod-dav-svn.conf.mako
595 ; rhodecode/apps/svn_support/templates/mod-dav-svn.conf.mako
596 #svn.proxy.config_template = ~/.rccontrol/enterprise-1/custom_svn_conf.mako
596 #svn.proxy.config_template = ~/.rccontrol/enterprise-1/custom_svn_conf.mako
597
597
598 ; Used as a prefix to the `Location` block in the generated config file.
598 ; Used as a prefix to the `Location` block in the generated config file.
599 ; In most cases it should be set to `/`.
599 ; In most cases it should be set to `/`.
600 svn.proxy.location_root = /
600 svn.proxy.location_root = /
601
601
602 ; Command to reload the mod dav svn configuration on change.
602 ; Command to reload the mod dav svn configuration on change.
603 ; Example: `/etc/init.d/apache2 reload` or /home/USER/apache_reload.sh
603 ; Example: `/etc/init.d/apache2 reload` or /home/USER/apache_reload.sh
604 ; Make sure user who runs RhodeCode process is allowed to reload Apache
604 ; Make sure user who runs RhodeCode process is allowed to reload Apache
605 #svn.proxy.reload_cmd = /etc/init.d/apache2 reload
605 #svn.proxy.reload_cmd = /etc/init.d/apache2 reload
606
606
607 ; If the timeout expires before the reload command finishes, the command will
607 ; If the timeout expires before the reload command finishes, the command will
608 ; be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
608 ; be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
609 #svn.proxy.reload_timeout = 10
609 #svn.proxy.reload_timeout = 10
610
610
611 ; ####################
611 ; ####################
612 ; SSH Support Settings
612 ; SSH Support Settings
613 ; ####################
613 ; ####################
614
614
615 ; Defines if a custom authorized_keys file should be created and written on
615 ; Defines if a custom authorized_keys file should be created and written on
616 ; any change user ssh keys. Setting this to false also disables possibility
616 ; any change user ssh keys. Setting this to false also disables possibility
617 ; of adding SSH keys by users from web interface. Super admins can still
617 ; of adding SSH keys by users from web interface. Super admins can still
618 ; manage SSH Keys.
618 ; manage SSH Keys.
619 ssh.generate_authorized_keyfile = true
619 ssh.generate_authorized_keyfile = true
620
620
621 ; Options for ssh, default is `no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding`
621 ; Options for ssh, default is `no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding`
622 # ssh.authorized_keys_ssh_opts =
622 # ssh.authorized_keys_ssh_opts =
623
623
624 ; Path to the authorized_keys file where the generate entries are placed.
624 ; Path to the authorized_keys file where the generate entries are placed.
625 ; It is possible to have multiple key files specified in `sshd_config` e.g.
625 ; It is possible to have multiple key files specified in `sshd_config` e.g.
626 ; AuthorizedKeysFile %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode
626 ; AuthorizedKeysFile %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode
627 ssh.authorized_keys_file_path = /etc/rhodecode/conf/ssh/authorized_keys_rhodecode
627 ssh.authorized_keys_file_path = /etc/rhodecode/conf/ssh/authorized_keys_rhodecode
628
628
629 ; Command to execute the SSH wrapper. The binary is available in the
629 ; Command to execute the SSH wrapper. The binary is available in the
630 ; RhodeCode installation directory.
630 ; RhodeCode installation directory.
631 ; e.g /usr/local/bin/rhodecode_bin/bin/rc-ssh-wrapper
631 ; e.g /usr/local/bin/rhodecode_bin/bin/rc-ssh-wrapper
632 ssh.wrapper_cmd = /usr/local/bin/rhodecode_bin/bin/rc-ssh-wrapper
632 ssh.wrapper_cmd = /usr/local/bin/rhodecode_bin/bin/rc-ssh-wrapper
633
633
634 ; Allow shell when executing the ssh-wrapper command
634 ; Allow shell when executing the ssh-wrapper command
635 ssh.wrapper_cmd_allow_shell = false
635 ssh.wrapper_cmd_allow_shell = false
636
636
637 ; Enables logging, and detailed output send back to the client during SSH
637 ; Enables logging, and detailed output send back to the client during SSH
638 ; operations. Useful for debugging, shouldn't be used in production.
638 ; operations. Useful for debugging, shouldn't be used in production.
639 ssh.enable_debug_logging = false
639 ssh.enable_debug_logging = false
640
640
641 ; Paths to binary executable, by default they are the names, but we can
641 ; Paths to binary executable, by default they are the names, but we can
642 ; override them if we want to use a custom one
642 ; override them if we want to use a custom one
643 ssh.executable.hg = /usr/local/bin/rhodecode_bin/vcs_bin/hg
643 ssh.executable.hg = /usr/local/bin/rhodecode_bin/vcs_bin/hg
644 ssh.executable.git = /usr/local/bin/rhodecode_bin/vcs_bin/git
644 ssh.executable.git = /usr/local/bin/rhodecode_bin/vcs_bin/git
645 ssh.executable.svn = /usr/local/bin/rhodecode_bin/vcs_bin/svnserve
645 ssh.executable.svn = /usr/local/bin/rhodecode_bin/vcs_bin/svnserve
646
646
647 ; Enables SSH key generator web interface. Disabling this still allows users
647 ; Enables SSH key generator web interface. Disabling this still allows users
648 ; to add their own keys.
648 ; to add their own keys.
649 ssh.enable_ui_key_generator = true
649 ssh.enable_ui_key_generator = true
650
650
651 ; Statsd client config, this is used to send metrics to statsd
651 ; Statsd client config, this is used to send metrics to statsd
652 ; We recommend setting statsd_exported and scrape them using Prometheus
652 ; We recommend setting statsd_exported and scrape them using Prometheus
653 #statsd.enabled = false
653 #statsd.enabled = false
654 #statsd.statsd_host = 0.0.0.0
654 #statsd.statsd_host = 0.0.0.0
655 #statsd.statsd_port = 8125
655 #statsd.statsd_port = 8125
656 #statsd.statsd_prefix =
656 #statsd.statsd_prefix =
657 #statsd.statsd_ipv6 = false
657 #statsd.statsd_ipv6 = false
658
658
659 ; configure logging automatically at server startup set to false
659 ; configure logging automatically at server startup set to false
660 ; to use the below custom logging config.
660 ; to use the below custom logging config.
661 ; RC_LOGGING_FORMATTER
661 ; RC_LOGGING_FORMATTER
662 ; RC_LOGGING_LEVEL
662 ; RC_LOGGING_LEVEL
663 ; env variables can control the settings for logging in case of autoconfigure
663 ; env variables can control the settings for logging in case of autoconfigure
664
664
665 #logging.autoconfigure = true
665 #logging.autoconfigure = true
666
666
667 ; specify your own custom logging config file to configure logging
667 ; specify your own custom logging config file to configure logging
668 #logging.logging_conf_file = /path/to/custom_logging.ini
668 #logging.logging_conf_file = /path/to/custom_logging.ini
669
669
670 ; Dummy marker to add new entries after.
670 ; Dummy marker to add new entries after.
671 ; Add any custom entries below. Please don't remove this marker.
671 ; Add any custom entries below. Please don't remove this marker.
672 custom.conf = 1
672 custom.conf = 1
673
673
674
674
675 ; #####################
675 ; #####################
676 ; LOGGING CONFIGURATION
676 ; LOGGING CONFIGURATION
677 ; #####################
677 ; #####################
678
678
679 [loggers]
679 [loggers]
680 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper
680 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper
681
681
682 [handlers]
682 [handlers]
683 keys = console, console_sql
683 keys = console, console_sql
684
684
685 [formatters]
685 [formatters]
686 keys = generic, json, color_formatter, color_formatter_sql
686 keys = generic, json, color_formatter, color_formatter_sql
687
687
688 ; #######
688 ; #######
689 ; LOGGERS
689 ; LOGGERS
690 ; #######
690 ; #######
691 [logger_root]
691 [logger_root]
692 level = NOTSET
692 level = NOTSET
693 handlers = console
693 handlers = console
694
694
695 [logger_sqlalchemy]
695 [logger_sqlalchemy]
696 level = INFO
696 level = INFO
697 handlers = console_sql
697 handlers = console_sql
698 qualname = sqlalchemy.engine
698 qualname = sqlalchemy.engine
699 propagate = 0
699 propagate = 0
700
700
701 [logger_beaker]
701 [logger_beaker]
702 level = DEBUG
702 level = DEBUG
703 handlers =
703 handlers =
704 qualname = beaker.container
704 qualname = beaker.container
705 propagate = 1
705 propagate = 1
706
706
707 [logger_rhodecode]
707 [logger_rhodecode]
708 level = DEBUG
708 level = DEBUG
709 handlers =
709 handlers =
710 qualname = rhodecode
710 qualname = rhodecode
711 propagate = 1
711 propagate = 1
712
712
713 [logger_ssh_wrapper]
713 [logger_ssh_wrapper]
714 level = DEBUG
714 level = DEBUG
715 handlers =
715 handlers =
716 qualname = ssh_wrapper
716 qualname = ssh_wrapper
717 propagate = 1
717 propagate = 1
718
718
719 [logger_celery]
719 [logger_celery]
720 level = DEBUG
720 level = DEBUG
721 handlers =
721 handlers =
722 qualname = celery
722 qualname = celery
723
723
724
724
725 ; ########
725 ; ########
726 ; HANDLERS
726 ; HANDLERS
727 ; ########
727 ; ########
728
728
729 [handler_console]
729 [handler_console]
730 class = StreamHandler
730 class = StreamHandler
731 args = (sys.stderr, )
731 args = (sys.stderr, )
732 level = INFO
732 level = INFO
733 ; To enable JSON formatted logs replace 'generic/color_formatter' with 'json'
733 ; To enable JSON formatted logs replace 'generic/color_formatter' with 'json'
734 ; This allows sending properly formatted logs to grafana loki or elasticsearch
734 ; This allows sending properly formatted logs to grafana loki or elasticsearch
735 formatter = generic
735 formatter = generic
736
736
737 [handler_console_sql]
737 [handler_console_sql]
738 ; "level = DEBUG" logs SQL queries and results.
738 ; "level = DEBUG" logs SQL queries and results.
739 ; "level = INFO" logs SQL queries.
739 ; "level = INFO" logs SQL queries.
740 ; "level = WARN" logs neither. (Recommended for production systems.)
740 ; "level = WARN" logs neither. (Recommended for production systems.)
741 class = StreamHandler
741 class = StreamHandler
742 args = (sys.stderr, )
742 args = (sys.stderr, )
743 level = WARN
743 level = WARN
744 ; To enable JSON formatted logs replace 'generic/color_formatter_sql' with 'json'
744 ; To enable JSON formatted logs replace 'generic/color_formatter_sql' with 'json'
745 ; This allows sending properly formatted logs to grafana loki or elasticsearch
745 ; This allows sending properly formatted logs to grafana loki or elasticsearch
746 formatter = generic
746 formatter = generic
747
747
748 ; ##########
748 ; ##########
749 ; FORMATTERS
749 ; FORMATTERS
750 ; ##########
750 ; ##########
751
751
752 [formatter_generic]
752 [formatter_generic]
753 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
753 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
754 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
754 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
755 datefmt = %Y-%m-%d %H:%M:%S
755 datefmt = %Y-%m-%d %H:%M:%S
756
756
757 [formatter_color_formatter]
757 [formatter_color_formatter]
758 class = rhodecode.lib.logging_formatter.ColorFormatter
758 class = rhodecode.lib.logging_formatter.ColorFormatter
759 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
759 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
760 datefmt = %Y-%m-%d %H:%M:%S
760 datefmt = %Y-%m-%d %H:%M:%S
761
761
762 [formatter_color_formatter_sql]
762 [formatter_color_formatter_sql]
763 class = rhodecode.lib.logging_formatter.ColorFormatterSql
763 class = rhodecode.lib.logging_formatter.ColorFormatterSql
764 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
764 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
765 datefmt = %Y-%m-%d %H:%M:%S
765 datefmt = %Y-%m-%d %H:%M:%S
766
766
767 [formatter_json]
767 [formatter_json]
768 format = %(timestamp)s %(levelname)s %(name)s %(message)s %(req_id)s
768 format = %(timestamp)s %(levelname)s %(name)s %(message)s %(req_id)s
769 class = rhodecode.lib._vendor.jsonlogger.JsonFormatter
769 class = rhodecode.lib._vendor.jsonlogger.JsonFormatter
@@ -1,167 +1,168 b''
1 # Copyright (C) 2010-2023 RhodeCode GmbH
1 # Copyright (C) 2010-2023 RhodeCode GmbH
2 #
2 #
3 # This program is free software: you can redistribute it and/or modify
3 # This program is free software: you can redistribute it and/or modify
4 # it under the terms of the GNU Affero General Public License, version 3
4 # it under the terms of the GNU Affero General Public License, version 3
5 # (only), as published by the Free Software Foundation.
5 # (only), as published by the Free Software Foundation.
6 #
6 #
7 # This program is distributed in the hope that it will be useful,
7 # This program is distributed in the hope that it will be useful,
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 # GNU General Public License for more details.
10 # GNU General Public License for more details.
11 #
11 #
12 # You should have received a copy of the GNU Affero General Public License
12 # You should have received a copy of the GNU Affero General Public License
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 #
14 #
15 # This program is dual-licensed. If you wish to learn more about the
15 # This program is dual-licensed. If you wish to learn more about the
16 # RhodeCode Enterprise Edition, including its added features, Support services,
16 # RhodeCode Enterprise Edition, including its added features, Support services,
17 # and proprietary license terms, please see https://rhodecode.com/licenses/
17 # and proprietary license terms, please see https://rhodecode.com/licenses/
18 import pytest
18 import pytest
19 from rhodecode.lib import ext_json
19 from rhodecode.lib import ext_json
20
20
21
21
22 def get_backends_from_metafunc(metafunc):
22 def get_backends_from_metafunc(metafunc):
23 requested_backends = set(metafunc.config.getoption('--backends'))
23 requested_backends = set(metafunc.config.getoption('--backends'))
24 backend_mark = metafunc.definition.get_closest_marker('backends')
24 backend_mark = metafunc.definition.get_closest_marker('backends')
25 if backend_mark:
25 if backend_mark:
26 # Supported backends by this test function, created from
26 # Supported backends by this test function, created from
27 # pytest.mark.backends
27 # pytest.mark.backends
28 backends = backend_mark.args
28 backends = backend_mark.args
29 elif hasattr(metafunc.cls, 'backend_alias'):
29 elif hasattr(metafunc.cls, 'backend_alias'):
30 # Support class attribute "backend_alias", this is mainly
30 # Support class attribute "backend_alias", this is mainly
31 # for legacy reasons for tests not yet using pytest.mark.backends
31 # for legacy reasons for tests not yet using pytest.mark.backends
32 backends = [metafunc.cls.backend_alias]
32 backends = [metafunc.cls.backend_alias]
33 else:
33 else:
34 backends = metafunc.config.getoption('--backends')
34 backends = metafunc.config.getoption('--backends')
35 return requested_backends.intersection(backends)
35 return requested_backends.intersection(backends)
36
36
37
37
38 def pytest_addoption(parser):
38 def pytest_addoption(parser):
39
39
40 def _parse_json(value):
40 def _parse_json(value):
41 return ext_json.str_json(value) if value else None
41 return ext_json.str_json(value) if value else None
42
42
43 def _split_comma(value):
43 def _split_comma(value):
44 return value.split(',')
44 return value.split(',')
45
45
46 parser.addoption(
46 parser.addoption(
47 '--keep-tmp-path', action='store_true',
47 '--keep-tmp-path', action='store_true',
48 help="Keep the test temporary directories")
48 help="Keep the test temporary directories")
49
49
50 parser.addoption(
50 parser.addoption(
51 '--backends', action='store', type=_split_comma,
51 '--backends', action='store', type=_split_comma,
52 default=['git', 'hg', 'svn'],
52 default=['git', 'hg', 'svn'],
53 help="Select which backends to test for backend specific tests.")
53 help="Select which backends to test for backend specific tests.")
54 parser.addoption(
54 parser.addoption(
55 '--dbs', action='store', type=_split_comma,
55 '--dbs', action='store', type=_split_comma,
56 default=['sqlite'],
56 default=['sqlite'],
57 help="Select which database to test for database specific tests. "
57 help="Select which database to test for database specific tests. "
58 "Possible options are sqlite,postgres,mysql")
58 "Possible options are sqlite,postgres,mysql")
59 parser.addoption(
59 parser.addoption(
60 '--appenlight', '--ae', action='store_true',
60 '--appenlight', '--ae', action='store_true',
61 help="Track statistics in appenlight.")
61 help="Track statistics in appenlight.")
62 parser.addoption(
62 parser.addoption(
63 '--appenlight-api-key', '--ae-key',
63 '--appenlight-api-key', '--ae-key',
64 help="API key for Appenlight.")
64 help="API key for Appenlight.")
65 parser.addoption(
65 parser.addoption(
66 '--appenlight-url', '--ae-url',
66 '--appenlight-url', '--ae-url',
67 default="https://ae.rhodecode.com",
67 default="https://ae.rhodecode.com",
68 help="Appenlight service URL, defaults to https://ae.rhodecode.com")
68 help="Appenlight service URL, defaults to https://ae.rhodecode.com")
69 parser.addoption(
69 parser.addoption(
70 '--sqlite-connection-string', action='store',
70 '--sqlite-connection-string', action='store',
71 default='', help="Connection string for the dbs tests with SQLite")
71 default='', help="Connection string for the dbs tests with SQLite")
72 parser.addoption(
72 parser.addoption(
73 '--postgres-connection-string', action='store',
73 '--postgres-connection-string', action='store',
74 default='', help="Connection string for the dbs tests with Postgres")
74 default='', help="Connection string for the dbs tests with Postgres")
75 parser.addoption(
75 parser.addoption(
76 '--mysql-connection-string', action='store',
76 '--mysql-connection-string', action='store',
77 default='', help="Connection string for the dbs tests with MySQL")
77 default='', help="Connection string for the dbs tests with MySQL")
78 parser.addoption(
78 parser.addoption(
79 '--repeat', type=int, default=100,
79 '--repeat', type=int, default=100,
80 help="Number of repetitions in performance tests.")
80 help="Number of repetitions in performance tests.")
81
81
82 parser.addoption(
82 parser.addoption(
83 '--test-loglevel', dest='test_loglevel',
83 '--test-loglevel', dest='test_loglevel',
84 help="Set default Logging level for tests, critical(default), error, warn , info, debug")
84 help="Set default Logging level for tests, critical(default), error, warn , info, debug")
85 group = parser.getgroup('pylons')
85
86 group = parser.getgroup('pyramid')
86 group.addoption(
87 group.addoption(
87 '--with-pylons', dest='pyramid_config',
88 '--pyramid-config', dest='pyramid_config',
88 help="Set up a Pylons environment with the specified config file.")
89 help="Set up a pyramid with the specified ini config file.")
89 group.addoption(
90 group.addoption(
90 '--ini-config-override', action='store', type=_parse_json,
91 '--ini-config-override', action='store', type=_parse_json,
91 default=None, dest='pyramid_config_override', help=(
92 default=None, dest='pyramid_config_override', help=(
92 "Overrides the .ini file settings. Should be specified in JSON"
93 "Overrides the .ini file settings. Should be specified in JSON"
93 " format, e.g. '{\"section\": {\"parameter\": \"value\", ...}}'"
94 " format, e.g. '{\"section\": {\"parameter\": \"value\", ...}}'"
94 )
95 )
95 )
96 )
96 parser.addini(
97 parser.addini(
97 'pyramid_config',
98 'pyramid_config',
98 "Set up a Pyramid environment with the specified config file.")
99 "Set up a Pyramid environment with the specified config file.")
99
100
100 vcsgroup = parser.getgroup('vcs')
101 vcsgroup = parser.getgroup('vcs')
101 vcsgroup.addoption(
102 vcsgroup.addoption(
102 '--without-vcsserver', dest='with_vcsserver', action='store_false',
103 '--without-vcsserver', dest='with_vcsserver', action='store_false',
103 help="Do not start the VCSServer in a background process.")
104 help="Do not start the VCSServer in a background process.")
104 vcsgroup.addoption(
105 vcsgroup.addoption(
105 '--with-vcsserver-http', dest='vcsserver_config_http',
106 '--with-vcsserver-http', dest='vcsserver_config_http',
106 help="Start the HTTP VCSServer with the specified config file.")
107 help="Start the HTTP VCSServer with the specified config file.")
107 vcsgroup.addoption(
108 vcsgroup.addoption(
108 '--vcsserver-protocol', dest='vcsserver_protocol',
109 '--vcsserver-protocol', dest='vcsserver_protocol',
109 help="Start the VCSServer with HTTP protocol support.")
110 help="Start the VCSServer with HTTP protocol support.")
110 vcsgroup.addoption(
111 vcsgroup.addoption(
111 '--vcsserver-config-override', action='store', type=_parse_json,
112 '--vcsserver-config-override', action='store', type=_parse_json,
112 default=None, dest='vcsserver_config_override', help=(
113 default=None, dest='vcsserver_config_override', help=(
113 "Overrides the .ini file settings for the VCSServer. "
114 "Overrides the .ini file settings for the VCSServer. "
114 "Should be specified in JSON "
115 "Should be specified in JSON "
115 "format, e.g. '{\"section\": {\"parameter\": \"value\", ...}}'"
116 "format, e.g. '{\"section\": {\"parameter\": \"value\", ...}}'"
116 )
117 )
117 )
118 )
118 vcsgroup.addoption(
119 vcsgroup.addoption(
119 '--vcsserver-port', action='store', type=int,
120 '--vcsserver-port', action='store', type=int,
120 default=None, help=(
121 default=None, help=(
121 "Allows to set the port of the vcsserver. Useful when testing "
122 "Allows to set the port of the vcsserver. Useful when testing "
122 "against an already running server and random ports cause "
123 "against an already running server and random ports cause "
123 "trouble."))
124 "trouble."))
124 parser.addini(
125 parser.addini(
125 'vcsserver_config_http',
126 'vcsserver_config_http',
126 "Start the HTTP VCSServer with the specified config file.")
127 "Start the HTTP VCSServer with the specified config file.")
127 parser.addini(
128 parser.addini(
128 'vcsserver_protocol',
129 'vcsserver_protocol',
129 "Start the VCSServer with HTTP protocol support.")
130 "Start the VCSServer with HTTP protocol support.")
130
131
131
132
132 @pytest.hookimpl(tryfirst=True, hookwrapper=True)
133 @pytest.hookimpl(tryfirst=True, hookwrapper=True)
133 def pytest_runtest_makereport(item, call):
134 def pytest_runtest_makereport(item, call):
134 """
135 """
135 Adding the remote traceback if the exception has this information.
136 Adding the remote traceback if the exception has this information.
136
137
137 VCSServer attaches this information as the attribute `_vcs_server_traceback`
138 VCSServer attaches this information as the attribute `_vcs_server_traceback`
138 to the exception instance.
139 to the exception instance.
139 """
140 """
140 outcome = yield
141 outcome = yield
141 report = outcome.get_result()
142 report = outcome.get_result()
142
143
143 if call.excinfo:
144 if call.excinfo:
144 exc = call.excinfo.value
145 exc = call.excinfo.value
145 vcsserver_traceback = getattr(exc, '_vcs_server_traceback', None)
146 vcsserver_traceback = getattr(exc, '_vcs_server_traceback', None)
146
147
147 if vcsserver_traceback and report.outcome == 'failed':
148 if vcsserver_traceback and report.outcome == 'failed':
148 section = f'VCSServer remote traceback {report.when}'
149 section = f'VCSServer remote traceback {report.when}'
149 report.sections.append((section, vcsserver_traceback))
150 report.sections.append((section, vcsserver_traceback))
150
151
151
152
152 def pytest_generate_tests(metafunc):
153 def pytest_generate_tests(metafunc):
153
154
154 # Support test generation based on --backend parameter
155 # Support test generation based on --backend parameter
155 if 'backend_alias' in metafunc.fixturenames:
156 if 'backend_alias' in metafunc.fixturenames:
156 backends = get_backends_from_metafunc(metafunc)
157 backends = get_backends_from_metafunc(metafunc)
157 scope = None
158 scope = None
158 if not backends:
159 if not backends:
159 pytest.skip("Not enabled for any of selected backends")
160 pytest.skip("Not enabled for any of selected backends")
160
161
161 metafunc.parametrize('backend_alias', backends, scope=scope)
162 metafunc.parametrize('backend_alias', backends, scope=scope)
162
163
163 backend_mark = metafunc.definition.get_closest_marker('backends')
164 backend_mark = metafunc.definition.get_closest_marker('backends')
164 if backend_mark:
165 if backend_mark:
165 backends = get_backends_from_metafunc(metafunc)
166 backends = get_backends_from_metafunc(metafunc)
166 if not backends:
167 if not backends:
167 pytest.skip("Not enabled for any of selected backends")
168 pytest.skip("Not enabled for any of selected backends")
@@ -1,767 +1,783 b''
1
1
2 ; #########################################
2 ; #########################################
3 ; RHODECODE COMMUNITY EDITION CONFIGURATION
3 ; RHODECODE COMMUNITY EDITION CONFIGURATION
4 ; #########################################
4 ; #########################################
5
5
6 [DEFAULT]
6 [DEFAULT]
7 ; Debug flag sets all loggers to debug, and enables request tracking
7 ; Debug flag sets all loggers to debug, and enables request tracking
8 debug = true
8 debug = true
9
9
10 ; ########################################################################
10 ; ########################################################################
11 ; EMAIL CONFIGURATION
11 ; EMAIL CONFIGURATION
12 ; These settings will be used by the RhodeCode mailing system
12 ; These settings will be used by the RhodeCode mailing system
13 ; ########################################################################
13 ; ########################################################################
14
14
15 ; prefix all emails subjects with given prefix, helps filtering out emails
15 ; prefix all emails subjects with given prefix, helps filtering out emails
16 #email_prefix = [RhodeCode]
16 #email_prefix = [RhodeCode]
17
17
18 ; email FROM address all mails will be sent
18 ; email FROM address all mails will be sent
19 #app_email_from = rhodecode-noreply@localhost
19 #app_email_from = rhodecode-noreply@localhost
20
20
21 #smtp_server = mail.server.com
21 #smtp_server = mail.server.com
22 #smtp_username =
22 #smtp_username =
23 #smtp_password =
23 #smtp_password =
24 #smtp_port =
24 #smtp_port =
25 #smtp_use_tls = false
25 #smtp_use_tls = false
26 #smtp_use_ssl = true
26 #smtp_use_ssl = true
27
27
28 [server:main]
28 [server:main]
29 ; COMMON HOST/IP CONFIG, This applies mostly to develop setup,
29 ; COMMON HOST/IP CONFIG, This applies mostly to develop setup,
30 ; Host port for gunicorn are controlled by gunicorn_conf.py
30 ; Host port for gunicorn are controlled by gunicorn_conf.py
31 host = 127.0.0.1
31 host = 127.0.0.1
32 port = 10020
32 port = 10020
33
33
34
34
35 ; ###########################
35 ; ###########################
36 ; GUNICORN APPLICATION SERVER
36 ; GUNICORN APPLICATION SERVER
37 ; ###########################
37 ; ###########################
38
38
39 ; run with gunicorn --paste rhodecode.ini --config gunicorn_conf.py
39 ; run with gunicorn --paste rhodecode.ini --config gunicorn_conf.py
40
40
41 ; Module to use, this setting shouldn't be changed
41 ; Module to use, this setting shouldn't be changed
42 use = egg:gunicorn#main
42 use = egg:gunicorn#main
43
43
44 ; Prefix middleware for RhodeCode.
44 ; Prefix middleware for RhodeCode.
45 ; recommended when using proxy setup.
45 ; recommended when using proxy setup.
46 ; allows to set RhodeCode under a prefix in server.
46 ; allows to set RhodeCode under a prefix in server.
47 ; eg https://server.com/custom_prefix. Enable `filter-with =` option below as well.
47 ; eg https://server.com/custom_prefix. Enable `filter-with =` option below as well.
48 ; And set your prefix like: `prefix = /custom_prefix`
48 ; And set your prefix like: `prefix = /custom_prefix`
49 ; be sure to also set beaker.session.cookie_path = /custom_prefix if you need
49 ; be sure to also set beaker.session.cookie_path = /custom_prefix if you need
50 ; to make your cookies only work on prefix url
50 ; to make your cookies only work on prefix url
51 [filter:proxy-prefix]
51 [filter:proxy-prefix]
52 use = egg:PasteDeploy#prefix
52 use = egg:PasteDeploy#prefix
53 prefix = /
53 prefix = /
54
54
55 [app:main]
55 [app:main]
56 ; The %(here)s variable will be replaced with the absolute path of parent directory
56 ; The %(here)s variable will be replaced with the absolute path of parent directory
57 ; of this file
57 ; of this file
58 ; Each option in the app:main can be override by an environmental variable
58 ; Each option in the app:main can be override by an environmental variable
59 ;
59 ;
60 ;To override an option:
60 ;To override an option:
61 ;
61 ;
62 ;RC_<KeyName>
62 ;RC_<KeyName>
63 ;Everything should be uppercase, . and - should be replaced by _.
63 ;Everything should be uppercase, . and - should be replaced by _.
64 ;For example, if you have these configuration settings:
64 ;For example, if you have these configuration settings:
65 ;rc_cache.repo_object.backend = foo
65 ;rc_cache.repo_object.backend = foo
66 ;can be overridden by
66 ;can be overridden by
67 ;export RC_CACHE_REPO_OBJECT_BACKEND=foo
67 ;export RC_CACHE_REPO_OBJECT_BACKEND=foo
68
68
69 use = egg:rhodecode-enterprise-ce
69 use = egg:rhodecode-enterprise-ce
70
70
71 ; enable proxy prefix middleware, defined above
71 ; enable proxy prefix middleware, defined above
72 #filter-with = proxy-prefix
72 #filter-with = proxy-prefix
73
73
74 ; encryption key used to encrypt social plugin tokens,
74 ; encryption key used to encrypt social plugin tokens,
75 ; remote_urls with credentials etc, if not set it defaults to
75 ; remote_urls with credentials etc, if not set it defaults to
76 ; `beaker.session.secret`
76 ; `beaker.session.secret`
77 #rhodecode.encrypted_values.secret =
77 #rhodecode.encrypted_values.secret =
78
78
79 ; decryption strict mode (enabled by default). It controls if decryption raises
79 ; decryption strict mode (enabled by default). It controls if decryption raises
80 ; `SignatureVerificationError` in case of wrong key, or damaged encryption data.
80 ; `SignatureVerificationError` in case of wrong key, or damaged encryption data.
81 #rhodecode.encrypted_values.strict = false
81 #rhodecode.encrypted_values.strict = false
82
82
83 ; Pick algorithm for encryption. Either fernet (more secure) or aes (default)
83 ; Pick algorithm for encryption. Either fernet (more secure) or aes (default)
84 ; fernet is safer, and we strongly recommend switching to it.
84 ; fernet is safer, and we strongly recommend switching to it.
85 ; Due to backward compatibility aes is used as default.
85 ; Due to backward compatibility aes is used as default.
86 #rhodecode.encrypted_values.algorithm = fernet
86 #rhodecode.encrypted_values.algorithm = fernet
87
87
88 ; Return gzipped responses from RhodeCode (static files/application)
88 ; Return gzipped responses from RhodeCode (static files/application)
89 gzip_responses = false
89 gzip_responses = false
90
90
91 ; Auto-generate javascript routes file on startup
91 ; Auto-generate javascript routes file on startup
92 generate_js_files = false
92 generate_js_files = false
93
93
94 ; System global default language.
94 ; System global default language.
95 ; All available languages: en (default), be, de, es, fr, it, ja, pl, pt, ru, zh
95 ; All available languages: en (default), be, de, es, fr, it, ja, pl, pt, ru, zh
96 lang = en
96 lang = en
97
97
98 ; Perform a full repository scan and import on each server start.
98 ; Perform a full repository scan and import on each server start.
99 ; Settings this to true could lead to very long startup time.
99 ; Settings this to true could lead to very long startup time.
100 startup.import_repos = true
100 startup.import_repos = true
101
101
102 ; URL at which the application is running. This is used for Bootstrapping
102 ; URL at which the application is running. This is used for Bootstrapping
103 ; requests in context when no web request is available. Used in ishell, or
103 ; requests in context when no web request is available. Used in ishell, or
104 ; SSH calls. Set this for events to receive proper url for SSH calls.
104 ; SSH calls. Set this for events to receive proper url for SSH calls.
105 app.base_url = http://rhodecode.local
105 app.base_url = http://rhodecode.local
106
106
107 ; Host at which the Service API is running.
108 app.service_api.host = http://rhodecode.local:10020
109
110 ; Secret for Service API authentication.
111 app.service_api.token =
112
107 ; Unique application ID. Should be a random unique string for security.
113 ; Unique application ID. Should be a random unique string for security.
108 app_instance_uuid = rc-production
114 app_instance_uuid = rc-production
109
115
110 ; Cut off limit for large diffs (size in bytes). If overall diff size on
116 ; Cut off limit for large diffs (size in bytes). If overall diff size on
111 ; commit, or pull request exceeds this limit this diff will be displayed
117 ; commit, or pull request exceeds this limit this diff will be displayed
112 ; partially. E.g 512000 == 512Kb
118 ; partially. E.g 512000 == 512Kb
113 cut_off_limit_diff = 1024000
119 cut_off_limit_diff = 1024000
114
120
115 ; Cut off limit for large files inside diffs (size in bytes). Each individual
121 ; Cut off limit for large files inside diffs (size in bytes). Each individual
116 ; file inside diff which exceeds this limit will be displayed partially.
122 ; file inside diff which exceeds this limit will be displayed partially.
117 ; E.g 128000 == 128Kb
123 ; E.g 128000 == 128Kb
118 cut_off_limit_file = 256000
124 cut_off_limit_file = 256000
119
125
120 ; Use cached version of vcs repositories everywhere. Recommended to be `true`
126 ; Use cached version of vcs repositories everywhere. Recommended to be `true`
121 vcs_full_cache = false
127 vcs_full_cache = false
122
128
123 ; Force https in RhodeCode, fixes https redirects, assumes it's always https.
129 ; Force https in RhodeCode, fixes https redirects, assumes it's always https.
124 ; Normally this is controlled by proper flags sent from http server such as Nginx or Apache
130 ; Normally this is controlled by proper flags sent from http server such as Nginx or Apache
125 force_https = false
131 force_https = false
126
132
127 ; use Strict-Transport-Security headers
133 ; use Strict-Transport-Security headers
128 use_htsts = false
134 use_htsts = false
129
135
130 ; Set to true if your repos are exposed using the dumb protocol
136 ; Set to true if your repos are exposed using the dumb protocol
131 git_update_server_info = false
137 git_update_server_info = false
132
138
133 ; RSS/ATOM feed options
139 ; RSS/ATOM feed options
134 rss_cut_off_limit = 256000
140 rss_cut_off_limit = 256000
135 rss_items_per_page = 10
141 rss_items_per_page = 10
136 rss_include_diff = false
142 rss_include_diff = false
137
143
138 ; gist URL alias, used to create nicer urls for gist. This should be an
144 ; gist URL alias, used to create nicer urls for gist. This should be an
139 ; url that does rewrites to _admin/gists/{gistid}.
145 ; url that does rewrites to _admin/gists/{gistid}.
140 ; example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
146 ; example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
141 ; RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/{gistid}
147 ; RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/{gistid}
142 gist_alias_url =
148 gist_alias_url =
143
149
144 ; List of views (using glob pattern syntax) that AUTH TOKENS could be
150 ; List of views (using glob pattern syntax) that AUTH TOKENS could be
145 ; used for access.
151 ; used for access.
146 ; Adding ?auth_token=TOKEN_HASH to the url authenticates this request as if it
152 ; Adding ?auth_token=TOKEN_HASH to the url authenticates this request as if it
147 ; came from the the logged in user who own this authentication token.
153 ; came from the the logged in user who own this authentication token.
148 ; Additionally @TOKEN syntax can be used to bound the view to specific
154 ; Additionally @TOKEN syntax can be used to bound the view to specific
149 ; authentication token. Such view would be only accessible when used together
155 ; authentication token. Such view would be only accessible when used together
150 ; with this authentication token
156 ; with this authentication token
151 ; list of all views can be found under `/_admin/permissions/auth_token_access`
157 ; list of all views can be found under `/_admin/permissions/auth_token_access`
152 ; The list should be "," separated and on a single line.
158 ; The list should be "," separated and on a single line.
153 ; Most common views to enable:
159 ; Most common views to enable:
154
160
155 # RepoCommitsView:repo_commit_download
161 # RepoCommitsView:repo_commit_download
156 # RepoCommitsView:repo_commit_patch
162 # RepoCommitsView:repo_commit_patch
157 # RepoCommitsView:repo_commit_raw
163 # RepoCommitsView:repo_commit_raw
158 # RepoCommitsView:repo_commit_raw@TOKEN
164 # RepoCommitsView:repo_commit_raw@TOKEN
159 # RepoFilesView:repo_files_diff
165 # RepoFilesView:repo_files_diff
160 # RepoFilesView:repo_archivefile
166 # RepoFilesView:repo_archivefile
161 # RepoFilesView:repo_file_raw
167 # RepoFilesView:repo_file_raw
162 # GistView:*
168 # GistView:*
163 api_access_controllers_whitelist =
169 api_access_controllers_whitelist =
164
170
165 ; Default encoding used to convert from and to unicode
171 ; Default encoding used to convert from and to unicode
166 ; can be also a comma separated list of encoding in case of mixed encodings
172 ; can be also a comma separated list of encoding in case of mixed encodings
167 default_encoding = UTF-8
173 default_encoding = UTF-8
168
174
169 ; instance-id prefix
175 ; instance-id prefix
170 ; a prefix key for this instance used for cache invalidation when running
176 ; a prefix key for this instance used for cache invalidation when running
171 ; multiple instances of RhodeCode, make sure it's globally unique for
177 ; multiple instances of RhodeCode, make sure it's globally unique for
172 ; all running RhodeCode instances. Leave empty if you don't use it
178 ; all running RhodeCode instances. Leave empty if you don't use it
173 instance_id =
179 instance_id =
174
180
175 ; Fallback authentication plugin. Set this to a plugin ID to force the usage
181 ; Fallback authentication plugin. Set this to a plugin ID to force the usage
176 ; of an authentication plugin also if it is disabled by it's settings.
182 ; of an authentication plugin also if it is disabled by it's settings.
177 ; This could be useful if you are unable to log in to the system due to broken
183 ; This could be useful if you are unable to log in to the system due to broken
178 ; authentication settings. Then you can enable e.g. the internal RhodeCode auth
184 ; authentication settings. Then you can enable e.g. the internal RhodeCode auth
179 ; module to log in again and fix the settings.
185 ; module to log in again and fix the settings.
180 ; Available builtin plugin IDs (hash is part of the ID):
186 ; Available builtin plugin IDs (hash is part of the ID):
181 ; egg:rhodecode-enterprise-ce#rhodecode
187 ; egg:rhodecode-enterprise-ce#rhodecode
182 ; egg:rhodecode-enterprise-ce#pam
188 ; egg:rhodecode-enterprise-ce#pam
183 ; egg:rhodecode-enterprise-ce#ldap
189 ; egg:rhodecode-enterprise-ce#ldap
184 ; egg:rhodecode-enterprise-ce#jasig_cas
190 ; egg:rhodecode-enterprise-ce#jasig_cas
185 ; egg:rhodecode-enterprise-ce#headers
191 ; egg:rhodecode-enterprise-ce#headers
186 ; egg:rhodecode-enterprise-ce#crowd
192 ; egg:rhodecode-enterprise-ce#crowd
187
193
188 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
194 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
189
195
190 ; Flag to control loading of legacy plugins in py:/path format
196 ; Flag to control loading of legacy plugins in py:/path format
191 auth_plugin.import_legacy_plugins = true
197 auth_plugin.import_legacy_plugins = true
192
198
193 ; alternative return HTTP header for failed authentication. Default HTTP
199 ; alternative return HTTP header for failed authentication. Default HTTP
194 ; response is 401 HTTPUnauthorized. Currently HG clients have troubles with
200 ; response is 401 HTTPUnauthorized. Currently HG clients have troubles with
195 ; handling that causing a series of failed authentication calls.
201 ; handling that causing a series of failed authentication calls.
196 ; Set this variable to 403 to return HTTPForbidden, or any other HTTP code
202 ; Set this variable to 403 to return HTTPForbidden, or any other HTTP code
197 ; This will be served instead of default 401 on bad authentication
203 ; This will be served instead of default 401 on bad authentication
198 auth_ret_code =
204 auth_ret_code =
199
205
200 ; use special detection method when serving auth_ret_code, instead of serving
206 ; use special detection method when serving auth_ret_code, instead of serving
201 ; ret_code directly, use 401 initially (Which triggers credentials prompt)
207 ; ret_code directly, use 401 initially (Which triggers credentials prompt)
202 ; and then serve auth_ret_code to clients
208 ; and then serve auth_ret_code to clients
203 auth_ret_code_detection = false
209 auth_ret_code_detection = false
204
210
205 ; locking return code. When repository is locked return this HTTP code. 2XX
211 ; locking return code. When repository is locked return this HTTP code. 2XX
206 ; codes don't break the transactions while 4XX codes do
212 ; codes don't break the transactions while 4XX codes do
207 lock_ret_code = 423
213 lock_ret_code = 423
208
214
215 ; Filesystem location were repositories should be stored
216 repo_store.path = /var/opt/rhodecode_repo_store
217
209 ; allows to setup custom hooks in settings page
218 ; allows to setup custom hooks in settings page
210 allow_custom_hooks_settings = true
219 allow_custom_hooks_settings = true
211
220
212 ; Generated license token required for EE edition license.
221 ; Generated license token required for EE edition license.
213 ; New generated token value can be found in Admin > settings > license page.
222 ; New generated token value can be found in Admin > settings > license page.
214 license_token = abra-cada-bra1-rce3
223 license_token = abra-cada-bra1-rce3
215
224
216 ; This flag hides sensitive information on the license page such as token, and license data
225 ; This flag hides sensitive information on the license page such as token, and license data
217 license.hide_license_info = false
226 license.hide_license_info = false
218
227
219 ; supervisor connection uri, for managing supervisor and logs.
228 ; supervisor connection uri, for managing supervisor and logs.
220 supervisor.uri =
229 supervisor.uri =
221
230
222 ; supervisord group name/id we only want this RC instance to handle
231 ; supervisord group name/id we only want this RC instance to handle
223 supervisor.group_id = dev
232 supervisor.group_id = dev
224
233
225 ; Display extended labs settings
234 ; Display extended labs settings
226 labs_settings_active = true
235 labs_settings_active = true
227
236
228 ; Custom exception store path, defaults to TMPDIR
237 ; Custom exception store path, defaults to TMPDIR
229 ; This is used to store exception from RhodeCode in shared directory
238 ; This is used to store exception from RhodeCode in shared directory
230 #exception_tracker.store_path =
239 #exception_tracker.store_path =
231
240
232 ; Send email with exception details when it happens
241 ; Send email with exception details when it happens
233 #exception_tracker.send_email = false
242 #exception_tracker.send_email = false
234
243
235 ; Comma separated list of recipients for exception emails,
244 ; Comma separated list of recipients for exception emails,
236 ; e.g admin@rhodecode.com,devops@rhodecode.com
245 ; e.g admin@rhodecode.com,devops@rhodecode.com
237 ; Can be left empty, then emails will be sent to ALL super-admins
246 ; Can be left empty, then emails will be sent to ALL super-admins
238 #exception_tracker.send_email_recipients =
247 #exception_tracker.send_email_recipients =
239
248
240 ; optional prefix to Add to email Subject
249 ; optional prefix to Add to email Subject
241 #exception_tracker.email_prefix = [RHODECODE ERROR]
250 #exception_tracker.email_prefix = [RHODECODE ERROR]
242
251
243 ; File store configuration. This is used to store and serve uploaded files
252 ; File store configuration. This is used to store and serve uploaded files
244 file_store.enabled = true
253 file_store.enabled = true
245
254
246 ; Storage backend, available options are: local
255 ; Storage backend, available options are: local
247 file_store.backend = local
256 file_store.backend = local
248
257
249 ; path to store the uploaded binaries
258 ; path to store the uploaded binaries and artifacts
250 file_store.storage_path = %(here)s/data/file_store
259 file_store.storage_path = /var/opt/rhodecode_data/file_store
251
260
252 ; Uncomment and set this path to control settings for archive download cache.
261 ; Uncomment and set this path to control settings for archive download cache.
253 ; Generated repo archives will be cached at this location
262 ; Generated repo archives will be cached at this location
254 ; and served from the cache during subsequent requests for the same archive of
263 ; and served from the cache during subsequent requests for the same archive of
255 ; the repository. This path is important to be shared across filesystems and with
264 ; the repository. This path is important to be shared across filesystems and with
256 ; RhodeCode and vcsserver
265 ; RhodeCode and vcsserver
257
266
258 ; Default is $cache_dir/archive_cache if not set
267 ; Default is $cache_dir/archive_cache if not set
259 archive_cache.store_dir = /tmp/rc-test-data/archive_cache
268 archive_cache.store_dir = /var/opt/rhodecode_data/tarballcache
260
269
261 ; The limit in GB sets how much data we cache before recycling last used, defaults to 10 gb
270 ; The limit in GB sets how much data we cache before recycling last used, defaults to 10 gb
262 archive_cache.cache_size_gb = 10
271 archive_cache.cache_size_gb = 10
263
272
264 ; By default cache uses sharding technique, this specifies how many shards are there
273 ; By default cache uses sharding technique, this specifies how many shards are there
265 archive_cache.cache_shards = 10
274 archive_cache.cache_shards = 10
266
275
267 ; #############
276 ; #############
268 ; CELERY CONFIG
277 ; CELERY CONFIG
269 ; #############
278 ; #############
270
279
271 ; manually run celery: /path/to/celery worker --task-events --beat --app rhodecode.lib.celerylib.loader --scheduler rhodecode.lib.celerylib.scheduler.RcScheduler --loglevel DEBUG --ini /path/to/rhodecode.ini
280 ; manually run celery: /path/to/celery worker --task-events --beat --app rhodecode.lib.celerylib.loader --scheduler rhodecode.lib.celerylib.scheduler.RcScheduler --loglevel DEBUG --ini /path/to/rhodecode.ini
272
281
273 use_celery = false
282 use_celery = false
274
283
275 ; path to store schedule database
284 ; path to store schedule database
276 #celerybeat-schedule.path =
285 #celerybeat-schedule.path =
277
286
278 ; connection url to the message broker (default redis)
287 ; connection url to the message broker (default redis)
279 celery.broker_url = redis://localhost:6379/8
288 celery.broker_url = redis://redis:6379/8
289
290 ; results backend to get results for (default redis)
291 celery.result_backend = redis://redis:6379/8
280
292
281 ; rabbitmq example
293 ; rabbitmq example
282 #celery.broker_url = amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost
294 #celery.broker_url = amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost
283
295
284 ; maximum tasks to execute before worker restart
296 ; maximum tasks to execute before worker restart
285 celery.max_tasks_per_child = 20
297 celery.max_tasks_per_child = 20
286
298
287 ; tasks will never be sent to the queue, but executed locally instead.
299 ; tasks will never be sent to the queue, but executed locally instead.
288 celery.task_always_eager = false
300 celery.task_always_eager = true
301 celery.task_store_eager_result = true
289
302
290 ; #############
303 ; #############
291 ; DOGPILE CACHE
304 ; DOGPILE CACHE
292 ; #############
305 ; #############
293
306
294 ; Default cache dir for caches. Putting this into a ramdisk can boost performance.
307 ; Default cache dir for caches. Putting this into a ramdisk can boost performance.
295 ; eg. /tmpfs/data_ramdisk, however this directory might require large amount of space
308 ; eg. /tmpfs/data_ramdisk, however this directory might require large amount of space
296 cache_dir = %(here)s/rc-test-data
309 cache_dir = /var/opt/rhodecode_data
297
310
298 ; *********************************************
311 ; *********************************************
299 ; `sql_cache_short` cache for heavy SQL queries
312 ; `sql_cache_short` cache for heavy SQL queries
300 ; Only supported backend is `memory_lru`
313 ; Only supported backend is `memory_lru`
301 ; *********************************************
314 ; *********************************************
302 rc_cache.sql_cache_short.backend = dogpile.cache.rc.memory_lru
315 rc_cache.sql_cache_short.backend = dogpile.cache.rc.memory_lru
303 rc_cache.sql_cache_short.expiration_time = 0
316 rc_cache.sql_cache_short.expiration_time = 0
304
317
305
318
306 ; *****************************************************
319 ; *****************************************************
307 ; `cache_repo_longterm` cache for repo object instances
320 ; `cache_repo_longterm` cache for repo object instances
308 ; Only supported backend is `memory_lru`
321 ; Only supported backend is `memory_lru`
309 ; *****************************************************
322 ; *****************************************************
310 rc_cache.cache_repo_longterm.backend = dogpile.cache.rc.memory_lru
323 rc_cache.cache_repo_longterm.backend = dogpile.cache.rc.memory_lru
311 ; by default we use 30 Days, cache is still invalidated on push
324 ; by default we use 30 Days, cache is still invalidated on push
312 rc_cache.cache_repo_longterm.expiration_time = 2592000
325 rc_cache.cache_repo_longterm.expiration_time = 2592000
313 ; max items in LRU cache, set to smaller number to save memory, and expire last used caches
326 ; max items in LRU cache, set to smaller number to save memory, and expire last used caches
314 rc_cache.cache_repo_longterm.max_size = 10000
327 rc_cache.cache_repo_longterm.max_size = 10000
315
328
316
329
317 ; *********************************************
330 ; *********************************************
318 ; `cache_general` cache for general purpose use
331 ; `cache_general` cache for general purpose use
319 ; for simplicity use rc.file_namespace backend,
332 ; for simplicity use rc.file_namespace backend,
320 ; for performance and scale use rc.redis
333 ; for performance and scale use rc.redis
321 ; *********************************************
334 ; *********************************************
322 rc_cache.cache_general.backend = dogpile.cache.rc.file_namespace
335 rc_cache.cache_general.backend = dogpile.cache.rc.file_namespace
323 rc_cache.cache_general.expiration_time = 43200
336 rc_cache.cache_general.expiration_time = 43200
324 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
337 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
325 rc_cache.cache_general.arguments.filename = %(here)s/cache-backend/cache_general_db
338 rc_cache.cache_general.arguments.filename = %(here)s/cache-backend/cache_general_db
326
339
327 ; alternative `cache_general` redis backend with distributed lock
340 ; alternative `cache_general` redis backend with distributed lock
328 #rc_cache.cache_general.backend = dogpile.cache.rc.redis
341 #rc_cache.cache_general.backend = dogpile.cache.rc.redis
329 #rc_cache.cache_general.expiration_time = 300
342 #rc_cache.cache_general.expiration_time = 300
330
343
331 ; redis_expiration_time needs to be greater then expiration_time
344 ; redis_expiration_time needs to be greater then expiration_time
332 #rc_cache.cache_general.arguments.redis_expiration_time = 7200
345 #rc_cache.cache_general.arguments.redis_expiration_time = 7200
333
346
334 #rc_cache.cache_general.arguments.host = localhost
347 #rc_cache.cache_general.arguments.host = localhost
335 #rc_cache.cache_general.arguments.port = 6379
348 #rc_cache.cache_general.arguments.port = 6379
336 #rc_cache.cache_general.arguments.db = 0
349 #rc_cache.cache_general.arguments.db = 0
337 #rc_cache.cache_general.arguments.socket_timeout = 30
350 #rc_cache.cache_general.arguments.socket_timeout = 30
338 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
351 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
339 #rc_cache.cache_general.arguments.distributed_lock = true
352 #rc_cache.cache_general.arguments.distributed_lock = true
340
353
341 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
354 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
342 #rc_cache.cache_general.arguments.lock_auto_renewal = true
355 #rc_cache.cache_general.arguments.lock_auto_renewal = true
343
356
344 ; *************************************************
357 ; *************************************************
345 ; `cache_perms` cache for permission tree, auth TTL
358 ; `cache_perms` cache for permission tree, auth TTL
346 ; for simplicity use rc.file_namespace backend,
359 ; for simplicity use rc.file_namespace backend,
347 ; for performance and scale use rc.redis
360 ; for performance and scale use rc.redis
348 ; *************************************************
361 ; *************************************************
349 rc_cache.cache_perms.backend = dogpile.cache.rc.file_namespace
362 rc_cache.cache_perms.backend = dogpile.cache.rc.file_namespace
350 rc_cache.cache_perms.expiration_time = 0
363 rc_cache.cache_perms.expiration_time = 0
351 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
364 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
352 rc_cache.cache_perms.arguments.filename = %(here)s/cache-backend/cache_perms_db
365 rc_cache.cache_perms.arguments.filename = %(here)s/cache-backend/cache_perms_db
353
366
354 ; alternative `cache_perms` redis backend with distributed lock
367 ; alternative `cache_perms` redis backend with distributed lock
355 #rc_cache.cache_perms.backend = dogpile.cache.rc.redis
368 #rc_cache.cache_perms.backend = dogpile.cache.rc.redis
356 #rc_cache.cache_perms.expiration_time = 300
369 #rc_cache.cache_perms.expiration_time = 300
357
370
358 ; redis_expiration_time needs to be greater then expiration_time
371 ; redis_expiration_time needs to be greater then expiration_time
359 #rc_cache.cache_perms.arguments.redis_expiration_time = 7200
372 #rc_cache.cache_perms.arguments.redis_expiration_time = 7200
360
373
361 #rc_cache.cache_perms.arguments.host = localhost
374 #rc_cache.cache_perms.arguments.host = localhost
362 #rc_cache.cache_perms.arguments.port = 6379
375 #rc_cache.cache_perms.arguments.port = 6379
363 #rc_cache.cache_perms.arguments.db = 0
376 #rc_cache.cache_perms.arguments.db = 0
364 #rc_cache.cache_perms.arguments.socket_timeout = 30
377 #rc_cache.cache_perms.arguments.socket_timeout = 30
365 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
378 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
366 #rc_cache.cache_perms.arguments.distributed_lock = true
379 #rc_cache.cache_perms.arguments.distributed_lock = true
367
380
368 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
381 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
369 #rc_cache.cache_perms.arguments.lock_auto_renewal = true
382 #rc_cache.cache_perms.arguments.lock_auto_renewal = true
370
383
371 ; ***************************************************
384 ; ***************************************************
372 ; `cache_repo` cache for file tree, Readme, RSS FEEDS
385 ; `cache_repo` cache for file tree, Readme, RSS FEEDS
373 ; for simplicity use rc.file_namespace backend,
386 ; for simplicity use rc.file_namespace backend,
374 ; for performance and scale use rc.redis
387 ; for performance and scale use rc.redis
375 ; ***************************************************
388 ; ***************************************************
376 rc_cache.cache_repo.backend = dogpile.cache.rc.file_namespace
389 rc_cache.cache_repo.backend = dogpile.cache.rc.file_namespace
377 rc_cache.cache_repo.expiration_time = 2592000
390 rc_cache.cache_repo.expiration_time = 2592000
378 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
391 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
379 rc_cache.cache_repo.arguments.filename = %(here)s/cache-backend/cache_repo_db
392 rc_cache.cache_repo.arguments.filename = %(here)s/cache-backend/cache_repo_db
380
393
381 ; alternative `cache_repo` redis backend with distributed lock
394 ; alternative `cache_repo` redis backend with distributed lock
382 #rc_cache.cache_repo.backend = dogpile.cache.rc.redis
395 #rc_cache.cache_repo.backend = dogpile.cache.rc.redis
383 #rc_cache.cache_repo.expiration_time = 2592000
396 #rc_cache.cache_repo.expiration_time = 2592000
384
397
385 ; redis_expiration_time needs to be greater then expiration_time
398 ; redis_expiration_time needs to be greater then expiration_time
386 #rc_cache.cache_repo.arguments.redis_expiration_time = 2678400
399 #rc_cache.cache_repo.arguments.redis_expiration_time = 2678400
387
400
388 #rc_cache.cache_repo.arguments.host = localhost
401 #rc_cache.cache_repo.arguments.host = localhost
389 #rc_cache.cache_repo.arguments.port = 6379
402 #rc_cache.cache_repo.arguments.port = 6379
390 #rc_cache.cache_repo.arguments.db = 1
403 #rc_cache.cache_repo.arguments.db = 1
391 #rc_cache.cache_repo.arguments.socket_timeout = 30
404 #rc_cache.cache_repo.arguments.socket_timeout = 30
392 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
405 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
393 #rc_cache.cache_repo.arguments.distributed_lock = true
406 #rc_cache.cache_repo.arguments.distributed_lock = true
394
407
395 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
408 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
396 #rc_cache.cache_repo.arguments.lock_auto_renewal = true
409 #rc_cache.cache_repo.arguments.lock_auto_renewal = true
397
410
398 ; ##############
411 ; ##############
399 ; BEAKER SESSION
412 ; BEAKER SESSION
400 ; ##############
413 ; ##############
401
414
402 ; beaker.session.type is type of storage options for the logged users sessions. Current allowed
415 ; beaker.session.type is type of storage options for the logged users sessions. Current allowed
403 ; types are file, ext:redis, ext:database, ext:memcached, and memory (default if not specified).
416 ; types are file, ext:redis, ext:database, ext:memcached
404 ; Fastest ones are Redis and ext:database
417 ; Fastest ones are ext:redis and ext:database, DO NOT use memory type for session
405 beaker.session.type = file
418 beaker.session.type = file
406 beaker.session.data_dir = %(here)s/rc-tests/data/sessions
419 beaker.session.data_dir = %(here)s/rc-tests/data/sessions
407
420
408 ; Redis based sessions
421 ; Redis based sessions
409 #beaker.session.type = ext:redis
422 #beaker.session.type = ext:redis
410 #beaker.session.url = redis://127.0.0.1:6379/2
423 #beaker.session.url = redis://redis:6379/2
411
424
412 ; DB based session, fast, and allows easy management over logged in users
425 ; DB based session, fast, and allows easy management over logged in users
413 #beaker.session.type = ext:database
426 #beaker.session.type = ext:database
414 #beaker.session.table_name = db_session
427 #beaker.session.table_name = db_session
415 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
428 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
416 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
429 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
417 #beaker.session.sa.pool_recycle = 3600
430 #beaker.session.sa.pool_recycle = 3600
418 #beaker.session.sa.echo = false
431 #beaker.session.sa.echo = false
419
432
420 beaker.session.key = rhodecode
433 beaker.session.key = rhodecode
421 beaker.session.secret = test-rc-uytcxaz
434 beaker.session.secret = test-rc-uytcxaz
422 beaker.session.lock_dir = %(here)s/data/sessions/lock
435 beaker.session.lock_dir = %(here)s/data/sessions/lock
423
436
424 ; Secure encrypted cookie. Requires AES and AES python libraries
437 ; Secure encrypted cookie. Requires AES and AES python libraries
425 ; you must disable beaker.session.secret to use this
438 ; you must disable beaker.session.secret to use this
426 #beaker.session.encrypt_key = key_for_encryption
439 #beaker.session.encrypt_key = key_for_encryption
427 #beaker.session.validate_key = validation_key
440 #beaker.session.validate_key = validation_key
428
441
429 ; Sets session as invalid (also logging out user) if it haven not been
442 ; Sets session as invalid (also logging out user) if it haven not been
430 ; accessed for given amount of time in seconds
443 ; accessed for given amount of time in seconds
431 beaker.session.timeout = 2592000
444 beaker.session.timeout = 2592000
432 beaker.session.httponly = true
445 beaker.session.httponly = true
433
446
434 ; Path to use for the cookie. Set to prefix if you use prefix middleware
447 ; Path to use for the cookie. Set to prefix if you use prefix middleware
435 #beaker.session.cookie_path = /custom_prefix
448 #beaker.session.cookie_path = /custom_prefix
436
449
437 ; Set https secure cookie
450 ; Set https secure cookie
438 beaker.session.secure = false
451 beaker.session.secure = false
439
452
440 ## auto save the session to not to use .save()
441 beaker.session.auto = false
442
443 ; default cookie expiration time in seconds, set to `true` to set expire
453 ; default cookie expiration time in seconds, set to `true` to set expire
444 ; at browser close
454 ; at browser close
445 #beaker.session.cookie_expires = 3600
455 #beaker.session.cookie_expires = 3600
446
456
447 ; #############################
457 ; #############################
448 ; SEARCH INDEXING CONFIGURATION
458 ; SEARCH INDEXING CONFIGURATION
449 ; #############################
459 ; #############################
450
460
451 ; Full text search indexer is available in rhodecode-tools under
461 ; Full text search indexer is available in rhodecode-tools under
452 ; `rhodecode-tools index` command
462 ; `rhodecode-tools index` command
453
463
454 ; WHOOSH Backend, doesn't require additional services to run
464 ; WHOOSH Backend, doesn't require additional services to run
455 ; it works good with few dozen repos
465 ; it works good with few dozen repos
456 search.module = rhodecode.lib.index.whoosh
466 search.module = rhodecode.lib.index.whoosh
457 search.location = %(here)s/data/index
467 search.location = %(here)s/data/index
458
468
459 ; ####################
469 ; ####################
460 ; CHANNELSTREAM CONFIG
470 ; CHANNELSTREAM CONFIG
461 ; ####################
471 ; ####################
462
472
463 ; channelstream enables persistent connections and live notification
473 ; channelstream enables persistent connections and live notification
464 ; in the system. It's also used by the chat system
474 ; in the system. It's also used by the chat system
465
475
466 channelstream.enabled = false
476 channelstream.enabled = false
467
477
468 ; server address for channelstream server on the backend
478 ; server address for channelstream server on the backend
469 channelstream.server = 127.0.0.1:9800
479 channelstream.server = 127.0.0.1:9800
470
480
471 ; location of the channelstream server from outside world
481 ; location of the channelstream server from outside world
472 ; use ws:// for http or wss:// for https. This address needs to be handled
482 ; use ws:// for http or wss:// for https. This address needs to be handled
473 ; by external HTTP server such as Nginx or Apache
483 ; by external HTTP server such as Nginx or Apache
474 ; see Nginx/Apache configuration examples in our docs
484 ; see Nginx/Apache configuration examples in our docs
475 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
485 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
476 channelstream.secret = secret
486 channelstream.secret = secret
477 channelstream.history.location = %(here)s/channelstream_history
487 channelstream.history.location = %(here)s/channelstream_history
478
488
479 ; Internal application path that Javascript uses to connect into.
489 ; Internal application path that Javascript uses to connect into.
480 ; If you use proxy-prefix the prefix should be added before /_channelstream
490 ; If you use proxy-prefix the prefix should be added before /_channelstream
481 channelstream.proxy_path = /_channelstream
491 channelstream.proxy_path = /_channelstream
482
492
483
493
484 ; ##############################
494 ; ##############################
485 ; MAIN RHODECODE DATABASE CONFIG
495 ; MAIN RHODECODE DATABASE CONFIG
486 ; ##############################
496 ; ##############################
487
497
488 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
498 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
489 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
499 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
490 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode?charset=utf8
500 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode?charset=utf8
491 ; pymysql is an alternative driver for MySQL, use in case of problems with default one
501 ; pymysql is an alternative driver for MySQL, use in case of problems with default one
492 #sqlalchemy.db1.url = mysql+pymysql://root:qweqwe@localhost/rhodecode
502 #sqlalchemy.db1.url = mysql+pymysql://root:qweqwe@localhost/rhodecode
493
503
494 sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode_test.db?timeout=30
504 sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode_test.db?timeout=30
495
505
496 ; see sqlalchemy docs for other advanced settings
506 ; see sqlalchemy docs for other advanced settings
497 ; print the sql statements to output
507 ; print the sql statements to output
498 sqlalchemy.db1.echo = false
508 sqlalchemy.db1.echo = false
499
509
500 ; recycle the connections after this amount of seconds
510 ; recycle the connections after this amount of seconds
501 sqlalchemy.db1.pool_recycle = 3600
511 sqlalchemy.db1.pool_recycle = 3600
502
512
503 ; the number of connections to keep open inside the connection pool.
513 ; the number of connections to keep open inside the connection pool.
504 ; 0 indicates no limit
514 ; 0 indicates no limit
505 ; the general calculus with gevent is:
515 ; the general calculus with gevent is:
506 ; if your system allows 500 concurrent greenlets (max_connections) that all do database access,
516 ; if your system allows 500 concurrent greenlets (max_connections) that all do database access,
507 ; then increase pool size + max overflow so that they add up to 500.
517 ; then increase pool size + max overflow so that they add up to 500.
508 #sqlalchemy.db1.pool_size = 5
518 #sqlalchemy.db1.pool_size = 5
509
519
510 ; The number of connections to allow in connection pool "overflow", that is
520 ; The number of connections to allow in connection pool "overflow", that is
511 ; connections that can be opened above and beyond the pool_size setting,
521 ; connections that can be opened above and beyond the pool_size setting,
512 ; which defaults to five.
522 ; which defaults to five.
513 #sqlalchemy.db1.max_overflow = 10
523 #sqlalchemy.db1.max_overflow = 10
514
524
515 ; Connection check ping, used to detect broken database connections
525 ; Connection check ping, used to detect broken database connections
516 ; could be enabled to better handle cases if MySQL has gone away errors
526 ; could be enabled to better handle cases if MySQL has gone away errors
517 #sqlalchemy.db1.ping_connection = true
527 #sqlalchemy.db1.ping_connection = true
518
528
519 ; ##########
529 ; ##########
520 ; VCS CONFIG
530 ; VCS CONFIG
521 ; ##########
531 ; ##########
522 vcs.server.enable = true
532 vcs.server.enable = true
523 vcs.server = vcsserver:10010
533 vcs.server = vcsserver:10010
524
534
525 ; Web server connectivity protocol, responsible for web based VCS operations
535 ; Web server connectivity protocol, responsible for web based VCS operations
526 ; Available protocols are:
536 ; Available protocols are:
527 ; `http` - use http-rpc backend (default)
537 ; `http` - use http-rpc backend (default)
528 vcs.server.protocol = http
538 vcs.server.protocol = http
529
539
530 ; Push/Pull operations protocol, available options are:
540 ; Push/Pull operations protocol, available options are:
531 ; `http` - use http-rpc backend (default)
541 ; `http` - use http-rpc backend (default)
532 vcs.scm_app_implementation = http
542 vcs.scm_app_implementation = http
533
543
534 ; Push/Pull operations hooks protocol, available options are:
544 ; Push/Pull operations hooks protocol, available options are:
535 ; `http` - use http-rpc backend (default)
545 ; `http` - use http-rpc backend (default)
536 vcs.hooks.protocol = http
546 vcs.hooks.protocol = http
537
547
538 ; Host on which this instance is listening for hooks. vcsserver will call this host to pull/push hooks so it should be
548 ; Host on which this instance is listening for hooks. vcsserver will call this host to pull/push hooks so it should be
539 ; accessible via network.
549 ; accessible via network.
540 ; Use vcs.hooks.host = "*" to bind to current hostname (for Docker)
550 ; Use vcs.hooks.host = "*" to bind to current hostname (for Docker)
541 vcs.hooks.host = *
551 vcs.hooks.host = *
542
552
543 ; Start VCSServer with this instance as a subprocess, useful for development
553 ; Start VCSServer with this instance as a subprocess, useful for development
544 vcs.start_server = false
554 vcs.start_server = false
545
555
546 ; List of enabled VCS backends, available options are:
556 ; List of enabled VCS backends, available options are:
547 ; `hg` - mercurial
557 ; `hg` - mercurial
548 ; `git` - git
558 ; `git` - git
549 ; `svn` - subversion
559 ; `svn` - subversion
550 vcs.backends = hg, git, svn
560 vcs.backends = hg, git, svn
551
561
552 ; Wait this number of seconds before killing connection to the vcsserver
562 ; Wait this number of seconds before killing connection to the vcsserver
553 vcs.connection_timeout = 3600
563 vcs.connection_timeout = 3600
554
564
555 ; Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
556 ; Set a numeric version for your current SVN e.g 1.8, or 1.12
557 ; Legacy available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
558 #vcs.svn.compatible_version = 1.8
559
560 ; Cache flag to cache vcsserver remote calls locally
565 ; Cache flag to cache vcsserver remote calls locally
561 ; It uses cache_region `cache_repo`
566 ; It uses cache_region `cache_repo`
562 vcs.methods.cache = false
567 vcs.methods.cache = false
563
568
564 ; ####################################################
569 ; ####################################################
565 ; Subversion proxy support (mod_dav_svn)
570 ; Subversion proxy support (mod_dav_svn)
566 ; Maps RhodeCode repo groups into SVN paths for Apache
571 ; Maps RhodeCode repo groups into SVN paths for Apache
567 ; ####################################################
572 ; ####################################################
568
573
574 ; Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
575 ; Set a numeric version for your current SVN e.g 1.8, or 1.12
576 ; Legacy 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 = 1.8
578
579 ; Enable SVN proxy of requests over HTTP
580 vcs.svn.proxy.enabled = true
581
582 ; host to connect to running SVN subsystem
583 vcs.svn.proxy.host = http://svn:8090
584
569 ; Enable or disable the config file generation.
585 ; Enable or disable the config file generation.
570 svn.proxy.generate_config = false
586 svn.proxy.generate_config = false
571
587
572 ; Generate config file with `SVNListParentPath` set to `On`.
588 ; Generate config file with `SVNListParentPath` set to `On`.
573 svn.proxy.list_parent_path = true
589 svn.proxy.list_parent_path = true
574
590
575 ; Set location and file name of generated config file.
591 ; Set location and file name of generated config file.
576 svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
592 svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
577
593
578 ; alternative mod_dav config template. This needs to be a valid mako template
594 ; alternative mod_dav config template. This needs to be a valid mako template
579 ; Example template can be found in the source code:
595 ; Example template can be found in the source code:
580 ; rhodecode/apps/svn_support/templates/mod-dav-svn.conf.mako
596 ; rhodecode/apps/svn_support/templates/mod-dav-svn.conf.mako
581 #svn.proxy.config_template = ~/.rccontrol/enterprise-1/custom_svn_conf.mako
597 #svn.proxy.config_template = ~/.rccontrol/enterprise-1/custom_svn_conf.mako
582
598
583 ; Used as a prefix to the `Location` block in the generated config file.
599 ; Used as a prefix to the `Location` block in the generated config file.
584 ; In most cases it should be set to `/`.
600 ; In most cases it should be set to `/`.
585 svn.proxy.location_root = /
601 svn.proxy.location_root = /
586
602
587 ; Command to reload the mod dav svn configuration on change.
603 ; Command to reload the mod dav svn configuration on change.
588 ; Example: `/etc/init.d/apache2 reload` or /home/USER/apache_reload.sh
604 ; Example: `/etc/init.d/apache2 reload` or /home/USER/apache_reload.sh
589 ; Make sure user who runs RhodeCode process is allowed to reload Apache
605 ; Make sure user who runs RhodeCode process is allowed to reload Apache
590 #svn.proxy.reload_cmd = /etc/init.d/apache2 reload
606 #svn.proxy.reload_cmd = /etc/init.d/apache2 reload
591
607
592 ; If the timeout expires before the reload command finishes, the command will
608 ; If the timeout expires before the reload command finishes, the command will
593 ; be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
609 ; be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
594 #svn.proxy.reload_timeout = 10
610 #svn.proxy.reload_timeout = 10
595
611
596 ; ####################
612 ; ####################
597 ; SSH Support Settings
613 ; SSH Support Settings
598 ; ####################
614 ; ####################
599
615
600 ; Defines if a custom authorized_keys file should be created and written on
616 ; Defines if a custom authorized_keys file should be created and written on
601 ; any change user ssh keys. Setting this to false also disables possibility
617 ; any change user ssh keys. Setting this to false also disables possibility
602 ; of adding SSH keys by users from web interface. Super admins can still
618 ; of adding SSH keys by users from web interface. Super admins can still
603 ; manage SSH Keys.
619 ; manage SSH Keys.
604 ssh.generate_authorized_keyfile = true
620 ssh.generate_authorized_keyfile = true
605
621
606 ; Options for ssh, default is `no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding`
622 ; Options for ssh, default is `no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding`
607 # ssh.authorized_keys_ssh_opts =
623 # ssh.authorized_keys_ssh_opts =
608
624
609 ; Path to the authorized_keys file where the generate entries are placed.
625 ; Path to the authorized_keys file where the generate entries are placed.
610 ; It is possible to have multiple key files specified in `sshd_config` e.g.
626 ; It is possible to have multiple key files specified in `sshd_config` e.g.
611 ; AuthorizedKeysFile %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode
627 ; AuthorizedKeysFile %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode
612 ssh.authorized_keys_file_path = %(here)s/rc/authorized_keys_rhodecode
628 ssh.authorized_keys_file_path = %(here)s/rc/authorized_keys_rhodecode
613
629
614 ; Command to execute the SSH wrapper. The binary is available in the
630 ; Command to execute the SSH wrapper. The binary is available in the
615 ; RhodeCode installation directory.
631 ; RhodeCode installation directory.
616 ; e.g ~/.rccontrol/community-1/profile/bin/rc-ssh-wrapper
632 ; e.g /usr/local/bin/rhodecode_bin/bin/rc-ssh-wrapper
617 ssh.wrapper_cmd = ~/.rccontrol/community-1/rc-ssh-wrapper
633 ssh.wrapper_cmd = /usr/local/bin/rhodecode_bin/bin/rc-ssh-wrapper
618
634
619 ; Allow shell when executing the ssh-wrapper command
635 ; Allow shell when executing the ssh-wrapper command
620 ssh.wrapper_cmd_allow_shell = false
636 ssh.wrapper_cmd_allow_shell = false
621
637
622 ; Enables logging, and detailed output send back to the client during SSH
638 ; Enables logging, and detailed output send back to the client during SSH
623 ; operations. Useful for debugging, shouldn't be used in production.
639 ; operations. Useful for debugging, shouldn't be used in production.
624 ssh.enable_debug_logging = false
640 ssh.enable_debug_logging = false
625
641
626 ; Paths to binary executable, by default they are the names, but we can
642 ; Paths to binary executable, by default they are the names, but we can
627 ; override them if we want to use a custom one
643 ; override them if we want to use a custom one
628 ssh.executable.hg = ~/.rccontrol/vcsserver-1/profile/bin/hg
644 ssh.executable.hg = /usr/local/bin/rhodecode_bin/vcs_bin/hg
629 ssh.executable.git = ~/.rccontrol/vcsserver-1/profile/bin/git
645 ssh.executable.git = /usr/local/bin/rhodecode_bin/vcs_bin/git
630 ssh.executable.svn = ~/.rccontrol/vcsserver-1/profile/bin/svnserve
646 ssh.executable.svn = /usr/local/bin/rhodecode_bin/vcs_bin/svnserve
631
647
632 ; Enables SSH key generator web interface. Disabling this still allows users
648 ; Enables SSH key generator web interface. Disabling this still allows users
633 ; to add their own keys.
649 ; to add their own keys.
634 ssh.enable_ui_key_generator = true
650 ssh.enable_ui_key_generator = true
635
651
636 ; Statsd client config, this is used to send metrics to statsd
652 ; Statsd client config, this is used to send metrics to statsd
637 ; We recommend setting statsd_exported and scrape them using Prometheus
653 ; We recommend setting statsd_exported and scrape them using Prometheus
638 #statsd.enabled = false
654 #statsd.enabled = false
639 #statsd.statsd_host = 0.0.0.0
655 #statsd.statsd_host = 0.0.0.0
640 #statsd.statsd_port = 8125
656 #statsd.statsd_port = 8125
641 #statsd.statsd_prefix =
657 #statsd.statsd_prefix =
642 #statsd.statsd_ipv6 = false
658 #statsd.statsd_ipv6 = false
643
659
644 ; configure logging automatically at server startup set to false
660 ; configure logging automatically at server startup set to false
645 ; to use the below custom logging config.
661 ; to use the below custom logging config.
646 ; RC_LOGGING_FORMATTER
662 ; RC_LOGGING_FORMATTER
647 ; RC_LOGGING_LEVEL
663 ; RC_LOGGING_LEVEL
648 ; env variables can control the settings for logging in case of autoconfigure
664 ; env variables can control the settings for logging in case of autoconfigure
649
665
650 logging.autoconfigure = false
666 logging.autoconfigure = false
651
667
652 ; specify your own custom logging config file to configure logging
668 ; specify your own custom logging config file to configure logging
653 #logging.logging_conf_file = /path/to/custom_logging.ini
669 #logging.logging_conf_file = /path/to/custom_logging.ini
654
670
655 ; Dummy marker to add new entries after.
671 ; Dummy marker to add new entries after.
656 ; Add any custom entries below. Please don't remove this marker.
672 ; Add any custom entries below. Please don't remove this marker.
657 custom.conf = 1
673 custom.conf = 1
658
674
659
675
660 ; #####################
676 ; #####################
661 ; LOGGING CONFIGURATION
677 ; LOGGING CONFIGURATION
662 ; #####################
678 ; #####################
663
679
664 [loggers]
680 [loggers]
665 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper, dogpile
681 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper, dogpile
666
682
667 [handlers]
683 [handlers]
668 keys = console, console_sql
684 keys = console, console_sql
669
685
670 [formatters]
686 [formatters]
671 keys = generic, json, color_formatter, color_formatter_sql
687 keys = generic, json, color_formatter, color_formatter_sql
672
688
673 ; #######
689 ; #######
674 ; LOGGERS
690 ; LOGGERS
675 ; #######
691 ; #######
676 [logger_root]
692 [logger_root]
677 level = NOTSET
693 level = NOTSET
678 handlers = console
694 handlers = console
679
695
680 [logger_routes]
696 [logger_routes]
681 level = DEBUG
697 level = DEBUG
682 handlers =
698 handlers =
683 qualname = routes.middleware
699 qualname = routes.middleware
684 ## "level = DEBUG" logs the route matched and routing variables.
700 ## "level = DEBUG" logs the route matched and routing variables.
685 propagate = 1
701 propagate = 1
686
702
687 [logger_sqlalchemy]
703 [logger_sqlalchemy]
688 level = INFO
704 level = INFO
689 handlers = console_sql
705 handlers = console_sql
690 qualname = sqlalchemy.engine
706 qualname = sqlalchemy.engine
691 propagate = 0
707 propagate = 0
692
708
693 [logger_beaker]
709 [logger_beaker]
694 level = DEBUG
710 level = DEBUG
695 handlers =
711 handlers =
696 qualname = beaker.container
712 qualname = beaker.container
697 propagate = 1
713 propagate = 1
698
714
699 [logger_dogpile]
715 [logger_dogpile]
700 level = INFO
716 level = INFO
701 handlers = console
717 handlers = console
702 qualname = dogpile
718 qualname = dogpile
703 propagate = 1
719 propagate = 1
704
720
705 [logger_rhodecode]
721 [logger_rhodecode]
706 level = DEBUG
722 level = DEBUG
707 handlers =
723 handlers =
708 qualname = rhodecode
724 qualname = rhodecode
709 propagate = 1
725 propagate = 1
710
726
711 [logger_ssh_wrapper]
727 [logger_ssh_wrapper]
712 level = DEBUG
728 level = DEBUG
713 handlers =
729 handlers =
714 qualname = ssh_wrapper
730 qualname = ssh_wrapper
715 propagate = 1
731 propagate = 1
716
732
717 [logger_celery]
733 [logger_celery]
718 level = DEBUG
734 level = DEBUG
719 handlers =
735 handlers =
720 qualname = celery
736 qualname = celery
721
737
722
738
723 ; ########
739 ; ########
724 ; HANDLERS
740 ; HANDLERS
725 ; ########
741 ; ########
726
742
727 [handler_console]
743 [handler_console]
728 class = StreamHandler
744 class = StreamHandler
729 args = (sys.stderr, )
745 args = (sys.stderr, )
730 level = DEBUG
746 level = DEBUG
731 ; To enable JSON formatted logs replace 'generic/color_formatter' with 'json'
747 ; To enable JSON formatted logs replace 'generic/color_formatter' with 'json'
732 ; This allows sending properly formatted logs to grafana loki or elasticsearch
748 ; This allows sending properly formatted logs to grafana loki or elasticsearch
733 formatter = generic
749 formatter = generic
734
750
735 [handler_console_sql]
751 [handler_console_sql]
736 ; "level = DEBUG" logs SQL queries and results.
752 ; "level = DEBUG" logs SQL queries and results.
737 ; "level = INFO" logs SQL queries.
753 ; "level = INFO" logs SQL queries.
738 ; "level = WARN" logs neither. (Recommended for production systems.)
754 ; "level = WARN" logs neither. (Recommended for production systems.)
739 class = StreamHandler
755 class = StreamHandler
740 args = (sys.stderr, )
756 args = (sys.stderr, )
741 level = WARN
757 level = WARN
742 ; To enable JSON formatted logs replace 'generic/color_formatter_sql' with 'json'
758 ; To enable JSON formatted logs replace 'generic/color_formatter_sql' with 'json'
743 ; This allows sending properly formatted logs to grafana loki or elasticsearch
759 ; This allows sending properly formatted logs to grafana loki or elasticsearch
744 formatter = generic
760 formatter = generic
745
761
746 ; ##########
762 ; ##########
747 ; FORMATTERS
763 ; FORMATTERS
748 ; ##########
764 ; ##########
749
765
750 [formatter_generic]
766 [formatter_generic]
751 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
767 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
752 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
768 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
753 datefmt = %Y-%m-%d %H:%M:%S
769 datefmt = %Y-%m-%d %H:%M:%S
754
770
755 [formatter_color_formatter]
771 [formatter_color_formatter]
756 class = rhodecode.lib.logging_formatter.ColorFormatter
772 class = rhodecode.lib.logging_formatter.ColorFormatter
757 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
773 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
758 datefmt = %Y-%m-%d %H:%M:%S
774 datefmt = %Y-%m-%d %H:%M:%S
759
775
760 [formatter_color_formatter_sql]
776 [formatter_color_formatter_sql]
761 class = rhodecode.lib.logging_formatter.ColorFormatterSql
777 class = rhodecode.lib.logging_formatter.ColorFormatterSql
762 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
778 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
763 datefmt = %Y-%m-%d %H:%M:%S
779 datefmt = %Y-%m-%d %H:%M:%S
764
780
765 [formatter_json]
781 [formatter_json]
766 format = %(timestamp)s %(levelname)s %(name)s %(message)s %(req_id)s
782 format = %(timestamp)s %(levelname)s %(name)s %(message)s %(req_id)s
767 class = rhodecode.lib._vendor.jsonlogger.JsonFormatter
783 class = rhodecode.lib._vendor.jsonlogger.JsonFormatter
General Comments 0
You need to be logged in to leave comments. Login now