Sha256: 5fc04e0dfb93399dfa6d56abf7153e464247235ddf58a3bac7cb32b0cb8d483d

Contents?: true

Size: 834 Bytes

Versions: 2

Compression:

Stored size: 834 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
        source.destroy
        ::OpenSCAP.oscap_cleanup
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
smart_proxy_openscap-0.6.7 lib/smart_proxy_openscap/scap_validation.rb
smart_proxy_openscap-0.6.6 lib/smart_proxy_openscap/scap_validation.rb