Sha256: 0a3888fb58e35e8820481b9160083c154c75ec38d73a99a19ad0095078f03f0f

Contents?: true

Size: 911 Bytes

Versions: 5

Compression:

Stored size: 911 Bytes

Contents

# frozen_string_literal: true

require 'hashie/mash'
require 'chamber/filters/secure_filter'

module  Chamber
module  Filters
class   InsecureFilter < SecureFilter
  BASE64_STRING_PATTERN     = %r{\A[A-Za-z0-9\+\/]{342}==\z}
  LARGE_DATA_STRING_PATTERN = %r{\A([A-Za-z0-9\+\/#]*\={0,2})#([A-Za-z0-9\+\/#]*\={0,2})#([A-Za-z0-9\+\/#]*\={0,2})\z} # rubocop:disable Metrics/LineLength

  protected

  def execute(raw_data = data)
    securable_settings = super
    settings           = Hashie::Mash.new

    securable_settings.each_pair do |key, value|
      value = if value.respond_to? :each_pair
                execute(value)
              elsif value.respond_to? :match
                value unless value.match(BASE64_STRING_PATTERN) ||
                             value.match(LARGE_DATA_STRING_PATTERN)
              end

      settings[key] = value unless value.nil?
    end

    settings
  end
end
end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
chamber-2.12.3 lib/chamber/filters/insecure_filter.rb
chamber-2.12.2 lib/chamber/filters/insecure_filter.rb
chamber-2.12.1 lib/chamber/filters/insecure_filter.rb
chamber-2.12.0 lib/chamber/filters/insecure_filter.rb
chamber-2.11.0 lib/chamber/filters/insecure_filter.rb