helper.go raw
1 package helper
2
3 import (
4 "fmt"
5 "net/url"
6 "strings"
7 )
8
9 func appendRootDot(zoneName string) string {
10 return fmt.Sprintf("%s.", zoneName)
11 }
12
13 func GetZoneFQDN(zoneName string) string {
14 result := zoneName
15 if len(zoneName) > 0 {
16 if lastChar := zoneName[len(zoneName)-1]; lastChar != '.' {
17 result = appendRootDot(zoneName)
18 }
19 }
20
21 return strings.ToLower(result)
22 }
23
24 func GetOwnerFQDN(owner, zone string) string {
25 result := GetZoneFQDN(owner)
26 if !strings.Contains(result, strings.ToLower(zone)) {
27 result = result + GetZoneFQDN(zone)
28 }
29
30 return strings.ToLower(result)
31 }
32
33 func GetRecordTypeFullString(key string) string {
34 var rrTypes = map[string]string{
35 "A": "A (1)",
36 "1": "A (1)",
37 "NS": "NS (2)",
38 "2": "NS (2)",
39 "CNAME": "CNAME (5)",
40 "5": "CNAME (5)",
41 "SOA": "SOA (6)",
42 "6": "SOA (6)",
43 "PTR": "PTR (12)",
44 "12": "PTR (12)",
45 "HINFO": "HINFO (13)",
46 "13": "HINFO (13)",
47 "MX": "MX (15)",
48 "15": "MX (15)",
49 "TXT": "TXT (16)",
50 "16": "TXT (16)",
51 "RP": "RP (17)",
52 "17": "RP (17)",
53 "AAAA": "AAAA (28)",
54 "28": "AAAA (28)",
55 "SRV": "SRV (33)",
56 "33": "SRV (33)",
57 "NAPTR": "NAPTR (35)",
58 "35": "NAPTR (35)",
59 "DS": "DS (43)",
60 "43": "DS (43)",
61 "SSHFP": "SSHFP (44)",
62 "44": "SSHFP (44)",
63 "TLSA": "TLSA (52)",
64 "52": "TLSA (52)",
65 "CDS": "CDS (59)",
66 "59": "CDS (59)",
67 "CDNSKEY": "CDNSKEY (60)",
68 "60": "CDNSKEY (60)",
69 "SVCB": "SVCB (64)",
70 "64": "SVCB (64)",
71 "HTTPS": "HTTPS (65)",
72 "65": "HTTPS (65)",
73 "SPF": "SPF (99)",
74 "99": "SPF (99)",
75 "CAA": "CAA (257)",
76 "257": "CAA (257)",
77 "APEXALIAS": "APEXALIAS (65282)",
78 "65282": "APEXALIAS (65282)",
79 }
80
81 return rrTypes[key]
82 }
83
84 func GetRecordTypeString(key string) string {
85 var rrTypes = map[string]string{
86 "A (1)": "A",
87 "NS (2)": "NS",
88 "CNAME (5)": "CNAME",
89 "SOA (6)": "SOA",
90 "PTR (12)": "PTR",
91 "HINFO (13)": "HINFO",
92 "MX (15)": "MX",
93 "TXT (16)": "TXT",
94 "RP (17)": "RP",
95 "AAAA (28)": "AAAA",
96 "SRV (33)": "SRV",
97 "NAPTR (35)": "NAPTR",
98 "DS (43)": "DS",
99 "SSHFP (44)": "SSHFP",
100 "TLSA (52)": "TLSA",
101 "CDS (59)": "CDS",
102 "CDNSKEY (60)": "CDNSKEY",
103 "SVCB (64)": "SVCB",
104 "HTTPS (65)": "HTTPS",
105 "SPF (99)": "SPF",
106 "CAA (257)": "CAA",
107 "APEXALIAS (65282)": "APEXALIAS",
108 }
109
110 return rrTypes[key]
111 }
112
113 func GetRecordTypeNumber(key string) string {
114 var rrTypes = map[string]string{
115 "A (1)": "1",
116 "NS (2)": "2",
117 "CNAME (5)": "5",
118 "SOA (6)": "6",
119 "PTR (12)": "12",
120 "HINFO (13)": "13",
121 "MX (15)": "15",
122 "TXT (16)": "16",
123 "RP (17)": "17",
124 "AAAA (28)": "28",
125 "SRV (33)": "33",
126 "NAPTR (35)": "35",
127 "DS (43)": "43",
128 "SSHFP (44)": "44",
129 "TLSA (52)": "52",
130 "CDS (59)": "59",
131 "CDNSKEY (60)": "60",
132 "SVCB (64)": "64",
133 "HTTPS (65)": "65",
134 "SPF (99)": "99",
135 "CAA (257)": "257",
136 "APEXALIAS (65282)": "65282",
137 }
138
139 return rrTypes[key]
140 }
141
142 func GetAccountName(id string) string {
143 geoAccount := strings.Split(id, ":")
144 if len(geoAccount) < 2 {
145 return id
146 }
147 return geoAccount[1]
148 }
149
150 func GetAccountNameFromURI(uri string) string {
151 geoAccount := strings.Split(uri, "/")
152 if len(geoAccount) < 2 {
153 return uri
154 }
155 return geoAccount[1]
156 }
157
158 func GetDirGroupURI(groupID, groupType string) string {
159 groupID = url.PathEscape(groupID)
160 groupData := strings.Split(groupID, ":")
161
162 if len(groupData) < 2 {
163 return fmt.Sprintf("accounts/%s/dirgroups/%s/%s", "", groupType, "")
164 }
165
166 return fmt.Sprintf("accounts/%s/dirgroups/%s/%s", groupData[1], groupType, groupData[0])
167 }
168
169 func GetDirGroupListURI(accountName, groupType string) string {
170 accountName = url.PathEscape(accountName)
171
172 return fmt.Sprintf("accounts/%s/dirgroups/%s", accountName, groupType)
173 }
174