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//!
7//! # Example
8//!
9//! ```
10//! use wireguard_conf::prelude::*;
11//! use wireguard_conf::as_ipnet;
12//!
13//! use ipnet::Ipv4Net;
14//!
15//! let peer = PeerBuilder::new()
16//! .add_allowed_ip(as_ipnet!("10.0.0.2/24"))
17//! .build();
18//!
19//! let interface = InterfaceBuilder::new()
20//! .address(as_ipnet!("10.0.0.1/24"))
21//! .add_peer(peer.clone())
22//! .build();
23//!
24//! // to export configs, use `println!()`, `writeln!()`, `.to_string()`, etc.
25//!
26//! println!("Server's config:");
27//! println!("{}\n", interface);
28//!
29//! println!("Client's config:");
30//! println!("{}", peer.to_interface(&interface).unwrap());
31//! ```
32
33#![warn(clippy::pedantic)]
34
35mod models;
36mod utils;
37mod macros;
38
39pub mod prelude;
40
41pub use models::*;
42pub use utils::*;
43