mirror of
https://github.com/gravitl/netmaker.git
synced 2026-04-23 00:17:10 +08:00
Merge branch 'release-v1.5.1' of https://github.com/gravitl/netmaker into fix/set-default-using-api
This commit is contained in:
@@ -3,13 +3,11 @@ package controller
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/gravitl/netmaker/schema"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/txn2/txeh"
|
||||
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
|
||||
|
||||
"github.com/gravitl/netmaker/functions"
|
||||
@@ -203,59 +201,6 @@ func TestCreateDNS(t *testing.T) {
|
||||
assert.Equal(t, "newhost", dns.Name)
|
||||
}
|
||||
|
||||
func TestSetDNS(t *testing.T) {
|
||||
deleteAllDNS(t)
|
||||
deleteAllNetworks()
|
||||
etc, err := txeh.NewHosts(&txeh.HostsConfig{})
|
||||
assert.Nil(t, err)
|
||||
err = functions.SetDNSDir()
|
||||
assert.Nil(t, err)
|
||||
t.Run("NoNetworks", func(t *testing.T) {
|
||||
err := logic.SetDNS()
|
||||
assert.Nil(t, err)
|
||||
info, err := txeh.NewHosts(&txeh.HostsConfig{
|
||||
ReadFilePath: "./config/dnsconfig/netmaker.hosts",
|
||||
})
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, etc.RenderHostsFile(), info.RenderHostsFile())
|
||||
})
|
||||
t.Run("NoEntries", func(t *testing.T) {
|
||||
createNet()
|
||||
err := logic.SetDNS()
|
||||
assert.Nil(t, err)
|
||||
info, err := txeh.NewHosts(&txeh.HostsConfig{
|
||||
ReadFilePath: "./config/dnsconfig/netmaker.hosts",
|
||||
})
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, etc.RenderHostsFile(), info.RenderHostsFile())
|
||||
})
|
||||
t.Run("NodeExists", func(t *testing.T) {
|
||||
createTestNode()
|
||||
err := logic.SetDNS()
|
||||
assert.Nil(t, err)
|
||||
info, err := os.Stat("./config/dnsconfig/netmaker.hosts")
|
||||
assert.Nil(t, err)
|
||||
assert.False(t, info.IsDir())
|
||||
content, err := os.ReadFile("./config/dnsconfig/netmaker.hosts")
|
||||
assert.Nil(t, err)
|
||||
assert.Contains(t, string(content), "linuxhost")
|
||||
})
|
||||
t.Run("EntryExists", func(t *testing.T) {
|
||||
entry := models.DNSEntry{Address: "10.0.0.3", Name: "newhost", Network: "skynet"}
|
||||
_, err := logic.CreateDNS(entry)
|
||||
assert.Nil(t, err)
|
||||
err = logic.SetDNS()
|
||||
assert.Nil(t, err)
|
||||
info, err := os.Stat("./config/dnsconfig/netmaker.hosts")
|
||||
assert.Nil(t, err)
|
||||
assert.False(t, info.IsDir())
|
||||
content, err := os.ReadFile("./config/dnsconfig/netmaker.hosts")
|
||||
assert.Nil(t, err)
|
||||
assert.Contains(t, string(content), "newhost")
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
func TestGetDNSEntry(t *testing.T) {
|
||||
deleteAllDNS(t)
|
||||
deleteAllNetworks()
|
||||
|
||||
+1
-40
@@ -20,7 +20,6 @@ import (
|
||||
"github.com/gravitl/netmaker/models"
|
||||
"github.com/gravitl/netmaker/schema"
|
||||
"github.com/gravitl/netmaker/servercfg"
|
||||
"github.com/txn2/txeh"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -111,45 +110,7 @@ func DeleteNetworkNameservers(networkID string) error {
|
||||
|
||||
// SetDNS - sets the dns on file
|
||||
func SetDNS() error {
|
||||
hostfile, err := txeh.NewHosts(&txeh.HostsConfig{})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var corefilestring string
|
||||
networks, err := (&schema.Network{}).ListAll(db.WithContext(context.TODO()))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, net := range networks {
|
||||
corefilestring = corefilestring + net.Name + " "
|
||||
dns, err := GetDNS(net.Name)
|
||||
if err != nil && !database.IsEmptyRecord(err) {
|
||||
return err
|
||||
}
|
||||
for _, entry := range dns {
|
||||
hostfile.AddHost(entry.Address, entry.Name)
|
||||
}
|
||||
}
|
||||
dns := GetExtclientDNS()
|
||||
for _, entry := range dns {
|
||||
hostfile.AddHost(entry.Address, entry.Name)
|
||||
}
|
||||
if corefilestring == "" {
|
||||
corefilestring = "example.com"
|
||||
}
|
||||
|
||||
err = hostfile.SaveAs("./config/dnsconfig/netmaker.hosts")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
/* if something goes wrong with server DNS, check here
|
||||
// commented out bc we were not using IsSplitDNS
|
||||
if servercfg.IsSplitDNS() {
|
||||
err = SetCorefile(corefilestring)
|
||||
}
|
||||
*/
|
||||
return err
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetDNS - gets the DNS of a current network
|
||||
|
||||
+10
-4
@@ -159,7 +159,7 @@ func GetNetworkNodesMemory(allNodes []models.Node, network string) []models.Node
|
||||
}
|
||||
|
||||
var (
|
||||
pendingCheckins = make(map[string]models.Node)
|
||||
pendingCheckins = make(map[string]time.Time)
|
||||
pendingCheckinsMu sync.Mutex
|
||||
)
|
||||
|
||||
@@ -171,7 +171,7 @@ func UpdateNodeCheckin(node *models.Node) error {
|
||||
node.EgressDetails = models.EgressDetails{}
|
||||
if servercfg.CacheEnabled() {
|
||||
pendingCheckinsMu.Lock()
|
||||
pendingCheckins[node.ID.String()] = *node
|
||||
pendingCheckins[node.ID.String()] = node.LastCheckIn
|
||||
pendingCheckinsMu.Unlock()
|
||||
storeNodeInCache(*node)
|
||||
storeNodeInNetworkCache(*node, node.Network)
|
||||
@@ -189,13 +189,19 @@ func UpdateNodeCheckin(node *models.Node) error {
|
||||
func FlushNodeCheckins() {
|
||||
pendingCheckinsMu.Lock()
|
||||
batch := pendingCheckins
|
||||
pendingCheckins = make(map[string]models.Node)
|
||||
pendingCheckins = make(map[string]time.Time)
|
||||
pendingCheckinsMu.Unlock()
|
||||
if len(batch) == 0 {
|
||||
return
|
||||
}
|
||||
var failed int
|
||||
for id, node := range batch {
|
||||
for id, checkin := range batch {
|
||||
node, err := GetNodeByID(id)
|
||||
if err != nil {
|
||||
failed++
|
||||
continue
|
||||
}
|
||||
node.LastCheckIn = checkin
|
||||
data, err := json.Marshal(node)
|
||||
if err != nil {
|
||||
failed++
|
||||
|
||||
Reference in New Issue
Block a user