https_dns/
utils.rs

1use crate::local::UdpListener;
2use crate::upstream::HttpsClient;
3use rand::{thread_rng, Rng};
4use trust_dns_proto::{
5    op::{Message, MessageType, Query},
6    rr::{Name, RecordType},
7};
8
9pub fn build_request_message(name: Name, record_type: RecordType) -> Message {
10    let mut request_message = Message::new();
11
12    let mut rng = thread_rng();
13    let message_id = rng.gen_range(0..=65535);
14    request_message.set_id(message_id);
15    request_message.set_message_type(MessageType::Query);
16    request_message.set_recursion_desired(true);
17
18    let query = Query::query(name, record_type);
19    request_message.add_query(query);
20
21    request_message
22}
23
24#[allow(dead_code)]
25pub async fn build_test_listener() -> UdpListener {
26    let upstream_address = String::from("cloudflare-dns.com");
27    let upstream_port = 443;
28    let local_address = String::from("127.0.0.1");
29    let local_port = 10053;
30
31    let https_client = HttpsClient::new(upstream_address, upstream_port)
32        .await
33        .unwrap();
34    UdpListener::new(local_address, local_port, https_client)
35        .await
36        .unwrap()
37}