wireguard-conf 1.1.0

Generate Wireguard configs and interfaces with code
wireguard-conf-1.1.0 has been yanked.
Visit the last successful build: wireguard-conf-1.0.1

Wireguard Conf

GitHub Actions Workflow Status docs.rs Crates.io Version Crates.io Total Downloads Crates.io MSRV Quickstart Tutorial

Easy to use library for creating wireguard configs.

Installation & Usage

Install wireguard-conf

cargo add wireguard-conf

Usage

The best way to understand library: Quickstart!

More usage examples you can find in tests/tutorial.rs, tests folder and documentation examples on docs.rs.

use wireguard_conf::prelude::*;
use wireguard_conf::as_ipnet;

let peer = Peer::builder()
    .allowed_ips([as_ipnet!("10.0.0.2/24")])
    .build();

let interface = Interface::builder()
    .address([as_ipnet!("10.0.0.1/24")])
    .peers([peer.clone()])
    .build();

// to export configs, use `println!()`, `writeln!()`, `.to_string()`, etc.

println!("Server's config:");
println!("{}\n", interface);

println!("Client's config:");
println!("{}", peer.to_interface(&interface, ToInterfaceOptions::new()).unwrap());

Features

  • amneziawg-*: AmneziaWG is a fork of wireguard, that less recognizable by DPI systems by randomizing packet headers with packet sizes.

    These feature flags add support for generating and manually building amnezia settings:

    • amneziawg: alias for amneziawg-1, this will update in next major release
    • amneziawg-1: adds AmneziaWG 1.0 support.
    • amneziawg-2: adds AmneziaWG 2.0 support. (recommended over amneziawg-1)
    • amneziawg-3: WIP (waiting for official release)
  • serde: adds implementions of serde::Serialize and serde::Deserialize for all structs.

Misc