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