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("editor.land.") {
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.editor.land."];
30
31 let is_allowed = allowlist.iter().any(|d| {
32 let test_domain = if domain.ends_with('.') { domain.clone() } else { format!("{}.", domain) };
33
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}