Sha256: 29a0453101c5cbd0a82e18383f504b8958023a25e5f4c8eac27addfa92a61369

Contents?: true

Size: 1.63 KB

Versions: 1

Compression:

Stored size: 1.63 KB

Contents

require "clamby/version"
require "clamby/exception"
module Clamby

  @config = {
    :check => true,
    :error_clamscan_missing => true,
    :error_file_missing => true,
    :error_file_virus => true
  }

  @valid_config_keys = @config.keys

  def self.configure(opts = {})
    opts.each {|k,v| @config[k.to_sym] = v if @valid_config_keys.include? k.to_sym}
  end

  def self.scan(path)
    if self.scanner_exists?
      if file_exists?(path)
        scanner = system("clamscan #{path} --no-summary")
        if scanner
          return true
        elsif not scanner
          if @config[:error_file_virus]
            raise Exceptions::VirusDetected.new("VIRUS DETECTED on #{Time.now}: #{path}")
          else
            puts "VIRUS DETECTED on #{Time.now}: #{path}"
            return false
          end
        end
      end
    end
  end

  def self.scanner_exists?
    if @config[:check]
      scanner = system('clamscan')
      if not scanner
        if @config[:error_clamscan_missing]
          raise Exceptions::ClamscanMissing.new("Clamscan application not found. Check your installation and path.")
        else
          puts "CLAMSCAN NOT FOUND"
          return false
        end
      else
        return true
      end
    else
      return true
    end
  end

  def self.file_exists?(path)
    if File.file?(path)
      return true
    else
      if @config[:error_file_missing]
        raise Exceptions::FileNotFound.new("File not found: #{path}")
      else
        puts "FILE NOT FOUND on #{Time.now}: #{path}"
        return false
      end
    end
  end

  def self.update
    system("freshclam")
  end

  def self.config
    @config
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
clamby-1.0.3 lib/clamby.rb