rollbar 2.17.0 → 2.18.0
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/gemfiles/rails50.gemfile +0 -1
- data/gemfiles/ruby_1_8_and_1_9_2.gemfile +1 -1
- data/lib/rollbar/configuration.rb +20 -0
- data/lib/rollbar/middleware/js.rb +82 -4
- data/lib/rollbar/notifier.rb +6 -0
- data/lib/rollbar/plugins/active_job.rb +2 -1
- data/lib/rollbar/plugins/delayed_job/plugin.rb +1 -1
- data/lib/rollbar/plugins/rails/railtie_mixin.rb +0 -2
- data/lib/rollbar/version.rb +1 -1
- data/spec/rollbar/configuration_spec.rb +28 -0
- data/spec/rollbar/middleware/js_spec.rb +59 -55
- data/spec/rollbar/plugins/active_job_spec.rb +10 -3
- data/spec/rollbar_spec.rb +59 -0
- data/spec/support/secure_headers_mocks.rb +83 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e357b034a0d0686c4ff7e2df37e4500b964ff1d8
|
4
|
+
data.tar.gz: 8af0947410c8afd1a1b8e7d6691cc57651f0906f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d320a75cf677e32ab3bf635bdff22235b39b44e4dce406b74151a2bbd9e344fb0113a2130061e93c1cd473a1f27964c97ad2b68c8a8b20b69766b9dd951cdb8
|
7
|
+
data.tar.gz: 371056dcb28f6247fafbd6404e1a39f873660060758393119b588cd15e9c8b67f349407422ca31b5ce163dd48a1b356ad665fcbb8d42a31ebcf81b3701150961
|
data/Gemfile
CHANGED
data/gemfiles/rails50.gemfile
CHANGED
@@ -40,7 +40,6 @@ end
|
|
40
40
|
|
41
41
|
# We need last sinatra that uses rack 2.x
|
42
42
|
gem 'sinatra', :git => 'https://github.com/sinatra/sinatra'
|
43
|
-
|
44
43
|
gem 'codeclimate-test-reporter', :group => :test, :require => nil
|
45
44
|
gem 'database_cleaner', '~> 1.x'
|
46
45
|
gem 'delayed_job', :require => false
|
@@ -128,6 +128,10 @@ module Rollbar
|
|
128
128
|
@proxy = nil
|
129
129
|
@collect_user_ip = true
|
130
130
|
@anonymize_user_ip = false
|
131
|
+
@hooks = {
|
132
|
+
:on_error_response => nil, # params: response
|
133
|
+
:on_report_internal_error => nil, #params: exception
|
134
|
+
}
|
131
135
|
end
|
132
136
|
|
133
137
|
def initialize_copy(orig)
|
@@ -259,5 +263,21 @@ module Rollbar
|
|
259
263
|
def logger
|
260
264
|
@logger ||= default_logger.call
|
261
265
|
end
|
266
|
+
|
267
|
+
def hook(symbol, &block)
|
268
|
+
if @hooks.has_key?(symbol)
|
269
|
+
if block_given?
|
270
|
+
@hooks[symbol] = block
|
271
|
+
else
|
272
|
+
@hooks[symbol]
|
273
|
+
end
|
274
|
+
else
|
275
|
+
raise StandardError.new "Hook :" + symbol.to_s + " is not supported by Rollbar SDK."
|
276
|
+
end
|
277
|
+
end
|
278
|
+
|
279
|
+
def execute_hook(symbol, *args)
|
280
|
+
hook(symbol).call(*args) if hook(symbol).is_a?(Proc)
|
281
|
+
end
|
262
282
|
end
|
263
283
|
end
|
@@ -36,6 +36,8 @@ module Rollbar
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
+
private
|
40
|
+
|
39
41
|
def enabled?
|
40
42
|
!!config[:enabled]
|
41
43
|
end
|
@@ -155,10 +157,86 @@ module Rollbar
|
|
155
157
|
end
|
156
158
|
|
157
159
|
def append_nonce?
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
160
|
+
secure_headers.append_nonce?
|
161
|
+
end
|
162
|
+
|
163
|
+
def secure_headers
|
164
|
+
return SecureHeadersFalse.new unless defined?(::SecureHeaders::Configuration)
|
165
|
+
|
166
|
+
config = ::SecureHeaders::Configuration
|
167
|
+
|
168
|
+
secure_headers_cls = nil
|
169
|
+
|
170
|
+
if !::SecureHeaders::respond_to?(:content_security_policy_script_nonce)
|
171
|
+
secure_headers_cls = SecureHeadersFalse
|
172
|
+
elsif config.respond_to?(:get)
|
173
|
+
secure_headers_cls = SecureHeaders3To5
|
174
|
+
elsif config.dup.respond_to?(:csp)
|
175
|
+
secure_headers_cls = SecureHeaders6
|
176
|
+
else
|
177
|
+
secure_headers_cls = SecureHeadersFalse
|
178
|
+
end
|
179
|
+
|
180
|
+
secure_headers_cls.new
|
181
|
+
end
|
182
|
+
|
183
|
+
class SecureHeadersResolver
|
184
|
+
def append_nonce?
|
185
|
+
csp_needs_nonce?(find_csp)
|
186
|
+
end
|
187
|
+
|
188
|
+
private
|
189
|
+
|
190
|
+
def find_csp
|
191
|
+
raise NotImplementedError
|
192
|
+
end
|
193
|
+
|
194
|
+
def csp_needs_nonce?(csp)
|
195
|
+
!opt_out?(csp) && !unsafe_inline?(csp)
|
196
|
+
end
|
197
|
+
|
198
|
+
def opt_out?(csp)
|
199
|
+
raise NotImplementedError
|
200
|
+
end
|
201
|
+
|
202
|
+
def unsafe_inline?(csp)
|
203
|
+
csp[:script_src].to_a.include?("'unsafe-inline'")
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
class SecureHeadersFalse < SecureHeadersResolver
|
208
|
+
def append_nonce?
|
209
|
+
false
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
class SecureHeaders3To5 < SecureHeadersResolver
|
214
|
+
private
|
215
|
+
|
216
|
+
def find_csp
|
217
|
+
::SecureHeaders::Configuration.get.csp
|
218
|
+
end
|
219
|
+
|
220
|
+
def opt_out?(csp)
|
221
|
+
if csp.respond_to?(:opt_out?) && csp.opt_out?
|
222
|
+
csp.opt_out?
|
223
|
+
# secure_headers csp 3.0.x-3.4.x doesn't respond to 'opt_out?'
|
224
|
+
elsif defined?(::SecureHeaders::OPT_OUT) && ::SecureHeaders::OPT_OUT.is_a?(Symbol)
|
225
|
+
csp == ::SecureHeaders::OPT_OUT
|
226
|
+
end
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
class SecureHeaders6 < SecureHeadersResolver
|
231
|
+
private
|
232
|
+
|
233
|
+
def find_csp
|
234
|
+
::SecureHeaders::Configuration.dup.csp
|
235
|
+
end
|
236
|
+
|
237
|
+
def opt_out?(csp)
|
238
|
+
csp.opt_out?
|
239
|
+
end
|
162
240
|
end
|
163
241
|
end
|
164
242
|
end
|
data/lib/rollbar/notifier.rb
CHANGED
@@ -407,11 +407,14 @@ module Rollbar
|
|
407
407
|
# If that fails, we'll fall back to a more static failsafe response.
|
408
408
|
def report_internal_error(exception)
|
409
409
|
log_error '[Rollbar] Reporting internal error encountered while sending data to Rollbar.'
|
410
|
+
|
411
|
+
configuration.execute_hook(:on_report_internal_error, exception)
|
410
412
|
|
411
413
|
begin
|
412
414
|
item = build_item('error', nil, exception, { :internal => true }, nil)
|
413
415
|
rescue => e
|
414
416
|
send_failsafe('build_item in exception_data', e)
|
417
|
+
log_error "[Rollbar] Exception: #{exception}"
|
415
418
|
return
|
416
419
|
end
|
417
420
|
|
@@ -419,6 +422,7 @@ module Rollbar
|
|
419
422
|
process_item(item)
|
420
423
|
rescue => e
|
421
424
|
send_failsafe('error in process_item', e)
|
425
|
+
log_error "[Rollbar] Item: #{item}"
|
422
426
|
return
|
423
427
|
end
|
424
428
|
|
@@ -426,6 +430,7 @@ module Rollbar
|
|
426
430
|
log_instance_link(item['data'])
|
427
431
|
rescue => e
|
428
432
|
send_failsafe('error logging instance link', e)
|
433
|
+
log_error "[Rollbar] Item: #{item}"
|
429
434
|
return
|
430
435
|
end
|
431
436
|
end
|
@@ -575,6 +580,7 @@ module Rollbar
|
|
575
580
|
else
|
576
581
|
log_warning "[Rollbar] Got unexpected status code from Rollbar api: #{response.code}"
|
577
582
|
log_info "[Rollbar] Response: #{response.body}"
|
583
|
+
configuration.execute_hook(:on_error_response, response)
|
578
584
|
end
|
579
585
|
end
|
580
586
|
|
@@ -12,7 +12,7 @@ module Rollbar
|
|
12
12
|
lifecycle.around(:invoke_job, &Delayed::invoke_job_callback)
|
13
13
|
lifecycle.after(:failure) do |_, job, _, _|
|
14
14
|
data = Rollbar::Delayed.build_job_data(job)
|
15
|
-
::Rollbar.scope(:request => data).error(job.last_error, :use_exception_level_filters => true) if job.last_error
|
15
|
+
::Rollbar.scope(:request => data).error("Job has failed and won't be retried anymore: " + job.last_error, :use_exception_level_filters => true) if job.last_error
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
data/lib/rollbar/version.rb
CHANGED
@@ -43,4 +43,32 @@ describe Rollbar::Configuration do
|
|
43
43
|
expect(new_config.environment).to be_eql('bar')
|
44
44
|
end
|
45
45
|
end
|
46
|
+
|
47
|
+
describe '#hook' do
|
48
|
+
it "assigns and returns the appropriate hook" do
|
49
|
+
subject.hook :on_error_response do
|
50
|
+
puts "foo hook"
|
51
|
+
end
|
52
|
+
|
53
|
+
expect(subject.hook(:on_error_response).is_a?(Proc)).to be_eql(true)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "raises a StandardError if requested hook is not supported" do
|
57
|
+
expect{ subject.hook(:foo) }.to raise_error(StandardError)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '#execute_hook' do
|
62
|
+
it "executes the approriate hook" do
|
63
|
+
bar = "test value"
|
64
|
+
|
65
|
+
subject.hook :on_error_response do
|
66
|
+
bar = "changed value"
|
67
|
+
end
|
68
|
+
|
69
|
+
subject.execute_hook :on_error_response
|
70
|
+
|
71
|
+
expect(bar).to be_eql("changed value")
|
72
|
+
end
|
73
|
+
end
|
46
74
|
end
|
@@ -1,6 +1,50 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'rollbar/middleware/js'
|
3
3
|
|
4
|
+
|
5
|
+
shared_examples 'secure_headers' do
|
6
|
+
it 'renders the snippet and config in the response with nonce in script tag when SecureHeaders installed' do
|
7
|
+
SecureHeadersMocks::CSP.config = {
|
8
|
+
:opt_out? => false
|
9
|
+
}
|
10
|
+
|
11
|
+
_, _, response = subject.call(env)
|
12
|
+
|
13
|
+
new_body = response.body.join
|
14
|
+
|
15
|
+
expect(new_body).to include('<script type="text/javascript" nonce="lorem-ipsum-nonce">')
|
16
|
+
expect(new_body).to include("var _rollbarConfig = #{config[:options].to_json};")
|
17
|
+
expect(new_body).to include(snippet)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'renders the snippet in the response without nonce if SecureHeaders script_src includes \'unsafe-inline\'' do
|
21
|
+
SecureHeadersMocks::CSP.config = {
|
22
|
+
:opt_out? => false,
|
23
|
+
:script_src => %w('unsafe-inline')
|
24
|
+
}
|
25
|
+
|
26
|
+
_, _, response = subject.call(env)
|
27
|
+
new_body = response.body.join
|
28
|
+
|
29
|
+
expect(new_body).to include('<script type="text/javascript">')
|
30
|
+
expect(new_body).to include("var _rollbarConfig = #{config[:options].to_json};")
|
31
|
+
expect(new_body).to include(snippet)
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'renders the snippet in the response without nonce if SecureHeaders CSP is OptOut' do
|
35
|
+
SecureHeadersMocks::CSP.config = {
|
36
|
+
:opt_out? => true
|
37
|
+
}
|
38
|
+
|
39
|
+
_, _, response = subject.call(env)
|
40
|
+
new_body = response.body.join
|
41
|
+
|
42
|
+
expect(new_body).to include('<script type="text/javascript">')
|
43
|
+
expect(new_body).to include("var _rollbarConfig = #{config[:options].to_json};")
|
44
|
+
expect(new_body).to include(snippet)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
4
48
|
describe Rollbar::Middleware::Js do
|
5
49
|
subject { described_class.new(app, config) }
|
6
50
|
|
@@ -174,61 +218,26 @@ END
|
|
174
218
|
end
|
175
219
|
|
176
220
|
before do
|
177
|
-
|
178
|
-
|
179
|
-
SecureHeaders.const_set('Configuration', Module.new {
|
180
|
-
def self.default
|
181
|
-
end
|
182
|
-
})
|
183
|
-
allow(SecureHeaders).to receive(:content_security_policy_script_nonce) { 'lorem-ipsum-nonce' }
|
184
|
-
end
|
185
|
-
|
186
|
-
after do
|
187
|
-
Object.send(:remove_const, 'SecureHeaders')
|
221
|
+
stub_const('::SecureHeaders', secure_headers_mock)
|
222
|
+
SecureHeadersMocks::CSP.config = {}
|
188
223
|
end
|
189
224
|
|
190
|
-
|
191
|
-
|
192
|
-
allow(SecureHeaders::Configuration).to receive(:default).and_return(secure_headers_config)
|
193
|
-
res_status, res_headers, response = subject.call(env)
|
225
|
+
context 'with secure headers 3.0.x-3.4.x' do
|
226
|
+
let(:secure_headers_mock) { SecureHeadersMocks::SecureHeaders30 }
|
194
227
|
|
195
|
-
|
196
|
-
|
197
|
-
expect(new_body).to include('<script type="text/javascript" nonce="lorem-ipsum-nonce">')
|
198
|
-
expect(new_body).to include("var _rollbarConfig = #{config[:options].to_json};")
|
199
|
-
expect(new_body).to include(snippet)
|
228
|
+
include_examples 'secure_headers'
|
200
229
|
end
|
201
230
|
|
202
|
-
|
203
|
-
|
204
|
-
:current_csp => {
|
205
|
-
:script_src => %w('unsafe-inline')
|
206
|
-
},
|
207
|
-
:csp => double(:opt_out? => false))
|
208
|
-
allow(SecureHeaders::Configuration).to receive(:default).and_return(secure_headers_config)
|
209
|
-
|
210
|
-
res_status, res_headers, response = subject.call(env)
|
211
|
-
new_body = response.body.join
|
231
|
+
context 'with secure headers 3.5' do
|
232
|
+
let(:secure_headers_mock) { SecureHeadersMocks::SecureHeaders35 }
|
212
233
|
|
213
|
-
|
214
|
-
expect(new_body).to include("var _rollbarConfig = #{config[:options].to_json};")
|
215
|
-
expect(new_body).to include(snippet)
|
216
|
-
|
217
|
-
SecureHeaders.send(:remove_const, 'Configuration')
|
234
|
+
include_examples 'secure_headers'
|
218
235
|
end
|
219
236
|
|
220
|
-
|
221
|
-
|
222
|
-
allow(SecureHeaders::Configuration).to receive(:default).and_return(secure_headers_config)
|
223
|
-
|
224
|
-
res_status, res_headers, response = subject.call(env)
|
225
|
-
new_body = response.body.join
|
237
|
+
context 'with secure headers 6.0' do
|
238
|
+
let(:secure_headers_mock) { SecureHeadersMocks::SecureHeaders60 }
|
226
239
|
|
227
|
-
|
228
|
-
expect(new_body).to include("var _rollbarConfig = #{config[:options].to_json};")
|
229
|
-
expect(new_body).to include(snippet)
|
230
|
-
|
231
|
-
SecureHeaders.send(:remove_const, 'Configuration')
|
240
|
+
include_examples 'secure_headers'
|
232
241
|
end
|
233
242
|
end
|
234
243
|
|
@@ -240,16 +249,11 @@ END
|
|
240
249
|
end
|
241
250
|
|
242
251
|
before do
|
243
|
-
|
244
|
-
SecureHeaders.const_set('VERSION', '2.4.0')
|
245
|
-
end
|
246
|
-
|
247
|
-
after do
|
248
|
-
Object.send(:remove_const, 'SecureHeaders')
|
252
|
+
stub_const('::SecureHeaders', ::SecureHeadersMocks::SecureHeaders20)
|
249
253
|
end
|
250
254
|
|
251
255
|
it 'renders the snippet and config in the response without nonce in script tag when too old SecureHeaders installed' do
|
252
|
-
|
256
|
+
_, _, response = subject.call(env)
|
253
257
|
new_body = response.body.join
|
254
258
|
|
255
259
|
expect(new_body).to include('<script type="text/javascript">')
|
@@ -354,10 +358,10 @@ END
|
|
354
358
|
it 'adds the person data to the configuration' do
|
355
359
|
_, _, response = subject.call(env)
|
356
360
|
new_body = response.body.join
|
357
|
-
|
361
|
+
|
358
362
|
rollbar_config = new_body[/var _rollbarConfig = (.*);<\/script>/, 1]
|
359
363
|
rollbar_config = JSON.parse(rollbar_config, { :symbolize_names => true})
|
360
|
-
|
364
|
+
|
361
365
|
expect(rollbar_config).to eql(expected_js_options)
|
362
366
|
end
|
363
367
|
|
@@ -9,6 +9,11 @@ describe Rollbar::ActiveJob do
|
|
9
9
|
include Rollbar::ActiveJob
|
10
10
|
|
11
11
|
attr_reader :job_id
|
12
|
+
attr_accessor :arguments
|
13
|
+
|
14
|
+
def initialize(*arguments)
|
15
|
+
@arguments = arguments
|
16
|
+
end
|
12
17
|
|
13
18
|
def perform(exception, job_id)
|
14
19
|
@job_id = job_id
|
@@ -21,18 +26,20 @@ describe Rollbar::ActiveJob do
|
|
21
26
|
|
22
27
|
let(:exception) { StandardError.new('oh no') }
|
23
28
|
let(:job_id) { "123" }
|
29
|
+
let(:argument) { 12 }
|
24
30
|
|
25
31
|
it "reports the error to Rollbar" do
|
26
32
|
expected_params = {
|
27
33
|
:job => "TestJob",
|
28
34
|
:job_id => job_id,
|
29
|
-
:use_exception_level_filters => true
|
35
|
+
:use_exception_level_filters => true,
|
36
|
+
:arguments => [argument]
|
30
37
|
}
|
31
38
|
expect(Rollbar).to receive(:error).with(exception, expected_params)
|
32
|
-
TestJob.new.perform(exception, job_id) rescue nil
|
39
|
+
TestJob.new(argument).perform(exception, job_id) rescue nil
|
33
40
|
end
|
34
41
|
|
35
42
|
it "reraises the error so the job backend can handle the failure and retry" do
|
36
|
-
expect { TestJob.new.perform(exception, job_id) }.to raise_error exception
|
43
|
+
expect { TestJob.new(argument).perform(exception, job_id) }.to raise_error exception
|
37
44
|
end
|
38
45
|
end
|
data/spec/rollbar_spec.rb
CHANGED
@@ -159,6 +159,65 @@ describe Rollbar do
|
|
159
159
|
notifier.log('error', exception, extra_data, 'exception description')
|
160
160
|
end
|
161
161
|
|
162
|
+
context 'with :on_error_response hook configured' do
|
163
|
+
let!(:notifier) { Rollbar::Notifier.new }
|
164
|
+
let(:configuration) do
|
165
|
+
config = Rollbar::Configuration.new
|
166
|
+
config.access_token = test_access_token
|
167
|
+
config.enabled = true
|
168
|
+
|
169
|
+
config.hook :on_error_response do |response|
|
170
|
+
return ":on_error_response executed"
|
171
|
+
end
|
172
|
+
|
173
|
+
config
|
174
|
+
end
|
175
|
+
let(:message) { 'foo' }
|
176
|
+
let(:level) { 'foo' }
|
177
|
+
|
178
|
+
before do
|
179
|
+
notifier.configuration = configuration
|
180
|
+
allow_any_instance_of(Net::HTTP).to receive(:request).and_return(OpenStruct.new(:code => 500, :body => "Error"))
|
181
|
+
@uri = URI.parse(Rollbar::Configuration::DEFAULT_ENDPOINT)
|
182
|
+
end
|
183
|
+
|
184
|
+
it "calls the :on_error_response hook if response status is not 200" do
|
185
|
+
expect(Net::HTTP).to receive(:new).with(@uri.host, @uri.port, nil, nil, nil, nil).and_call_original
|
186
|
+
expect(notifier.configuration.hook(:on_error_response)).to receive(:call)
|
187
|
+
|
188
|
+
notifier.log(level, message)
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
context 'with :on_report_internal_error hook configured' do
|
193
|
+
let!(:notifier) { Rollbar::Notifier.new }
|
194
|
+
let(:configuration) do
|
195
|
+
config = Rollbar::Configuration.new
|
196
|
+
config.access_token = test_access_token
|
197
|
+
config.enabled = true
|
198
|
+
|
199
|
+
config.hook :on_report_internal_error do |response|
|
200
|
+
return ":on_report_internal_error executed"
|
201
|
+
end
|
202
|
+
|
203
|
+
config
|
204
|
+
end
|
205
|
+
let(:message) { 'foo' }
|
206
|
+
let(:level) { 'foo' }
|
207
|
+
|
208
|
+
before do
|
209
|
+
notifier.configuration = configuration
|
210
|
+
end
|
211
|
+
|
212
|
+
it "calls the :on_report_internal_error hook if" do
|
213
|
+
expect(notifier.configuration.hook(:on_report_internal_error)).to receive(:call)
|
214
|
+
expect(notifier).to receive(:report) do
|
215
|
+
raise StandardError.new
|
216
|
+
end
|
217
|
+
notifier.log(level, message)
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
162
221
|
context 'an item with a context' do
|
163
222
|
let(:context) { { :controller => 'ExampleController' } }
|
164
223
|
|
@@ -0,0 +1,83 @@
|
|
1
|
+
module SecureHeadersMocks
|
2
|
+
NONCE = 'lorem-ipsum-nonce'
|
3
|
+
|
4
|
+
module CSP
|
5
|
+
class << self
|
6
|
+
attr_accessor :config
|
7
|
+
|
8
|
+
def opt_out?
|
9
|
+
config[:opt_out?]
|
10
|
+
end
|
11
|
+
|
12
|
+
def [](key)
|
13
|
+
config[key]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
module SecureHeaders20
|
19
|
+
end
|
20
|
+
|
21
|
+
module SecureHeaders30
|
22
|
+
OPT_OUT = :opt_out
|
23
|
+
class << self
|
24
|
+
def content_security_policy_script_nonce(req)
|
25
|
+
NONCE
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
module Configuration
|
30
|
+
module CSPProxy
|
31
|
+
def self.csp
|
32
|
+
return OPT_OUT if CSP.opt_out?
|
33
|
+
|
34
|
+
CSP.config
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.get
|
39
|
+
CSPProxy
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
module SecureHeaders35
|
45
|
+
class << self
|
46
|
+
def content_security_policy_script_nonce(req)
|
47
|
+
NONCE
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
module Configuration
|
52
|
+
module CSPProxy
|
53
|
+
def self.csp
|
54
|
+
CSP
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.get
|
59
|
+
CSPProxy
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
module SecureHeaders60
|
65
|
+
class << self
|
66
|
+
def content_security_policy_script_nonce(req)
|
67
|
+
NONCE
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
module Configuration
|
72
|
+
module CSPProxy
|
73
|
+
def self.csp
|
74
|
+
CSP
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def self.dup
|
79
|
+
CSPProxy
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
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.
|
4
|
+
version: 2.18.0
|
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-09-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -264,6 +264,7 @@ files:
|
|
264
264
|
- spec/support/matchers.rb
|
265
265
|
- spec/support/notifier_helpers.rb
|
266
266
|
- spec/support/rollbar_api.rb
|
267
|
+
- spec/support/secure_headers_mocks.rb
|
267
268
|
- spec/support/shared_contexts.rb
|
268
269
|
homepage: https://rollbar.com
|
269
270
|
licenses:
|
@@ -416,4 +417,5 @@ test_files:
|
|
416
417
|
- spec/support/matchers.rb
|
417
418
|
- spec/support/notifier_helpers.rb
|
418
419
|
- spec/support/rollbar_api.rb
|
420
|
+
- spec/support/secure_headers_mocks.rb
|
419
421
|
- spec/support/shared_contexts.rb
|