Skip to content

idkncc/wireguard-conf

Repository files navigation

Wireguard Conf

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

Easy to use library for creating wireguard configs.

Installation

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: adds support for generating/using AmneziaWG obfuscation values.
  • serde: adds implementions of [serde::Serialize] and [serde::Deserialize] for all structs.

Contributing

  1. Fork & clone

  2. Install Rust, Cargo and just.

    Or start nix shell: direnv allow or just nix develop

  3. Make changes

  4. Format and lint code:

    just fmt
    just lint
    # or fix automatically: just lint-fix
  5. Commit changes (use Conventional commits)

    git commit -m "feat: did something"
  6. Send patches PR

About

Library, that used for creating wireguard configs

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages