Class: OpenSCAP::Xccdf::Session

Inherits:
Object
  • Object
show all
Defined in:
lib/openscap/xccdf/session.rb

Instance Method Summary collapse

Constructor Details

#initialize(input_filename) ⇒ Session

Returns a new instance of Session.

Raises:



6
7
8
9
10
11
12
# File 'lib/openscap/xccdf/session.rb', line 6

def initialize input_filename
  raise OpenSCAPError, 'No filename specified!' unless input_filename

  @input_filename = input_filename
  @s = OpenSCAP.xccdf_session_new(input_filename)
  OpenSCAP.raise! if @s.null?
end

Instance Method Details

#destroyObject



57
58
59
60
# File 'lib/openscap/xccdf/session.rb', line 57

def destroy
  OpenSCAP.xccdf_session_free @s
  @s = nil
end

#evaluateObject



36
37
38
# File 'lib/openscap/xccdf/session.rb', line 36

def evaluate
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_evaluate(@s).zero?
end

#export_results(opts = {}) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/openscap/xccdf/session.rb', line 44

def export_results(opts = {})
  o = {
    rds_file: nil,
    xccdf_file: nil,
    report_file: nil,
    oval_results: false,
    oval_variables: false,
    engines_results: false
  }.merge! opts
  export_targets o
  export
end

#load(opts = {}) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/openscap/xccdf/session.rb', line 18

def load opts = {}
  o = {
    datastream_id: nil,
    component_id: nil
  }.merge opts
  if sds?
    OpenSCAP.xccdf_session_set_datastream_id @s, o[:datastream_id]
    OpenSCAP.xccdf_session_set_component_id @s, o[:component_id]
  end
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_load(@s).zero?
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_load_check_engine_plugins(@s).zero?
end

#profile=(p) ⇒ Object

Raises:



31
32
33
34
# File 'lib/openscap/xccdf/session.rb', line 31

def profile= p
  @profile = p
  raise OpenSCAPError, "No profile '#{p}' found" unless OpenSCAP.xccdf_session_set_profile_id(@s, p)
end

#remediateObject



40
41
42
# File 'lib/openscap/xccdf/session.rb', line 40

def remediate
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_remediate(@s).zero?
end

#sds?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/openscap/xccdf/session.rb', line 14

def sds?
  OpenSCAP.xccdf_session_is_sds @s
end