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#![warn(missing_docs)]
41#![cfg_attr(docsrs, feature(doc_cfg))]
42
43mod macros;
44mod models;
45mod utils;
46
47pub mod prelude;
48
49pub use models::*;
50pub use utils::*;