mirror of https://github.com/ospab/ostp.git
Fix DNS server responses
This commit is contained in:
parent
3ced4a19b6
commit
10c1772271
|
|
@ -136,13 +136,17 @@ impl DnsPacket {
|
||||||
qtype: rtype.clone(),
|
qtype: rtype.clone(),
|
||||||
qclass: 1, // IN
|
qclass: 1, // IN
|
||||||
}],
|
}],
|
||||||
answers: vec![DnsAnswer {
|
answers: if rdata.is_empty() {
|
||||||
|
vec![]
|
||||||
|
} else {
|
||||||
|
vec![DnsAnswer {
|
||||||
name: name.to_string(),
|
name: name.to_string(),
|
||||||
rtype,
|
rtype,
|
||||||
rclass: 1,
|
rclass: 1,
|
||||||
ttl: 0, // No caching
|
ttl: 0, // No caching
|
||||||
rdata,
|
rdata,
|
||||||
}],
|
}]
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -168,9 +168,17 @@ async fn handle_dns_query(
|
||||||
if dns_req.questions.is_empty() { return; }
|
if dns_req.questions.is_empty() { return; }
|
||||||
let query = &dns_req.questions[0];
|
let query = &dns_req.questions[0];
|
||||||
|
|
||||||
// Must be TXT query for our subdomain
|
if query.qtype != DnsRecordType::TXT && query.qtype != DnsRecordType::NULL {
|
||||||
if query.qtype != DnsRecordType::TXT && query.qtype != DnsRecordType::NULL { return; }
|
let resp = build_dns_response(&dns_req, &query.name, query.qtype.clone(), vec![]);
|
||||||
if !query.name.ends_with(&base_domain) { return; }
|
let _ = socket.send_to(&resp, peer).await;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if !query.name.ends_with(&base_domain) {
|
||||||
|
let mut resp = DnsPacket::new_response(dns_req.id, &query.name, query.qtype.clone(), vec![]);
|
||||||
|
resp.flags = 0x8183; // NXDOMAIN
|
||||||
|
let _ = socket.send_to(&resp.encode(), peer).await;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Strip base domain and labels separator to get base32 subdomain
|
// Strip base domain and labels separator to get base32 subdomain
|
||||||
let subdomain = {
|
let subdomain = {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue