Allow sidekiq admin requests, regardless of root

上级 a2b26577
......@@ -71,9 +71,13 @@ module Gitlab
@route_hash ||= Rails.application.routes.recognize_path(request.url, { method: request.request_method }) rescue {}
end
def relative_url
File.join('', Gitlab.config.gitlab.relative_url_root).chomp('/')
end
# Overridden in EE module
def whitelisted_routes
grack_route || ReadOnly.internal_routes.any? { |path| request.path.include?(path) } || lfs_route || sidekiq_route
grack_route || ReadOnly.internal_routes.any? { |path| request.path.include?(path) } || lfs_route || sidekiq_route?
end
def grack_route
......@@ -95,8 +99,8 @@ module Gitlab
WHITELISTED_GIT_LFS_ROUTES[route_hash[:controller]]&.include?(route_hash[:action])
end
def sidekiq_route
request.path.start_with?('/admin/sidekiq')
def sidekiq_route?
request.path.start_with?("#{relative_url}/admin/sidekiq")
end
end
end
......
......@@ -101,16 +101,36 @@ describe Gitlab::Middleware::ReadOnly do
expect(subject).not_to disallow_request
end
it 'expects requests to sidekiq admin to be allowed' do
response = request.post('/admin/sidekiq')
context 'sidekiq admin requests' do
where(:mounted_at) do
[
'',
'/',
'/gitlab',
'/gitlab/',
'/gitlab/gitlab',
'/gitlab/gitlab/'
]
end
expect(response).not_to be_redirect
expect(subject).not_to disallow_request
with_them do
before do
stub_config_setting(relative_url_root: mounted_at)
end
response = request.get('/admin/sidekiq')
it 'allows requests' do
path = File.join(mounted_at, 'admin/sidekiq')
response = request.post(path)
expect(response).not_to be_redirect
expect(subject).not_to disallow_request
expect(response).not_to be_redirect
expect(subject).not_to disallow_request
response = request.get(path)
expect(response).not_to be_redirect
expect(subject).not_to disallow_request
end
end
end
where(:description, :path) do
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册