Fixed multiple clippy warnings.

This commit is contained in:
Revertron
2021-12-25 18:40:36 +01:00
parent d776cca5b3
commit 797584c516
29 changed files with 313 additions and 360 deletions
+4 -4
View File
@@ -39,9 +39,9 @@ pub struct Zone {
impl Zone {
pub fn new(domain: String, m_name: String, r_name: String) -> Zone {
Zone {
domain: domain,
m_name: m_name,
r_name: r_name,
domain,
m_name,
r_name,
serial: 0,
refresh: 0,
retry: 0,
@@ -222,7 +222,7 @@ impl Authority {
None => continue
};
if &domain != qname {
if domain != qname {
continue;
}
+5 -5
View File
@@ -49,7 +49,7 @@ pub trait PacketBuffer {
self.write(((val >> 24) & 0xFF) as u8)?;
self.write(((val >> 16) & 0xFF) as u8)?;
self.write(((val >> 8) & 0xFF) as u8)?;
self.write(((val >> 0) & 0xFF) as u8)?;
self.write((val & 0xFF) as u8)?;
Ok(())
}
@@ -95,7 +95,7 @@ pub trait PacketBuffer {
let res = ((self.read()? as u32) << 24)
| ((self.read()? as u32) << 16)
| ((self.read()? as u32) << 8)
| ((self.read()? as u32) << 0);
| (self.read()? as u32);
Ok(res)
}
@@ -239,7 +239,7 @@ impl<'a, T> PacketBuffer for StreamPacketBuffer<'a, T> where T: Read + 'a {
fn read(&mut self) -> Result<u8> {
while self.pos >= self.buffer.len() {
let mut local_buffer = [0; 1];
self.stream.read(&mut local_buffer)?;
self.stream.read_exact(&mut local_buffer)?;
self.buffer.push(local_buffer[0]);
}
@@ -252,7 +252,7 @@ impl<'a, T> PacketBuffer for StreamPacketBuffer<'a, T> where T: Read + 'a {
fn get(&mut self, pos: usize) -> Result<u8> {
while pos >= self.buffer.len() {
let mut local_buffer = [0; 1];
self.stream.read(&mut local_buffer)?;
self.stream.read_exact(&mut local_buffer)?;
self.buffer.push(local_buffer[0]);
}
@@ -262,7 +262,7 @@ impl<'a, T> PacketBuffer for StreamPacketBuffer<'a, T> where T: Read + 'a {
fn get_range(&mut self, start: usize, len: usize) -> Result<&[u8]> {
while start + len > self.buffer.len() {
let mut local_buffer = [0; 1];
self.stream.read(&mut local_buffer)?;
self.stream.read_exact(&mut local_buffer)?;
self.buffer.push(local_buffer[0]);
}
+8 -10
View File
@@ -131,7 +131,7 @@ impl DnsNetworkClient {
let mut socket = TcpStream::connect(server)?;
write_packet_length(&mut socket, req_buffer.pos())?;
socket.write(&req_buffer.buf[0..req_buffer.pos])?;
socket.write_all(&req_buffer.buf[0..req_buffer.pos])?;
socket.flush()?;
let _ = read_packet_length(&mut socket)?;
@@ -409,7 +409,7 @@ impl HttpsDnsClient {
.max_idle_connections_per_host(8)
.max_idle_connections(16)
.resolver(move |addr: &str| {
let addr = match addr.find(":") {
let addr = match addr.find(':') {
Some(index) => addr[0..index].to_string(),
None => addr.to_string()
};
@@ -427,17 +427,15 @@ impl HttpsDnsClient {
for server in &servers {
if let Ok(res) = dns_client.send_udp_query(&addr, QueryType::A, server, true) {
for answer in &res.answers {
match answer {
DnsRecord::A { addr, .. } => result.push(IpAddr::V4(addr.clone())),
_ => {}
if let DnsRecord::A { addr, .. } = answer {
result.push(IpAddr::V4(*addr))
}
}
}
if let Ok(res) = dns_client.send_udp_query(&addr, QueryType::AAAA, server, true) {
for answer in &res.answers {
match answer {
DnsRecord::AAAA { addr, .. } => result.push(IpAddr::V6(addr.clone())),
_ => {}
if let DnsRecord::AAAA { addr, .. } = answer {
result.push(IpAddr::V6(*addr))
}
}
}
@@ -496,7 +494,7 @@ impl DnsClient for HttpsDnsClient {
let response = self.agent
.post(doh_url)
.set("Content-Type", "application/dns-message")
.send_bytes(&req_buffer.buffer.as_slice());
.send_bytes(req_buffer.buffer.as_slice());
match response {
Ok(response) => {
@@ -512,7 +510,7 @@ impl DnsClient for HttpsDnsClient {
.take(4096)
.read_to_end(&mut bytes)?;
let mut buffer = VectorPacketBuffer::new();
buffer.buffer.extend_from_slice(&bytes.as_slice());
buffer.buffer.extend_from_slice(bytes.as_slice());
if let Ok(packet) = DnsPacket::from_buffer(&mut buffer) {
return Ok(packet);
}
+6 -5
View File
@@ -20,13 +20,13 @@ impl HostsFilter {
file.read_to_string(&mut text).unwrap();
let mut map = HashMap::new();
let list: Vec<_> = text.split("\n").collect();
let list: Vec<_> = text.split('\n').collect();
for s in list {
if s.is_empty() || s.starts_with("#") {
if s.is_empty() || s.starts_with('#') {
continue;
}
let string = s.replace('\t', " ");
let parts: Vec<_> = string.splitn(2, " ").collect();
let parts: Vec<_> = string.splitn(2, ' ').collect();
if parts.len() != 2 {
continue;
}
@@ -34,6 +34,7 @@ impl HostsFilter {
let domain = parts[1].trim().to_owned();
if let Ok(addr) = ip.parse::<IpAddr>() {
if !domain.is_empty() {
#[allow(clippy::or_fun_call)]
map.entry(domain).or_insert(vec![addr]);
}
}
@@ -58,10 +59,10 @@ impl DnsFilter for HostsFilter {
for addr in list {
match addr {
IpAddr::V4(addr) if qtype == QueryType::A => {
packet.answers.push(DnsRecord::A { domain: qname.to_owned(), addr: addr.clone(), ttl: TransientTtl(2) });
packet.answers.push(DnsRecord::A { domain: qname.to_owned(), addr: *addr, ttl: TransientTtl(2) });
}
IpAddr::V6(addr) if qtype == QueryType::AAAA => {
packet.answers.push(DnsRecord::AAAA { domain: qname.to_owned(), addr: addr.clone(), ttl: TransientTtl(2) });
packet.answers.push(DnsRecord::AAAA { domain: qname.to_owned(), addr: *addr, ttl: TransientTtl(2) });
}
_ => {}
}
+2 -2
View File
@@ -3,7 +3,7 @@ use std::net::TcpStream;
pub fn read_packet_length(stream: &mut TcpStream) -> Result<u16> {
let mut len_buffer = [0; 2];
stream.read(&mut len_buffer)?;
stream.read_exact(&mut len_buffer)?;
Ok(((len_buffer[0] as u16) << 8) | (len_buffer[1] as u16))
}
@@ -13,7 +13,7 @@ pub fn write_packet_length(stream: &mut TcpStream, len: usize) -> Result<()> {
len_buffer[0] = (len >> 8) as u8;
len_buffer[1] = (len & 0xFF) as u8;
stream.write(&len_buffer)?;
stream.write_all(&len_buffer)?;
Ok(())
}
+30 -38
View File
@@ -1,7 +1,5 @@
//! implements the DNS protocol in a transport agnostic fashion
//use std::io::{Error, ErrorKind};
use std::cmp::Ordering;
use std::fmt;
use std::hash::{Hash, Hasher};
use std::net::{Ipv4Addr, Ipv6Addr};
@@ -78,18 +76,12 @@ impl QueryType {
}
}
#[derive(Copy, Clone, Debug, Eq, Ord, Serialize, Deserialize)]
#[derive(Copy, Clone, Debug, Eq, PartialOrd, Ord, Serialize, Deserialize)]
pub struct TransientTtl(pub u32);
impl PartialEq<TransientTtl> for TransientTtl {
fn eq(&self, _: &TransientTtl) -> bool {
true
}
}
impl PartialOrd<TransientTtl> for TransientTtl {
fn partial_cmp(&self, _: &TransientTtl) -> Option<Ordering> {
Some(Ordering::Equal)
fn eq(&self, other: &TransientTtl) -> bool {
self.0 == other.0
}
}
@@ -200,7 +192,7 @@ impl DnsRecord {
((raw_addr >> 24) & 0xFF) as u8,
((raw_addr >> 16) & 0xFF) as u8,
((raw_addr >> 8) & 0xFF) as u8,
((raw_addr >> 0) & 0xFF) as u8
(raw_addr & 0xFF) as u8
);
Ok(DnsRecord::A { domain, addr, ttl: TransientTtl(ttl) })
@@ -212,13 +204,13 @@ impl DnsRecord {
let raw_addr4 = buffer.read_u32()?;
let addr = Ipv6Addr::new(
((raw_addr1 >> 16) & 0xFFFF) as u16,
((raw_addr1 >> 0) & 0xFFFF) as u16,
(raw_addr1 & 0xFFFF) as u16,
((raw_addr2 >> 16) & 0xFFFF) as u16,
((raw_addr2 >> 0) & 0xFFFF) as u16,
(raw_addr2 & 0xFFFF) as u16,
((raw_addr3 >> 16) & 0xFFFF) as u16,
((raw_addr3 >> 0) & 0xFFFF) as u16,
(raw_addr3 & 0xFFFF) as u16,
((raw_addr4 >> 16) & 0xFFFF) as u16,
((raw_addr4 >> 0) & 0xFFFF) as u16
(raw_addr4 & 0xFFFF) as u16
);
Ok(DnsRecord::AAAA { domain, addr, ttl: TransientTtl(ttl) })
@@ -578,7 +570,7 @@ impl ResultCode {
3 => ResultCode::NXDOMAIN,
4 => ResultCode::NOTIMP,
5 => ResultCode::REFUSED,
0 | _ => ResultCode::NOERROR
_ => ResultCode::NOERROR
}
}
}
@@ -642,7 +634,7 @@ impl DnsHeader {
)?;
buffer.write_u8(
(self.rescode.clone() as u8)
(self.rescode as u8)
| ((self.checking_disabled as u8) << 4)
| ((self.authed_data as u8) << 5)
| ((self.z as u8) << 6)
@@ -691,25 +683,25 @@ impl DnsHeader {
impl fmt::Display for DnsHeader {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "DnsHeader:\n")?;
write!(f, "\tid: {0}\n", self.id)?;
writeln!(f, "DnsHeader:")?;
writeln!(f, "\tid: {0}", self.id)?;
write!(f, "\trecursion_desired: {0}\n", self.recursion_desired)?;
write!(f, "\ttruncated_message: {0}\n", self.truncated_message)?;
write!(f, "\tauthoritative_answer: {0}\n", self.authoritative_answer)?;
write!(f, "\topcode: {0}\n", self.opcode)?;
write!(f, "\tresponse: {0}\n", self.response)?;
writeln!(f, "\trecursion_desired: {0}", self.recursion_desired)?;
writeln!(f, "\ttruncated_message: {0}", self.truncated_message)?;
writeln!(f, "\tauthoritative_answer: {0}", self.authoritative_answer)?;
writeln!(f, "\topcode: {0}", self.opcode)?;
writeln!(f, "\tresponse: {0}", self.response)?;
write!(f, "\trescode: {:?}\n", self.rescode)?;
write!(f, "\tchecking_disabled: {0}\n", self.checking_disabled)?;
write!(f, "\tauthed_data: {0}\n", self.authed_data)?;
write!(f, "\tz: {0}\n", self.z)?;
write!(f, "\trecursion_available: {0}\n", self.recursion_available)?;
writeln!(f, "\trescode: {:?}", self.rescode)?;
writeln!(f, "\tchecking_disabled: {0}", self.checking_disabled)?;
writeln!(f, "\tauthed_data: {0}", self.authed_data)?;
writeln!(f, "\tz: {0}", self.z)?;
writeln!(f, "\trecursion_available: {0}", self.recursion_available)?;
write!(f, "\tquestions: {0}\n", self.questions)?;
write!(f, "\tanswers: {0}\n", self.answers)?;
write!(f, "\tauthoritative_entries: {0}\n", self.authoritative_entries)?;
write!(f, "\tresource_entries: {0}\n", self.resource_entries)?;
writeln!(f, "\tquestions: {0}", self.questions)?;
writeln!(f, "\tanswers: {0}", self.answers)?;
writeln!(f, "\tauthoritative_entries: {0}", self.authoritative_entries)?;
writeln!(f, "\tresource_entries: {0}", self.resource_entries)?;
Ok(())
}
@@ -752,9 +744,9 @@ impl DnsQuestion {
impl fmt::Display for DnsQuestion {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "DnsQuestion:\n")?;
write!(f, "\tname: {0}\n", self.name)?;
write!(f, "\trecord type: {:?}\n", self.qtype)?;
writeln!(f, "DnsQuestion:")?;
writeln!(f, "\tname: {0}", self.name)?;
writeln!(f, "\trecord type: {:?}", self.qtype)?;
Ok(())
}
@@ -946,7 +938,7 @@ impl DnsPacket {
let mut test_buffer = VectorPacketBuffer::new();
let mut size = self.header.binary_len();
for ref question in &self.questions {
for question in &self.questions {
size += question.binary_len();
question.write(&mut test_buffer)?;
}
+6 -6
View File
@@ -153,7 +153,7 @@ impl DnsResolver for RecursiveDnsResolver {
}
}
let mut ns = tentative_ns.ok_or_else(|| ResolveError::NoServerFound)?;
let mut ns = tentative_ns.ok_or(ResolveError::NoServerFound)?;
// Start querying name servers
loop {
@@ -162,21 +162,21 @@ impl DnsResolver for RecursiveDnsResolver {
let ns_copy = ns.clone();
let server = format!("{}:{}", ns_copy.as_str(), 53);
let response = self.context.old_client.send_query(qname, qtype.clone(), &server, false)?;
let response = self.context.old_client.send_query(qname, qtype, &server, false)?;
// If we've got an actual answer, we're done!
if !response.answers.is_empty() && response.header.rescode == ResultCode::NOERROR {
let _ = self.context.cache.store(&response.answers);
let _ = self.context.cache.store(&response.authorities);
let _ = self.context.cache.store(&response.resources);
return Ok(response.clone());
return Ok(response);
}
if response.header.rescode == ResultCode::NXDOMAIN {
if let Some(ttl) = response.get_ttl_from_soa() {
let _ = self.context.cache.store_nxdomain(qname, qtype, ttl);
}
return Ok(response.clone());
return Ok(response);
}
// Otherwise, try to find a new nameserver based on NS and a
@@ -194,7 +194,7 @@ impl DnsResolver for RecursiveDnsResolver {
// If not, we'll have to resolve the ip of a NS record
let new_ns_name = match response.get_unresolved_ns(qname) {
Some(x) => x,
None => return Ok(response.clone())
None => return Ok(response)
};
// Recursively resolve the NS
@@ -204,7 +204,7 @@ impl DnsResolver for RecursiveDnsResolver {
if let Some(new_ns) = recursive_response.get_random_a() {
ns = new_ns.clone();
} else {
return Ok(response.clone());
return Ok(response);
}
}
}
+3 -3
View File
@@ -67,8 +67,8 @@ fn resolve_cnames(lookup_list: &[DnsRecord], results: &mut Vec<DnsPacket>, resol
return;
}
for ref rec in lookup_list {
match **rec {
for rec in lookup_list {
match *rec {
DnsRecord::CNAME { ref host, .. } | DnsRecord::SRV { ref host, .. } => {
if let Ok(result2) = resolver.resolve(host, qtype, true) {
let new_unmatched = result2.get_unresolved_cnames(qtype);
@@ -268,7 +268,7 @@ impl DnsServer for DnsUdpServer {
}
};
// If we got a request resent in 100ms interval, then we just skip it
let key = (src.clone(), request.header.id);
let key = (src, request.header.id);
let cur_time = Utc::now().timestamp_millis();
if let Some(time) = working_ids.get(&key) {
if time + 100 > cur_time {