Sha256: 08ea5cc06d3a8a0b502020dad91e285fefeb776aed189a63854abf73e84a0432

Contents?: true

Size: 1.35 KB

Versions: 24

Compression:

Stored size: 1.35 KB

Contents

# Copyright (c) 2022 Contrast Security, Inc. See https://www.contrastsecurity.com/enduser-terms-0317a for more details.
# frozen_string_literal: true

require 'contrast/components/logger'

# This module is used to find funchook library and determine availability
module Funchook
  extend Contrast::Components::Logger::InstanceMethods

  attr_accessor :path

  # Possible platform library files
  ACCEPTABLE_FILES = %w[libfunchook.dylib libfunchook.so].cs__freeze

  # Top level agent directories that should have the funchook libraries
  SEARCH_DIRS = [File.join('ext'), File.join('shared_libraries'), File.join('funchook', 'src')].cs__freeze

  AGENT_ROOT = File.join(__dir__, '..', '..', '..')

  class << self
    def resolve_path!
      actual_path_segments = SEARCH_DIRS.product(ACCEPTABLE_FILES).find do |potential_funchook_path|
        load_path = absolute_path(potential_funchook_path)
        File.exist?(load_path)
      end

      if actual_path_segments.nil?
        logger.warn('Unable to find funchook')
      else
        @path = absolute_path(actual_path_segments)
        logger.info('Funchook found', path: @path)
      end
      @path
    end

    def absolute_path path_array
      File.absolute_path(File.join(AGENT_ROOT, *path_array))
    end

    def available?
      @_available = !!resolve_path! if @_available.nil?
      @_available
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
contrast-agent-6.11.0 lib/contrast/funchook/funchook.rb
contrast-agent-6.10.0 lib/contrast/funchook/funchook.rb
contrast-agent-6.9.0 lib/contrast/funchook/funchook.rb
contrast-agent-6.8.0 lib/contrast/funchook/funchook.rb
contrast-agent-6.7.0 lib/contrast/funchook/funchook.rb
contrast-agent-6.6.5 lib/contrast/funchook/funchook.rb
contrast-agent-6.6.4 lib/contrast/funchook/funchook.rb
contrast-agent-6.6.3 lib/contrast/funchook/funchook.rb
contrast-agent-6.6.2 lib/contrast/funchook/funchook.rb
contrast-agent-6.6.1 lib/contrast/funchook/funchook.rb
contrast-agent-6.6.0 lib/contrast/funchook/funchook.rb
contrast-agent-6.5.1 lib/contrast/funchook/funchook.rb
contrast-agent-6.5.0 lib/contrast/funchook/funchook.rb
contrast-agent-6.4.0 lib/contrast/funchook/funchook.rb
contrast-agent-6.3.0 lib/contrast/funchook/funchook.rb
contrast-agent-6.2.0 lib/contrast/funchook/funchook.rb
contrast-agent-6.1.2 lib/contrast/funchook/funchook.rb
contrast-agent-6.1.1 lib/contrast/funchook/funchook.rb
contrast-agent-6.1.0 lib/contrast/funchook/funchook.rb
contrast-agent-6.0.0 lib/contrast/funchook/funchook.rb