mirror of
https://github.com/gravitl/netmaker.git
synced 2025-12-24 13:28:22 +08:00
fix: create dns nameserver on network creation;
This commit is contained in:
@@ -554,6 +554,8 @@ func deleteNetwork(w http.ResponseWriter, r *http.Request) {
|
||||
slog.Error("error publishing node update to node", "node", node.ID, "error", err)
|
||||
}
|
||||
}
|
||||
|
||||
_ = logic.DeleteNetworkNameservers(network)
|
||||
if servercfg.IsDNSMode() {
|
||||
logic.SetDNS()
|
||||
}
|
||||
@@ -681,6 +683,7 @@ func createNetwork(w http.ResponseWriter, r *http.Request) {
|
||||
logic.CreateDefaultAclNetworkPolicies(models.NetworkID(network.NetID))
|
||||
logic.CreateDefaultTags(models.NetworkID(network.NetID))
|
||||
logic.AddNetworkToAllocatedIpMap(network.NetID)
|
||||
logic.CreateGoogleDNSNameserver(network.NetID)
|
||||
|
||||
go func() {
|
||||
defaultHosts := logic.GetDefaultHosts()
|
||||
|
||||
29
logic/dns.go
29
logic/dns.go
@@ -13,6 +13,7 @@ import (
|
||||
"time"
|
||||
|
||||
validator "github.com/go-playground/validator/v10"
|
||||
"github.com/google/uuid"
|
||||
"github.com/gravitl/netmaker/database"
|
||||
"github.com/gravitl/netmaker/db"
|
||||
"github.com/gravitl/netmaker/logger"
|
||||
@@ -23,7 +24,7 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
GooglePublicDNSID = "1f6c873e-8be8-4b31-8b34-20763f9fc8ff"
|
||||
GooglePublicNameserverName = "Google Public DNS"
|
||||
)
|
||||
|
||||
var GetNameserversForNode = getNameserversForNode
|
||||
@@ -66,16 +67,22 @@ var GlobalNsList = map[string]GlobalNs{
|
||||
}
|
||||
|
||||
func CreateGoogleDNSNameserver(networkID string) error {
|
||||
err := (&schema.Nameserver{
|
||||
ID: GooglePublicDNSID,
|
||||
}).Get(db.WithContext(context.TODO()))
|
||||
if err == nil {
|
||||
return nil
|
||||
nameservers, err := (&schema.Nameserver{
|
||||
NetworkID: networkID,
|
||||
}).ListByNetwork(db.WithContext(context.TODO()))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, ns := range nameservers {
|
||||
if ns.Default && ns.Name == GooglePublicNameserverName {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
ns := schema.Nameserver{
|
||||
ID: GooglePublicDNSID,
|
||||
Name: "Google Public DNS",
|
||||
ID: uuid.NewString(),
|
||||
Name: GooglePublicNameserverName,
|
||||
NetworkID: networkID,
|
||||
Description: "",
|
||||
Default: true,
|
||||
@@ -103,6 +110,12 @@ func CreateGoogleDNSNameserver(networkID string) error {
|
||||
return ns.Create(db.WithContext(context.TODO()))
|
||||
}
|
||||
|
||||
func DeleteNetworkNameservers(networkID string) error {
|
||||
return (&schema.Nameserver{
|
||||
NetworkID: networkID,
|
||||
}).Delete(db.WithContext(context.TODO()))
|
||||
}
|
||||
|
||||
// SetDNS - sets the dns on file
|
||||
func SetDNS() error {
|
||||
hostfile, err := txeh.NewHosts(&txeh.HostsConfig{})
|
||||
|
||||
@@ -100,6 +100,8 @@ func migrateNameservers() {
|
||||
}
|
||||
|
||||
for _, netI := range nets {
|
||||
_ = logic.CreateGoogleDNSNameserver(netI.NetID)
|
||||
|
||||
_, cidr, err := net.ParseCIDR(netI.AddressRange)
|
||||
if err != nil {
|
||||
continue
|
||||
@@ -155,8 +157,6 @@ func migrateNameservers() {
|
||||
netI.NameServers = []string{}
|
||||
logic.SaveNetwork(&netI)
|
||||
}
|
||||
|
||||
_ = logic.CreateGoogleDNSNameserver(netI.NetID)
|
||||
}
|
||||
nodes, _ := logic.GetAllNodes()
|
||||
for _, node := range nodes {
|
||||
|
||||
@@ -53,6 +53,10 @@ func (ns *Nameserver) Delete(ctx context.Context) error {
|
||||
return db.FromContext(ctx).Model(&Nameserver{}).Where("id = ?", ns.ID).Delete(&ns).Error
|
||||
}
|
||||
|
||||
func (ns *Nameserver) DeleteByNetwork(ctx context.Context) error {
|
||||
return db.FromContext(ctx).Model(&Nameserver{}).Where("network_id = ?", ns.NetworkID).Delete(&ns).Error
|
||||
}
|
||||
|
||||
func (ns *Nameserver) UpdateStatus(ctx context.Context) error {
|
||||
return db.FromContext(ctx).Model(&Nameserver{}).Where("id = ?", ns.ID).Updates(map[string]any{
|
||||
"status": ns.Status,
|
||||
|
||||
Reference in New Issue
Block a user