2022-03-04 16:51:07 +00:00
|
|
|
use crate::dns;
|
|
|
|
|
|
|
|
// TODO: Use model types instead of dns types as input / output and only convert internaly?
|
|
|
|
|
|
|
|
// Zone content api
|
|
|
|
// E.g.: DNS update + axfr, zone file read + write
|
|
|
|
#[async_trait]
|
|
|
|
pub trait RecordApi {
|
|
|
|
type Error;
|
|
|
|
|
|
|
|
async fn get_records(&mut self, zone: dns::Name, class: dns::DNSClass) -> Result<Vec<dns::Record>, Self::Error>;
|
|
|
|
async fn add_records(&mut self, zone: dns::Name, class: dns::DNSClass, new_records: Vec<dns::Record>) -> Result<(), Self::Error>;
|
|
|
|
// update_records
|
|
|
|
// delete_records
|
|
|
|
}
|
|
|
|
|
|
|
|
// Zone management api, todo
|
|
|
|
// E.g.: Manage catalog zone, dynamically generate knot / bind / nsd config...
|
2022-03-04 17:20:18 +00:00
|
|
|
#[async_trait]
|
2022-03-04 16:51:07 +00:00
|
|
|
pub trait ZoneApi {
|
2022-03-04 17:20:18 +00:00
|
|
|
type Error;
|
2022-03-04 16:51:07 +00:00
|
|
|
// get_zones
|
|
|
|
// add_zone
|
|
|
|
// delete_zone
|
2022-03-04 17:20:18 +00:00
|
|
|
// zone_exists
|
|
|
|
async fn zone_exists(&mut self, zone: dns::Name, class: dns::DNSClass) -> Result<(), Self::Error>;
|
2022-03-04 16:51:07 +00:00
|
|
|
}
|