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			record_type:"SOA".to_string(),
24			ttl:3600,
25			data:"ns1.editor.land. admin.editor.land. 1 3600 600 604800 86400".to_string(),
26		},
27		ZoneRecord {
28			name:"editor.land.".to_string(),
29			record_type:"NS".to_string(),
30			ttl:3600,
31			data:"ns1.editor.land.".to_string(),
32		},
33		ZoneRecord {
34			name:"editor.land.".to_string(),
35			record_type:"DNSKEY".to_string(),
36			ttl:432000,
37			data:"256 3 13 (ECDSA P-256 Zone Signing Key)".to_string(),
38		},
39		ZoneRecord {
40			name:"ns1.editor.land.".to_string(),
41			record_type:"A".to_string(),
42			ttl:3600,
43			data:"127.0.0.1".to_string(),
44		},
45		ZoneRecord {
46			name:"code.editor.land.".to_string(),
47			record_type:"A".to_string(),
48			ttl:3600,
49			data:"127.0.0.1".to_string(),
50		},
51		ZoneRecord {
52			name:"api.editor.land.".to_string(),
53			record_type:"A".to_string(),
54			ttl:3600,
55			data:"127.0.0.1".to_string(),
56		},
57		ZoneRecord {
58			name:"*.editor.land.".to_string(),
59			record_type:"A".to_string(),
60			ttl:3600,
61			data:"127.0.0.1".to_string(),
62		},
63	];
64
65	let rrsig_types = vec!["SOA", "NS", "DNSKEY", "A"];
66	for rtype in rrsig_types {
67		records.push(ZoneRecord {
68			name:"editor.land.".to_string(),
69			record_type:"RRSIG".to_string(),
70			ttl:432000,
71			data:format!("{} 13 2 432000 {} {} {} editor.land.", rtype, 0, 0, 0),
72		});
73	}
74
75	let record_count = records.len();
76
77	Ok(ZoneInfo { origin:"editor.land.".to_string(), record_count, records, has_dnssec:true })
78}