Calmav wrapper for elixir
Switch branches/tags
Nothing to show
Clone or download
Latest commit 8e28f94 Sep 9, 2018

Clamxir Build Status

ClamAV wrapper for elixir based on clamby

This package depends of clamav installed on your system. Please refer to:

As recomendation, use the daemonize flag on the configs, in order to improve performance.


The package can be installed by adding clamxir to your list of dependencies in mix.exs:

def deps do
    {:clamxir, "~> 0.1.7"}


Clamxir receive the configs on each public method, and based on the configs, will perform their task.

The config file by default is the struct %Clamxir{}. The default values of the structure are:

  daemonize: false,
  stream: false,
  check: fase

Set daemonize to true, in order to use one instance of the clamav instead of the creation of an instance each time that the scanner is invoke.

Check is a flag to check if the scanner is available. Set to true in order to

  iex>{}, "/path/file")

Stream true, will pass the argument --stream to clamdscan.

  iex>{stream: true}, "/path/file")

check if the scanner exists, before try to use it.

  iex>{check: true}, "/path/file")

Integration with Phoenix

  1. Install as dependency mix.exs

        {:clamxir, "~> 0.1.7"}
  2. Use in the controller action where the files are uploaded

      def upload(conn, params) do
        file = params["index"]["file"]
        # Requires to have clamavdscann to work
        case{daemonize: true}, file.path) do
          true -> 
            # Process the file and ... 
            |> put_flash(:info,  "Created successfully")
            |> redirect(to: "/") 
          false -> conn
            |> put_flash(:error,  "Virus!!")
           |> redirect(to: "/") 

For a working sample please refer to:

Docs can be found at


  • Add Logger features