Sha256: a5d1094e9f153baa26f812209447b256bf021d3ae68bcaa24b2202fd65222387

Contents?: true

Size: 857 Bytes

Versions: 10

Compression:

Stored size: 857 Bytes

Contents

require 'json'
require 'openscap'
require 'openscap/source'

module Proxy
  module OpenSCAP
    class ScapValidation
      def allowed_types
        {
          'tailoring_file' => 'XCCDF Tailoring',
          'scap_content' => 'SCAP Source Datastream'
        }
      end

      def validate(in_file, out_file, type)
        errors = []
        ::OpenSCAP.oscap_init
        source = ::OpenSCAP::Source.new(in_file)
        if source.type != allowed_types[type]
          errors << "Uploaded file is #{source.type}, unexpected file type"
        end

        begin
          source.validate!
        rescue ::OpenSCAP::OpenSCAPError
          errors << "Invalid SCAP file type"
        end
        File.write out_file, { :errors => errors }.to_json
      ensure
        source.destroy if source
        ::OpenSCAP.oscap_cleanup
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
smart_proxy_openscap-0.7.5 lib/smart_proxy_openscap/scap_validation.rb
smart_proxy_openscap-0.7.4 lib/smart_proxy_openscap/scap_validation.rb
smart_proxy_openscap-0.7.3 lib/smart_proxy_openscap/scap_validation.rb
smart_proxy_openscap-0.7.2 lib/smart_proxy_openscap/scap_validation.rb
smart_proxy_openscap-0.7.1 lib/smart_proxy_openscap/scap_validation.rb
smart_proxy_openscap-0.7.0 lib/smart_proxy_openscap/scap_validation.rb
smart_proxy_openscap-0.6.11 lib/smart_proxy_openscap/scap_validation.rb
smart_proxy_openscap-0.6.10 lib/smart_proxy_openscap/scap_validation.rb
smart_proxy_openscap-0.6.9 lib/smart_proxy_openscap/scap_validation.rb
smart_proxy_openscap-0.6.8 lib/smart_proxy_openscap/scap_validation.rb