mirror of
https://github.com/mje-nz/zerotier-dns.git
synced 2024-05-11 05:55:15 +00:00
Merge Multinetwork Support
This commit is contained in:
@ -81,11 +81,17 @@ func updateDNS() time.Time {
|
||||
// Get all configured networks:
|
||||
for domain, id := range viper.GetStringMapString("Networks") {
|
||||
// Get ZeroTier Network info
|
||||
ztnetwork := ztapi.GetNetworkInfo(API, URL, id)
|
||||
ztnetwork, err := ztapi.GetNetworkInfo(API, URL, id)
|
||||
if err != nil {
|
||||
log.Fatalf("Unable to update DNS entries: %s", err.Error())
|
||||
}
|
||||
|
||||
// Get list of members in network
|
||||
log.Infof("Getting Members of Network: %s (%s)", ztnetwork.Config.Name, domain)
|
||||
lst := ztapi.GetMemberList(API, URL, ztnetwork.ID)
|
||||
lst, err := ztapi.GetMemberList(API, URL, ztnetwork.ID)
|
||||
if err != nil {
|
||||
log.Fatalf("Unable to update DNS entries: %s", err.Error())
|
||||
}
|
||||
log.Infof("Got %d members", len(*lst))
|
||||
|
||||
for _, n := range *lst {
|
||||
|
@ -10,19 +10,25 @@ import (
|
||||
)
|
||||
|
||||
// GetMemberInfo returns a Member containing informationa about a specific member in a ZeroTier network
|
||||
func GetMemberInfo(API, host, networkID, memberID string) *Member {
|
||||
func GetMemberInfo(API, host, networkID, memberID string) (*Member, error) {
|
||||
resp := new(Member)
|
||||
url := fmt.Sprintf("%s/network/%s/member/%s", host, networkID, memberID)
|
||||
getJSON(url, API, resp)
|
||||
return resp
|
||||
err := getJSON(url, API, resp)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Unable to get member info: %s", err.Error())
|
||||
}
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// GetMemberList gets a Slice of Members in a ZeroTier network
|
||||
func GetMemberList(API, host, networkID string) *Members {
|
||||
func GetMemberList(API, host, networkID string) (*Members, error) {
|
||||
resp := new(Members)
|
||||
url := fmt.Sprintf("%s/network/%s/member", host, networkID)
|
||||
getJSON(url, API, resp)
|
||||
return resp
|
||||
err := getJSON(url, API, resp)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Unable to get member list: %s", err.Error())
|
||||
}
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// Members is a List of Members
|
||||
|
@ -6,11 +6,14 @@ package ztapi
|
||||
import "fmt"
|
||||
|
||||
// GetNetworkInfo returns a Nework containing information about a ZeroTier network
|
||||
func GetNetworkInfo(API, host, networkID string) *Network {
|
||||
func GetNetworkInfo(API, host, networkID string) (*Network, error) {
|
||||
resp := new(Network)
|
||||
url := fmt.Sprintf("%s/network/%s", host, networkID)
|
||||
getJSON(url, API, resp)
|
||||
return resp
|
||||
err := getJSON(url, API, resp)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Unable to get network info: %s", err.Error())
|
||||
}
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// Network contains the JSON response for a request for a network
|
||||
@ -29,7 +32,6 @@ type Network struct {
|
||||
}
|
||||
Config struct {
|
||||
ActiveMemberCount int
|
||||
AuthTokens []string
|
||||
AuthorizedMemberCount int
|
||||
Capabilities []string
|
||||
Clock int
|
||||
|
@ -23,6 +23,9 @@ func getJSON(url, APIToken string, target interface{}) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if r.StatusCode != 200 {
|
||||
return fmt.Errorf("API returned error: %s", r.Status)
|
||||
}
|
||||
defer r.Body.Close()
|
||||
return json.NewDecoder(r.Body).Decode(target)
|
||||
}
|
||||
|
Reference in New Issue
Block a user