Allow sidekiq admin requests, regardless of root
This commit is contained in:
parent
a2b2657722
commit
c0a5b628c8
2 changed files with 34 additions and 10 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue