Using dyn.peachcloud.org as the authority
This commit is contained in:
parent
8bd7e7b1b4
commit
c6d5316607
138
src/dns.rs
138
src/dns.rs
|
@ -31,13 +31,13 @@ impl DnsManager {
|
||||||
pub fn upsert(&mut self, domain: String, ip: Ipv4Addr) {
|
pub fn upsert(&mut self, domain: String, ip: Ipv4Addr) {
|
||||||
|
|
||||||
|
|
||||||
let authority_name = Name::from_str("dyn.peach.cloud.").unwrap();
|
let authority_name = Name::from_str("dyn.peachcloud.org.").unwrap();
|
||||||
|
|
||||||
let soa_serial = 1;
|
let soa_serial = 1;
|
||||||
let soa_name = Name::from_str("dyn.peach.cloud.").unwrap();
|
let soa_name = Name::from_str("dyn.peachcloud.org.").unwrap();
|
||||||
let soa_rdata = RData::SOA(SOA::new(
|
let soa_rdata = RData::SOA(SOA::new(
|
||||||
Name::from_str("dyn.peach.cloud.").unwrap(), // mname
|
Name::from_str("dyn.peachcloud.org.").unwrap(), // mname
|
||||||
Name::from_str("root.dyn.peach.cloud.").unwrap(), // rname
|
Name::from_str("root.dyn.peachcloud.org.").unwrap(), // rname
|
||||||
soa_serial, // serial
|
soa_serial, // serial
|
||||||
604800, // refresh
|
604800, // refresh
|
||||||
86400, // retry
|
86400, // retry
|
||||||
|
@ -65,7 +65,7 @@ impl DnsManager {
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
let ns_name = Name::from_str("dyn.peach.cloud.").unwrap();
|
let ns_name = Name::from_str("dyn.peachcloud.org.").unwrap();
|
||||||
let ns_ttl = 60;
|
let ns_ttl = 60;
|
||||||
let ns_rdata = RData::NS(Name::from_str("localhost.").unwrap());
|
let ns_rdata = RData::NS(Name::from_str("localhost.").unwrap());
|
||||||
let ns_record = Record::from_rdata(ns_name, ns_ttl, ns_rdata);
|
let ns_record = Record::from_rdata(ns_name, ns_ttl, ns_rdata);
|
||||||
|
@ -83,6 +83,114 @@ impl DnsManager {
|
||||||
Box::new(Arc::new(RwLock::new(authority))),
|
Box::new(Arc::new(RwLock::new(authority))),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn get_initial_records(&mut self) -> BTreeMap<RrKey, RecordSet> {
|
||||||
|
let authority_name = Name::from_str("dyn.peachcloud.org.").unwrap();
|
||||||
|
let soa_serial = 1;
|
||||||
|
let soa_name = Name::from_str("dyn.peachcloud.org.").unwrap();
|
||||||
|
let soa_rdata = RData::SOA(SOA::new(
|
||||||
|
Name::from_str("dyn.peachcloud.org.").unwrap(), // mname
|
||||||
|
Name::from_str("root.dyn.peachcloud.org.").unwrap(), // rname
|
||||||
|
soa_serial, // serial
|
||||||
|
604800, // refresh
|
||||||
|
86400, // retry
|
||||||
|
2419200, // expire
|
||||||
|
86400, // negtive cache ttl
|
||||||
|
));
|
||||||
|
let mut soa_record_set = RecordSet::new(&soa_name, RecordType::SOA, soa_serial);
|
||||||
|
soa_record_set.add_rdata(soa_rdata);
|
||||||
|
let soa_rr_key = RrKey::new(
|
||||||
|
LowerName::new(&authority_name),
|
||||||
|
soa_record_set.record_type(),
|
||||||
|
);
|
||||||
|
let mut authority_records = BTreeMap::new();
|
||||||
|
authority_records.insert(soa_rr_key, soa_record_set);
|
||||||
|
authority_records
|
||||||
|
}
|
||||||
|
|
||||||
|
fn upsert_test(&mut self) {
|
||||||
|
|
||||||
|
let authority_records = self.get_initial_records();
|
||||||
|
|
||||||
|
let authority_name = Name::from_str("dyn.peachcloud.org.").unwrap();
|
||||||
|
|
||||||
|
let authority_zone_type = ZoneType::Master;
|
||||||
|
let authority_allow_axfr = false;
|
||||||
|
|
||||||
|
// first upsert
|
||||||
|
let domain1 = "test.dyn.peachcloud.org";
|
||||||
|
let ip1 = Ipv4Addr::new(1, 1, 1, 1);
|
||||||
|
|
||||||
|
let mut authority = InMemoryAuthority::new(
|
||||||
|
authority_name.clone(),
|
||||||
|
authority_records,
|
||||||
|
authority_zone_type,
|
||||||
|
authority_allow_axfr,
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let dyn_name = Name::from_str(domain1).unwrap();
|
||||||
|
let dyn_ttl = 60;
|
||||||
|
let dyn_rdata = RData::A(ip1);
|
||||||
|
let dyn_record = Record::from_rdata(dyn_name, dyn_ttl, dyn_rdata);
|
||||||
|
authority.upsert(dyn_record, authority.serial());
|
||||||
|
|
||||||
|
let authority_ref = &authority;
|
||||||
|
|
||||||
|
self.catalog.upsert(
|
||||||
|
LowerName::new(&authority_name),
|
||||||
|
Box::new(Arc::new(RwLock::new(authority))),
|
||||||
|
);
|
||||||
|
|
||||||
|
// test second insert
|
||||||
|
let domain2 = "who.dyn.peachcloud.org";
|
||||||
|
let ip2 = Ipv4Addr::new(1, 1, 1, 2);
|
||||||
|
let dyn_name = Name::from_str(domain2).unwrap();
|
||||||
|
let dyn_ttl = 60;
|
||||||
|
let dyn_rdata = RData::A(ip2);
|
||||||
|
let dyn_record = Record::from_rdata(dyn_name, dyn_ttl, dyn_rdata);
|
||||||
|
authority.upsert(dyn_record, authority.serial());
|
||||||
|
|
||||||
|
// test if it worked
|
||||||
|
let dyn_name = Name::from_str(domain1).unwrap();
|
||||||
|
let lower_name = LowerName::from(dyn_name);
|
||||||
|
let found = self.catalog.contains(&lower_name);
|
||||||
|
println!("++ found {:?}: {:?}", lower_name.to_string(), found);
|
||||||
|
|
||||||
|
let dyn_name = Name::from_str(domain2).unwrap();
|
||||||
|
let lower_name = LowerName::from(dyn_name);
|
||||||
|
let found = self.catalog.contains(&lower_name);
|
||||||
|
println!("++ found {:?}: {:?}", lower_name.to_string(), found);
|
||||||
|
|
||||||
|
let lower_name = LowerName::new(&authority_name);
|
||||||
|
let found = self.catalog.contains(&lower_name);
|
||||||
|
println!("++ found {:?}: {:?}", lower_name.to_string(), found);
|
||||||
|
|
||||||
|
|
||||||
|
// // second upsert
|
||||||
|
// let domain2 = "peach.dyn.peachcloud.org";
|
||||||
|
// let ip2 = Ipv4Addr::new(1, 1, 1, 2);
|
||||||
|
// let authority_records = self.get_initial_records();
|
||||||
|
//
|
||||||
|
// let mut authority = InMemoryAuthority::new(
|
||||||
|
// authority_name.clone(),
|
||||||
|
// authority_records,
|
||||||
|
// authority_zone_type,
|
||||||
|
// authority_allow_axfr,
|
||||||
|
// )
|
||||||
|
// .unwrap();
|
||||||
|
//
|
||||||
|
// let dyn_name = Name::from_str(domain2).unwrap();
|
||||||
|
// let dyn_ttl = 60;
|
||||||
|
// let dyn_rdata = RData::A(ip2);
|
||||||
|
// let dyn_record = Record::from_rdata(dyn_name, dyn_ttl, dyn_rdata);
|
||||||
|
// authority.upsert(dyn_record, authority.serial());
|
||||||
|
//
|
||||||
|
// self.catalog.upsert(
|
||||||
|
// LowerName::new(&authority_name),
|
||||||
|
// Box::new(Arc::new(RwLock::new(authority))),
|
||||||
|
// );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -91,24 +199,26 @@ pub async fn server() -> ServerFuture<Catalog> {
|
||||||
|
|
||||||
let mut dns_manager = DnsManager::new();
|
let mut dns_manager = DnsManager::new();
|
||||||
|
|
||||||
// first insert
|
// // first insert
|
||||||
dns_manager.upsert(
|
// dns_manager.upsert(
|
||||||
"test.dyn.peachcloud.org".to_string(),
|
// "test.dyn.peachcloud.org".to_string(),
|
||||||
Ipv4Addr::new(1, 1, 1, 1),
|
// Ipv4Addr::new(1, 1, 1, 1),
|
||||||
);
|
// );
|
||||||
|
//
|
||||||
// // second insert
|
// // second insert
|
||||||
// dns_manager.upsert(
|
// dns_manager.upsert(
|
||||||
// "test.dyn.peachcloud.org.".to_string(),
|
// "test.dyn.peachcloud.org".to_string(),
|
||||||
// Ipv4Addr::new(1, 1, 1, 3),
|
// Ipv4Addr::new(1, 1, 1, 3),
|
||||||
// );
|
// );
|
||||||
//
|
//
|
||||||
// // third insert
|
// // third insert
|
||||||
// dns_manager.upsert(
|
// dns_manager.upsert(
|
||||||
// "peach.dyn.peachcloud.org.".to_string(),
|
// "peach.dyn.peachcloud.org".to_string(),
|
||||||
// Ipv4Addr::new(1, 1, 2, 3),
|
// Ipv4Addr::new(1, 1 , 2, 3),
|
||||||
// );
|
// );
|
||||||
|
|
||||||
|
dns_manager.upsert_test();
|
||||||
|
|
||||||
let ip_addr = IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0));
|
let ip_addr = IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0));
|
||||||
let listen_port: u16 = 12323;
|
let listen_port: u16 = 12323;
|
||||||
let tcp_request_timeout = Duration::from_secs(DEFAULT_TCP_REQUEST_TIMEOUT);
|
let tcp_request_timeout = Duration::from_secs(DEFAULT_TCP_REQUEST_TIMEOUT);
|
||||||
|
|
Loading…
Reference in New Issue