From f190f4c6c0393b1157232ab9a4b19be2a1e8a039 Mon Sep 17 00:00:00 2001 From: Molly Struve Date: Thu, 7 May 2020 12:45:30 -0500 Subject: [PATCH] [deploy] Track Client IPs to Help Block Bad Actors (#7730) --- config/initializers/rack/attack.rb | 6 ++++++ spec/initializers/rack/attack_spec.rb | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/config/initializers/rack/attack.rb b/config/initializers/rack/attack.rb index e3769efc7..71bd91124 100644 --- a/config/initializers/rack/attack.rb +++ b/config/initializers/rack/attack.rb @@ -28,4 +28,10 @@ class Rack::Attack request.env["HTTP_FASTLY_CLIENT_IP"].to_s end end + + track("request_tracking") do |request| + if request.env["HTTP_FASTLY_CLIENT_IP"].present? + Honeycomb.add_field("fastly_client_ip", request.env["HTTP_FASTLY_CLIENT_IP"]) + end + end end diff --git a/spec/initializers/rack/attack_spec.rb b/spec/initializers/rack/attack_spec.rb index 3d4c7b3f5..c781255df 100644 --- a/spec/initializers/rack/attack_spec.rb +++ b/spec/initializers/rack/attack_spec.rb @@ -96,4 +96,13 @@ describe Rack::Attack, type: :request, throttle: true do end end end + + describe "request_tracking" do + it "adds fastly client IP to Honeycomb span" do + allow(Honeycomb).to receive(:add_field) + get api_articles_path, headers: { "HTTP_FASTLY_CLIENT_IP" => "5.6.7.8" } + + expect(Honeycomb).to have_received(:add_field).with("fastly_client_ip", "5.6.7.8") + end + end end