diff --git a/rhodecode/lib/system_info.py b/rhodecode/lib/system_info.py --- a/rhodecode/lib/system_info.py +++ b/rhodecode/lib/system_info.py @@ -67,8 +67,7 @@ def get_storage_size(storage_path): try: sizes.append(os.path.getsize(storage_file)) except OSError: - log.exception('Failed to get size of storage file %s', - storage_file) + log.exception('Failed to get size of storage file %s', storage_file) pass return sum(sizes) @@ -81,6 +80,16 @@ def get_resource(resource_type): return 'NOT_SUPPORTED' +def get_cert_path(ini_path): + default = '/etc/ssl/certs/ca-certificates.crt' + control_ca_bundle = os.path.join( + os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(ini_path)))), + '.rccontrol-profile/etc/ca-bundle.crt') + if os.path.isfile(control_ca_bundle): + default = control_ca_bundle + + return default + class SysInfoRes(object): def __init__(self, value, state=None, human_value=None): self.value = value @@ -604,6 +613,7 @@ def rhodecode_config(): import rhodecode path = rhodecode.CONFIG.get('__file__') rhodecode_ini_safe = rhodecode.CONFIG.copy() + cert_path = get_cert_path(path) try: config = configparser.ConfigParser() @@ -615,10 +625,6 @@ def rhodecode_config(): log.exception('Failed to read .ini file for display') parsed_ini = {} - cert_path = os.path.join( - os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(path)))), - '.rccontrol-profile/etc/ca-bundle.crt') - rhodecode_ini_safe['server:main'] = parsed_ini blacklist = [ diff --git a/rhodecode/lib/vcs/client_http.py b/rhodecode/lib/vcs/client_http.py --- a/rhodecode/lib/vcs/client_http.py +++ b/rhodecode/lib/vcs/client_http.py @@ -35,7 +35,9 @@ import msgpack import requests from requests.packages.urllib3.util.retry import Retry -from . import exceptions, CurlSession +import rhodecode +from rhodecode.lib.system_info import get_cert_path +from rhodecode.lib.vcs import exceptions, CurlSession log = logging.getLogger(__name__) @@ -121,6 +123,8 @@ class RemoteRepo(object): if log.isEnabledFor(logging.DEBUG): self._call = self._call_with_logging + self.cert_dir = get_cert_path(rhodecode.CONFIG.get('__file__')) + def __getattr__(self, name): def f(*args, **kwargs): return self._call(name, *args, **kwargs) @@ -132,6 +136,8 @@ class RemoteRepo(object): # config object is being changed for hooking scenarios wire = copy.deepcopy(self._wire) wire["config"] = wire["config"].serialize() + + wire["config"].append(('vcs', 'ssl_dir', self.cert_dir)) payload = { 'id': str(uuid.uuid4()), 'method': name, diff --git a/rhodecode/public/js/rhodecode/routes.js b/rhodecode/public/js/rhodecode/routes.js --- a/rhodecode/public/js/rhodecode/routes.js +++ b/rhodecode/public/js/rhodecode/routes.js @@ -80,14 +80,12 @@ function registerRCRoutes() { pyroutes.register('admin_settings_search', '/_admin/settings/search', []); pyroutes.register('admin_settings_labs', '/_admin/settings/labs', []); pyroutes.register('admin_settings_labs_update', '/_admin/settings/labs/update', []); - pyroutes.register('admin_settings_automation', '/_admin/_admin/settings/automation', []); pyroutes.register('admin_permissions_application', '/_admin/permissions/application', []); pyroutes.register('admin_permissions_application_update', '/_admin/permissions/application/update', []); pyroutes.register('admin_permissions_global', '/_admin/permissions/global', []); pyroutes.register('admin_permissions_global_update', '/_admin/permissions/global/update', []); pyroutes.register('admin_permissions_object', '/_admin/permissions/object', []); pyroutes.register('admin_permissions_object_update', '/_admin/permissions/object/update', []); - pyroutes.register('admin_permissions_branch', '/_admin/permissions/branch', []); pyroutes.register('admin_permissions_ips', '/_admin/permissions/ips', []); pyroutes.register('admin_permissions_overview', '/_admin/permissions/overview', []); pyroutes.register('admin_permissions_auth_token_access', '/_admin/permissions/auth_token_access', []); @@ -106,8 +104,6 @@ function registerRCRoutes() { pyroutes.register('user_delete', '/_admin/users/%(user_id)s/delete', ['user_id']); pyroutes.register('user_force_password_reset', '/_admin/users/%(user_id)s/password_reset', ['user_id']); pyroutes.register('user_create_personal_repo_group', '/_admin/users/%(user_id)s/create_repo_group', ['user_id']); - pyroutes.register('edit_user_auth_tokens', '/_admin/users/%(user_id)s/edit/auth_tokens', ['user_id']); - pyroutes.register('edit_user_auth_tokens_add', '/_admin/users/%(user_id)s/edit/auth_tokens/new', ['user_id']); pyroutes.register('edit_user_auth_tokens_delete', '/_admin/users/%(user_id)s/edit/auth_tokens/delete', ['user_id']); pyroutes.register('edit_user_ssh_keys', '/_admin/users/%(user_id)s/edit/ssh_keys', ['user_id']); pyroutes.register('edit_user_ssh_keys_generate_keypair', '/_admin/users/%(user_id)s/edit/ssh_keys/generate', ['user_id']); @@ -139,9 +135,7 @@ function registerRCRoutes() { pyroutes.register('channelstream_connect', '/_admin/channelstream/connect', []); pyroutes.register('channelstream_subscribe', '/_admin/channelstream/subscribe', []); pyroutes.register('channelstream_proxy', '/_channelstream', []); - pyroutes.register('login', '/_admin/login', []); pyroutes.register('logout', '/_admin/logout', []); - pyroutes.register('register', '/_admin/register', []); pyroutes.register('reset_password', '/_admin/password_reset', []); pyroutes.register('reset_password_confirmation', '/_admin/password_reset_confirmation', []); pyroutes.register('home', '/', []); @@ -236,8 +230,6 @@ function registerRCRoutes() { pyroutes.register('edit_repo_advanced_hooks', '/%(repo_name)s/settings/advanced/hooks', ['repo_name']); pyroutes.register('edit_repo_caches', '/%(repo_name)s/settings/caches', ['repo_name']); pyroutes.register('edit_repo_perms', '/%(repo_name)s/settings/permissions', ['repo_name']); - pyroutes.register('edit_repo_perms_branch', '/%(repo_name)s/settings/branch_permissions', ['repo_name']); - pyroutes.register('edit_repo_perms_branch_delete', '/%(repo_name)s/settings/branch_permissions/%(rule_id)s/delete', ['repo_name', 'rule_id']); pyroutes.register('edit_repo_maintenance', '/%(repo_name)s/settings/maintenance', ['repo_name']); pyroutes.register('edit_repo_maintenance_execute', '/%(repo_name)s/settings/maintenance/execute', ['repo_name']); pyroutes.register('edit_repo_fields', '/%(repo_name)s/settings/fields', ['repo_name']); @@ -246,7 +238,6 @@ function registerRCRoutes() { pyroutes.register('repo_edit_toggle_locking', '/%(repo_name)s/settings/toggle_locking', ['repo_name']); pyroutes.register('edit_repo_remote', '/%(repo_name)s/settings/remote', ['repo_name']); pyroutes.register('edit_repo_remote_pull', '/%(repo_name)s/settings/remote/pull', ['repo_name']); - pyroutes.register('edit_repo_remote_push', '/%(repo_name)s/settings/remote/push', ['repo_name']); pyroutes.register('edit_repo_statistics', '/%(repo_name)s/settings/statistics', ['repo_name']); pyroutes.register('edit_repo_statistics_reset', '/%(repo_name)s/settings/statistics/update', ['repo_name']); pyroutes.register('edit_repo_issuetracker', '/%(repo_name)s/settings/issue_trackers', ['repo_name']); @@ -258,7 +249,6 @@ function registerRCRoutes() { pyroutes.register('edit_repo_vcs_svn_pattern_delete', '/%(repo_name)s/settings/vcs/svn_pattern/delete', ['repo_name']); pyroutes.register('repo_reviewers', '/%(repo_name)s/settings/review/rules', ['repo_name']); pyroutes.register('repo_default_reviewers_data', '/%(repo_name)s/settings/review/default-reviewers', ['repo_name']); - pyroutes.register('repo_automation', '/%(repo_name)s/settings/automation', ['repo_name']); pyroutes.register('edit_repo_strip', '/%(repo_name)s/settings/strip', ['repo_name']); pyroutes.register('strip_check', '/%(repo_name)s/settings/strip_check', ['repo_name']); pyroutes.register('strip_execute', '/%(repo_name)s/settings/strip_execute', ['repo_name']); @@ -295,8 +285,6 @@ function registerRCRoutes() { pyroutes.register('my_account_update', '/_admin/my_account/update', []); pyroutes.register('my_account_password', '/_admin/my_account/password', []); pyroutes.register('my_account_password_update', '/_admin/my_account/password/update', []); - pyroutes.register('my_account_auth_tokens', '/_admin/my_account/auth_tokens', []); - pyroutes.register('my_account_auth_tokens_add', '/_admin/my_account/auth_tokens/new', []); pyroutes.register('my_account_auth_tokens_delete', '/_admin/my_account/auth_tokens/delete', []); pyroutes.register('my_account_ssh_keys', '/_admin/my_account/ssh_keys', []); pyroutes.register('my_account_ssh_keys_generate', '/_admin/my_account/ssh_keys/generate', []); @@ -333,4 +321,35 @@ function registerRCRoutes() { pyroutes.register('debug_style_home', '/_admin/debug_style', []); pyroutes.register('debug_style_template', '/_admin/debug_style/t/%(t_path)s', ['t_path']); pyroutes.register('apiv2', '/_admin/api', []); + pyroutes.register('admin_settings_license', '/_admin/settings/license', []); + pyroutes.register('admin_settings_license_unlock', '/_admin/settings/license_unlock', []); + pyroutes.register('login', '/_admin/login', []); + pyroutes.register('register', '/_admin/register', []); + pyroutes.register('repo_reviewers_review_rule_new', '/%(repo_name)s/settings/review/rules/new', ['repo_name']); + pyroutes.register('repo_reviewers_review_rule_edit', '/%(repo_name)s/settings/review/rules/%(rule_id)s', ['repo_name', 'rule_id']); + pyroutes.register('repo_reviewers_review_rule_delete', '/%(repo_name)s/settings/review/rules/%(rule_id)s/delete', ['repo_name', 'rule_id']); + pyroutes.register('plugin_admin_chat', '/_admin/plugin_admin_chat/%(action)s', ['action']); + pyroutes.register('edit_user_auth_tokens', '/_admin/users/%(user_id)s/edit/auth_tokens', ['user_id']); + pyroutes.register('edit_user_auth_tokens_add', '/_admin/users/%(user_id)s/edit/auth_tokens/new', ['user_id']); + pyroutes.register('admin_settings_scheduler_show_tasks', '/_admin/settings/scheduler/_tasks', []); + pyroutes.register('admin_settings_scheduler_show_all', '/_admin/settings/scheduler', []); + pyroutes.register('admin_settings_scheduler_new', '/_admin/settings/scheduler/new', []); + pyroutes.register('admin_settings_scheduler_create', '/_admin/settings/scheduler/create', []); + pyroutes.register('admin_settings_scheduler_edit', '/_admin/settings/scheduler/%(schedule_id)s', ['schedule_id']); + pyroutes.register('admin_settings_scheduler_update', '/_admin/settings/scheduler/%(schedule_id)s/update', ['schedule_id']); + pyroutes.register('admin_settings_scheduler_delete', '/_admin/settings/scheduler/%(schedule_id)s/delete', ['schedule_id']); + pyroutes.register('admin_settings_scheduler_execute', '/_admin/settings/scheduler/%(schedule_id)s/execute', ['schedule_id']); + pyroutes.register('admin_settings_automation', '/_admin/settings/automation', []); + pyroutes.register('admin_settings_automation_update', '/_admin/settings/automation/%(entry_id)s/update', ['entry_id']); + pyroutes.register('admin_permissions_branch', '/_admin/permissions/branch', []); + pyroutes.register('admin_permissions_branch_update', '/_admin/permissions/branch/update', []); + pyroutes.register('my_account_auth_tokens', '/_admin/my_account/auth_tokens', []); + pyroutes.register('my_account_auth_tokens_add', '/_admin/my_account/auth_tokens/new', []); + pyroutes.register('my_account_external_identity', '/_admin/my_account/external-identity', []); + pyroutes.register('my_account_external_identity_delete', '/_admin/my_account/external-identity/delete', []); + pyroutes.register('repo_automation', '/%(repo_name)s/settings/automation', ['repo_name']); + pyroutes.register('repo_automation_update', '/%(repo_name)s/settings/automation/%(entry_id)s/update', ['repo_name', 'entry_id']); + pyroutes.register('edit_repo_remote_push', '/%(repo_name)s/settings/remote/push', ['repo_name']); + pyroutes.register('edit_repo_perms_branch', '/%(repo_name)s/settings/branch_permissions', ['repo_name']); + pyroutes.register('edit_repo_perms_branch_delete', '/%(repo_name)s/settings/branch_permissions/%(rule_id)s/delete', ['repo_name', 'rule_id']); }