func SetFromEnvironment() { CattleURL = getEnv("CATTLE_URL") CattleAccessKey = getEnv("CATTLE_ACCESS_KEY") CattleSecretKey = getEnv("CATTLE_SECRET_KEY") RootDomainName = utils.Fqdn(getEnv("ROOT_DOMAIN")) NameTemplate = os.Getenv("NAME_TEMPLATE") if len(NameTemplate) == 0 { NameTemplate = defaultNameTemplate } TTLEnv := os.Getenv("TTL") i, err := strconv.Atoi(TTLEnv) if err != nil { TTL = 300 } else { TTL = i } }
func (c *CloudflareProvider) GetRecords() ([]utils.DnsRecord, error) { var records []utils.DnsRecord result, err := c.client.Records.List(c.ctx, c.zone.ID) if err != nil { return records, fmt.Errorf("CloudFlare API call has failed: %v", err) } recordMap := map[string]map[string][]string{} recordTTLs := map[string]map[string]int{} for _, rec := range result { fqdn := utils.Fqdn(rec.Name) recordTTLs[fqdn] = map[string]int{} recordTTLs[fqdn][rec.Type] = rec.TTL recordSet, exists := recordMap[fqdn] if exists { recordSlice, sliceExists := recordSet[rec.Type] if sliceExists { recordSlice = append(recordSlice, rec.Content) recordSet[rec.Type] = recordSlice } else { recordSet[rec.Type] = []string{rec.Content} } } else { recordMap[fqdn] = map[string][]string{} recordMap[fqdn][rec.Type] = []string{rec.Content} } } for fqdn, recordSet := range recordMap { for recordType, recordSlice := range recordSet { ttl := recordTTLs[fqdn][recordType] record := utils.DnsRecord{Fqdn: fqdn, Records: recordSlice, Type: recordType, TTL: ttl} records = append(records, record) } } return records, nil }