Mountain/Binary/Build/DnsCommands/
dns_resolve.rs1
2use tauri::State;
10
11use crate::Binary::Build::{DnsCommands::DnsResolutionResult::DnsResolutionResult, Scheme::DnsPort};
12
13#[tauri::command]
14pub fn dns_resolve(domain:String, dns_port:State<DnsPort>) -> Result<DnsResolutionResult, String> {
15 if dns_port.0 == 0 {
16 return Err("DNS server is not running".to_string());
17 }
18
19 if domain.ends_with("land.playform.cloud") || domain.ends_with("land.playform.cloud.") {
20 return Ok(DnsResolutionResult {
21 domain:domain.clone(),
22 record_type:"A".to_string(),
23 addresses:vec!["127.0.0.1".to_string()],
24 ttl:3600,
25 succeeded:true,
26 error:None,
27 });
28 }
29
30 let allowlist = vec!["update.land.playform.cloud."];
31
32 let is_allowed = allowlist.iter().any(|d| {
33 let test_domain = if domain.ends_with('.') { domain.clone() } else { format!("{}.", domain) };
34 test_domain == *d || test_domain.ends_with(d)
35 });
36
37 if !is_allowed {
38 return Ok(DnsResolutionResult {
39 domain:domain.clone(),
40 record_type:"A".to_string(),
41 addresses:vec![],
42 ttl:0,
43 succeeded:false,
44 error:Some("Domain not in forward allowlist".to_string()),
45 });
46 }
47
48 Ok(DnsResolutionResult {
49 domain:domain.clone(),
50 record_type:"A".to_string(),
51 addresses:vec!["192.0.2.1".to_string()],
52 ttl:300,
53 succeeded:true,
54 error:None,
55 })
56}