mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-11 23:54:22 +08:00
moved telemetry check and generated comms CIDR better
This commit is contained in:
parent
946b2ed12f
commit
324d2ba70c
4 changed files with 46 additions and 7 deletions
|
@ -625,10 +625,6 @@ func deleteNode(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
func runUpdates(node *models.Node, ifaceDelta bool) {
|
||||
go func() { // don't block http response
|
||||
err := logic.TimerCheckpoint()
|
||||
if err != nil {
|
||||
logger.Log(3, "error occurred on timer,", err.Error())
|
||||
}
|
||||
// publish node update if not server
|
||||
if err := mq.NodeUpdate(node); err != nil {
|
||||
logger.Log(1, "error publishing node update to node", node.Name, node.ID, err.Error())
|
||||
|
|
|
@ -91,16 +91,22 @@ func NodeUpdate(node *models.Node) error {
|
|||
|
||||
// sendPeers - retrieve networks, send peer ports to all peers
|
||||
func sendPeers() {
|
||||
|
||||
var force bool
|
||||
peer_force_send++
|
||||
if peer_force_send == 5 {
|
||||
force = true
|
||||
peer_force_send = 0
|
||||
err := logic.TimerCheckpoint() // run telemetry & log dumps if 24 hours has passed..
|
||||
if err != nil {
|
||||
logger.Log(3, "error occurred on timer,", err.Error())
|
||||
}
|
||||
}
|
||||
networks, err := logic.GetNetworks()
|
||||
if err != nil {
|
||||
logger.Log(1, "error retrieving networks for keepalive", err.Error())
|
||||
}
|
||||
|
||||
for _, network := range networks {
|
||||
serverNode, errN := logic.GetNetworkServerLeader(network.NetID)
|
||||
if errN == nil {
|
||||
|
|
|
@ -2,14 +2,18 @@ package servercfg
|
|||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"math/rand"
|
||||
"net"
|
||||
"net/http"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/gravitl/netmaker/config"
|
||||
"github.com/gravitl/netmaker/logger"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -258,17 +262,19 @@ func GetMQPort() string {
|
|||
|
||||
// GetGRPCPort - gets the grpc port
|
||||
func GetCommsCIDR() string {
|
||||
netrange := "172.242.0.0/16"
|
||||
netrange := "172.16.0.0/16"
|
||||
if os.Getenv("COMMS_CIDR") != "" {
|
||||
netrange = os.Getenv("COMMS_CIDR")
|
||||
} else if config.Config.Server.CommsCIDR != "" {
|
||||
netrange = config.Config.Server.CommsCIDR
|
||||
} else { // make a random one, which should only affect initialize first time, unless db is removed
|
||||
netrange = genNewCommsCIDR()
|
||||
}
|
||||
_, _, err := net.ParseCIDR(netrange)
|
||||
if err == nil {
|
||||
return netrange
|
||||
}
|
||||
return "172.242.0.0/16"
|
||||
return "172.16.0.0/16"
|
||||
}
|
||||
|
||||
// GetCommsID - gets the grpc port
|
||||
|
@ -614,3 +620,34 @@ func GetRce() bool {
|
|||
func GetDebug() bool {
|
||||
return os.Getenv("DEBUG") == "on" || config.Config.Server.Debug == true
|
||||
}
|
||||
|
||||
func genNewCommsCIDR() string {
|
||||
currIfaces, err := net.Interfaces()
|
||||
netrange := fmt.Sprintf("172.%d.0.0/16", genCommsByte())
|
||||
if err == nil { // make sure chosen CIDR doesn't overlap with any local iface CIDRs
|
||||
iter := 0
|
||||
for i := 0; i < len(currIfaces); i++ {
|
||||
if currentAddrs, err := currIfaces[i].Addrs(); err == nil {
|
||||
for j := range currentAddrs {
|
||||
if strings.Contains(currentAddrs[j].String(), netrange[0:7]) {
|
||||
if iter > 20 { // if this hits, then the cidr should be specified
|
||||
logger.FatalLog("could not find a suitable comms network on this server, please manually enter one")
|
||||
}
|
||||
netrange = fmt.Sprintf("172.%d.0.0/16", genCommsByte())
|
||||
i = -1 // reset to loop back through
|
||||
iter++ // track how many times you've iterated and not found one
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return netrange
|
||||
}
|
||||
|
||||
func genCommsByte() int {
|
||||
const min = 1 << 4 // 16
|
||||
const max = 1 << 5 // 32
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
return rand.Intn(max-min) + min
|
||||
}
|
||||
|
|
|
@ -29,13 +29,13 @@ func InitializeCommsNetwork() error {
|
|||
|
||||
_, err := logic.GetNetwork(COMMS_NETID)
|
||||
if err != nil {
|
||||
logger.Log(1, "comms net does not exist, creating")
|
||||
var network models.Network
|
||||
network.NetID = COMMS_NETID
|
||||
network.AddressRange = servercfg.GetCommsCIDR()
|
||||
network.IsPointToSite = "yes"
|
||||
network.DefaultUDPHolePunch = "yes"
|
||||
network.IsComms = "yes"
|
||||
logger.Log(1, "comms net does not exist, creating with ID,", network.NetID, "and CIDR,", network.AddressRange)
|
||||
return logic.CreateNetwork(network)
|
||||
}
|
||||
SyncServerNetwork(COMMS_NETID)
|
||||
|
|
Loading…
Add table
Reference in a new issue