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:



16
17
18
19
20
21
22
23
# File 'lib/openscap/xccdf/session.rb', line 16

def initialize(input_filename)
  raise OpenSCAPError, "No filename specified!" unless input_filename
  @input_filename = input_filename
  @s = OpenSCAP.xccdf_session_new(input_filename)
  if @s.null?
    OpenSCAP.raise!
  end
end

Instance Method Details

#destroyObject



83
84
85
86
# File 'lib/openscap/xccdf/session.rb', line 83

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

#evaluateObject



51
52
53
54
55
# File 'lib/openscap/xccdf/session.rb', line 51

def evaluate
  if OpenSCAP.xccdf_session_evaluate(@s) != 0
    OpenSCAP.raise!
  end
end

#export_results(opts = {}) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/openscap/xccdf/session.rb', line 61

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)
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_set_arf_export(@s, o[:rds_file])
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_set_xccdf_export(@s, o[:xccdf_file])
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_set_report_export(@s, o[:report_file])
  OpenSCAP.xccdf_session_set_oval_results_export(@s, o[:oval_results])
  OpenSCAP.xccdf_session_set_oval_variables_export(@s, o[:oval_variables])
  OpenSCAP.xccdf_session_set_check_engine_plugins_results_export(@s, o[:engines_results])

  OpenSCAP.raise! unless OpenSCAP.xccdf_session_export_oval(@s) == 0
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_export_check_engine_plugins(@s) == 0
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_export_xccdf(@s) == 0
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_export_arf(@s) == 0
end

#load(opts = {}) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/openscap/xccdf/session.rb', line 29

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
  if OpenSCAP.xccdf_session_load(@s) != 0
    OpenSCAP.raise!
  end
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_load_check_engine_plugins(@s) == 0
end

#profile=(p) ⇒ Object



44
45
46
47
48
49
# File 'lib/openscap/xccdf/session.rb', line 44

def profile=(p)
  @profile = p
  if OpenSCAP.xccdf_session_set_profile_id(@s, p) == false
    raise OpenSCAPError, "No profile '" + p + "' found"
  end
end

#remediateObject



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

def remediate
  OpenSCAP.raise! unless OpenSCAP.xccdf_session_remediate(@s) == 0
end

#sds?Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/openscap/xccdf/session.rb', line 25

def sds?
  return OpenSCAP.xccdf_session_is_sds(@s)
end