Module: Datadog::AppSec::WAF::LibDDWAF

Extended by:
FFI::Library
Defined in:
lib/datadog/appsec/waf.rb

Defined Under Namespace

Classes: Config, Error, Object, ObjectValueUnion, Result, RuleSetInfo, SizeTPtr, UInt32Ptr, UInt64Ptr, Version

Constant Summary collapse

DDWAF_OBJ_TYPE =

ddwaf::object data structure

enum :ddwaf_obj_invalid,  0,
:ddwaf_obj_signed,   1 << 0,
:ddwaf_obj_unsigned, 1 << 1,
:ddwaf_obj_string,   1 << 2,
:ddwaf_obj_array,    1 << 3,
:ddwaf_obj_map,      1 << 4
ObjectFree =

freeers

attach_function :ddwaf_object_free, [:ddwaf_object], :void
ObjectNoFree =
::FFI::Pointer::NULL
RuleSetInfoNone =
Datadog::AppSec::WAF::LibDDWAF::RuleSetInfo.new(::FFI::Pointer::NULL)
DDWAF_RET_CODE =
enum :ddwaf_err_internal,         -3,
:ddwaf_err_invalid_object,   -2,
:ddwaf_err_invalid_argument, -1,
:ddwaf_good,                  0,
:ddwaf_monitor,               1,
:ddwaf_block,                 2
DDWAF_LOG_LEVEL =

logging

enum :ddwaf_log_trace,
:ddwaf_log_debug,
:ddwaf_log_info,
:ddwaf_log_warn,
:ddwaf_log_error,
:ddwaf_log_off

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.local_cpuObject



35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/datadog/appsec/waf.rb', line 35

def self.local_cpu
  if RUBY_ENGINE == 'jruby'
    os_arch = java.lang.System.get_property('os.arch')

    cpu = case os_arch
          when 'amd64' then 'x86_64'
          else raise Error, "unsupported JRuby os.arch: #{os_arch.inspect}"
          end

    return cpu
  end

  Gem::Platform.local.cpu
end

.local_osObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/datadog/appsec/waf.rb', line 19

def self.local_os
  if RUBY_ENGINE == 'jruby'
    os_name = java.lang.System.get_property('os.name')

    os = case os_name
         when /linux/i then 'linux'
         when /mac/i   then 'darwin'
         else raise Error, "unsupported JRuby os.name: #{os_name.inspect}"
         end

    return os
  end

  Gem::Platform.local.os
end

.shared_lib_extnameObject



50
51
52
# File 'lib/datadog/appsec/waf.rb', line 50

def self.shared_lib_extname
  Gem::Platform.local.os == 'darwin' ? '.dylib' : '.so'
end

.shared_lib_pathObject



54
55
56
# File 'lib/datadog/appsec/waf.rb', line 54

def self.shared_lib_path
  File.join(__dir__, "../../../vendor/libddwaf/libddwaf-#{Datadog::AppSec::WAF::VERSION::BASE_STRING}-#{local_os}-#{local_cpu}/lib/libddwaf#{shared_lib_extname}")
end

Instance Method Details

#ddwaf_object_invalidObject

setters



121
# File 'lib/datadog/appsec/waf.rb', line 121

attach_function :ddwaf_object_invalid, [:ddwaf_object], :ddwaf_object

#ddwaf_object_typeObject

getters



140
# File 'lib/datadog/appsec/waf.rb', line 140

attach_function :ddwaf_object_type, [:ddwaf_object], DDWAF_OBJ_TYPE