Sha256: 69130c255d6e178cecd4ea9a7f0c3ae185eace848066c9f38f5c600352152fee
Contents?: true
Size: 1.95 KB
Versions: 7
Compression:
Stored size: 1.95 KB
Contents
# Copyright (c) 2020 Contrast Security, Inc. See https://www.contrastsecurity.com/enduser-terms-0317a for more details. # frozen_string_literal: true cs__scoped_require 'contrast/agent/disable_reaction' cs__scoped_require 'contrast/components/interface' module Contrast module Agent # Because communication between the Agent/Service and TeamServer can only # be initiated by outbound connections from the Agent/Service, we must # provide a mechanism for the TeamServer to direct the Agent to take a # specific action. This action is referred to as a Reaction. This class is # how we handle those Reaction messages. class ReactionProcessor include Contrast::Components::Interface access_component :logging # Process the given Reactions from the application settings based on what # TeamServer has indicated. Each Reaction will result in a log message # and, optionally, an action. # # @param application_settings [Contrast::Api::Settings::ApplicationSettings] # those settings which the Service has relayed from TeamServer. def self.process application_settings return nil unless application_settings&.reactions&.any? application_settings.reactions.each do |reaction| logger.debug(nil, "Received the following reaction: #{ reaction.operation }") # the enums are all uppercase, we need to downcase them before attempting to log level = reaction.log_level.nil? ? :error : reaction.log_level.downcase logger.with_level(nil, reaction.message, level) if reaction.message case reaction.operation when :DISABLE Contrast::Agent::DisableReaction.run reaction, level when :NOOP # rubocop:disable Lint/EmptyWhen # NOOP else logger.warn(nil, "ReactionProcessor received a reaction with an unknown operation: #{ reaction.operation }") end end end end end end
Version data entries
7 entries across 7 versions & 1 rubygems