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