- Added sample default config (needs manual updating)
- Reworked service and webapi config to Viper unmarshalling - Added Pretty Printers to config
This commit is contained in:
parent
9a31bbc912
commit
7b93ff425d
8
default-config.yml
Normal file
8
default-config.yml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
service:
|
||||||
|
dns:
|
||||||
|
defaultttl: 60
|
||||||
|
server: 10.10.11.254:53
|
||||||
|
users:
|
||||||
|
configdir: users/
|
||||||
|
webapi:
|
||||||
|
listenaddress: :8080
|
@ -1,11 +1,24 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import "github.com/spf13/viper"
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"github.com/spf13/viper"
|
||||||
|
)
|
||||||
|
|
||||||
type config struct {
|
type config struct {
|
||||||
DNSServer string
|
DNS configDNS
|
||||||
DNSDefaultTTL uint32
|
Users configUsers
|
||||||
UsersConfigDir string
|
}
|
||||||
|
|
||||||
|
type configDNS struct {
|
||||||
|
Server string
|
||||||
|
DefaultTTL uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
type configUsers struct {
|
||||||
|
ConfigDir string
|
||||||
}
|
}
|
||||||
|
|
||||||
var C config
|
var C config
|
||||||
@ -21,7 +34,13 @@ func SetConfigDefaults() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func LoadConfig() {
|
func LoadConfig() {
|
||||||
C.DNSServer = viper.GetString("Service.DNS.Server")
|
viper.UnmarshalKey("Service", &C)
|
||||||
C.DNSDefaultTTL = viper.GetUint32("Service.DNS.DefaultTTL")
|
}
|
||||||
C.UsersConfigDir = viper.GetString("Service.Users.ConfigDir")
|
|
||||||
|
func (obj *config) PrettyPrint() string {
|
||||||
|
s, err := json.MarshalIndent(obj, "", " ")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Failed to pretty print Service Config via JSON: %v", err)
|
||||||
|
}
|
||||||
|
return string(s)
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ func UpdateDNSEntry(domain string, hostname string, ip4 net.IP, ip6 net.IP) erro
|
|||||||
Name: fqdn,
|
Name: fqdn,
|
||||||
Rrtype: dns.TypeA,
|
Rrtype: dns.TypeA,
|
||||||
Class: dns.ClassINET,
|
Class: dns.ClassINET,
|
||||||
Ttl: C.DNSDefaultTTL,
|
Ttl: C.DNS.DefaultTTL,
|
||||||
},
|
},
|
||||||
A: ip4bin,
|
A: ip4bin,
|
||||||
})
|
})
|
||||||
@ -58,7 +58,7 @@ func UpdateDNSEntry(domain string, hostname string, ip4 net.IP, ip6 net.IP) erro
|
|||||||
Name: fqdn,
|
Name: fqdn,
|
||||||
Rrtype: dns.TypeAAAA,
|
Rrtype: dns.TypeAAAA,
|
||||||
Class: dns.ClassINET,
|
Class: dns.ClassINET,
|
||||||
Ttl: C.DNSDefaultTTL,
|
Ttl: C.DNS.DefaultTTL,
|
||||||
},
|
},
|
||||||
AAAA: ip6bin,
|
AAAA: ip6bin,
|
||||||
})
|
})
|
||||||
@ -68,7 +68,7 @@ func UpdateDNSEntry(domain string, hostname string, ip4 net.IP, ip6 net.IP) erro
|
|||||||
|
|
||||||
log.Printf("Sending DNS Update: %v", msg)
|
log.Printf("Sending DNS Update: %v", msg)
|
||||||
|
|
||||||
reply, _, err := dnsClient.Exchange(msg, C.DNSServer)
|
reply, _, err := dnsClient.Exchange(msg, C.DNS.Server)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to execute DNS Udpate: %v", err)
|
return fmt.Errorf("failed to execute DNS Udpate: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ type UserConfigNFT struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func LoadConfigForUser(username string, password string) (*UserConfig, error) {
|
func LoadConfigForUser(username string, password string) (*UserConfig, error) {
|
||||||
configFile := fmt.Sprintf("%s/%s.yml", C.UsersConfigDir, username)
|
configFile := fmt.Sprintf("%s/%s.yml", C.Users.ConfigDir, username)
|
||||||
configFile = path.Clean(configFile)
|
configFile = path.Clean(configFile)
|
||||||
log.Printf("Trying to load config file %s for user %s", configFile, username)
|
log.Printf("Trying to load config file %s for user %s", configFile, username)
|
||||||
|
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
package webapi
|
package webapi
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"log"
|
||||||
|
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -19,5 +22,13 @@ func SetConfigDefaults() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func LoadConfig() {
|
func LoadConfig() {
|
||||||
C.ListenAddress = viper.GetString("WebAPI.ListenAddress")
|
viper.UnmarshalKey("WebAPI", &C)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (obj *config) PrettyPrint() string {
|
||||||
|
s, err := json.MarshalIndent(obj, "", " ")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Failed to pretty print WebAPI Config via JSON: %v", err)
|
||||||
|
}
|
||||||
|
return string(s)
|
||||||
}
|
}
|
||||||
|
@ -63,4 +63,8 @@ func handleUpdate(w http.ResponseWriter, r *http.Request) {
|
|||||||
log.Printf("Request PW: %s, Config PW: %s", ur.Password, v.GetString("password"))
|
log.Printf("Request PW: %s, Config PW: %s", ur.Password, v.GetString("password"))
|
||||||
fmt.Fprintln(w, "Unmarshalled userconfig:")
|
fmt.Fprintln(w, "Unmarshalled userconfig:")
|
||||||
fmt.Fprintln(w, uc.PrettyPrint())
|
fmt.Fprintln(w, uc.PrettyPrint())
|
||||||
|
fmt.Fprintln(w, "WebAPI Config:")
|
||||||
|
fmt.Fprintln(w, C.PrettyPrint())
|
||||||
|
fmt.Fprintln(w, "Service Config:")
|
||||||
|
fmt.Fprintln(w, service.C.PrettyPrint())
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user