Class: Datadog::AppSec::Component
- Inherits:
-
Object
- Object
- Datadog::AppSec::Component
- Defined in:
- lib/datadog/appsec/component.rb
Overview
Core-pluggable component for AppSec
Instance Attribute Summary collapse
-
#processor ⇒ Object
readonly
Returns the value of attribute processor.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(processor:) ⇒ Component
constructor
A new instance of Component.
- #reconfigure(ruleset:, telemetry:) ⇒ Object
- #reconfigure_lock(&block) ⇒ Object
- #shutdown! ⇒ Object
Constructor Details
#initialize(processor:) ⇒ Component
Returns a new instance of Component.
77 78 79 80 |
# File 'lib/datadog/appsec/component.rb', line 77 def initialize(processor:) @processor = processor @mutex = Mutex.new end |
Instance Attribute Details
#processor ⇒ Object (readonly)
Returns the value of attribute processor.
75 76 77 |
# File 'lib/datadog/appsec/component.rb', line 75 def processor @processor end |
Class Method Details
.build_appsec_component(settings, telemetry:) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/datadog/appsec/component.rb', line 12 def build_appsec_component(settings, telemetry:) return if !settings.respond_to?(:appsec) || !settings.appsec.enabled return if incompatible_ffi_version? processor = create_processor(settings, telemetry) # We want to always instrument user events when AppSec is enabled. # There could be cases in which users use the DD_APPSEC_ENABLED Env variable to # enable AppSec, in that case, Devise is already instrumented. # In the case that users do not use DD_APPSEC_ENABLED, we have to instrument it, # hence the lines above. devise_integration = Datadog::AppSec::Contrib::Devise::Integration.new settings.appsec.instrument(:devise) unless devise_integration.patcher.patched? new(processor: processor) end |
Instance Method Details
#reconfigure(ruleset:, telemetry:) ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/datadog/appsec/component.rb', line 82 def reconfigure(ruleset:, telemetry:) @mutex.synchronize do new = Processor.new(ruleset: ruleset, telemetry: telemetry) if new && new.ready? old = @processor @processor = new old.finalize if old end end end |
#reconfigure_lock(&block) ⇒ Object
94 95 96 |
# File 'lib/datadog/appsec/component.rb', line 94 def reconfigure_lock(&block) @mutex.synchronize(&block) end |
#shutdown! ⇒ Object
98 99 100 101 102 103 104 105 |
# File 'lib/datadog/appsec/component.rb', line 98 def shutdown! @mutex.synchronize do if processor && processor.ready? processor.finalize @processor = nil end end end |