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}