Skip to content

Commit 79ebed2

Browse files
committed
providers: Update providers configs to be in sync with dnscontrol
Bug: #39
1 parent b78024c commit 79ebed2

14 files changed

Lines changed: 109 additions & 56 deletions

File tree

go.mod

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ require (
7171
github.com/aws/smithy-go v1.24.0 // indirect
7272
github.com/aymerick/douceur v0.2.0 // indirect
7373
github.com/babolivier/go-doh-client v0.0.0-20201028162107-a76cff4cb8b6 // indirect
74+
github.com/beorn7/perks v1.0.1 // indirect
7475
github.com/billputer/go-namecheap v0.0.0-20210108011502-994a912fb7f9 // indirect
7576
github.com/bits-and-blooms/bitset v1.24.4 // indirect
7677
github.com/boombuler/barcode v1.1.0 // indirect
@@ -129,6 +130,7 @@ require (
129130
github.com/hashicorp/go-hclog v1.6.3 // indirect
130131
github.com/hashicorp/go-retryablehttp v0.7.8 // indirect
131132
github.com/hashicorp/terraform-plugin-log v0.10.0 // indirect
133+
github.com/hetznercloud/hcloud-go/v2 v2.32.0 // indirect
132134
github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.181 // indirect
133135
github.com/influxdata/tdigest v0.0.1 // indirect
134136
github.com/iris-contrib/schema v0.0.6 // indirect
@@ -159,6 +161,7 @@ require (
159161
github.com/mittwald/go-powerdns v0.6.7 // indirect
160162
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
161163
github.com/modern-go/reflect2 v1.0.2 // indirect
164+
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
162165
github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04 // indirect
163166
github.com/nrdcg/goinwx v0.12.0 // indirect
164167
github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b // indirect
@@ -171,6 +174,10 @@ require (
171174
github.com/pkg/errors v0.9.1 // indirect
172175
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
173176
github.com/pquerna/otp v1.5.0 // indirect
177+
github.com/prometheus/client_golang v1.23.2 // indirect
178+
github.com/prometheus/client_model v0.6.2 // indirect
179+
github.com/prometheus/common v0.66.1 // indirect
180+
github.com/prometheus/procfs v0.16.1 // indirect
174181
github.com/qdm12/reprint v0.0.0-20200326205758-722754a53494 // indirect
175182
github.com/quic-go/qpack v0.6.0 // indirect
176183
github.com/quic-go/quic-go v0.58.0 // indirect
@@ -204,6 +211,7 @@ require (
204211
go.opentelemetry.io/otel/metric v1.39.0 // indirect
205212
go.opentelemetry.io/otel/trace v1.39.0 // indirect
206213
go.uber.org/mock v0.6.0 // indirect
214+
go.yaml.in/yaml/v2 v2.4.2 // indirect
207215
go.yaml.in/yaml/v3 v3.0.4 // indirect
208216
golang.org/x/arch v0.23.0 // indirect
209217
golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 // indirect

go.sum

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuP
102102
github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
103103
github.com/babolivier/go-doh-client v0.0.0-20201028162107-a76cff4cb8b6 h1:4NNbNM2Iq/k57qEu7WfL67UrbPq1uFWxW4qODCohi+0=
104104
github.com/babolivier/go-doh-client v0.0.0-20201028162107-a76cff4cb8b6/go.mod h1:J29hk+f9lJrblVIfiJOtTFk+OblBawmib4uz/VdKzlg=
105+
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
106+
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
105107
github.com/billputer/go-namecheap v0.0.0-20210108011502-994a912fb7f9 h1:2vQTbEJvFsyd1VefzZ34GUkUD6TkJleYYJh9/25WBE4=
106108
github.com/billputer/go-namecheap v0.0.0-20210108011502-994a912fb7f9/go.mod h1:bqqNsI2akL+lLWyApkYY0cxquWPKwEBU0Wd3chi3TEg=
107109
github.com/bits-and-blooms/bitset v1.24.4 h1:95H15Og1clikBrKr/DuzMXkQzECs1M6hhoGXLwLQOZE=
@@ -315,6 +317,8 @@ github.com/hashicorp/go-retryablehttp v0.7.8 h1:ylXZWnqa7Lhqpk0L1P1LzDtGcCR0rPVU
315317
github.com/hashicorp/go-retryablehttp v0.7.8/go.mod h1:rjiScheydd+CxvumBsIrFKlx3iS0jrZ7LvzFGFmuKbw=
316318
github.com/hashicorp/terraform-plugin-log v0.10.0 h1:eu2kW6/QBVdN4P3Ju2WiB2W3ObjkAsyfBsL3Wh1fj3g=
317319
github.com/hashicorp/terraform-plugin-log v0.10.0/go.mod h1:/9RR5Cv2aAbrqcTSdNmY1NRHP4E3ekrXRGjqORpXyB0=
320+
github.com/hetznercloud/hcloud-go/v2 v2.32.0 h1:BRe+k7ESdYv3xQLBGdKUfk+XBFRJNGKzq70nJI24ciM=
321+
github.com/hetznercloud/hcloud-go/v2 v2.32.0/go.mod h1:hAanyyfn9M0cMmZ68CXzPCF54KRb9EXd8eiE2FHKGIE=
318322
github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
319323
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
320324
github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.181 h1:t0vgvyLg/WRUlXbhLqoSCdhdl1EHynroGJTmZ8SIThU=
@@ -424,6 +428,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ
424428
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
425429
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
426430
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
431+
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
432+
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
427433
github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04 h1:o6uBwrhM5C8Ll3MAAxrQxRHEu7FkapwTuI2WmL1rw4g=
428434
github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04/go.mod h1:5sN+Lt1CaY4wsPvgQH/jsuJi4XO2ssZbdsIizr4CVC8=
429435
github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms=
@@ -462,7 +468,15 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI
462468
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
463469
github.com/pquerna/otp v1.5.0 h1:NMMR+WrmaqXU4EzdGJEE1aUUI0AMRzsp96fFFWNPwxs=
464470
github.com/pquerna/otp v1.5.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg=
471+
github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o=
472+
github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg=
465473
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
474+
github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
475+
github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=
476+
github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs=
477+
github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA=
478+
github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=
479+
github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
466480
github.com/qdm12/reprint v0.0.0-20200326205758-722754a53494 h1:wSmWgpuccqS2IOfmYrbRiUgv+g37W5suLLLxwwniTSc=
467481
github.com/qdm12/reprint v0.0.0-20200326205758-722754a53494/go.mod h1:yipyliwI08eQ6XwDm1fEwKPdF/xdbkiHtrU+1Hg+vc4=
468482
github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8=
@@ -609,6 +623,8 @@ go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
609623
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
610624
go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y=
611625
go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU=
626+
go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
627+
go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
612628
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
613629
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
614630
golang.org/x/arch v0.23.0 h1:lKF64A2jF6Zd8L0knGltUnegD62JMFBiCPBmQpToHhg=

providers/cloudflare.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// This file is part of the happyDomain (R) project.
2-
// Copyright (c) 2020-2024 happyDomain
2+
// Copyright (c) 2020-2025 happyDomain
33
// Authors: David Dernoncourt, et al.
44
//
55
// This program is offered under a commercial and under the AGPL license.
@@ -30,7 +30,7 @@ import (
3030

3131
type CloudflareAPI struct {
3232
AccountID string `json:"AccountID,omitempty" happydomain:"label=Account ID,placeholder=xxxxxxxx,required,description=Your Cloudflare account ID"`
33-
ApiToken string `json:"ApiToken,omitempty" happydomain:"label=Api Token,placeholder=xxxxxxxx,required,description=Your Cloudflare API token"`
33+
ApiToken string `json:"ApiToken,omitempty" happydomain:"label=API Token,placeholder=xxxxxxxx,required,secret,description=Your Cloudflare API token"`
3434
}
3535

3636
func (s *CloudflareAPI) DNSControlName() string {
@@ -53,6 +53,6 @@ func init() {
5353
return &CloudflareAPI{}
5454
}, happydns.ProviderInfos{
5555
Name: "Cloudflare",
56-
Description: "American content delivery network",
56+
Description: "Global CDN and DNS provider with advanced features like proxy and DNSSEC support.",
5757
}, RegisterProvider)
5858
}

providers/desec.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// This file is part of the happyDomain (R) project.
2-
// Copyright (c) 2020-2024 happyDomain
2+
// Copyright (c) 2020-2025 happyDomain
33
// Authors: Pierre-Olivier Mercier, et al.
44
//
55
// This program is offered under a commercial and under the AGPL license.
@@ -29,7 +29,7 @@ import (
2929
)
3030

3131
type DeSECAPI struct {
32-
Token string `json:"token,omitempty" happydomain:"label=Token,placeholder=your-api-key,required,description=Provide your deSEC access token."`
32+
Token string `json:"token,omitempty" happydomain:"label=API Token,placeholder=your-api-key,required,secret,description=deSEC API authentication token"`
3333
}
3434

3535
func (s *DeSECAPI) DNSControlName() string {
@@ -51,6 +51,6 @@ func init() {
5151
return &DeSECAPI{}
5252
}, happydns.ProviderInfos{
5353
Name: "deSEC",
54-
Description: "Free Secure DNS, modern DNS hosting for everyone.",
54+
Description: "Free and secure DNS hosting with DNSSEC support.",
5555
}, RegisterProvider)
5656
}

providers/digitalocean.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// This file is part of the happyDomain (R) project.
2-
// Copyright (c) 2020-2024 happyDomain
2+
// Copyright (c) 2020-2025 happyDomain
33
// Authors: David Dernoncourt, et al.
44
//
55
// This program is offered under a commercial and under the AGPL license.
@@ -29,7 +29,7 @@ import (
2929
)
3030

3131
type DigitalOceanAPI struct {
32-
Token string `json:"token,omitempty" happydomain:"label=Token,placeholder=your-token,required,description=DigitalOcean OAuth Token."`
32+
Token string `json:"token,omitempty" happydomain:"label=API Token,placeholder=your-token,required,secret,description=DigitalOcean OAuth Token"`
3333
}
3434

3535
func (s *DigitalOceanAPI) DNSControlName() string {
@@ -51,6 +51,6 @@ func init() {
5151
return &DigitalOceanAPI{}
5252
}, happydns.ProviderInfos{
5353
Name: "DigitalOcean",
54-
Description: "American cloud infrastructure provider",
54+
Description: "Cloud infrastructure provider with managed DNS service.",
5555
}, RegisterProvider)
5656
}

providers/gandiv5.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// This file is part of the happyDomain (R) project.
2-
// Copyright (c) 2020-2024 happyDomain
2+
// Copyright (c) 2020-2025 happyDomain
33
// Authors: Pierre-Olivier Mercier, et al.
44
//
55
// This program is offered under a commercial and under the AGPL license.
@@ -29,8 +29,8 @@ import (
2929
)
3030

3131
type GandiAPI struct {
32-
APIKey string `json:"api_key,omitempty" happydomain:"label=API Key,placeholder=xxxxxxxxxx,required,description=Get your API Key in the Security section under https://account.gandi.net/. Copy the corresponding key."`
33-
SharingID string `json:"sharing_id,omitempty" happydomain:"label=Sharing ID,placeholder=xxxxxxxxxx,description=If you are member of multiple organizations this identifier selects the one to manage."`
32+
APIKey string `json:"api_key,omitempty" happydomain:"label=API Key,placeholder=xxxxxxxxxx,required,secret,description=Get your API Key in the Security section at https://account.gandi.net/"`
33+
SharingID string `json:"sharing_id,omitempty" happydomain:"label=Sharing ID,placeholder=xxxxxxxxxx,description=Organization sharing ID (required if member of multiple organizations)"`
3434
}
3535

3636
func (s *GandiAPI) DNSControlName() string {
@@ -53,6 +53,6 @@ func init() {
5353
return &GandiAPI{}
5454
}, happydns.ProviderInfos{
5555
Name: "Gandi",
56-
Description: "French hosting provider.",
56+
Description: "Domain registrar and hosting provider with LiveDNS service.",
5757
}, RegisterProvider)
5858
}

providers/gcloud.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// This file is part of the happyDomain (R) project.
2-
// Copyright (c) 2020-2024 happyDomain
2+
// Copyright (c) 2020-2025 happyDomain
33
// Authors: David Dernoncourt, et al.
44
//
55
// This program is offered under a commercial and under the AGPL license.
@@ -29,10 +29,10 @@ import (
2929
)
3030

3131
type GCloudAPI struct {
32-
ProjectId string `json:"project_id,omitempty" happydomain:"label=Project ID,placeholder=xxxxxxxx,required,description=Project ID."`
33-
PrivateKey string `json:"private_key,omitempty" happydomain:"label=Private key,placeholder=xxxxxxxx,description=Private key."`
34-
ClientEmail string `json:"client_email,omitempty" happydomain:"label=Client Email,placeholder=xxxxxxxx,description=Client Email."`
35-
NameServerSet string `json:"name_server_set,omitempty" happydomain:"label=Name server sets,placeholder=xxxxxxxx,description=Name server sets special permission from your TAM at Google)."`
32+
ProjectId string `json:"project_id,omitempty" happydomain:"label=Project ID,placeholder=my-project-id,required,description=Google Cloud project ID"`
33+
PrivateKey string `json:"private_key,omitempty" happydomain:"label=Private Key,placeholder=-----BEGIN PRIVATE KEY-----...,secret,description=Service account private key in PEM format"`
34+
ClientEmail string `json:"client_email,omitempty" happydomain:"label=Client Email,placeholder=service-account@project-id.iam.gserviceaccount.com,description=Service account email address"`
35+
NameServerSet string `json:"name_server_set,omitempty" happydomain:"label=Name Server Set,placeholder=,description=Optional name server set (requires special permission from your TAM at Google)"`
3636
}
3737

3838
func (s *GCloudAPI) DNSControlName() string {
@@ -56,7 +56,7 @@ func init() {
5656
adapter.RegisterDNSControlProviderAdapter(func() happydns.ProviderBody {
5757
return &GCloudAPI{}
5858
}, happydns.ProviderInfos{
59-
Name: "Google Cloud Platform (GCP)",
60-
Description: "A suite of cloud computing services that runs on the same infrastructure that Google uses internally for its end-user products",
59+
Name: "Google Cloud DNS",
60+
Description: "Google's globally distributed, scalable, and reliable managed DNS service.",
6161
}, RegisterProvider)
6262
}

providers/hetzner.go

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// This file is part of the happyDomain (R) project.
2-
// Copyright (c) 2020-2024 happyDomain
2+
// Copyright (c) 2020-2025 happyDomain
33
// Authors: Pierre-Olivier Mercier, et al.
44
//
55
// This program is offered under a commercial and under the AGPL license.
@@ -23,34 +23,45 @@ package providers // import "git.happydns.org/happyDomain/providers"
2323

2424
import (
2525
_ "github.com/StackExchange/dnscontrol/v4/providers/hetzner"
26+
_ "github.com/StackExchange/dnscontrol/v4/providers/hetznerv2"
2627

2728
"git.happydns.org/happyDomain/internal/adapters"
2829
"git.happydns.org/happyDomain/model"
2930
)
3031

3132
type HetznerAPI struct {
32-
APIKey string `json:"api_key,omitempty" happydomain:"label=API Key,placeholder=xxxxxxxxxx,required,description=Get your API Key on https://dns.hetzner.com/settings/api-token."`
33+
APIVersion string `json:"api_version,omitempty" happydomain:"label=API Version,choices=v2;v1,default=v2,required,description=API version to use (v2 recommended for Cloud DNS)"`
34+
APIToken string `json:"api_token,omitempty" happydomain:"label=API Token,placeholder=xxxxxxxxxx,required,secret,description=Hetzner API token from https://dns.hetzner.com/settings/api-token (v1) or Cloud Console (v2)"`
3335
}
3436

3537
func (s *HetznerAPI) DNSControlName() string {
36-
return "HETZNER"
38+
if s.APIVersion == "v1" {
39+
return "HETZNER"
40+
}
41+
return "HETZNER_V2"
3742
}
3843

3944
func (s *HetznerAPI) InstantiateProvider() (happydns.ProviderActuator, error) {
4045
return adapter.NewDNSControlProviderAdapter(s)
4146
}
4247

4348
func (s *HetznerAPI) ToDNSControlConfig() (map[string]string, error) {
49+
// v1 uses api_key, v2 uses api_token
50+
if s.APIVersion == "v1" {
51+
return map[string]string{
52+
"api_key": s.APIToken,
53+
}, nil
54+
}
4455
return map[string]string{
45-
"api_key": s.APIKey,
56+
"api_token": s.APIToken,
4657
}, nil
4758
}
4859

4960
func init() {
5061
adapter.RegisterDNSControlProviderAdapter(func() happydns.ProviderBody {
5162
return &HetznerAPI{}
5263
}, happydns.ProviderInfos{
53-
Name: "Hetzner",
54-
Description: "German Internet hosting provider.",
64+
Name: "Hetzner DNS",
65+
Description: "German hosting provider with DNS services.",
5566
}, RegisterProvider)
5667
}

providers/linode.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// This file is part of the happyDomain (R) project.
2-
// Copyright (c) 2020-2024 happyDomain
2+
// Copyright (c) 2020-2025 happyDomain
33
// Authors: David Dernoncourt, et al.
44
//
55
// This program is offered under a commercial and under the AGPL license.
@@ -29,7 +29,7 @@ import (
2929
)
3030

3131
type LinodeAPI struct {
32-
Token string `json:"token,omitempty" happydomain:"label=Token,placeholder=xxxxxxxx,required,description=Your Linode Personal Access Token."`
32+
Token string `json:"token,omitempty" happydomain:"label=Personal Access Token,placeholder=xxxxxxxx,required,secret,description=Linode Personal Access Token with DNS read/write permissions"`
3333
}
3434

3535
func (s *LinodeAPI) DNSControlName() string {
@@ -50,7 +50,7 @@ func init() {
5050
adapter.RegisterDNSControlProviderAdapter(func() happydns.ProviderBody {
5151
return &LinodeAPI{}
5252
}, happydns.ProviderInfos{
53-
Name: "Linode, LLC",
54-
Description: "American cloud hosting company, based in Philadelphia.",
53+
Name: "Linode (Akamai)",
54+
Description: "Cloud infrastructure provider with managed DNS service.",
5555
}, RegisterProvider)
5656
}

providers/namecheap.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// This file is part of the happyDomain (R) project.
2-
// Copyright (c) 2020-2024 happyDomain
2+
// Copyright (c) 2020-2025 happyDomain
33
// Authors: Pierre-Olivier Mercier, et al.
44
//
55
// This program is offered under a commercial and under the AGPL license.
@@ -29,8 +29,8 @@ import (
2929
)
3030

3131
type NamecheapAPI struct {
32-
APIKey string `json:"apikey,omitempty" happydoamin:"label=API Key,placeholder=yourApiKeyFromNameCheap,required"`
33-
APIUser string `json:"apiuser,omitempty" happydomain:"label=API User,placeholder=yourUsername,required"`
32+
APIKey string `json:"apikey,omitempty" happydomain:"label=API Key,placeholder=yourApiKeyFromNameCheap,required,secret,description=Namecheap API key"`
33+
APIUser string `json:"apiuser,omitempty" happydomain:"label=API User,placeholder=yourUsername,required,description=Namecheap account username"`
3434
}
3535

3636
func (s *NamecheapAPI) DNSControlName() string {
@@ -53,6 +53,6 @@ func init() {
5353
return &NamecheapAPI{}
5454
}, happydns.ProviderInfos{
5555
Name: "Namecheap",
56-
Description: "American domain name registrar.",
56+
Description: "Domain registrar and web hosting company with DNS management.",
5757
}, RegisterProvider)
5858
}

0 commit comments

Comments
 (0)