openscap 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/lib/openscap/ds/arf.rb +46 -0
- data/lib/openscap/helper.rb +18 -0
- data/lib/openscap/libc.rb +22 -0
- data/lib/openscap/source.rb +34 -0
- data/lib/openscap/version.rb +14 -0
- data/test/common/testcase.rb +2 -10
- data/test/ds/arf_test.rb +53 -0
- data/test/source_test.rb +32 -0
- data/test/xccdf/session_test.rb +2 -1
- metadata +20 -16
- data/.gitignore +0 -4
- data/VERSION +0 -1
- data/openscap.gemspec +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 074803ceb32fdfbe49ce4a347e166b33ae2737d7
|
4
|
+
data.tar.gz: 628f26e6b604746130063faf1eecec3aaba118c0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6fdb0130e40eab32d48982683e0f01363936f8b5ad01d7be8ff7b41b86081529354ab7732f0dca12ea4c397547eb0deab5f080043c64176c534a651306568933
|
7
|
+
data.tar.gz: 4e90b1f1ea0fc9e905879125001357e06f1c8ff64c3684f437193193e44cafb3607d7719bed4a04a4730230631b188582808a9f1e1ca6003184d3ac48648fd17
|
data/Rakefile
CHANGED
@@ -0,0 +1,46 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2014 Red Hat Inc.
|
3
|
+
#
|
4
|
+
# This software is licensed to you under the GNU General Public License,
|
5
|
+
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
|
6
|
+
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
|
7
|
+
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
|
8
|
+
# along with this software; if not, see
|
9
|
+
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
10
|
+
#
|
11
|
+
|
12
|
+
require 'openscap/source'
|
13
|
+
require 'openscap/libc'
|
14
|
+
|
15
|
+
module OpenSCAP
|
16
|
+
module DS
|
17
|
+
class Arf
|
18
|
+
def initialize(input_filename)
|
19
|
+
@source = OpenSCAP::Source.new(input_filename)
|
20
|
+
@session = OpenSCAP.ds_rds_session_new_from_source @source.raw
|
21
|
+
if @session.null?
|
22
|
+
OpenSCAP.raise!
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def destroy
|
27
|
+
OpenSCAP.ds_rds_session_free(@session)
|
28
|
+
@session = nil
|
29
|
+
@source.destroy()
|
30
|
+
end
|
31
|
+
|
32
|
+
def html
|
33
|
+
html_p = OpenSCAP.ds_rds_session_get_html_report @session
|
34
|
+
OpenSCAP.raise! if OpenSCAP.error?
|
35
|
+
return nil if html_p.null?
|
36
|
+
html = html_p.read_string()
|
37
|
+
OpenSCAP::LibC.free html_p
|
38
|
+
return html
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
attach_function :ds_rds_session_new_from_source, [:pointer], :pointer
|
44
|
+
attach_function :ds_rds_session_free, [:pointer], :void
|
45
|
+
attach_function :ds_rds_session_get_html_report, [:pointer], :pointer
|
46
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2014 Red Hat Inc.
|
3
|
+
#
|
4
|
+
# This software is licensed to you under the GNU General Public License,
|
5
|
+
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
|
6
|
+
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
|
7
|
+
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
|
8
|
+
# along with this software; if not, see
|
9
|
+
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
10
|
+
#
|
11
|
+
|
12
|
+
module OpenSCAP::Helper
|
13
|
+
def self.get_html_report_for_arf
|
14
|
+
# This is workaround function for the installation with
|
15
|
+
# old OpenSCAP without the oscap_source functionality
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2014 Red Hat Inc.
|
3
|
+
#
|
4
|
+
# This software is licensed to you under the GNU General Public License,
|
5
|
+
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
|
6
|
+
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
|
7
|
+
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
|
8
|
+
# along with this software; if not, see
|
9
|
+
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
10
|
+
#
|
11
|
+
|
12
|
+
require 'ffi'
|
13
|
+
|
14
|
+
module OpenSCAP
|
15
|
+
module LibC
|
16
|
+
extend FFI::Library
|
17
|
+
|
18
|
+
ffi_lib FFI::Library::LIBC
|
19
|
+
|
20
|
+
attach_function :free, [:pointer], :void
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2014 Red Hat Inc.
|
3
|
+
#
|
4
|
+
# This software is licensed to you under the GNU General Public License,
|
5
|
+
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
|
6
|
+
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
|
7
|
+
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
|
8
|
+
# along with this software; if not, see
|
9
|
+
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
10
|
+
#
|
11
|
+
|
12
|
+
module OpenSCAP
|
13
|
+
class Source
|
14
|
+
def initialize(input_filename)
|
15
|
+
raise OpenSCAPError, "No filename specified!" unless input_filename
|
16
|
+
@s = OpenSCAP.oscap_source_new_from_file(input_filename)
|
17
|
+
if @s.null?
|
18
|
+
OpenSCAP.raise!
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def raw
|
23
|
+
@s
|
24
|
+
end
|
25
|
+
|
26
|
+
def destroy
|
27
|
+
OpenSCAP.oscap_source_free(@s)
|
28
|
+
@s = nil
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
attach_function :oscap_source_new_from_file, [:string], :pointer
|
33
|
+
attach_function :oscap_source_free, [:pointer], :void
|
34
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2014 Red Hat Inc.
|
3
|
+
#
|
4
|
+
# This software is licensed to you under the GNU General Public License,
|
5
|
+
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
|
6
|
+
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
|
7
|
+
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
|
8
|
+
# along with this software; if not, see
|
9
|
+
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
10
|
+
#
|
11
|
+
|
12
|
+
module OpenSCAP
|
13
|
+
VERSION = "0.3.0"
|
14
|
+
end
|
data/test/common/testcase.rb
CHANGED
@@ -13,16 +13,6 @@ require 'test/unit'
|
|
13
13
|
|
14
14
|
module OpenSCAP
|
15
15
|
class TestCase < Test::Unit::TestCase
|
16
|
-
class << self
|
17
|
-
def startup
|
18
|
-
OpenSCAP.oscap_init
|
19
|
-
end
|
20
|
-
|
21
|
-
def shutdown
|
22
|
-
OpenSCAP.oscap_cleanup
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
16
|
def setup
|
27
17
|
workdir = "test/output"
|
28
18
|
if Dir.pwd.end_with? 'test/output'
|
@@ -32,12 +22,14 @@ module OpenSCAP
|
|
32
22
|
Dir.mkdir workdir
|
33
23
|
Dir.chdir workdir
|
34
24
|
@s = nil
|
25
|
+
OpenSCAP.oscap_init
|
35
26
|
end
|
36
27
|
|
37
28
|
def cleanup
|
38
29
|
@s.destroy if @s
|
39
30
|
Dir.chdir "../.."
|
40
31
|
OpenSCAP.raise! if OpenSCAP.error?
|
32
|
+
OpenSCAP.oscap_cleanup
|
41
33
|
end
|
42
34
|
|
43
35
|
def test_x
|
data/test/ds/arf_test.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2014 Red Hat Inc.
|
3
|
+
#
|
4
|
+
# This software is licensed to you under the GNU General Public License,
|
5
|
+
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
|
6
|
+
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
|
7
|
+
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
|
8
|
+
# along with this software; if not, see
|
9
|
+
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
10
|
+
#
|
11
|
+
|
12
|
+
require 'openscap'
|
13
|
+
require 'openscap/ds/arf'
|
14
|
+
require 'common/testcase'
|
15
|
+
|
16
|
+
class TestSession < OpenSCAP::TestCase
|
17
|
+
def test_arf_new_nil
|
18
|
+
msg = nil
|
19
|
+
begin
|
20
|
+
s = OpenSCAP::DS::Arf.new(nil)
|
21
|
+
assert false
|
22
|
+
rescue OpenSCAP::OpenSCAPError => e
|
23
|
+
msg = e.to_s
|
24
|
+
end
|
25
|
+
assert msg.start_with?("No filename specified!"), "Message was: " + msg
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_arf_new_wrong_format
|
29
|
+
msg = nil
|
30
|
+
begin
|
31
|
+
s = OpenSCAP::DS::Arf.new("data/xccdf.xml")
|
32
|
+
assert false
|
33
|
+
rescue OpenSCAP::OpenSCAPError => e
|
34
|
+
msg = e.to_s
|
35
|
+
end
|
36
|
+
assert msg.start_with?('failed to load external entity "data/xccdf.xml"'), "Message was: " + msg
|
37
|
+
assert msg.include?('Could not create Result DataStream session: File is not Result DataStream.'),
|
38
|
+
"Message was: " + msg
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_create_arf_and_get_html
|
42
|
+
@s = OpenSCAP::Xccdf::Session.new("../data/sds-complex.xml")
|
43
|
+
@s.load(:component_id => "scap_org.open-scap_cref_second-xccdf.xml")
|
44
|
+
@s.profile = "xccdf_moc.elpmaxe.www_profile_1"
|
45
|
+
@s.evaluate
|
46
|
+
@s.export_results(:rds_file => "report.rds.xml")
|
47
|
+
arf = OpenSCAP::DS::Arf.new("report.rds.xml")
|
48
|
+
html = arf.html
|
49
|
+
assert html.start_with?('<!DOCTYPE html><html'), "DOCTYPE missing."
|
50
|
+
assert html.include?('OpenSCAP')
|
51
|
+
assert html.include?('Compliance and Scoring')
|
52
|
+
end
|
53
|
+
end
|
data/test/source_test.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2014 Red Hat Inc.
|
3
|
+
#
|
4
|
+
# This software is licensed to you under the GNU General Public License,
|
5
|
+
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
|
6
|
+
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
|
7
|
+
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
|
8
|
+
# along with this software; if not, see
|
9
|
+
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
10
|
+
#
|
11
|
+
|
12
|
+
require 'openscap'
|
13
|
+
require 'openscap/source'
|
14
|
+
require 'common/testcase'
|
15
|
+
|
16
|
+
class TestSource < OpenSCAP::TestCase
|
17
|
+
def test_source_new_nil
|
18
|
+
msg = nil
|
19
|
+
begin
|
20
|
+
s = OpenSCAP::Source.new(nil)
|
21
|
+
assert false
|
22
|
+
rescue OpenSCAP::OpenSCAPError => e
|
23
|
+
msg = e.to_s
|
24
|
+
end
|
25
|
+
assert msg.start_with?("No filename specified!"), "Message was: " + msg
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_source_new_ok
|
29
|
+
s = OpenSCAP::Source.new("data/xccdf.xml")
|
30
|
+
s.destroy
|
31
|
+
end
|
32
|
+
end
|
data/test/xccdf/session_test.rb
CHANGED
@@ -21,7 +21,8 @@ class TestSession < OpenSCAP::TestCase
|
|
21
21
|
rescue OpenSCAP::OpenSCAPError => e
|
22
22
|
msg = e.to_s
|
23
23
|
end
|
24
|
-
assert msg.start_with?(
|
24
|
+
assert msg.start_with?('failed to load external entity ""'), "Message was: " + msg
|
25
|
+
assert msg.include?('Unable to parse XML at:'), "Message was: " + msg
|
25
26
|
end
|
26
27
|
|
27
28
|
def test_session_new_nil
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openscap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Simon Lukasik
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
33
|
+
version: 1.0.9
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.
|
40
|
+
version: 1.0.9
|
41
41
|
description: |-
|
42
42
|
A FFI wrapper around the OpenSCAP library.
|
43
43
|
Currently it provides only subset of libopenscap functionality.
|
@@ -46,22 +46,26 @@ executables: []
|
|
46
46
|
extensions: []
|
47
47
|
extra_rdoc_files: []
|
48
48
|
files:
|
49
|
-
- .gitignore
|
50
|
-
- COPYING
|
51
|
-
- README.md
|
52
|
-
- Rakefile
|
53
|
-
- VERSION
|
54
49
|
- lib/openscap.rb
|
55
|
-
- lib/openscap/
|
56
|
-
- lib/openscap/
|
50
|
+
- lib/openscap/ds/arf.rb
|
51
|
+
- lib/openscap/libc.rb
|
57
52
|
- lib/openscap/xccdf/session.rb
|
58
|
-
- openscap.
|
59
|
-
-
|
53
|
+
- lib/openscap/helper.rb
|
54
|
+
- lib/openscap/source.rb
|
55
|
+
- lib/openscap/openscap.rb
|
56
|
+
- lib/openscap/version.rb
|
57
|
+
- lib/openscap/exceptions.rb
|
58
|
+
- test/openscap_test.rb
|
59
|
+
- test/ds/arf_test.rb
|
60
60
|
- test/data/sds-complex.xml
|
61
61
|
- test/data/xccdf.xml
|
62
|
-
- test/openscap_test.rb
|
63
|
-
- test/xccdf/session_ds_test.rb
|
64
62
|
- test/xccdf/session_test.rb
|
63
|
+
- test/xccdf/session_ds_test.rb
|
64
|
+
- test/common/testcase.rb
|
65
|
+
- test/source_test.rb
|
66
|
+
- COPYING
|
67
|
+
- README.md
|
68
|
+
- Rakefile
|
65
69
|
homepage: https://github.com/OpenSCAP/ruby-openscap
|
66
70
|
licenses:
|
67
71
|
- GPL-2.0
|
data/.gitignore
DELETED
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.2.0
|
data/openscap.gemspec
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
require 'date'
|
3
|
-
|
4
|
-
GEMSPEC = Gem::Specification.new do |gem|
|
5
|
-
gem.name = "openscap"
|
6
|
-
gem.version = File.open('VERSION').readline.chomp
|
7
|
-
gem.date = Date.today.to_s
|
8
|
-
gem.platform = Gem::Platform::RUBY
|
9
|
-
|
10
|
-
gem.author = "Šimon Lukašík"
|
11
|
-
gem.email = "isimluk@fedoraproject.org"
|
12
|
-
gem.homepage = "https://github.com/OpenSCAP/ruby-openscap"
|
13
|
-
gem.license = "GPL-2.0"
|
14
|
-
|
15
|
-
gem.summary = "A FFI wrapper around the OpenSCAP library"
|
16
|
-
gem.description = "A FFI wrapper around the OpenSCAP library.
|
17
|
-
Currently it provides only subset of libopenscap functionality."
|
18
|
-
|
19
|
-
gem.add_development_dependency "bundler", ">=1.0.0"
|
20
|
-
gem.add_runtime_dependency "ffi", ">= 1.4.0"
|
21
|
-
|
22
|
-
gem.files = `git ls-files`.split("\n")
|
23
|
-
gem.require_path = 'lib'
|
24
|
-
end
|