Expand description
rsvici
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
.
Basic Usage
- Refer to Client-initiated commands and Server-issued events.
- Define structs for the request and response.
- Connect to the IKE daemon either over a Unix socket or a TCP connection.
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>
.
Example
Connecting to the IKE daemon and retrieving the version information looks like the following:
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(())
}
Modules
Failures to interact with the IKE daemon.
Connection over TCP.
unixUnix
Connection over a Unix Domain Stream Socket.