forked from ixoncloud/cert-manager-webhook-cloudns
-
Notifications
You must be signed in to change notification settings - Fork 2
/
main.go
81 lines (63 loc) · 2.16 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*
Copyright 2019 IXON B.V.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package main
import (
"github.com/cert-manager/cert-manager/pkg/acme/webhook/apis/acme/v1alpha1"
"github.com/cert-manager/cert-manager/pkg/acme/webhook/cmd"
"github.com/mschirrmeister/cert-manager-webhook-cloudns/cloudns"
restclient "k8s.io/client-go/rest"
"os"
)
const ProviderName = "cloudns"
var GroupName = os.Getenv("GROUP_NAME")
func main() {
if GroupName == "" {
panic("Please set the GROUP_NAME env variable.")
}
// Start webhook server
cmd.RunWebhookServer(GroupName,
&clouDNSProviderSolver{},
)
}
// clouDNSProviderSolver implements webhook.Solver
// and will allow cert-manager to create & delete
// DNS TXT records for the DNS01 Challenge
type clouDNSProviderSolver struct {
}
func (c clouDNSProviderSolver) Name() string {
return ProviderName
}
// Create TXT DNS record for DNS01
func (c clouDNSProviderSolver) Present(ch *v1alpha1.ChallengeRequest) error {
// Load environment variables and create new ClouDNS provider
provider, err := cloudns.NewDNSProvider()
if err != nil {
return err
}
return provider.Present(ch.ResolvedFQDN, ch.Key)
}
// Delete TXT DNS record for DNS01
func (c clouDNSProviderSolver) CleanUp(ch *v1alpha1.ChallengeRequest) error {
// Load environment variables and create new ClouDNS provider
provider, err := cloudns.NewDNSProvider()
if err != nil {
return err
}
// Remove TXT DNS record
return provider.CleanUp(ch.ResolvedFQDN, ch.Key)
}
// Could be used to initialise connections or warm up caches, not needed in this case
func (c clouDNSProviderSolver) Initialize(kubeClientConfig *restclient.Config, stopCh <-chan struct{}) error {
// NOOP
return nil
}