enable multiple dns servers

This commit is contained in:
2025-12-05 15:12:17 +00:00
parent 45a20ffcdc
commit 860d95242e
7 changed files with 106 additions and 49 deletions

View File

@@ -1,36 +1,46 @@
use std::fs::read_to_string;
use toml::Table;
pub struct KeyData {
pub struct ZoneConnectionData {
pub conection_str: String,
pub key_name: String,
pub key: String,
}
pub struct ZoneData {
pub struct ServerZonesConnection {
pub root_domain: String,
pub conection_str: String,
pub servers_data: Vec<ZoneConnectionData>,
}
impl KeyData {
pub fn get_config(file_name: &String) -> Self {
impl ZoneConnectionData {
pub fn get_config(file_name: &String) -> Vec<Self> {
let mut ret = Vec::new();
let key_toml = read_to_string(file_name).unwrap().parse::<Table>().unwrap();
let name: String = key_toml["key"]["name"].as_str().unwrap().to_string();
let value: String = key_toml["key"]["value"].as_str().unwrap().to_string();
Self {
key_name: name,
key: value
for servers in key_toml["server"].as_array().unwrap() {
let conection_str: String = servers["connection_str"].as_str().unwrap().to_string();
let key_name: String = servers["key"]["name"].as_str().unwrap().to_string();
let key: String = servers["key"]["value"].as_str().unwrap().to_string();
ret.push(Self {
conection_str,
key_name,
key,
});
}
ret
}
}
impl ZoneData {
impl ServerZonesConnection {
pub fn get_config(file_name: &String) -> Self {
let key_toml = read_to_string(file_name).unwrap().parse::<Table>().unwrap();
let root_domain: String = key_toml["zone"]["root_domain"].as_str().unwrap().to_string();
let conection_str: String = key_toml["zone"]["conection_str"].as_str().unwrap().to_string();
let root_domain: String = key_toml["zone"]["root_domain"]
.as_str()
.unwrap()
.to_string();
Self {
root_domain,
conection_str
servers_data: ZoneConnectionData::get_config(file_name),
}
}
}