rollbar 2.16.2 → 2.16.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -0
- data/lib/rollbar/notifier.rb +9 -8
- data/lib/rollbar/request_data_extractor.rb +8 -0
- data/lib/rollbar/version.rb +1 -1
- data/spec/rollbar/request_data_extractor_spec.rb +49 -4
- data/spec/rollbar_spec.rb +19 -8
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b5cd5a741817deee8eeed5a026529a556fe4c1a1
|
4
|
+
data.tar.gz: 5aa9b0225c05b77c2d8d97c273293806658a4d6c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ce8a7f469fb9d0526e6f7829c3488442984aff359a8672ad86cfc120f1ef356ad7367ce496128cb77de50160bb4e55acb6f33a95ca280e41608eb34b2d3adc68
|
7
|
+
data.tar.gz: d2038279771ebbf00af8674e3e8c2fc14960adac93364c5b76ce81b2ad9688d59e588a5ea1e470a40e90c9b7533749fb2f5400dfec8754f30b38ae09f40bbc09
|
data/Gemfile
CHANGED
data/lib/rollbar/notifier.rb
CHANGED
@@ -530,14 +530,15 @@ module Rollbar
|
|
530
530
|
end
|
531
531
|
|
532
532
|
def proxy_from_config
|
533
|
-
|
534
|
-
return nil unless
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
533
|
+
proxy_settings = configuration.proxy
|
534
|
+
return nil unless proxy_settings
|
535
|
+
|
536
|
+
proxy = null_proxy
|
537
|
+
proxy.host = URI.parse(proxy_settings[:host]).host
|
538
|
+
proxy.port = proxy_settings[:port]
|
539
|
+
proxy.user = proxy_settings[:user]
|
540
|
+
proxy.password = proxy_settings[:password]
|
541
|
+
proxy
|
541
542
|
end
|
542
543
|
|
543
544
|
def proxy_from_env(uri)
|
@@ -105,6 +105,14 @@ module Rollbar
|
|
105
105
|
{ name => Rollbar::Scrubbers.scrub_value(env[header]) }
|
106
106
|
elsif name == 'X-Forwarded-For' && !Rollbar.configuration.collect_user_ip
|
107
107
|
{}
|
108
|
+
elsif name == 'X-Forwarded-For' && Rollbar.configuration.collect_user_ip && Rollbar.configuration.anonymize_user_ip
|
109
|
+
ips = env[header].sub(" ", "").split(',')
|
110
|
+
ips = ips.map { |ip| Rollbar::Util::IPAnonymizer.anonymize_ip(ip) }
|
111
|
+
{ 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]) }
|
108
116
|
else
|
109
117
|
{ name => env[header] }
|
110
118
|
end
|
data/lib/rollbar/version.rb
CHANGED
@@ -118,11 +118,12 @@ describe Rollbar::RequestDataExtractor do
|
|
118
118
|
end
|
119
119
|
end
|
120
120
|
|
121
|
-
context 'with multiple addresses in
|
121
|
+
context 'with multiple IP addresses in headers and in user ip' do
|
122
122
|
let(:env) do
|
123
123
|
Rack::MockRequest.env_for('/',
|
124
124
|
'HTTP_HOST' => 'localhost:81',
|
125
|
-
'HTTP_X_FORWARDED_FOR' =>
|
125
|
+
'HTTP_X_FORWARDED_FOR' => x_forwarded_for,
|
126
|
+
'HTTP_X_REAL_IP' => x_real_ip,
|
126
127
|
'REMOTE_ADDR' => '3.3.3.3',
|
127
128
|
'CONTENT_TYPE' => 'application/json',
|
128
129
|
'CONTENT_LENGTH' => 20)
|
@@ -131,7 +132,8 @@ describe Rollbar::RequestDataExtractor do
|
|
131
132
|
end
|
132
133
|
|
133
134
|
context 'with public client IP' do
|
134
|
-
let(:
|
135
|
+
let(:x_forwarded_for) { '2.2.2.2, 3.3.3.3' }
|
136
|
+
let(:x_real_ip) { '2.2.2.2' }
|
135
137
|
|
136
138
|
it 'extracts the correct user IP' do
|
137
139
|
result = subject.extract_request_data_from_rack(env)
|
@@ -139,6 +141,18 @@ describe Rollbar::RequestDataExtractor do
|
|
139
141
|
expect(result[:user_ip]).to be_eql('2.2.2.2')
|
140
142
|
end
|
141
143
|
|
144
|
+
it 'extracts the correct X-Forwarded-For' do
|
145
|
+
result = subject.extract_request_data_from_rack(env)
|
146
|
+
|
147
|
+
expect(result[:headers]['X-Forwarded-For']).to be_eql('2.2.2.2, 3.3.3.3')
|
148
|
+
end
|
149
|
+
|
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
|
+
|
142
156
|
context 'with collect_user_ip configuration option disabled' do
|
143
157
|
before do
|
144
158
|
Rollbar.configuration.collect_user_ip = false
|
@@ -155,6 +169,12 @@ describe Rollbar::RequestDataExtractor do
|
|
155
169
|
|
156
170
|
expect(result[:headers]['X-Forwarded-For']).to be_nil
|
157
171
|
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
|
158
178
|
end
|
159
179
|
|
160
180
|
context 'with anonymize_user_ip configuration option enabled' do
|
@@ -167,17 +187,42 @@ describe Rollbar::RequestDataExtractor do
|
|
167
187
|
|
168
188
|
expect(result[:user_ip]).to be_eql('2.2.2.0')
|
169
189
|
end
|
190
|
+
|
191
|
+
it 'it anonymizes IP addresses in X-Forwarded-For' do
|
192
|
+
result = subject.extract_request_data_from_rack(env)
|
193
|
+
|
194
|
+
expect(result[:headers]['X-Forwarded-For']).to be_eql('2.2.2.0, 3.3.3.0')
|
195
|
+
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
|
170
202
|
end
|
171
203
|
end
|
172
204
|
|
173
205
|
context 'with private first client IP' do
|
174
|
-
let(:
|
206
|
+
let(:x_forwarded_for) { '192.168.1.1, 2.2.2.2, 3.3.3.3' }
|
207
|
+
let(:x_real_ip) { '2.2.2.2' }
|
175
208
|
|
176
209
|
it 'extracts the correct user IP' do
|
177
210
|
result = subject.extract_request_data_from_rack(env)
|
178
211
|
|
179
212
|
expect(result[:user_ip]).to be_eql('2.2.2.2')
|
180
213
|
end
|
214
|
+
|
215
|
+
it 'extracts the correct X-Forwarded-For' do
|
216
|
+
result = subject.extract_request_data_from_rack(env)
|
217
|
+
|
218
|
+
expect(result[:headers]['X-Forwarded-For']).to be_eql('192.168.1.1, 2.2.2.2, 3.3.3.3')
|
219
|
+
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
|
181
226
|
end
|
182
227
|
end
|
183
228
|
|
data/spec/rollbar_spec.rb
CHANGED
@@ -1043,18 +1043,20 @@ describe Rollbar do
|
|
1043
1043
|
end
|
1044
1044
|
|
1045
1045
|
context 'via environment variables' do
|
1046
|
+
before do
|
1047
|
+
@uri = URI.parse(Rollbar::Configuration::DEFAULT_ENDPOINT)
|
1048
|
+
end
|
1049
|
+
|
1046
1050
|
it 'honors proxy settings in the environment' do
|
1047
1051
|
ENV['http_proxy'] = 'http://user:pass@example.com:80'
|
1048
1052
|
ENV['https_proxy'] = 'http://user:pass@example.com:80'
|
1049
1053
|
|
1050
|
-
uri
|
1051
|
-
expect(Net::HTTP).to receive(:new).with(uri.host, uri.port, 'example.com', 80, 'user', 'pass').and_call_original
|
1054
|
+
expect(Net::HTTP).to receive(:new).with(@uri.host, @uri.port, 'example.com', 80, 'user', 'pass').and_call_original
|
1052
1055
|
Rollbar.info("proxy this")
|
1053
1056
|
end
|
1054
1057
|
|
1055
1058
|
it 'does not use a proxy if no proxy settings in environemnt' do
|
1056
|
-
uri
|
1057
|
-
expect(Net::HTTP).to receive(:new).with(uri.host, uri.port, nil, nil, nil, nil).and_call_original
|
1059
|
+
expect(Net::HTTP).to receive(:new).with(@uri.host, @uri.port, nil, nil, nil, nil).and_call_original
|
1058
1060
|
Rollbar.info("proxy this")
|
1059
1061
|
end
|
1060
1062
|
end
|
@@ -1069,11 +1071,12 @@ describe Rollbar do
|
|
1069
1071
|
:password => 'bar'
|
1070
1072
|
}
|
1071
1073
|
end
|
1074
|
+
|
1075
|
+
@uri = URI.parse(Rollbar::Configuration::DEFAULT_ENDPOINT)
|
1072
1076
|
end
|
1073
1077
|
|
1074
1078
|
it 'honors proxy settings in the config file' do
|
1075
|
-
uri
|
1076
|
-
expect(Net::HTTP).to receive(:new).with(uri.host, uri.port, 'config.com', 8080, 'foo', 'bar').and_call_original
|
1079
|
+
expect(Net::HTTP).to receive(:new).with(@uri.host, @uri.port, 'config.com', 8080, 'foo', 'bar').and_call_original
|
1077
1080
|
Rollbar.info("proxy this")
|
1078
1081
|
end
|
1079
1082
|
|
@@ -1081,8 +1084,16 @@ describe Rollbar do
|
|
1081
1084
|
ENV['http_proxy'] = 'http://user:pass@example.com:80'
|
1082
1085
|
ENV['https_proxy'] = 'http://user:pass@example.com:80'
|
1083
1086
|
|
1084
|
-
uri
|
1085
|
-
|
1087
|
+
expect(Net::HTTP).to receive(:new).with(@uri.host, @uri.port, 'config.com', 8080, 'foo', 'bar').and_call_original
|
1088
|
+
Rollbar.info("proxy this")
|
1089
|
+
end
|
1090
|
+
|
1091
|
+
it 'allows @-signs in passwords' do
|
1092
|
+
Rollbar.configure do |config|
|
1093
|
+
config.proxy[:password] = "manh@tan"
|
1094
|
+
end
|
1095
|
+
|
1096
|
+
expect(Net::HTTP).to receive(:new).with(@uri.host, @uri.port, 'config.com', 8080, 'foo', 'manh@tan').and_call_original
|
1086
1097
|
Rollbar.info("proxy this")
|
1087
1098
|
end
|
1088
1099
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rollbar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.16.
|
4
|
+
version: 2.16.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rollbar, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -284,7 +284,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
284
284
|
version: '0'
|
285
285
|
requirements: []
|
286
286
|
rubyforge_project:
|
287
|
-
rubygems_version: 2.
|
287
|
+
rubygems_version: 2.5.1
|
288
288
|
signing_key:
|
289
289
|
specification_version: 4
|
290
290
|
summary: Reports exceptions to Rollbar
|