domani/src/service.rs

35 lines
767 B
Rust
Raw Normal View History

2023-06-18 12:53:25 +00:00
pub mod http;
mod util;
2023-07-09 14:09:00 +00:00
use crate::domain;
use serde::Deserialize;
use std::{net, str::FromStr};
2023-07-09 14:09:00 +00:00
fn default_primary_domain() -> domain::Name {
domain::Name::from_str("localhost").unwrap()
}
#[derive(Deserialize, Clone)]
#[serde(tag = "type")]
pub enum ConfigDNSRecord {
A { addr: net::Ipv4Addr },
}
impl From<ConfigDNSRecord> for domain::checker::DNSRecord {
fn from(r: ConfigDNSRecord) -> Self {
match r {
ConfigDNSRecord::A { addr } => Self::A(addr),
}
}
}
2023-07-09 14:09:00 +00:00
#[derive(Deserialize)]
pub struct Config {
pub passphrase: String,
pub dns_records: Vec<ConfigDNSRecord>,
#[serde(default = "default_primary_domain")]
pub primary_domain: domain::Name,
2023-07-09 14:09:00 +00:00
#[serde(default)]
pub http: self::http::Config,
}