wireguard_conf/
lib.rs

1//! Easy to use Wireguard config generator.
2//!
3//! - Use [`InterfaceBuilder`] and [`PeerBuilder`] for interface/peers creation.
4//! - Use [`Interface`]'s and [`Peer`]'s [`std::fmt::Display`] for exporting  Wireguard config (`.to_string()`, [`write!()`], etc).
5//! - Use [`PrivateKey`] and [`PublicKey`] for generating, importing keys.
6//! - Use [`AmneziaSettings`] for generating/using AmneziaWG obfuscation values.
7//!
8//! # Features
9//!
10//! - `amneziawg`: Adds AmneziaWG obfuscation values support.
11//!
12//! # Example
13//!
14//! ```
15//! use wireguard_conf::prelude::*;
16//! use wireguard_conf::as_ipnet;
17//!
18//! use ipnet::Ipv4Net;
19//!
20//! let peer = PeerBuilder::new()
21//!     .add_allowed_ip(as_ipnet!("10.0.0.2/24"))
22//!     .build();
23//!
24//! let interface = InterfaceBuilder::new()
25//!     .address(as_ipnet!("10.0.0.1/24"))
26//!     .add_peer(peer.clone())
27//!     .build();
28//!
29//! // to export configs, use `println!()`, `writeln!()`, `.to_string()`, etc.
30//!
31//! println!("Server's config:");
32//! println!("{}\n", interface);
33//!
34//! println!("Client's config:");
35//! println!("{}", peer.to_interface(&interface).unwrap());
36//! ```
37
38#![warn(clippy::pedantic)]
39#![allow(clippy::doc_markdown)]
40#![cfg_attr(docsrs, feature(doc_cfg))]
41
42mod macros;
43mod models;
44mod utils;
45
46pub mod prelude;
47
48pub use models::*;
49pub use utils::*;