class Glue::DawnScanner
Public Class Methods
new(trigger, tracker)
click to toggle source
Calls superclass method
Glue::BaseTask::new
# File lib/glue/tasks/dawnscanner.rb, line 10 def initialize(trigger, tracker) super(trigger, tracker) @name = "DawnScanner" @description = "DawnScanner ruby analyzer" @stage = :code @labels << "code" end
Public Instance Methods
analyze()
click to toggle source
# File lib/glue/tasks/dawnscanner.rb, line 26 def analyze begin @results.each do |result| description = result['name'].gsub('\n',' ') detail = "#{result['message']}\n#{result['remediation']}\n#{result['cve_link']}" source = {:scanner => @name, :file => nil, :line => nil, :code => nil} sev = severity(result['severity']) fprint = fingerprint("#{description}#{detail}#{source}#{sev}") report description, detail, source, sev, fprint end rescue Exception => e Glue.warn e.message Glue.warn e.backtrace ensure File.unlink @results_file end end
run()
click to toggle source
# File lib/glue/tasks/dawnscanner.rb, line 18 def run Dir.chdir("#{@trigger.path}") do @results_file = Tempfile.new(['dawnresults', 'xml']) runsystem(true, "dawn", "-F", "#{@results_file.path}", "-j", ".") @results = JSON.parse(File.read("#{@results_file.path}"))['vulnerabilities'] end end
supported?()
click to toggle source
# File lib/glue/tasks/dawnscanner.rb, line 45 def supported? supported=runsystem(true, "dawn", "--version") if supported =~ /command not found/ Glue.notify "Install dawnscanner: 'gem install dawnscanner'" return false else return true end end