Commit cb67423d authored by Steve Azzopardi's avatar Steve Azzopardi

Get remote address for runner

Check if `X-Forwarded-For` is set before getting the IP of the request,
with this the real IP address of the runner is shown if it's behind a
proxy.

closes https://gitlab.com/gitlab-org/gitlab-ce/issues/53676
parent 97aa25ba
---
title: Get remote IP address of runner
merge_request: 24624
author:
type: changed
......@@ -26,7 +26,7 @@ module API
end
def get_runner_ip
{ ip_address: request.ip }
{ ip_address: request.env["HTTP_X_FORWARDED_FOR"] || request.ip }
end
def current_runner
......
......@@ -210,8 +210,8 @@ describe API::Runner, :clean_gitlab_redis_shared_state do
it "sets the runner's ip_address" do
post api('/runners'),
params: { token: registration_token },
headers: { 'REMOTE_ADDR' => '123.111.123.111' }
params: { token: registration_token },
headers: { 'X-Forwarded-For' => '123.111.123.111' }
expect(response).to have_gitlab_http_status 201
expect(Ci::Runner.first.ip_address).to eq('123.111.123.111')
......@@ -520,7 +520,7 @@ describe API::Runner, :clean_gitlab_redis_shared_state do
it "sets the runner's ip_address" do
post api('/jobs/request'),
params: { token: runner.token },
headers: { 'User-Agent' => user_agent, 'REMOTE_ADDR' => '123.222.123.222' }
headers: { 'User-Agent' => user_agent, 'X-Forwarded-For' => '123.222.123.222' }
expect(response).to have_gitlab_http_status 201
expect(runner.reload.ip_address).to eq('123.222.123.222')
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment