summaryrefslogtreecommitdiff
path: root/web/config.go
diff options
context:
space:
mode:
authorMike Crute <mike@crute.us>2020-02-13 23:14:18 +0000
committerMike Crute <mike@crute.us>2020-08-11 02:56:10 +0000
commitfa346cbe0ab89b3a3c02d8fae85dc5aa471b62a3 (patch)
treefbd2d45cdaab047ed93733399f9048716b479217 /web/config.go
parent1010edcba255040f8e4140f45f9113969d79effb (diff)
downloadgo_ddns_manager-wip-more-management.tar.bz2
go_ddns_manager-wip-more-management.tar.xz
go_ddns_manager-wip-more-management.zip
WIP: Add more management controllerswip-more-management
Diffstat (limited to 'web/config.go')
-rw-r--r--web/config.go22
1 files changed, 16 insertions, 6 deletions
diff --git a/web/config.go b/web/config.go
index 2479e38..acdc4bf 100644
--- a/web/config.go
+++ b/web/config.go
@@ -1,6 +1,7 @@
1package web 1package web
2 2
3import ( 3import (
4 "crypto/subtle"
4 "encoding/json" 5 "encoding/json"
5 "io/ioutil" 6 "io/ioutil"
6 "strings" 7 "strings"
@@ -10,12 +11,13 @@ import (
10) 11)
11 12
12type ServerConfig struct { 13type ServerConfig struct {
13 BindConfig *bind.BINDConfig 14 BindConfig *bind.BINDConfig
14 DNSClient *dns.DNSClient 15 DNSClient *dns.DNSClient
15 AcmeView string 16 AcmeView string
16 DynamicDnsView string 17 DynamicDnsView string
17 DDNSSecrets map[string]string `json:"DDNS"` 18 DDNSSecrets map[string]string `json:"DDNS"`
18 AcmeSecrets map[string]map[string]int `json:"ACME"` 19 AcmeSecrets map[string]map[string]int `json:"ACME"`
20 DNSManageSecrets map[string]string `json:"DNS_MANAGE"`
19} 21}
20 22
21func LoadServerConfig(zonesFile, secretsFile, server, view string) (*ServerConfig, error) { 23func LoadServerConfig(zonesFile, secretsFile, server, view string) (*ServerConfig, error) {
@@ -53,6 +55,14 @@ func (s *ServerConfig) AcmeSecretExists(k string) bool {
53 return ok 55 return ok
54} 56}
55 57
58func (s *ServerConfig) DNSUserAuth(u, p string) bool {
59 cp, ok := s.DNSManageSecrets[u]
60 if !ok {
61 return false
62 }
63 return subtle.ConstantTimeCompare([]byte(p), []byte(cp)) == 1
64}
65
56func (s *ServerConfig) IsAcmeClientAllowed(key, zone string) bool { 66func (s *ServerConfig) IsAcmeClientAllowed(key, zone string) bool {
57 u, ok := s.AcmeSecrets[key] 67 u, ok := s.AcmeSecrets[key]
58 if !ok { 68 if !ok {