server update

This commit is contained in:
0xdcarns 2022-01-25 23:04:03 -05:00
parent d6554ef081
commit 424c801c6c
5 changed files with 18 additions and 11 deletions

View file

@ -68,8 +68,11 @@ func (s *NodeServiceServer) CreateNode(ctx context.Context, req *nodepb.Object)
}
var serverNodes = logic.GetServerNodes(node.Network)
for _, server := range serverNodes {
node.NetworkSettings.DefaultServerAddrs = append(node.NetworkSettings.DefaultServerAddrs, server.Address)
for i, server := range serverNodes {
node.NetworkSettings.DefaultServerAddrs += server.Address
if i < len(serverNodes)-1 {
node.NetworkSettings.DefaultServerAddrs += ","
}
}
err = logic.CreateNode(&node)

View file

@ -34,11 +34,11 @@ type Network struct {
LocalRange string `json:"localrange" bson:"localrange" validate:"omitempty,cidr"`
// checkin interval is depreciated at the network level. Set on server with CHECKIN_INTERVAL
DefaultCheckInInterval int32 `json:"checkininterval,omitempty" bson:"checkininterval,omitempty" validate:"omitempty,numeric,min=2,max=100000"`
DefaultUDPHolePunch string `json:"defaultudpholepunch" bson:"defaultudpholepunch" validate:"checkyesorno"`
DefaultExtClientDNS string `json:"defaultextclientdns" bson:"defaultextclientdns"`
DefaultMTU int32 `json:"defaultmtu" bson:"defaultmtu"`
DefaultServerAddrs []string `json:"defaultserveraddrs" bson:"defaultserveraddrs"`
DefaultCheckInInterval int32 `json:"checkininterval,omitempty" bson:"checkininterval,omitempty" validate:"omitempty,numeric,min=2,max=100000"`
DefaultUDPHolePunch string `json:"defaultudpholepunch" bson:"defaultudpholepunch" validate:"checkyesorno"`
DefaultExtClientDNS string `json:"defaultextclientdns" bson:"defaultextclientdns"`
DefaultMTU int32 `json:"defaultmtu" bson:"defaultmtu"`
DefaultServerAddrs string `json:"defaultserveraddrs" bson:"defaultserveraddrs" yaml:"defaultserveraddrs"`
}
// SaveData - sensitive fields of a network that should be kept the same

View file

@ -119,6 +119,7 @@ func ModConfig(node *models.Node) error {
modconfig.Node = (*node)
modconfig.NetworkSettings = node.NetworkSettings
log.Printf("%v \n", modconfig)
err = Write(&modconfig, network)
return err
}

View file

@ -8,6 +8,7 @@ import (
"os"
"os/signal"
"runtime"
"strings"
"sync"
"syscall"
"time"
@ -59,7 +60,8 @@ func Daemon() error {
// SetupMQTT creates a connection to broker and return client
func SetupMQTT(cfg *config.ClientConfig) mqtt.Client {
opts := mqtt.NewClientOptions()
for i, addr := range cfg.Node.NetworkSettings.DefaultServerAddrs {
serverAddrs := strings.Split(cfg.Node.NetworkSettings.DefaultServerAddrs, ",")
for i, addr := range serverAddrs {
if addr != "" {
ncutils.Log(fmt.Sprintf("adding server (%d) to listen on network %s \n", (i + 1), cfg.Node.Network))
opts.AddBroker(addr + ":1883")
@ -215,13 +217,12 @@ var UpdatePeers mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message)
var cfg config.ClientConfig
cfg.Network = peerUpdate.Network
cfg.ReadConfig()
var shouldReSub = shouldResub(cfg.Node.NetworkSettings.DefaultServerAddrs, peerUpdate.ServerAddrs)
var shouldReSub = shouldResub(strings.Split(cfg.Node.NetworkSettings.DefaultServerAddrs, ","), peerUpdate.ServerAddrs)
if shouldReSub {
client.Disconnect(250) // kill client
// un sub, re sub.. how?
client.Unsubscribe("update/"+cfg.Node.ID, "update/peers/"+cfg.Node.ID)
cfg.Node.NetworkSettings.DefaultServerAddrs = peerUpdate.ServerAddrs
cfg.Node.NetworkSettings.DefaultServerAddrs = strings.Join(peerUpdate.ServerAddrs, ",")
}
file := ncutils.GetNetclientPathSpecific() + cfg.Node.Interface + ".conf"
err = wireguard.UpdateWgPeers(file, peerUpdate.Peers)

View file

@ -161,6 +161,7 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
if err = json.Unmarshal([]byte(nodeData), &node); err != nil {
return err
}
log.Printf("%v \n", nodeData)
}
// get free port based on returned default listen port
@ -183,6 +184,7 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
}
if node.IsServer != "yes" { // == handle client side ==
cfg.Node = node
err = config.ModConfig(&node)
if err != nil {
return err