Skip to main content

corevpn_config/
lib.rs

1//! CoreVPN Configuration Management
2//!
3//! Handles server configuration, client config generation, and persistence.
4
5#![forbid(unsafe_code)]
6#![warn(missing_docs, rust_2018_idioms)]
7
8pub mod server;
9pub mod client;
10pub mod generator;
11
12pub use server::{
13    ServerConfig, LoggingSettings, ConnectionLogMode,
14    ConnectionLogEvents, ConnectionLogAnonymization, ConnectionLogRetention,
15    AuditSettings, AuditSinkConfig,
16};
17pub use client::{ClientConfig, ClientConfigBuilder};
18pub use generator::ConfigGenerator;
19
20use thiserror::Error;
21
22/// Configuration error
23#[derive(Debug, Error)]
24pub enum ConfigError {
25    /// IO error
26    #[error("IO error: {0}")]
27    IoError(#[from] std::io::Error),
28
29    /// Serialization error
30    #[error("serialization error: {0}")]
31    SerializationError(String),
32
33    /// Validation error
34    #[error("validation error: {0}")]
35    ValidationError(String),
36
37    /// Missing required field
38    #[error("missing required field: {0}")]
39    MissingField(String),
40}
41
42/// Result type for config operations
43pub type Result<T> = std::result::Result<T, ConfigError>;
44
45impl From<toml::de::Error> for ConfigError {
46    fn from(err: toml::de::Error) -> Self {
47        ConfigError::SerializationError(err.to_string())
48    }
49}
50
51impl From<toml::ser::Error> for ConfigError {
52    fn from(err: toml::ser::Error) -> Self {
53        ConfigError::SerializationError(err.to_string())
54    }
55}