Popularity
2.6
Growing
Activity
0.0
Stable
11
4
2

Monthly Downloads: 914
Programming language: Elixir
License: MIT License
Tags: Security    
Latest version: v0.1.5

clamxir alternatives and similar packages

Based on the "Security" category.
Alternatively, view clamxir alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of clamxir or a related project?

Add another 'Security' Package

README

Clamxir Build Status

ClamAV wrapper for elixir based on clamby

This package depends of clamav installed on your system. Please refer to: https://www.clamav.net/documents/installing-clamav.

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

Installation

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

def deps do
  [
    {:clamxir, "~> 0.1.8"}
  ]
end

Usage

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:

%Clamxir{
  daemonize: false,
  stream: false,
  check: fase
}

daemonize is a flag to use one instance of the clamav instead of the creation of new instances for each request.

iex> Clamxir.safe?(%Clamxir{}, "/path/file")

stream will pass the argument --stream to clamdscan, this will help to avoid permission issues.

iex> Clamxir.safe?(%Clamxir{stream: true}, "/path/file")

check flag will add validation of the scanner availability before try to run it.

iex> Clamxir.safe?(%Clamxir{check: true}, "/path/file")

Integration with Phoenix

  1. Install as dependency mix.exs
{:clamxir, "~> 0.1.8"}
  1. 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 Clamxir.safe?(%Clamxir{daemonize: true}, file.path) do
    true ->
      # Process the file and ...
      conn
      |> put_flash(:info,  "Created successfully")
      |> redirect(to: "/")
    false -> conn
      |> put_flash(:error,  "Virus!!")
     |> redirect(to: "/")
  end
end

For a working sample please refer to: https://github.com/ramortegui/sample_phoenix_clamxir

Docs can be found at https://hexdocs.pm/clamxir.

TODO

  • Add Logger features