diff options
author | Grzegorz Bizon <grzegorz@gitlab.com> | 2019-02-25 08:00:52 +0000 |
---|---|---|
committer | GitLab Release Tools Bot <robert+release-tools@gitlab.com> | 2019-03-11 13:04:13 +0000 |
commit | fbe2f04a91a50b256f94fd94ea8f2a9d460afb00 (patch) | |
tree | d6da8f3e984fb57b6c21700d0ec9799bb8e387e2 | |
parent | aec68fbd0c1337c1c1fcac4a9c86380534d2622a (diff) | |
download | gitlab-ce-fbe2f04a91a50b256f94fd94ea8f2a9d460afb00.tar.gz |
Merge branch 'sh-fix-issue-58103' into 'master'
Properly handle multiple X-Forwarded-For addresses in runner IP
Closes #58103
See merge request gitlab-org/gitlab-ce!25511
(cherry picked from commit dbf0a92292dd054843d28ec27d52222418400ca5)
d03b7bb1 Properly handle multiple X-Forwarded-For addresses in runner IP
-rw-r--r-- | changelogs/unreleased/sh-fix-issue-58103.yml | 5 | ||||
-rw-r--r-- | lib/api/helpers/runner.rb | 2 | ||||
-rw-r--r-- | spec/requests/api/runner_spec.rb | 9 |
3 files changed, 15 insertions, 1 deletions
diff --git a/changelogs/unreleased/sh-fix-issue-58103.yml b/changelogs/unreleased/sh-fix-issue-58103.yml new file mode 100644 index 00000000000..1599af23fed --- /dev/null +++ b/changelogs/unreleased/sh-fix-issue-58103.yml @@ -0,0 +1,5 @@ +--- +title: Properly handle multiple X-Forwarded-For addresses in runner IP +merge_request: 25511 +author: +type: fixed diff --git a/lib/api/helpers/runner.rb b/lib/api/helpers/runner.rb index 16df8e830e1..ff73a49d5e8 100644 --- a/lib/api/helpers/runner.rb +++ b/lib/api/helpers/runner.rb @@ -26,7 +26,7 @@ module API end def get_runner_ip - { ip_address: request.env["HTTP_X_FORWARDED_FOR"] || request.ip } + { ip_address: env["action_dispatch.remote_ip"].to_s || request.ip } end def current_runner diff --git a/spec/requests/api/runner_spec.rb b/spec/requests/api/runner_spec.rb index d7ddd97e8c8..91981f7c56a 100644 --- a/spec/requests/api/runner_spec.rb +++ b/spec/requests/api/runner_spec.rb @@ -526,6 +526,15 @@ describe API::Runner, :clean_gitlab_redis_shared_state do expect(runner.reload.ip_address).to eq('123.222.123.222') end + it "handles multiple X-Forwarded-For addresses" do + post api('/jobs/request'), + params: { token: runner.token }, + headers: { 'User-Agent' => user_agent, 'X-Forwarded-For' => '123.222.123.222, 127.0.0.1' } + + expect(response).to have_gitlab_http_status 201 + expect(runner.reload.ip_address).to eq('123.222.123.222') + end + context 'when concurrently updating a job' do before do expect_any_instance_of(Ci::Build).to receive(:run!) |