Skip to main content

Mountain/Binary/Build/DnsCommands/
dns_get_zone_info.rs

1#![allow(non_snake_case)]
2
3//! `dns_get_zone_info` Tauri command - returns the static
4//! `editor.land` zone snapshot (records + DNSSEC flag) used by
5//! the diagnostic panel.
6
7use tauri::State;
8
9use crate::Binary::Build::{
10	DnsCommands::{ZoneInfo::ZoneInfo, ZoneRecord::ZoneRecord},
11	Scheme::DnsPort,
12};
13
14#[tauri::command]
15pub fn dns_get_zone_info(dns_port:State<DnsPort>) -> Result<ZoneInfo, String> {
16	if dns_port.0 == 0 {
17		return Err("DNS server is not running".to_string());
18	}
19
20	let mut records = vec![
21		ZoneRecord {
22			name:"editor.land.".to_string(),
23
24			record_type:"SOA".to_string(),
25
26			ttl:3600,
27
28			data:"ns1.editor.land. admin.editor.land. 1 3600 600 604800 86400".to_string(),
29		},
30		ZoneRecord {
31			name:"editor.land.".to_string(),
32
33			record_type:"NS".to_string(),
34
35			ttl:3600,
36
37			data:"ns1.editor.land.".to_string(),
38		},
39		ZoneRecord {
40			name:"editor.land.".to_string(),
41
42			record_type:"DNSKEY".to_string(),
43
44			ttl:432000,
45
46			data:"256 3 13 (ECDSA P-256 Zone Signing Key)".to_string(),
47		},
48		ZoneRecord {
49			name:"ns1.editor.land.".to_string(),
50
51			record_type:"A".to_string(),
52
53			ttl:3600,
54
55			data:"127.0.0.1".to_string(),
56		},
57		ZoneRecord {
58			name:"code.editor.land.".to_string(),
59
60			record_type:"A".to_string(),
61
62			ttl:3600,
63
64			data:"127.0.0.1".to_string(),
65		},
66		ZoneRecord {
67			name:"api.editor.land.".to_string(),
68
69			record_type:"A".to_string(),
70
71			ttl:3600,
72
73			data:"127.0.0.1".to_string(),
74		},
75		ZoneRecord {
76			name:"*.editor.land.".to_string(),
77
78			record_type:"A".to_string(),
79
80			ttl:3600,
81
82			data:"127.0.0.1".to_string(),
83		},
84	];
85
86	let rrsig_types = vec!["SOA", "NS", "DNSKEY", "A"];
87
88	for rtype in rrsig_types {
89		records.push(ZoneRecord {
90			name:"editor.land.".to_string(),
91			record_type:"RRSIG".to_string(),
92			ttl:432000,
93			data:format!("{} 13 2 432000 {} {} {} editor.land.", rtype, 0, 0, 0),
94		});
95	}
96
97	let record_count = records.len();
98
99	Ok(ZoneInfo { origin:"editor.land.".to_string(), record_count, records, has_dnssec:true })
100}