mirror of
https://github.com/gravitl/netmaker.git
synced 2025-02-25 16:44:01 +08:00
Fixed client and server issues with updates and dns before db connect
This commit is contained in:
parent
6b5f5450be
commit
fb5f08be5a
4 changed files with 22 additions and 34 deletions
|
@ -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()
|
||||
}
|
||||
|
|
4
main.go
4
main.go
|
@ -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)
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue