Mountain/Binary/Build/DnsCommands/
dns_get_zone_info.rs1#![allow(non_snake_case)]
2
3use 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}