From 89c87e387b7b671eae8019c9037b4c2ca2b40bb6 Mon Sep 17 00:00:00 2001 From: David Date: Sat, 3 Sep 2022 22:56:38 +0200 Subject: [PATCH] DigitalOcean --- providers/DigitalOceanAPI.png | Bin 0 -> 7279 bytes providers/digitalocean.go | 64 ++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 providers/DigitalOceanAPI.png create mode 100644 providers/digitalocean.go diff --git a/providers/DigitalOceanAPI.png b/providers/DigitalOceanAPI.png new file mode 100644 index 0000000000000000000000000000000000000000..4ef0e798b6304cb163111005e19fd57a3a80b149 GIT binary patch literal 7279 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 literal 0 HcmV?d00001 diff --git a/providers/digitalocean.go b/providers/digitalocean.go new file mode 100644 index 0000000..d72c49e --- /dev/null +++ b/providers/digitalocean.go @@ -0,0 +1,64 @@ +// Copyright or © or Copr. happyDNS (2021) +// +// contact@happydomain.org +// +// This software is a computer program whose purpose is to provide a modern +// interface to interact with DNS systems. +// +// This software is governed by the CeCILL license under French law and abiding +// by the rules of distribution of free software. You can use, modify and/or +// redistribute the software under the terms of the CeCILL license as +// circulated by CEA, CNRS and INRIA at the following URL +// "http://www.cecill.info". +// +// As a counterpart to the access to the provider code and rights to copy, modify +// and redistribute granted by the license, users are provided only with a +// limited warranty and the software's author, the holder of the economic +// rights, and the successive licensors have only limited liability. +// +// In this respect, the user's attention is drawn to the risks associated with +// loading, using, modifying and/or developing or reproducing the software by +// the user in light of its specific status of free software, that may mean +// that it is complicated to manipulate, and that also therefore means that it +// is reserved for developers and experienced professionals having in-depth +// computer knowledge. Users are therefore encouraged to load and test the +// software's suitability as regards their requirements in conditions enabling +// the security of their systems and/or data to be ensured and, more generally, +// to use and operate it in the same conditions as regards security. +// +// The fact that you are presently reading this means that you have had +// knowledge of the CeCILL license and that you accept its terms. + +package providers // import "happydns.org/providers" + +import ( + "github.com/StackExchange/dnscontrol/v3/providers" + _ "github.com/StackExchange/dnscontrol/v3/providers/digitalocean" + + "git.happydns.org/happydomain/model" +) + +type DigitalOceanAPI struct { + Token string `json:"token,omitempty" happydomain:"label=Token,placeholder=your-token,required,description=DigitalOcean OAuth Token."` +} + +func (s *DigitalOceanAPI) NewDNSServiceProvider() (providers.DNSServiceProvider, error) { + config := map[string]string{ + "token": s.Token, + } + + return providers.CreateDNSProvider(s.DNSControlName(), config, nil) +} + +func (s *DigitalOceanAPI) DNSControlName() string { + return "DIGITALOCEAN" +} + +func init() { + RegisterProvider(func() happydns.Provider { + return &DigitalOceanAPI{} + }, ProviderInfos{ + Name: "DigitalOcean", + Description: "American cloud infrastructure provider", + }) +}