Skip to content

Commit 24c4de2

Browse files
#758: enable optional disabling of collecting X-Real-Ip and anonymization
1 parent 38a8d96 commit 24c4de2

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

lib/rollbar/request_data_extractor.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,10 @@ def rollbar_headers(env)
109109
ips = env[header].sub(" ", "").split(',')
110110
ips = ips.map { |ip| Rollbar::Util::IPAnonymizer.anonymize_ip(ip) }
111111
{ name => ips.join(', ') }
112+
elsif name == 'X-Real-Ip' && !Rollbar.configuration.collect_user_ip
113+
{}
114+
elsif name == 'X-Real-Ip' && Rollbar.configuration.collect_user_ip && Rollbar.configuration.anonymize_user_ip
115+
{ name => Rollbar::Util::IPAnonymizer.anonymize_ip(env[header]) }
112116
else
113117
{ name => env[header] }
114118
end

spec/rollbar/request_data_extractor_spec.rb

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,12 @@ class ExtractorDummy
147147
expect(result[:headers]['X-Forwarded-For']).to be_eql('2.2.2.2, 3.3.3.3')
148148
end
149149

150+
it 'extracts the correct X-Real-Ip' do
151+
result = subject.extract_request_data_from_rack(env)
152+
153+
expect(result[:headers]['X-Real-Ip']).to be_eql('2.2.2.2')
154+
end
155+
150156
context 'with collect_user_ip configuration option disabled' do
151157
before do
152158
Rollbar.configuration.collect_user_ip = false
@@ -163,6 +169,12 @@ class ExtractorDummy
163169

164170
expect(result[:headers]['X-Forwarded-For']).to be_nil
165171
end
172+
173+
it 'does not extract user\'s IP on X-Real-Ip header' do
174+
result = subject.extract_request_data_from_rack(env)
175+
176+
expect(result[:headers]['X-Real-Ip']).to be_nil
177+
end
166178
end
167179

168180
context 'with anonymize_user_ip configuration option enabled' do
@@ -181,6 +193,12 @@ class ExtractorDummy
181193

182194
expect(result[:headers]['X-Forwarded-For']).to be_eql('2.2.2.0, 3.3.3.0')
183195
end
196+
197+
it 'it anonymizes IP addresses in X-Real-Ip' do
198+
result = subject.extract_request_data_from_rack(env)
199+
200+
expect(result[:headers]['X-Real-Ip']).to be_eql('2.2.2.0')
201+
end
184202
end
185203
end
186204

@@ -199,6 +217,12 @@ class ExtractorDummy
199217

200218
expect(result[:headers]['X-Forwarded-For']).to be_eql('192.168.1.1, 2.2.2.2, 3.3.3.3')
201219
end
220+
221+
it 'extracts the correct X-Real-Ip' do
222+
result = subject.extract_request_data_from_rack(env)
223+
224+
expect(result[:headers]['X-Real-Ip']).to be_eql('2.2.2.2')
225+
end
202226
end
203227
end
204228

0 commit comments

Comments
 (0)