reworked dns to propogate all entries regardless

This commit is contained in:
0xdcarns 2022-05-09 11:17:16 -04:00
parent ca5cedb9ce
commit d1101ffe3a

View file

@ -178,25 +178,15 @@ func GetPeerUpdate(node *models.Node) (models.PeerUpdate, error) {
if err != nil { if err != nil {
return models.PeerUpdate{}, err return models.PeerUpdate{}, err
} }
// begin translating netclient logic
/*
Go through netclient code and put below
*/
// #1 Set Keepalive values: set_keepalive // #1 Set Keepalive values: set_keepalive
// #2 Set local address: set_local - could be a LOT BETTER and fix some bugs with additional logic // #2 Set local address: set_local - could be a LOT BETTER and fix some bugs with additional logic
// #3 Set allowedips: set_allowedips // #3 Set allowedips: set_allowedips
var dns string
for _, peer := range currentPeers { for _, peer := range currentPeers {
if peer.ID == node.ID { if peer.ID == node.ID {
//skip yourself //skip yourself
continue continue
} }
dns = dns + fmt.Sprintf("%s %s.%s\n", peer.Address, peer.Name, peer.Network)
pubkey, err := wgtypes.ParseKey(peer.PublicKey) pubkey, err := wgtypes.ParseKey(peer.PublicKey)
if err != nil { if err != nil {
return models.PeerUpdate{}, err return models.PeerUpdate{}, err
@ -245,23 +235,11 @@ func GetPeerUpdate(node *models.Node) (models.PeerUpdate, error) {
log.Println("ERROR RETRIEVING EXTERNAL PEERS", err) log.Println("ERROR RETRIEVING EXTERNAL PEERS", err)
} }
} }
peerUpdate.Network = node.Network peerUpdate.Network = node.Network
peerUpdate.Peers = peers peerUpdate.Peers = peers
peerUpdate.ServerAddrs = serverNodeAddresses peerUpdate.ServerAddrs = serverNodeAddresses
/* peerUpdate.DNS = getPeerDNS(node.Network)
End translation of netclient code
*/
if customDNSEntries, err := GetCustomDNS(peerUpdate.Network); err == nil {
for _, entry := range customDNSEntries {
// TODO - filter entries based on ACLs / given peers vs nodes in network
dns = dns + fmt.Sprintf("%s %s.%s\n", entry.Address, entry.Name, entry.Network)
}
}
peerUpdate.DNS = dns
return peerUpdate, nil return peerUpdate, nil
} }
@ -387,3 +365,20 @@ func GetAllowedIPs(node, peer *models.Node) []net.IPNet {
} }
return allowedips return allowedips
} }
func getPeerDNS(network string) string {
var dns string
if nodes, err := GetNetworkNodes(network); err == nil {
for i := range nodes {
dns = dns + fmt.Sprintf("%s %s.%s\n", nodes[i].Address, nodes[i].Name, nodes[i].Network)
}
}
if customDNSEntries, err := GetCustomDNS(network); err == nil {
for _, entry := range customDNSEntries {
// TODO - filter entries based on ACLs / given peers vs nodes in network
dns = dns + fmt.Sprintf("%s %s.%s\n", entry.Address, entry.Name, entry.Network)
}
}
return dns
}