domani/src/service.rs

37 lines
889 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;
2023-07-10 16:22:37 +00:00
use serde::{Deserialize, Serialize};
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()
}
2023-07-10 16:22:37 +00:00
#[derive(Serialize, Deserialize, Clone)]
#[serde(tag = "type")]
pub enum ConfigDNSRecord {
A { addr: net::Ipv4Addr },
2023-07-10 16:22:37 +00:00
AAAA { addr: net::Ipv6Addr },
}
impl From<ConfigDNSRecord> for domain::checker::DNSRecord {
fn from(r: ConfigDNSRecord) -> Self {
match r {
ConfigDNSRecord::A { addr } => Self::A(addr),
2023-07-10 16:22:37 +00:00
ConfigDNSRecord::AAAA { addr } => Self::AAAA(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,
}