rsvici 0.1.4

A client library for the VICI protocol
Documentation
rsvici
======

[![][workflow-badge]][workflow-link]
[![][docsrs-badge]][docsrs-link]
[![][cratesio-badge]][cratesio-link]

The rsvici is a client library to configure, control, and monitor the IKE daemon
`charon` using the VICI protocol. All the features are implemented on top of the
Tokio runtime to asynchronously interact with `charon`.

## Dependency

```toml
[dependencies]
rsvici = "0.1"
```

## Basic Usage

1. Refer to [Client-initiated commands][] and [Server-issued events][].
1. Define structs for the request and response.
1. Connect to the IKE daemon either over a Unix socket or a TCP connection.

```rust
use std::error::Error;

use serde::Deserialize;

#[derive(Debug, Deserialize)]
struct Version {
    daemon: String,
    version: String,
    sysname: String,
    release: String,
    machine: String,
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let mut client = rsvici::unix::connect("/run/charon.vici").await?;

    let version: Version = client.request("version", ()).await?;
    println!("Version: {:#?}", version);

    Ok(())
}
```

## Hints on serializing/deserializing

The serialization/deserialization implementation has certain behaviors specific
to the VICI protocol:

* `bool` values are serialized to or deserialized from `"yes"` or `"no"`.
* Sections with zero-based index are serialized to or deserialized from `Vec<T>`.

[workflow-link]:             https://github.com/chitoku-k/rsvici/actions?query=branch:master
[workflow-badge]:            https://img.shields.io/github/actions/workflow/status/chitoku-k/rsvici/test.yml?branch=master&style=flat-square&logo=github
[docsrs-link]:               https://docs.rs/rsvici/
[docsrs-badge]:              https://img.shields.io/docsrs/rsvici?style=flat-square
[cratesio-link]:             https://crates.io/crates/rsvici
[cratesio-badge]:            https://img.shields.io/crates/v/rsvici?style=flat-square
[Client-initiated commands]: https://github.com/strongswan/strongswan/blob/5.9.5/src/libcharon/plugins/vici/README.md#client-initiated-commands
[Server-issued events]:      https://github.com/strongswan/strongswan/blob/5.9.5/src/libcharon/plugins/vici/README.md#server-issued-events