Fixed client and server issues with updates and dns before db connect

This commit is contained in:
worker-9 2021-07-28 16:08:50 -04:00
parent 6b5f5450be
commit fb5f08be5a
4 changed files with 22 additions and 34 deletions

View file

@ -198,7 +198,7 @@ func authorize(networkCheck bool, authNetwork string, next http.Handler) http.Ha
isAuthorized = true
r.Header.Set("ismasterkey", "yes")
} else {
r.Header.Set("ismasterkey", "")
r.Header.Set("ismasterkey", "")
mac, _, err := functions.VerifyToken(authToken)
if err != nil {
errorResponse = models.ErrorResponse{
@ -320,7 +320,7 @@ func getAllNodes(w http.ResponseWriter, r *http.Request) {
return
}
var nodes []models.Node
if user.IsAdmin || r.Header.Get("ismasterkey") == "yes" {
if user.IsAdmin || r.Header.Get("ismasterkey") == "yes" {
nodes, err = models.GetAllNodes()
if err != nil {
returnErrorResponse(w, r, formatError(err, "internal"))
@ -706,8 +706,8 @@ func CreateIngressGateway(netid string, macaddress string) (models.Node, error)
}
}
node.SetLastModified()
node.PostUp = postUpCmd
node.PostDown = postDownCmd
node.PostUp = postUpCmd
node.PostDown = postDownCmd
key, err := functions.GetRecordKey(node.MacAddress, node.Network)
if err != nil {
return models.Node{}, err
@ -788,9 +788,6 @@ func updateNode(w http.ResponseWriter, r *http.Request) {
return
}
if err = SetNetworkNodesLastModified(node.Network); err != nil {
log.Println(err)
}
if servercfg.IsDNSMode() {
err = SetDNS()
}

View file

@ -23,7 +23,6 @@ import (
//Start MongoDB Connection and start API Request Handler
func main() {
checkModes() // check which flags are set and if root or not
initialize() // initial db and grpc server
defer database.Database.Close()
startControllers() // start the grpc or rest endpoints
@ -46,6 +45,7 @@ func checkModes() { // Client Mode Prereq Check
if uid != 0 {
log.Fatal("To run in client mode requires root privileges. Either disable client mode or run with sudo.")
}
database.InitializeDatabase()
if servercfg.IsDNSMode() {
err := functions.SetDNSDir()
@ -57,7 +57,7 @@ func checkModes() { // Client Mode Prereq Check
}
func initialize() {
database.InitializeDatabase()
checkModes() // check which flags are set and if root or not
if servercfg.IsGRPCWireGuard() {
if err := serverctl.InitServerWireGuard(); err != nil {
log.Fatal(err)

View file

@ -15,6 +15,7 @@ import (
const charset = "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
const TEN_YEARS_IN_SECONDS = 300000000
var seededRand *rand.Rand = rand.New(
rand.NewSource(time.Now().UnixNano()))
@ -264,16 +265,16 @@ func (newNode *Node) Fill(currentNode *Node) {
}
func (currentNode *Node) Update(newNode *Node) error {
newNode.Fill(currentNode)
newNode.Fill(currentNode)
if err := newNode.Validate(true); err != nil {
return err
}
newNode.SetID()
if newNode.ID == currentNode.ID {
newNode.SetLastModified()
if data, err := json.Marshal(newNode); err != nil {
return err
} else {
newNode.SetLastModified()
if err = database.Insert(newNode.ID, string(data), database.NODES_TABLE_NAME); err == nil {
if network, err := GetNetwork(newNode.Network); err == nil {
err = network.SetNetworkNodesLastModified()

View file

@ -1,7 +1,6 @@
package wireguard
import (
"github.com/davecgh/go-spew/spew"
"context"
"crypto/tls"
"errors"
@ -14,6 +13,8 @@ import (
"strconv"
"strings"
"github.com/davecgh/go-spew/spew"
nodepb "github.com/gravitl/netmaker/grpc"
"github.com/gravitl/netmaker/models"
"github.com/gravitl/netmaker/netclient/auth"
@ -203,30 +204,19 @@ func InitWireguard(node *nodepb.Node, privkey string, peers []wgtypes.PeerConfig
Stdout: os.Stdout,
Stderr: os.Stdout,
}
cmdIPLinkDelete := exec.Command("ip", "link", "delete", "dev", ifacename)
currentiface, err := net.InterfaceByName(ifacename)
if err != nil {
err = cmdIPDevLinkAdd.Run()
if err != nil && !strings.Contains(err.Error(), "exists") {
fmt.Println("Error creating interface")
//fmt.Println(err.Error())
//return err
}
delErr := cmdIPLinkDelete.Run()
addLinkErr := cmdIPDevLinkAdd.Run()
addErr := cmdIPAddrAdd.Run()
if delErr != nil {
log.Println(delErr)
}
match := false
addrs, _ := currentiface.Addrs()
for _, a := range addrs {
if strings.Contains(a.String(), node.Address) {
match = true
}
if addLinkErr != nil {
log.Println(addLinkErr)
}
if !match {
err = cmdIPAddrAdd.Run()
if err != nil {
fmt.Println("Error adding address")
//return err
}
if addErr != nil {
log.Println(addErr)
}
var nodeport int
nodeport = int(node.Listenport)
@ -267,7 +257,7 @@ func InitWireguard(node *nodepb.Node, privkey string, peers []wgtypes.PeerConfig
}
}
//=========DNS Setup==========\\
log.Println("NODECFG.DNS:",nodecfg.DNS)
log.Println("NODECFG.DNS:", nodecfg.DNS)
if nodecfg.DNS == "on" {
_ = local.UpdateDNS(ifacename, network, nameserver)
}