2020-04-18 01:58:44 +08:00
|
|
|
package netcup
|
|
|
|
|
|
|
|
import (
|
|
|
|
"encoding/json"
|
|
|
|
"fmt"
|
2022-08-15 08:46:56 +08:00
|
|
|
|
2020-04-18 01:58:44 +08:00
|
|
|
"github.com/StackExchange/dnscontrol/v3/models"
|
|
|
|
"github.com/StackExchange/dnscontrol/v3/pkg/diff"
|
2022-12-12 04:02:58 +08:00
|
|
|
"github.com/StackExchange/dnscontrol/v3/pkg/diff2"
|
2020-04-18 01:58:44 +08:00
|
|
|
"github.com/StackExchange/dnscontrol/v3/providers"
|
|
|
|
)
|
|
|
|
|
|
|
|
var features = providers.DocumentationNotes{
|
2022-03-03 00:19:15 +08:00
|
|
|
providers.CanGetZones: providers.Cannot(),
|
|
|
|
providers.CanUseCAA: providers.Can(),
|
|
|
|
providers.CanUsePTR: providers.Cannot(),
|
|
|
|
providers.CanUseSRV: providers.Can(),
|
2020-04-18 01:58:44 +08:00
|
|
|
providers.DocCreateDomains: providers.Cannot(),
|
|
|
|
providers.DocDualHost: providers.Cannot(),
|
|
|
|
providers.DocOfficiallySupported: providers.Cannot(),
|
|
|
|
}
|
|
|
|
|
|
|
|
func init() {
|
2021-03-08 02:19:22 +08:00
|
|
|
fns := providers.DspFuncs{
|
2021-05-05 02:15:31 +08:00
|
|
|
Initializer: New,
|
2021-03-09 09:14:30 +08:00
|
|
|
RecordAuditor: AuditRecords,
|
2021-03-08 02:19:22 +08:00
|
|
|
}
|
|
|
|
providers.RegisterDomainServiceProviderType("NETCUP", fns, features)
|
2020-04-18 01:58:44 +08:00
|
|
|
}
|
|
|
|
|
2020-06-18 21:37:57 +08:00
|
|
|
// New creates a new API handle.
|
2020-04-18 01:58:44 +08:00
|
|
|
func New(settings map[string]string, _ json.RawMessage) (providers.DNSServiceProvider, error) {
|
|
|
|
if settings["api-key"] == "" || settings["api-password"] == "" || settings["customer-number"] == "" {
|
|
|
|
return nil, fmt.Errorf("missing netcup login parameters")
|
|
|
|
}
|
|
|
|
|
2020-10-26 21:25:30 +08:00
|
|
|
api := &netcupProvider{}
|
2020-04-18 01:58:44 +08:00
|
|
|
err := api.login(settings["api-key"], settings["api-password"], settings["customer-number"])
|
|
|
|
if err != nil {
|
|
|
|
return nil, fmt.Errorf("login to netcup DNS failed, please check your credentials: %v", err)
|
|
|
|
}
|
|
|
|
return api, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// GetZoneRecords gets the records of a zone and returns them in RecordConfig format.
|
2020-10-26 21:25:30 +08:00
|
|
|
func (api *netcupProvider) GetZoneRecords(domain string) (models.Records, error) {
|
2020-04-18 01:58:44 +08:00
|
|
|
records, err := api.getRecords(domain)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
existingRecords := make([]*models.RecordConfig, len(records))
|
|
|
|
for i := range records {
|
|
|
|
existingRecords[i] = toRecordConfig(domain, &records[i])
|
|
|
|
}
|
|
|
|
return existingRecords, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// GetNameservers returns the nameservers for a domain.
|
|
|
|
// As netcup doesn't support setting nameservers over this API, these are static.
|
|
|
|
// Domains not managed by netcup DNS will return an error
|
2020-10-26 21:25:30 +08:00
|
|
|
func (api *netcupProvider) GetNameservers(domain string) ([]*models.Nameserver, error) {
|
2020-04-18 01:58:44 +08:00
|
|
|
return models.ToNameservers([]string{
|
|
|
|
"root-dns.netcup.net",
|
|
|
|
"second-dns.netcup.net",
|
|
|
|
"third-dns.netcup.net",
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
// GetDomainCorrections returns the corrections for a domain.
|
2020-10-26 21:25:30 +08:00
|
|
|
func (api *netcupProvider) GetDomainCorrections(dc *models.DomainConfig) ([]*models.Correction, error) {
|
2020-04-18 01:58:44 +08:00
|
|
|
dc, err := dc.Copy()
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
dc.Punycode()
|
|
|
|
domain := dc.Name
|
|
|
|
|
|
|
|
// Setting the TTL is not supported for netcup
|
|
|
|
for _, r := range dc.Records {
|
|
|
|
r.TTL = 0
|
|
|
|
}
|
|
|
|
|
|
|
|
// Filter out types we can't modify (like NS)
|
|
|
|
newRecords := models.Records{}
|
|
|
|
for _, r := range dc.Records {
|
|
|
|
if r.Type != "NS" {
|
|
|
|
newRecords = append(newRecords, r)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
dc.Records = newRecords
|
|
|
|
|
|
|
|
// Check existing set
|
|
|
|
existingRecords, err := api.GetZoneRecords(domain)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Normalize
|
|
|
|
models.PostProcessRecords(existingRecords)
|
Autosplit long TXT records disabled (#1481)
providers-test-netcup.log appended:
=== RUN TestDNSProviders
=== RUN TestDNSProviders/oXXX.de
=== RUN TestDNSProviders/oXXX.de/Clean_Slate:Empty
integration_test.go:220: DELETE A test.oXXX.de 1.2.3.4 ttl=0, Netcup ID: 50790741
=== RUN TestDNSProviders/oXXX.de/00:GeneralACD:Create_an_A_record
integration_test.go:220: CREATE A oXXX.de 1.1.1.1 ttl=0
=== RUN TestDNSProviders/oXXX.de/00:GeneralACD:Change_it
integration_test.go:220: MODIFY A oXXX.de: (1.1.1.1 ttl=0) -> (1.2.3.4 ttl=0), Netcup ID: 50825306:
=== RUN TestDNSProviders/oXXX.de/00:GeneralACD:Add_another
integration_test.go:220: CREATE A www.oXXX.de 1.2.3.4 ttl=0
=== RUN TestDNSProviders/oXXX.de/00:GeneralACD:Add_another(same_name)
integration_test.go:220: CREATE A www.oXXX.de 5.6.7.8 ttl=0
=== RUN TestDNSProviders/oXXX.de/00:GeneralACD:Change_a_ttl
integration_test.go:216: Expected changes, but got none
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty
integration_test.go:220: DELETE A oXXX.de 1.2.3.4 ttl=0, Netcup ID: 50825306
integration_test.go:220: DELETE A www.oXXX.de 1.2.3.4 ttl=0, Netcup ID: 50825307
integration_test.go:220: DELETE A www.oXXX.de 5.6.7.8 ttl=0, Netcup ID: 50825308
=== RUN TestDNSProviders/oXXX.de/01:WildcardACD:Create_wildcard
integration_test.go:220: CREATE A *.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A www.oXXX.de 1.1.1.1 ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#01
integration_test.go:220: DELETE A *.oXXX.de 1.2.3.4 ttl=0, Netcup ID: 50825309
integration_test.go:220: DELETE A www.oXXX.de 1.1.1.1 ttl=0, Netcup ID: 50825310
=== RUN TestDNSProviders/oXXX.de/02:CNAME:Create_a_CNAME
integration_test.go:220: CREATE CNAME foo.oXXX.de google.com. ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#02
integration_test.go:220: DELETE CNAME foo.oXXX.de google.com. ttl=0, Netcup ID: 50825311
=== RUN TestDNSProviders/oXXX.de/03:MX:MX_record
integration_test.go:220: CREATE MX oXXX.de 5 foo.com. ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#03
integration_test.go:220: DELETE MX oXXX.de 5 foo.com. ttl=0, Netcup ID: 50825312
=== RUN TestDNSProviders/oXXX.de/04:Null_MX_***SKIPPED(excluded_by_not("NETCUP"))***:Empty
=== RUN TestDNSProviders/oXXX.de/05:NS_***SKIPPED(excluded_by_not("NETCUP"))***:Empty
=== RUN TestDNSProviders/oXXX.de/06:IGNORE_NAME_function:Create_some_records
integration_test.go:220: CREATE TXT foo.oXXX.de "simple" ttl=0
integration_test.go:220: CREATE A foo.oXXX.de 1.2.3.4 ttl=0
integration_test.go:239: Expected 0 corrections on second run, but found 1.
integration_test.go:241: UNEXPECTED #0: CREATE TXT foo.oXXX.de "simple" ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#04
integration_test.go:220: DELETE A foo.oXXX.de 1.2.3.4 ttl=0, Netcup ID: 50825313
=== RUN TestDNSProviders/oXXX.de/07:IGNORE_NAME_apex:Create_some_records
integration_test.go:220: CREATE TXT bar.oXXX.de "stringbar" ttl=0
integration_test.go:220: CREATE A bar.oXXX.de 2.4.6.8 ttl=0
integration_test.go:220: CREATE A oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE TXT oXXX.de "simple" ttl=0
integration_test.go:239: Expected 0 corrections on second run, but found 2.
integration_test.go:241: UNEXPECTED #0: CREATE TXT bar.oXXX.de "stringbar" ttl=0
integration_test.go:241: UNEXPECTED #1: CREATE TXT oXXX.de "simple" ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#05
integration_test.go:220: DELETE A bar.oXXX.de 2.4.6.8 ttl=0, Netcup ID: 50825314
integration_test.go:220: DELETE A oXXX.de 1.2.3.4 ttl=0, Netcup ID: 50825315
=== RUN TestDNSProviders/oXXX.de/08:IGNORE_TARGET_function:Create_some_records
integration_test.go:220: CREATE CNAME bar.oXXX.de test.bar.com. ttl=0
integration_test.go:220: CREATE CNAME foo.oXXX.de test.foo.com. ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#06
integration_test.go:220: DELETE CNAME bar.oXXX.de test.bar.com. ttl=0, Netcup ID: 50825316
integration_test.go:220: DELETE CNAME foo.oXXX.de test.foo.com. ttl=0, Netcup ID: 50825317
=== RUN TestDNSProviders/oXXX.de/09:simple_TXT:Create_a_TXT
integration_test.go:220: CREATE TXT foo.oXXX.de "simple" ttl=0
integration_test.go:239: Expected 0 corrections on second run, but found 1.
integration_test.go:241: UNEXPECTED #0: CREATE TXT foo.oXXX.de "simple" ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#07
=== RUN TestDNSProviders/oXXX.de/10:simple_TXT-spf1:Create_a_TXT/SPF
integration_test.go:220: CREATE TXT foo.oXXX.de "v=spf1 ip4:99.99.99.99 -all" ttl=0
integration_test.go:239: Expected 0 corrections on second run, but found 1.
integration_test.go:241: UNEXPECTED #0: CREATE TXT foo.oXXX.de "v=spf1 ip4:99.99.99.99 -all" ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#08
=== RUN TestDNSProviders/oXXX.de/11:long_TXT:Create_long_TXT
integration_test.go:220: CREATE TXT foo.oXXX.de "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" ttl=0
integration_test.go:239: Expected 0 corrections on second run, but found 1.
integration_test.go:241: UNEXPECTED #0: CREATE TXT foo.oXXX.de "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#09
=== RUN TestDNSProviders/oXXX.de/12:complex_TXT:TXT_with_0-octel_string
integration_test.go:206: ***SKIPPED(PROVIDER DOES NOT SUPPORT 'txtstring is empty' ::"12:complex TXT")
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#10
=== RUN TestDNSProviders/oXXX.de/13:long_TXT:Create_a_505_TXT
integration_test.go:220: CREATE TXT foo257.oXXX.de "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE" ttl=0
integration_test.go:239: Expected 0 corrections on second run, but found 1.
integration_test.go:241: UNEXPECTED #0: CREATE TXT foo257.oXXX.de "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE" ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#11
=== RUN TestDNSProviders/oXXX.de/14:TXTMulti:Create_TXTMulti_1
integration_test.go:220: CREATE TXT foo1.oXXX.de "simple" ttl=0
integration_test.go:239: Expected 0 corrections on second run, but found 1.
integration_test.go:241: UNEXPECTED #0: CREATE TXT foo1.oXXX.de "simple" ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#12
=== RUN TestDNSProviders/oXXX.de/15:TXTMulti-same:Create_TXTMulti_1
integration_test.go:220: CREATE TXT foo.oXXX.de "simple" ttl=0
integration_test.go:239: Expected 0 corrections on second run, but found 1.
integration_test.go:241: UNEXPECTED #0: CREATE TXT foo.oXXX.de "simple" ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#13
=== RUN TestDNSProviders/oXXX.de/16:TypeChange:Create_a_CNAME
integration_test.go:220: CREATE CNAME foo.oXXX.de google.com. ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#14
integration_test.go:220: DELETE CNAME foo.oXXX.de google.com. ttl=0, Netcup ID: 50825318
=== RUN TestDNSProviders/oXXX.de/17:Case_Sensitivity:Create_CAPS
integration_test.go:220: CREATE MX bar.oXXX.de 5 bar.com. ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#15
integration_test.go:220: DELETE MX bar.oXXX.de 5 bar.com. ttl=0, Netcup ID: 50825319
=== RUN TestDNSProviders/oXXX.de/18:IDNA:Internationalized_name
integration_test.go:220: CREATE A xn--ndaaa.oXXX.de 1.2.3.4 ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#16
integration_test.go:220: DELETE A xn--ndaaa.oXXX.de 1.2.3.4 ttl=0, Netcup ID: 50825320
=== RUN TestDNSProviders/oXXX.de/19:IDNAs_in_CNAME_targets:IDN_CNAME_AND_Target
integration_test.go:220: CREATE CNAME xn--o-0gab.oXXX.de xn--ndaaa.xn--vhquv. ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#17
integration_test.go:220: DELETE CNAME xn--o-0gab.oXXX.de xn--ndaaa.xn--vhquv. ttl=0, Netcup ID: 50825321
=== RUN TestDNSProviders/oXXX.de/20:pager101:99_records
integration_test.go:220: CREATE A rec0000.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0001.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0002.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0003.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0004.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0005.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0006.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0007.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0008.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0009.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0010.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0011.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0012.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0013.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0014.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0015.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0016.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0017.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0018.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0019.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0020.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0021.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0022.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0023.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0024.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0025.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0026.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0027.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0028.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0029.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0030.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0031.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0032.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0033.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0034.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0035.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0036.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0037.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0038.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0039.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0040.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0041.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0042.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0043.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0044.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0045.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0046.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0047.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0048.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0049.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0050.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0051.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0052.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0053.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0054.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0055.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0056.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0057.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0058.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0059.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0060.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0061.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0062.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0063.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0064.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0065.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0066.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0067.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0068.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0069.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0070.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0071.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0072.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0073.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0074.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0075.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0076.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0077.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0078.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0079.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0080.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0081.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0082.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0083.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0084.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0085.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0086.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0087.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0088.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0089.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0090.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0091.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0092.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0093.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0094.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0095.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0096.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0097.oXXX.de 1.2.3.4 ttl=0
integration_test.go:220: CREATE A rec0098.oXXX.de 1.2.3.4 ttl=0
integration_test.go:239: Expected 0 corrections on second run, but found 99.
integration_test.go:241: UNEXPECTED #0: CREATE A rec0000.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #1: CREATE A rec0001.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #2: CREATE A rec0002.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #3: CREATE A rec0003.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #4: CREATE A rec0004.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #5: CREATE A rec0005.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #6: CREATE A rec0006.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #7: CREATE A rec0007.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #8: CREATE A rec0008.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #9: CREATE A rec0009.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #10: CREATE A rec0010.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #11: CREATE A rec0011.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #12: CREATE A rec0012.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #13: CREATE A rec0013.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #14: CREATE A rec0014.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #15: CREATE A rec0015.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #16: CREATE A rec0016.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #17: CREATE A rec0017.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #18: CREATE A rec0018.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #19: CREATE A rec0019.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #20: CREATE A rec0020.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #21: CREATE A rec0021.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #22: CREATE A rec0022.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #23: CREATE A rec0023.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #24: CREATE A rec0024.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #25: CREATE A rec0025.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #26: CREATE A rec0026.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #27: CREATE A rec0027.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #28: CREATE A rec0028.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #29: CREATE A rec0029.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #30: CREATE A rec0030.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #31: CREATE A rec0031.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #32: CREATE A rec0032.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #33: CREATE A rec0033.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #34: CREATE A rec0034.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #35: CREATE A rec0035.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #36: CREATE A rec0036.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #37: CREATE A rec0037.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #38: CREATE A rec0038.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #39: CREATE A rec0039.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #40: CREATE A rec0040.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #41: CREATE A rec0041.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #42: CREATE A rec0042.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #43: CREATE A rec0043.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #44: CREATE A rec0044.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #45: CREATE A rec0045.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #46: CREATE A rec0046.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #47: CREATE A rec0047.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #48: CREATE A rec0048.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #49: CREATE A rec0049.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #50: CREATE A rec0050.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #51: CREATE A rec0051.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #52: CREATE A rec0052.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #53: CREATE A rec0053.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #54: CREATE A rec0054.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #55: CREATE A rec0055.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #56: CREATE A rec0056.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #57: CREATE A rec0057.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #58: CREATE A rec0058.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #59: CREATE A rec0059.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #60: CREATE A rec0060.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #61: CREATE A rec0061.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #62: CREATE A rec0062.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #63: CREATE A rec0063.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #64: CREATE A rec0064.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #65: CREATE A rec0065.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #66: CREATE A rec0066.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #67: CREATE A rec0067.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #68: CREATE A rec0068.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #69: CREATE A rec0069.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #70: CREATE A rec0070.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #71: CREATE A rec0071.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #72: CREATE A rec0072.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #73: CREATE A rec0073.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #74: CREATE A rec0074.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #75: CREATE A rec0075.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #76: CREATE A rec0076.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #77: CREATE A rec0077.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #78: CREATE A rec0078.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #79: CREATE A rec0079.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #80: CREATE A rec0080.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #81: CREATE A rec0081.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #82: CREATE A rec0082.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #83: CREATE A rec0083.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #84: CREATE A rec0084.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #85: CREATE A rec0085.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #86: CREATE A rec0086.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #87: CREATE A rec0087.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #88: CREATE A rec0088.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #89: CREATE A rec0089.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #90: CREATE A rec0090.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #91: CREATE A rec0091.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #92: CREATE A rec0092.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #93: CREATE A rec0093.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #94: CREATE A rec0094.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #95: CREATE A rec0095.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #96: CREATE A rec0096.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #97: CREATE A rec0097.oXXX.de 1.2.3.4 ttl=0
integration_test.go:241: UNEXPECTED #98: CREATE A rec0098.oXXX.de 1.2.3.4 ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#18
=== RUN TestDNSProviders/oXXX.de/21:pager601_***SKIPPED(disabled_by_only)***:Empty
=== RUN TestDNSProviders/oXXX.de/22:pager1201_***SKIPPED(disabled_by_only)***:Empty
=== RUN TestDNSProviders/oXXX.de/23:CAA:CAA_record
integration_test.go:220: CREATE CAA oXXX.de 0 issue "letsencrypt.org" ttl=0
integration_test.go:239: Expected 0 corrections on second run, but found 1.
integration_test.go:241: UNEXPECTED #0: CREATE CAA oXXX.de 0 issue "letsencrypt.org" ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#19
=== RUN TestDNSProviders/oXXX.de/24:CAA_with_;:CAA_many_records
integration_test.go:220: CREATE CAA oXXX.de 0 issuewild ";" ttl=0
integration_test.go:239: Expected 0 corrections on second run, but found 1.
integration_test.go:241: UNEXPECTED #0: CREATE CAA oXXX.de 0 issuewild ";" ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#20
=== RUN TestDNSProviders/oXXX.de/25:Issue_1374:CAA_spaces
integration_test.go:220: CREATE CAA oXXX.de 0 issue "letsencrypt.org; validationmethods=dns-01; accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/1234" ttl=0
integration_test.go:239: Expected 0 corrections on second run, but found 1.
integration_test.go:241: UNEXPECTED #0: CREATE CAA oXXX.de 0 issue "letsencrypt.org; validationmethods=dns-01; accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/1234" ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#21
=== RUN TestDNSProviders/oXXX.de/26:NAPTR_***SKIPPED(CanUseNAPTR_not_supported)***:Empty
=== RUN TestDNSProviders/oXXX.de/27:PTR_***SKIPPED(CanUsePTR_not_supported)***:Empty
=== RUN TestDNSProviders/oXXX.de/28:SOA_***SKIPPED(CanUseSOA_not_supported)***:Empty
=== RUN TestDNSProviders/oXXX.de/29:SRV:SRV_record
integration_test.go:220: CREATE SRV _sip._tcp.oXXX.de 5 6 7 foo.com. ttl=0
integration_test.go:239: Expected 0 corrections on second run, but found 1.
integration_test.go:241: UNEXPECTED #0: CREATE SRV _sip._tcp.oXXX.de 5 6 7 foo.com. ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#22
=== RUN TestDNSProviders/oXXX.de/30:SRV_w/_null_target:Null_Target
integration_test.go:220: CREATE SRV _sip._tcp.oXXX.de 52 62 72 foo.com. ttl=0
integration_test.go:220: CREATE SRV _sip._tcp.oXXX.de 15 65 75 . ttl=0
integration_test.go:239: Expected 0 corrections on second run, but found 2.
integration_test.go:241: UNEXPECTED #0: CREATE SRV _sip._tcp.oXXX.de 52 62 72 foo.com. ttl=0
integration_test.go:241: UNEXPECTED #1: CREATE SRV _sip._tcp.oXXX.de 15 65 75 . ttl=0
=== RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#23
=== RUN TestDNSProviders/oXXX.de/31:SSHFP_***SKIPPED(CanUseSSHFP_not_supported)***:Empty
=== RUN TestDNSProviders/oXXX.de/32:TLSA_***SKIPPED(CanUseTLSA_not_supported)***:Empty
=== RUN TestDNSProviders/oXXX.de/33:DS_***SKIPPED(CanUseDS_not_supported)***:Empty
=== RUN TestDNSProviders/oXXX.de/34:DS_(children_only)_***SKIPPED(CanUseDSForChildren_not_supported)***:Empty
=== RUN TestDNSProviders/oXXX.de/35:DS_(children_only)_CLOUDNS_***SKIPPED(CanUseDSForChildren_not_supported)***:Empty
=== RUN TestDNSProviders/oXXX.de/36:ALIAS_***SKIPPED(CanUseAlias_not_supported)***:Empty
=== RUN TestDNSProviders/oXXX.de/37:AZURE_ALIAS_***SKIPPED(CanUseAzureAlias_not_supported)***:Empty
=== RUN TestDNSProviders/oXXX.de/38:R53_ALIAS2_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty
=== RUN TestDNSProviders/oXXX.de/39:R53_ALIAS_ORDER_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty
=== RUN TestDNSProviders/oXXX.de/40:CF_REDIRECT_***SKIPPED(disabled_by_only)***:Empty
=== RUN TestDNSProviders/oXXX.de/41:CF_PROXY_***SKIPPED(disabled_by_only)***:Empty
=== RUN TestDNSProviders/oXXX.de/42:CF_WORKER_ROUTE_***SKIPPED(disabled_by_only)***:Empty
--- FAIL: TestDNSProviders (25.84s)
--- FAIL: TestDNSProviders/oXXX.de (24.98s)
--- PASS: TestDNSProviders/oXXX.de/Clean_Slate:Empty (0.25s)
--- PASS: TestDNSProviders/oXXX.de/00:GeneralACD:Create_an_A_record (0.33s)
--- PASS: TestDNSProviders/oXXX.de/00:GeneralACD:Change_it (0.32s)
--- PASS: TestDNSProviders/oXXX.de/00:GeneralACD:Add_another (0.34s)
--- PASS: TestDNSProviders/oXXX.de/00:GeneralACD:Add_another(same_name) (0.38s)
--- FAIL: TestDNSProviders/oXXX.de/00:GeneralACD:Change_a_ttl (0.11s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty (0.59s)
--- PASS: TestDNSProviders/oXXX.de/01:WildcardACD:Create_wildcard (0.46s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#01 (0.37s)
--- PASS: TestDNSProviders/oXXX.de/02:CNAME:Create_a_CNAME (0.31s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#02 (0.23s)
--- PASS: TestDNSProviders/oXXX.de/03:MX:MX_record (0.31s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#03 (0.21s)
--- PASS: TestDNSProviders/oXXX.de/04:Null_MX_***SKIPPED(excluded_by_not("NETCUP"))***:Empty (0.10s)
--- PASS: TestDNSProviders/oXXX.de/05:NS_***SKIPPED(excluded_by_not("NETCUP"))***:Empty (0.08s)
--- FAIL: TestDNSProviders/oXXX.de/06:IGNORE_NAME_function:Create_some_records (0.36s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#04 (0.24s)
--- FAIL: TestDNSProviders/oXXX.de/07:IGNORE_NAME_apex:Create_some_records (0.57s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#05 (0.35s)
--- PASS: TestDNSProviders/oXXX.de/08:IGNORE_TARGET_function:Create_some_records (0.45s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#06 (0.38s)
--- FAIL: TestDNSProviders/oXXX.de/09:simple_TXT:Create_a_TXT (0.25s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#07 (0.08s)
--- FAIL: TestDNSProviders/oXXX.de/10:simple_TXT-spf1:Create_a_TXT/SPF (0.28s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#08 (0.12s)
--- FAIL: TestDNSProviders/oXXX.de/11:long_TXT:Create_long_TXT (0.25s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#09 (0.11s)
--- SKIP: TestDNSProviders/oXXX.de/12:complex_TXT:TXT_with_0-octel_string (0.00s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#10 (0.10s)
--- FAIL: TestDNSProviders/oXXX.de/13:long_TXT:Create_a_505_TXT (0.25s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#11 (0.08s)
--- FAIL: TestDNSProviders/oXXX.de/14:TXTMulti:Create_TXTMulti_1 (0.26s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#12 (0.09s)
--- FAIL: TestDNSProviders/oXXX.de/15:TXTMulti-same:Create_TXTMulti_1 (0.24s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#13 (0.10s)
--- PASS: TestDNSProviders/oXXX.de/16:TypeChange:Create_a_CNAME (0.34s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#14 (0.23s)
--- PASS: TestDNSProviders/oXXX.de/17:Case_Sensitivity:Create_CAPS (0.33s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#15 (0.22s)
--- PASS: TestDNSProviders/oXXX.de/18:IDNA:Internationalized_name (0.34s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#16 (0.21s)
--- PASS: TestDNSProviders/oXXX.de/19:IDNAs_in_CNAME_targets:IDN_CNAME_AND_Target (0.29s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#17 (0.24s)
--- FAIL: TestDNSProviders/oXXX.de/20:pager101:99_records (11.55s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#18 (0.05s)
--- PASS: TestDNSProviders/oXXX.de/21:pager601_***SKIPPED(disabled_by_only)***:Empty (0.05s)
--- PASS: TestDNSProviders/oXXX.de/22:pager1201_***SKIPPED(disabled_by_only)***:Empty (0.05s)
--- FAIL: TestDNSProviders/oXXX.de/23:CAA:CAA_record (0.20s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#19 (0.05s)
--- FAIL: TestDNSProviders/oXXX.de/24:CAA_with_;:CAA_many_records (0.19s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#20 (0.06s)
--- FAIL: TestDNSProviders/oXXX.de/25:Issue_1374:CAA_spaces (0.17s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#21 (0.07s)
--- PASS: TestDNSProviders/oXXX.de/26:NAPTR_***SKIPPED(CanUseNAPTR_not_supported)***:Empty (0.05s)
--- PASS: TestDNSProviders/oXXX.de/27:PTR_***SKIPPED(CanUsePTR_not_supported)***:Empty (0.06s)
--- PASS: TestDNSProviders/oXXX.de/28:SOA_***SKIPPED(CanUseSOA_not_supported)***:Empty (0.06s)
--- FAIL: TestDNSProviders/oXXX.de/29:SRV:SRV_record (0.17s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#22 (0.06s)
--- FAIL: TestDNSProviders/oXXX.de/30:SRV_w/_null_target:Null_Target (0.25s)
--- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#23 (0.08s)
--- PASS: TestDNSProviders/oXXX.de/31:SSHFP_***SKIPPED(CanUseSSHFP_not_supported)***:Empty (0.06s)
--- PASS: TestDNSProviders/oXXX.de/32:TLSA_***SKIPPED(CanUseTLSA_not_supported)***:Empty (0.06s)
--- PASS: TestDNSProviders/oXXX.de/33:DS_***SKIPPED(CanUseDS_not_supported)***:Empty (0.05s)
--- PASS: TestDNSProviders/oXXX.de/34:DS_(children_only)_***SKIPPED(CanUseDSForChildren_not_supported)***:Empty (0.05s)
--- PASS: TestDNSProviders/oXXX.de/35:DS_(children_only)_CLOUDNS_***SKIPPED(CanUseDSForChildren_not_supported)***:Empty (0.06s)
--- PASS: TestDNSProviders/oXXX.de/36:ALIAS_***SKIPPED(CanUseAlias_not_supported)***:Empty (0.06s)
--- PASS: TestDNSProviders/oXXX.de/37:AZURE_ALIAS_***SKIPPED(CanUseAzureAlias_not_supported)***:Empty (0.05s)
--- PASS: TestDNSProviders/oXXX.de/38:R53_ALIAS2_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty (0.05s)
--- PASS: TestDNSProviders/oXXX.de/39:R53_ALIAS_ORDER_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty (0.06s)
--- PASS: TestDNSProviders/oXXX.de/40:CF_REDIRECT_***SKIPPED(disabled_by_only)***:Empty (0.05s)
--- PASS: TestDNSProviders/oXXX.de/41:CF_PROXY_***SKIPPED(disabled_by_only)***:Empty (0.05s)
--- PASS: TestDNSProviders/oXXX.de/42:CF_WORKER_ROUTE_***SKIPPED(disabled_by_only)***:Empty (0.06s)
=== RUN TestDualProviders
integration_test.go:312: Skipping. DocDualHost == Cannot
--- SKIP: TestDualProviders (0.06s)
FAIL
exit status 1
FAIL github.com/StackExchange/dnscontrol/v3/integrationTest 25.942s
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2022-05-09 02:50:40 +08:00
|
|
|
// no need for txtutil.SplitSingleLongTxt in function GetDomainCorrections
|
|
|
|
// txtutil.SplitSingleLongTxt(dc.Records) // Autosplit long TXT records
|
2021-03-08 02:19:22 +08:00
|
|
|
|
2020-04-18 01:58:44 +08:00
|
|
|
var corrections []*models.Correction
|
2023-01-19 01:34:45 +08:00
|
|
|
var create, del, modify diff.Changeset
|
2023-03-14 02:19:19 +08:00
|
|
|
var differ diff.Differ
|
2023-01-19 01:34:45 +08:00
|
|
|
if !diff2.EnableDiff2 {
|
2023-03-14 02:19:19 +08:00
|
|
|
differ = diff.New(dc)
|
2023-01-19 01:34:45 +08:00
|
|
|
} else {
|
2023-03-14 02:19:19 +08:00
|
|
|
differ = diff.NewCompat(dc)
|
2023-01-19 01:34:45 +08:00
|
|
|
}
|
2023-03-14 02:19:19 +08:00
|
|
|
_, create, del, modify, err = differ.IncrementalDiff(existingRecords)
|
2023-01-19 01:34:45 +08:00
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
2020-04-18 01:58:44 +08:00
|
|
|
|
2023-01-19 01:34:45 +08:00
|
|
|
// Deletes first so changing type works etc.
|
|
|
|
for _, m := range del {
|
|
|
|
req := m.Existing.Original.(*record)
|
|
|
|
corr := &models.Correction{
|
|
|
|
Msg: fmt.Sprintf("%s, Netcup ID: %s", m.String(), req.ID),
|
|
|
|
F: func() error {
|
|
|
|
return api.deleteRecord(domain, req)
|
|
|
|
},
|
2020-04-18 01:58:44 +08:00
|
|
|
}
|
2023-01-19 01:34:45 +08:00
|
|
|
corrections = append(corrections, corr)
|
|
|
|
}
|
2022-12-12 04:02:58 +08:00
|
|
|
|
2023-01-19 01:34:45 +08:00
|
|
|
for _, m := range create {
|
|
|
|
req := fromRecordConfig(m.Desired)
|
|
|
|
corr := &models.Correction{
|
|
|
|
Msg: m.String(),
|
|
|
|
F: func() error {
|
|
|
|
return api.createRecord(domain, req)
|
|
|
|
},
|
2022-12-12 04:02:58 +08:00
|
|
|
}
|
2023-01-19 01:34:45 +08:00
|
|
|
corrections = append(corrections, corr)
|
|
|
|
}
|
|
|
|
for _, m := range modify {
|
|
|
|
id := m.Existing.Original.(*record).ID
|
|
|
|
req := fromRecordConfig(m.Desired)
|
|
|
|
req.ID = id
|
|
|
|
corr := &models.Correction{
|
|
|
|
Msg: fmt.Sprintf("%s, Netcup ID: %s: ", m.String(), id),
|
|
|
|
F: func() error {
|
|
|
|
return api.modifyRecord(domain, req)
|
|
|
|
},
|
2020-04-18 01:58:44 +08:00
|
|
|
}
|
2023-01-19 01:34:45 +08:00
|
|
|
corrections = append(corrections, corr)
|
2020-04-18 01:58:44 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
return corrections, nil
|
|
|
|
}
|