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
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}