demarches-normaliennes/app/services/clamav_service.rb
2024-08-22 09:26:48 +02:00

23 lines
577 B
Ruby

# frozen_string_literal: true
class ClamavService
def self.safe_file?(file_path)
return true if !Rails.configuration.x.clamav.enabled
FileUtils.chmod(0666, file_path)
client = ClamAV::Client.new
response = client.execute(ClamAV::Commands::ScanCommand.new(file_path)).first
case response
when ClamAV::SuccessResponse
true
when ClamAV::VirusResponse
false
when ClamAV::ErrorResponse
raise "ClamAV ErrorResponse : #{response.error_str}"
else
raise "ClamAV unkown response #{response.class.name}"
end
end
end