Skip to main content

Mountain/Binary/Build/DnsCommands/
dns_resolve.rs

1//! `dns_resolve` Tauri command - manual resolution helper used
2//! by the diagnostic panel and by `dns_test_resolution`.
3//!
4//! `land.playform.cloud` zone names resolve to 127.0.0.1; allowlisted
5//! external domains return a TEST-NET-1 placeholder; everything
6//! else fails with `error="Domain not in forward allowlist"`.
7
8use 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}