# Check Point Management - Elixir


This is a very light wrapper to help simplify working with the Check Point Web API in R80.10 and above. Currently  not all options from the API are available but I plan on adding them going forward. This project depends heavily on [Tesla]( so you can technically run any Tesla based command inside this project as well. It has been developed using the 1.3 Version of the Check Point Management API. I would recommend using the [API Documentation]( as a reference as some of the functions accept an options map. You will need to reference this documentation to discover which options can be passed.

## *Note that this is in very early stages and is being developed on often. I would recommend not running the master branch unless you are willing to expierence outages or behavioral issues.*

## Installation

If [available in Hex](, the package can be installed
by adding `cp_mgmt` to your list of dependencies in `mix.exs`:

def deps do
    {:cp_mgmt, "~> 1.0"}

## Setup

Specify the following in your `config/config.exs` or `config/<env>.exs` config file:

config :cp_mgmt, mgmt_server_url: "https://some.ip.address"
config :cp_mgmt, mgmt_user: "<username>"
config :cp_mgmt, mgmt_pass: "<user_password>"
config :cp_mgmt, mgmt_domain: "<domain_name_on_mds>"
Note that it is usually a better practice to use env variables in place of staticly coding passwords via `config.exs`. If you are not using an MDS simply set mgmt_domain to nil.

Currently this supports the following basic API actions:

- Loging In/Out (This is automatic)
- Hosts `CpMgmt.Host`
- Networks `CpMgmt.Network`
- Access Layer `CpMgmt.AccessLayer`
- Access Rules `CpMgmt.AccessRule`
- Verify Policy `CpMgmt.verify_policy`
- Install Policy `CpMgmt.install_policy`

## Basic Usage

All requests will return a struct with the function status as well as the data returned from the API server and its web API status:

Successful Request:

`{:ok, %CpMgmt.Host{data: %{request_data}, status: 200}`

Failed Request:

`{:error, %Cpmgmt.Host{status: 402, data: %{error_data}}}`
Each Module has the same naming convention to make usage easy. The [Documentation]( is pretty thorough at this point with examples of each function and its return. Below is an example of adding a host.

`CpMgmt.Host.add("test-host", "")`

Please view the [Documentation]( for usage details and examples.