remove comms network leftovers

Signed-off-by: Matthew R. Kasun <mkasun@nusak.ca>
This commit is contained in:
Matthew R. Kasun
2022-04-22 05:21:35 -04:00
parent e1b590d43f
commit 747d6bc692
16 changed files with 55 additions and 186 deletions

View File

@@ -66,7 +66,6 @@ type ServerConfig struct {
ManageIPTables string `yaml:"manageiptables"` ManageIPTables string `yaml:"manageiptables"`
PortForwardServices string `yaml:"portforwardservices"` PortForwardServices string `yaml:"portforwardservices"`
HostNetwork string `yaml:"hostnetwork"` HostNetwork string `yaml:"hostnetwork"`
CommsCIDR string `yaml:"commscidr"`
MQPort string `yaml:"mqport"` MQPort string `yaml:"mqport"`
Server string `yaml:"server"` Server string `yaml:"server"`
} }

View File

@@ -3,10 +3,8 @@ package controller
import ( import (
"encoding/json" "encoding/json"
"errors" "errors"
"fmt"
"net/http" "net/http"
"strings" "strings"
"time"
"github.com/gorilla/mux" "github.com/gorilla/mux"
"github.com/gravitl/netmaker/database" "github.com/gravitl/netmaker/database"
@@ -16,7 +14,6 @@ import (
"github.com/gravitl/netmaker/models" "github.com/gravitl/netmaker/models"
"github.com/gravitl/netmaker/mq" "github.com/gravitl/netmaker/mq"
"github.com/gravitl/netmaker/servercfg" "github.com/gravitl/netmaker/servercfg"
"github.com/gravitl/netmaker/serverctl"
) )
// ALL_NETWORK_ACCESS - represents all networks // ALL_NETWORK_ACCESS - represents all networks
@@ -85,10 +82,6 @@ func getNetwork(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Type", "application/json")
var params = mux.Vars(r) var params = mux.Vars(r)
netname := params["networkname"] netname := params["networkname"]
if isCommsEdit(w, r, netname) {
return
}
network, err := logic.GetNetwork(netname) network, err := logic.GetNetwork(netname)
if err != nil { if err != nil {
returnErrorResponse(w, r, formatError(err, "internal")) returnErrorResponse(w, r, formatError(err, "internal"))
@@ -106,10 +99,6 @@ func keyUpdate(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Type", "application/json")
var params = mux.Vars(r) var params = mux.Vars(r)
netname := params["networkname"] netname := params["networkname"]
if isCommsEdit(w, r, netname) {
return
}
network, err := logic.KeyUpdate(netname) network, err := logic.KeyUpdate(netname)
if err != nil { if err != nil {
returnErrorResponse(w, r, formatError(err, "internal")) returnErrorResponse(w, r, formatError(err, "internal"))
@@ -296,10 +285,6 @@ func deleteNetwork(w http.ResponseWriter, r *http.Request) {
var params = mux.Vars(r) var params = mux.Vars(r)
network := params["networkname"] network := params["networkname"]
if isCommsEdit(w, r, network) {
return
}
err := logic.DeleteNetwork(network) err := logic.DeleteNetwork(network)
if err != nil { if err != nil {
errtype := "badrequest" errtype := "badrequest"
@@ -334,8 +319,7 @@ func createNetwork(w http.ResponseWriter, r *http.Request) {
} }
if servercfg.IsClientMode() != "off" { if servercfg.IsClientMode() != "off" {
var node models.Node _, err := logic.ServerJoin(&network)
node, err = logic.ServerJoin(&network)
if err != nil { if err != nil {
logic.DeleteNetwork(network.NetID) logic.DeleteNetwork(network.NetID)
if err == nil { if err == nil {
@@ -344,7 +328,6 @@ func createNetwork(w http.ResponseWriter, r *http.Request) {
returnErrorResponse(w, r, formatError(err, "internal")) returnErrorResponse(w, r, formatError(err, "internal"))
return return
} }
getServerAddrs(&node)
} }
logger.Log(1, r.Header.Get("user"), "created network", network.NetID) logger.Log(1, r.Header.Get("user"), "created network", network.NetID)
@@ -359,9 +342,6 @@ func createAccessKey(w http.ResponseWriter, r *http.Request) {
var accesskey models.AccessKey var accesskey models.AccessKey
//start here //start here
netname := params["networkname"] netname := params["networkname"]
if isCommsEdit(w, r, netname) {
return
}
network, err := logic.GetParentNetwork(netname) network, err := logic.GetParentNetwork(netname)
if err != nil { if err != nil {
returnErrorResponse(w, r, formatError(err, "internal")) returnErrorResponse(w, r, formatError(err, "internal"))
@@ -414,41 +394,3 @@ func deleteAccessKey(w http.ResponseWriter, r *http.Request) {
logger.Log(1, r.Header.Get("user"), "deleted access key", keyname, "on network,", netname) logger.Log(1, r.Header.Get("user"), "deleted access key", keyname, "on network,", netname)
w.WriteHeader(http.StatusOK) w.WriteHeader(http.StatusOK)
} }
func isCommsEdit(w http.ResponseWriter, r *http.Request, netname string) bool {
if netname == serverctl.COMMS_NETID {
returnErrorResponse(w, r, formatError(fmt.Errorf("cannot access comms network"), "internal"))
return true
}
return false
}
func getServerAddrs(node *models.Node) {
serverNodes := logic.GetServerNodes(serverctl.COMMS_NETID)
//pubIP, _ := servercfg.GetPublicIP()
if len(serverNodes) == 0 {
if err := serverctl.SyncServerNetwork(serverctl.COMMS_NETID); err != nil {
return
}
}
var serverAddrs = make([]models.ServerAddr, 0)
for _, node := range serverNodes {
if node.Address != "" {
serverAddrs = append(serverAddrs, models.ServerAddr{
IsLeader: logic.IsLeader(&node),
Address: node.Address,
})
}
}
networkSettings, _ := logic.GetParentNetwork(node.Network)
// TODO consolidate functionality around files
networkSettings.NodesLastModified = time.Now().Unix()
networkSettings.DefaultServerAddrs = serverAddrs
if err := logic.SaveNetwork(&networkSettings); err != nil {
logger.Log(1, "unable to save network on serverAddr update", err.Error())
}
node.NetworkSettings.DefaultServerAddrs = networkSettings.DefaultServerAddrs
}

View File

@@ -463,7 +463,6 @@ func createNode(w http.ResponseWriter, r *http.Request) {
return return
} }
} }
getServerAddrs(&node)
key, keyErr := logic.RetrievePublicTrafficKey() key, keyErr := logic.RetrievePublicTrafficKey()
if keyErr != nil { if keyErr != nil {
logger.Log(0, "error retrieving key: ", keyErr.Error()) logger.Log(0, "error retrieving key: ", keyErr.Error())

42
dev.yaml Normal file
View File

@@ -0,0 +1,42 @@
server:
corednsaddr: ""
apiconn: "api.ping.clustercat.com:443"
apihost: ""
apiport: "8081"
grpcconn: "grpc.ping.clustercat.com:443"
grpchost: ""
grpcport: "50051"
grpcsecure: "on"
mqhost: "localhost"
masterkey: "secretkey"
dnskey: ""
allowedorigin: "*"
nodeid: "netmaker"
restbackend: "on"
agentbackend: "on"
messagequeuebackend: "on"
clientmode: "on"
dnsmode: "on"
disableremoteipcheck: ""
grpcssl: "on"
version: ""
sqlconn: ""
platform: ""
database: "sqlite"
defaultnodelimit: ""
verbosity: 3
servercheckininterval: ""
authprovider: ""
clientid: ""
clientsecret: ""
frontendurl: ""
displaykeys: ""
azuretenant: ""
rce: "off"
debug: ""
telemetry: ""
manageiptables: "off"
portforwardservices: ""
hostnetwork: "off"
mqport: ""
server: "broker.ping.clustercat.com"

View File

@@ -143,7 +143,7 @@ func DecrimentKey(networkName string, keyvalue string) {
var network models.Network var network models.Network
network, err := GetParentNetwork(networkName) network, err := GetParentNetwork(networkName)
if err != nil || network.IsComms == "yes" { if err != nil {
return return
} }
@@ -176,9 +176,6 @@ func IsKeyValid(networkname string, keyvalue string) bool {
return false return false
} }
accesskeys := network.AccessKeys accesskeys := network.AccessKeys
if network.IsComms == "yes" {
accesskeys = getAllAccessKeys()
}
var key models.AccessKey var key models.AccessKey
foundkey := false foundkey := false

View File

@@ -43,7 +43,7 @@ func ServerJoin(networkSettings *models.Network) (models.Node, error) {
} }
var ishub = "no" var ishub = "no"
if networkSettings.IsPointToSite == "yes" || networkSettings.IsComms == "yes" { if networkSettings.IsPointToSite == "yes" {
nodes, err := GetNetworkNodes(networkSettings.NetID) nodes, err := GetNetworkNodes(networkSettings.NetID)
if err != nil || nodes == nil { if err != nil || nodes == nil {
ishub = "yes" ishub = "yes"

View File

@@ -72,32 +72,3 @@ func StoreJWTSecret(privateKey string) error {
} }
return database.Insert("nm-jwt-secret", string(data), database.SERVERCONF_TABLE_NAME) return database.Insert("nm-jwt-secret", string(data), database.SERVERCONF_TABLE_NAME)
} }
// FetchCommsNetID - fetches comms netid from db
func FetchCommsNetID() (string, error) {
var dbData string
var err error
var fetchedData = serverData{}
dbData, err = database.FetchRecord(database.SERVERCONF_TABLE_NAME, "nm-comms-id")
if err != nil {
return "", err
}
err = json.Unmarshal([]byte(dbData), &fetchedData)
if err != nil {
return "", err
}
return fetchedData.PrivateKey, nil
}
// StoreCommsNetID - stores server comms network netid if needed
func StoreCommsNetID(netid string) error {
var newData = serverData{}
var err error
var data []byte
newData.PrivateKey = netid
data, err = json.Marshal(&newData)
if err != nil {
return err
}
return database.Insert("nm-comms-id", string(data), database.SERVERCONF_TABLE_NAME)
}

View File

@@ -25,14 +25,11 @@ type Network struct {
IsIPv4 string `json:"isipv4" bson:"isipv4" validate:"checkyesorno"` IsIPv4 string `json:"isipv4" bson:"isipv4" validate:"checkyesorno"`
IsIPv6 string `json:"isipv6" bson:"isipv6" validate:"checkyesorno"` IsIPv6 string `json:"isipv6" bson:"isipv6" validate:"checkyesorno"`
IsPointToSite string `json:"ispointtosite" bson:"ispointtosite" validate:"checkyesorno"` IsPointToSite string `json:"ispointtosite" bson:"ispointtosite" validate:"checkyesorno"`
IsComms string `json:"iscomms" bson:"iscomms" validate:"checkyesorno"`
LocalRange string `json:"localrange" bson:"localrange" validate:"omitempty,cidr"` LocalRange string `json:"localrange" bson:"localrange" validate:"omitempty,cidr"`
DefaultUDPHolePunch string `json:"defaultudpholepunch" bson:"defaultudpholepunch" validate:"checkyesorno"` DefaultUDPHolePunch string `json:"defaultudpholepunch" bson:"defaultudpholepunch" validate:"checkyesorno"`
DefaultExtClientDNS string `json:"defaultextclientdns" bson:"defaultextclientdns"` DefaultExtClientDNS string `json:"defaultextclientdns" bson:"defaultextclientdns"`
DefaultMTU int32 `json:"defaultmtu" bson:"defaultmtu"` DefaultMTU int32 `json:"defaultmtu" bson:"defaultmtu"`
// consider removing - may be depreciated DefaultACL string `json:"defaultacl" bson:"defaultacl" yaml:"defaultacl" validate:"checkyesorno"`
DefaultServerAddrs []ServerAddr `json:"defaultserveraddrs" bson:"defaultserveraddrs" yaml:"defaultserveraddrs"`
DefaultACL string `json:"defaultacl" bson:"defaultacl" yaml:"defaultacl" validate:"checkyesorno"`
} }
// SaveData - sensitive fields of a network that should be kept the same // SaveData - sensitive fields of a network that should be kept the same
@@ -61,9 +58,6 @@ func (network *Network) SetDefaults() {
if network.IsPointToSite == "" { if network.IsPointToSite == "" {
network.IsPointToSite = "no" network.IsPointToSite = "no"
} }
if network.IsComms == "" {
network.IsComms = "no"
}
if network.DefaultInterface == "" { if network.DefaultInterface == "" {
if len(network.NetID) < 13 { if len(network.NetID) < 13 {
network.DefaultInterface = "nm-" + network.NetID network.DefaultInterface = "nm-" + network.NetID

View File

@@ -10,36 +10,11 @@ import (
"github.com/gravitl/netmaker/netclient/ncutils" "github.com/gravitl/netmaker/netclient/ncutils"
) )
// JoinComms -- Join the message queue comms network if it doesn't have it
// tries to ping if already found locally, if fail ping pull for best effort for communication
func JoinComms(cfg *config.ClientConfig) error {
commsCfg := &config.ClientConfig{}
commsCfg.Server.AccessKey = cfg.Server.AccessKey
commsCfg.Server.CoreDNSAddr = cfg.Server.CoreDNSAddr
if commsCfg.ConfigFileExists() {
return nil
}
commsCfg.ReadConfig()
if len(commsCfg.Node.Name) == 0 {
if err := functions.JoinNetwork(commsCfg, "", true); err != nil {
return err
}
} else { // check if comms is currently reachable
if err := functions.PingServer(commsCfg); err != nil {
if err = Pull(commsCfg); err != nil {
return err
}
}
}
return nil
}
// Join - join command to run from cli // Join - join command to run from cli
func Join(cfg *config.ClientConfig, privateKey string) error { func Join(cfg *config.ClientConfig, privateKey string) error {
var err error var err error
//join network //join network
err = functions.JoinNetwork(cfg, privateKey, false) err = functions.JoinNetwork(cfg, privateKey)
if err != nil && !cfg.DebugOn { if err != nil && !cfg.DebugOn {
if !strings.Contains(err.Error(), "ALREADY_INSTALLED") { if !strings.Contains(err.Error(), "ALREADY_INSTALLED") {
logger.Log(1, "error installing: ", err.Error()) logger.Log(1, "error installing: ", err.Error())
@@ -89,13 +64,6 @@ func Leave(cfg *config.ClientConfig, force bool) error {
} else { } else {
logger.Log(0, "success") logger.Log(0, "success")
} }
//nets, err := ncutils.GetSystemNetworks()
//if err == nil && len(nets) == 1 {
//if nets[0] == cfg.Node.CommID {
//logger.Log(1, "detected comms as remaining network, removing...")
//err = functions.LeaveNetwork(nets[0], true)
//}
//}
return err return err
} }

View File

@@ -18,7 +18,6 @@ import (
mqtt "github.com/eclipse/paho.mqtt.golang" mqtt "github.com/eclipse/paho.mqtt.golang"
"github.com/go-ping/ping" "github.com/go-ping/ping"
"github.com/gravitl/netmaker/logger" "github.com/gravitl/netmaker/logger"
"github.com/gravitl/netmaker/models"
"github.com/gravitl/netmaker/netclient/auth" "github.com/gravitl/netmaker/netclient/auth"
"github.com/gravitl/netmaker/netclient/config" "github.com/gravitl/netmaker/netclient/config"
"github.com/gravitl/netmaker/netclient/daemon" "github.com/gravitl/netmaker/netclient/daemon"
@@ -72,7 +71,7 @@ func Daemon() error {
wg := sync.WaitGroup{} wg := sync.WaitGroup{}
ctx, cancel := context.WithCancel(context.Background()) ctx, cancel := context.WithCancel(context.Background())
wg.Add(1) wg.Add(1)
go Checkin(ctx, &wg, serverSet) go Checkin(ctx, &wg)
quit := make(chan os.Signal, 1) quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGTERM, os.Interrupt) signal.Notify(quit, syscall.SIGTERM, os.Interrupt)
<-quit <-quit
@@ -112,7 +111,6 @@ func UpdateKeys(nodeCfg *config.ClientConfig, client mqtt.Client) error {
} }
// PingServer -- checks if server is reachable // PingServer -- checks if server is reachable
// use commsCfg only*
func PingServer(cfg *config.ClientConfig) error { func PingServer(cfg *config.ClientConfig) error {
pinger, err := ping.NewPinger(cfg.Server.Server) pinger, err := ping.NewPinger(cfg.Server.Server)
if err != nil { if err != nil {
@@ -181,10 +179,9 @@ func messageQueue(ctx context.Context, server string) {
} }
// setupMQTTSub creates a connection to broker and subscribes to topic // setupMQTTSub creates a connection to broker and subscribes to topic
// utilizes comms client configs to setup connections
func setupMQTTSub(server string) mqtt.Client { func setupMQTTSub(server string) mqtt.Client {
opts := mqtt.NewClientOptions() opts := mqtt.NewClientOptions()
opts.AddBroker("ssl://" + server + ":8883") // TODO get the appropriate port of the comms mq server opts.AddBroker("ssl://" + server + ":8883")
opts.TLSConfig = NewTLSConfig(nil, server) opts.TLSConfig = NewTLSConfig(nil, server)
opts.SetDefaultPublishHandler(All) opts.SetDefaultPublishHandler(All)
opts.SetAutoReconnect(true) opts.SetAutoReconnect(true)
@@ -325,7 +322,7 @@ func NewTLSConfig(cfg *config.ClientConfig, server string) *tls.Config {
func setupMQTT(cfg *config.ClientConfig, publish bool) mqtt.Client { func setupMQTT(cfg *config.ClientConfig, publish bool) mqtt.Client {
opts := mqtt.NewClientOptions() opts := mqtt.NewClientOptions()
server := cfg.Server.Server server := cfg.Server.Server
opts.AddBroker("ssl://" + server + ":8883") // TODO get the appropriate port of the comms mq server opts.AddBroker("ssl://" + server + ":8883")
opts.TLSConfig = NewTLSConfig(cfg, "") opts.TLSConfig = NewTLSConfig(cfg, "")
opts.SetDefaultPublishHandler(All) opts.SetDefaultPublishHandler(All)
opts.SetAutoReconnect(true) opts.SetAutoReconnect(true)
@@ -451,16 +448,6 @@ func decryptMsg(nodeCfg *config.ClientConfig, msg []byte) ([]byte, error) {
return ncutils.DeChunk(msg, serverPubKey, diskKey) return ncutils.DeChunk(msg, serverPubKey, diskKey)
} }
func getServerAddress(cfg *config.ClientConfig) string {
var server models.ServerAddr
for _, server = range cfg.Node.NetworkSettings.DefaultServerAddrs {
if server.Address != "" && server.IsLeader {
break
}
}
return server.Address
}
// == Message Caches == // == Message Caches ==
func insert(network, which, cache string) { func insert(network, which, cache string) {

View File

@@ -25,7 +25,7 @@ import (
) )
// JoinNetwork - helps a client join a network // JoinNetwork - helps a client join a network
func JoinNetwork(cfg *config.ClientConfig, privateKey string, iscomms bool) error { func JoinNetwork(cfg *config.ClientConfig, privateKey string) error {
if cfg.Node.Network == "" { if cfg.Node.Network == "" {
return errors.New("no network provided") return errors.New("no network provided")
} }
@@ -101,7 +101,7 @@ func JoinNetwork(cfg *config.ClientConfig, privateKey string, iscomms bool) erro
// Find and set node MacAddress // Find and set node MacAddress
if cfg.Node.MacAddress == "" { if cfg.Node.MacAddress == "" {
macs, err := ncutils.GetMacAddr() macs, err := ncutils.GetMacAddr()
if err != nil || iscomms { if err != nil {
//if macaddress can't be found set to random string //if macaddress can't be found set to random string
cfg.Node.MacAddress = ncutils.MakeRandomString(18) cfg.Node.MacAddress = ncutils.MakeRandomString(18)
} else { } else {

View File

@@ -202,10 +202,6 @@ func UpdatePeers(client mqtt.Client, msg mqtt.Message) {
return return
} }
logger.Log(0, "received peer update for node "+cfg.Node.Name+" "+cfg.Node.Network) logger.Log(0, "received peer update for node "+cfg.Node.Name+" "+cfg.Node.Network)
//skip dns updates if this is a peer update for comms network
if cfg.Node.NetworkSettings.IsComms == "yes" {
return
}
if cfg.Node.DNSOn == "yes" { if cfg.Node.DNSOn == "yes" {
if err := setHostDNS(peerUpdate.DNS, cfg.Node.Network, ncutils.IsWindows()); err != nil { if err := setHostDNS(peerUpdate.DNS, cfg.Node.Network, ncutils.IsWindows()); err != nil {
logger.Log(0, "error updating /etc/hosts "+err.Error()) logger.Log(0, "error updating /etc/hosts "+err.Error())

View File

@@ -18,7 +18,7 @@ import (
// Checkin -- go routine that checks for public or local ip changes, publishes changes // Checkin -- go routine that checks for public or local ip changes, publishes changes
// if there are no updates, simply "pings" the server as a checkin // if there are no updates, simply "pings" the server as a checkin
func Checkin(ctx context.Context, wg *sync.WaitGroup, currentComms map[string]struct{}) { func Checkin(ctx context.Context, wg *sync.WaitGroup) {
defer wg.Done() defer wg.Done()
for { for {
select { select {
@@ -113,8 +113,7 @@ func Hello(nodeCfg *config.ClientConfig) {
logger.Log(3, "server checkin complete") logger.Log(3, "server checkin complete")
} }
// requires the commscfg in which to send traffic over and nodecfg of node that is publish the message // node cfg is required in order to fetch the traffic keys of that node for encryption
// node cfg is so that the traffic keys of that node may be fetched for encryption
func publish(nodeCfg *config.ClientConfig, dest string, msg []byte, qos byte) error { func publish(nodeCfg *config.ClientConfig, dest string, msg []byte, qos byte) error {
// setup the keys // setup the keys
trafficPrivKey, err := auth.RetrieveTrafficKey(nodeCfg.Node.Network) trafficPrivKey, err := auth.RetrieveTrafficKey(nodeCfg.Node.Network)

View File

@@ -47,7 +47,7 @@ func Register(cfg *config.ClientConfig, key string) error {
} else if err != nil { } else if err != nil {
return err return err
} }
return JoinNetwork(cfg, key, false) return JoinNetwork(cfg, key)
} }
// RegisterWithServer calls the register endpoint with privatekey and commonname - api returns ca and client certificate // RegisterWithServer calls the register endpoint with privatekey and commonname - api returns ca and client certificate

View File

@@ -13,7 +13,6 @@ import (
var ( var (
Version = "dev" Version = "dev"
commsID = ""
) )
// SetHost - sets the host ip // SetHost - sets the host ip
@@ -206,11 +205,6 @@ func GetMQPort() string {
return mqport return mqport
} }
// SetCommsID - sets the commsID
func SetCommsID(newCommsID string) {
commsID = newCommsID
}
// GetMessageQueueEndpoint - gets the message queue endpoint // GetMessageQueueEndpoint - gets the message queue endpoint
func GetMessageQueueEndpoint() string { func GetMessageQueueEndpoint() string {
host, _ := GetPublicIP() host, _ := GetPublicIP()

View File

@@ -15,30 +15,11 @@ import (
"github.com/gravitl/netmaker/servercfg" "github.com/gravitl/netmaker/servercfg"
) )
// COMMS_NETID - name of the comms network
var COMMS_NETID string
const ( const (
// NETMAKER_BINARY_NAME - name of netmaker binary // NETMAKER_BINARY_NAME - name of netmaker binary
NETMAKER_BINARY_NAME = "netmaker" NETMAKER_BINARY_NAME = "netmaker"
) )
// SetJWTSecret - sets the jwt secret on server startup
func setCommsID() {
currentid, idErr := logic.FetchCommsNetID()
if idErr != nil {
commsid := logic.RandomString(8)
if err := logic.StoreCommsNetID(commsid); err != nil {
logger.FatalLog("something went wrong when configuring comms id")
}
COMMS_NETID = commsid
servercfg.SetCommsID(COMMS_NETID)
return
}
COMMS_NETID = currentid
servercfg.SetCommsID(COMMS_NETID)
}
// InitServerNetclient - intializes the server netclient // InitServerNetclient - intializes the server netclient
// 1. Check if config directory exists, if not attempt to make // 1. Check if config directory exists, if not attempt to make
// 2. Check current networks and run pull to get interface up to date in case of restart // 2. Check current networks and run pull to get interface up to date in case of restart