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"`
PortForwardServices string `yaml:"portforwardservices"`
HostNetwork string `yaml:"hostnetwork"`
CommsCIDR string `yaml:"commscidr"`
MQPort string `yaml:"mqport"`
Server string `yaml:"server"`
}

View file

@ -3,10 +3,8 @@ package controller
import (
"encoding/json"
"errors"
"fmt"
"net/http"
"strings"
"time"
"github.com/gorilla/mux"
"github.com/gravitl/netmaker/database"
@ -16,7 +14,6 @@ import (
"github.com/gravitl/netmaker/models"
"github.com/gravitl/netmaker/mq"
"github.com/gravitl/netmaker/servercfg"
"github.com/gravitl/netmaker/serverctl"
)
// 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")
var params = mux.Vars(r)
netname := params["networkname"]
if isCommsEdit(w, r, netname) {
return
}
network, err := logic.GetNetwork(netname)
if err != nil {
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")
var params = mux.Vars(r)
netname := params["networkname"]
if isCommsEdit(w, r, netname) {
return
}
network, err := logic.KeyUpdate(netname)
if err != nil {
returnErrorResponse(w, r, formatError(err, "internal"))
@ -296,10 +285,6 @@ func deleteNetwork(w http.ResponseWriter, r *http.Request) {
var params = mux.Vars(r)
network := params["networkname"]
if isCommsEdit(w, r, network) {
return
}
err := logic.DeleteNetwork(network)
if err != nil {
errtype := "badrequest"
@ -334,8 +319,7 @@ func createNetwork(w http.ResponseWriter, r *http.Request) {
}
if servercfg.IsClientMode() != "off" {
var node models.Node
node, err = logic.ServerJoin(&network)
_, err := logic.ServerJoin(&network)
if err != nil {
logic.DeleteNetwork(network.NetID)
if err == nil {
@ -344,7 +328,6 @@ func createNetwork(w http.ResponseWriter, r *http.Request) {
returnErrorResponse(w, r, formatError(err, "internal"))
return
}
getServerAddrs(&node)
}
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
//start here
netname := params["networkname"]
if isCommsEdit(w, r, netname) {
return
}
network, err := logic.GetParentNetwork(netname)
if err != nil {
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)
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
}
}
getServerAddrs(&node)
key, keyErr := logic.RetrievePublicTrafficKey()
if keyErr != nil {
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
network, err := GetParentNetwork(networkName)
if err != nil || network.IsComms == "yes" {
if err != nil {
return
}
@ -176,9 +176,6 @@ func IsKeyValid(networkname string, keyvalue string) bool {
return false
}
accesskeys := network.AccessKeys
if network.IsComms == "yes" {
accesskeys = getAllAccessKeys()
}
var key models.AccessKey
foundkey := false

View file

@ -43,7 +43,7 @@ func ServerJoin(networkSettings *models.Network) (models.Node, error) {
}
var ishub = "no"
if networkSettings.IsPointToSite == "yes" || networkSettings.IsComms == "yes" {
if networkSettings.IsPointToSite == "yes" {
nodes, err := GetNetworkNodes(networkSettings.NetID)
if err != nil || nodes == nil {
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)
}
// 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"`
IsIPv6 string `json:"isipv6" bson:"isipv6" 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"`
DefaultUDPHolePunch string `json:"defaultudpholepunch" bson:"defaultudpholepunch" validate:"checkyesorno"`
DefaultExtClientDNS string `json:"defaultextclientdns" bson:"defaultextclientdns"`
DefaultMTU int32 `json:"defaultmtu" bson:"defaultmtu"`
// consider removing - may be depreciated
DefaultServerAddrs []ServerAddr `json:"defaultserveraddrs" bson:"defaultserveraddrs" yaml:"defaultserveraddrs"`
DefaultACL string `json:"defaultacl" bson:"defaultacl" yaml:"defaultacl" validate:"checkyesorno"`
DefaultACL string `json:"defaultacl" bson:"defaultacl" yaml:"defaultacl" validate:"checkyesorno"`
}
// SaveData - sensitive fields of a network that should be kept the same
@ -61,9 +58,6 @@ func (network *Network) SetDefaults() {
if network.IsPointToSite == "" {
network.IsPointToSite = "no"
}
if network.IsComms == "" {
network.IsComms = "no"
}
if network.DefaultInterface == "" {
if len(network.NetID) < 13 {
network.DefaultInterface = "nm-" + network.NetID

View file

@ -10,36 +10,11 @@ import (
"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
func Join(cfg *config.ClientConfig, privateKey string) error {
var err error
//join network
err = functions.JoinNetwork(cfg, privateKey, false)
err = functions.JoinNetwork(cfg, privateKey)
if err != nil && !cfg.DebugOn {
if !strings.Contains(err.Error(), "ALREADY_INSTALLED") {
logger.Log(1, "error installing: ", err.Error())
@ -89,13 +64,6 @@ func Leave(cfg *config.ClientConfig, force bool) error {
} else {
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
}

View file

@ -18,7 +18,6 @@ import (
mqtt "github.com/eclipse/paho.mqtt.golang"
"github.com/go-ping/ping"
"github.com/gravitl/netmaker/logger"
"github.com/gravitl/netmaker/models"
"github.com/gravitl/netmaker/netclient/auth"
"github.com/gravitl/netmaker/netclient/config"
"github.com/gravitl/netmaker/netclient/daemon"
@ -72,7 +71,7 @@ func Daemon() error {
wg := sync.WaitGroup{}
ctx, cancel := context.WithCancel(context.Background())
wg.Add(1)
go Checkin(ctx, &wg, serverSet)
go Checkin(ctx, &wg)
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGTERM, os.Interrupt)
<-quit
@ -112,7 +111,6 @@ func UpdateKeys(nodeCfg *config.ClientConfig, client mqtt.Client) error {
}
// PingServer -- checks if server is reachable
// use commsCfg only*
func PingServer(cfg *config.ClientConfig) error {
pinger, err := ping.NewPinger(cfg.Server.Server)
if err != nil {
@ -181,10 +179,9 @@ func messageQueue(ctx context.Context, server string) {
}
// setupMQTTSub creates a connection to broker and subscribes to topic
// utilizes comms client configs to setup connections
func setupMQTTSub(server string) mqtt.Client {
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.SetDefaultPublishHandler(All)
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 {
opts := mqtt.NewClientOptions()
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.SetDefaultPublishHandler(All)
opts.SetAutoReconnect(true)
@ -451,16 +448,6 @@ func decryptMsg(nodeCfg *config.ClientConfig, msg []byte) ([]byte, error) {
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 ==
func insert(network, which, cache string) {

View file

@ -25,7 +25,7 @@ import (
)
// 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 == "" {
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
if cfg.Node.MacAddress == "" {
macs, err := ncutils.GetMacAddr()
if err != nil || iscomms {
if err != nil {
//if macaddress can't be found set to random string
cfg.Node.MacAddress = ncutils.MakeRandomString(18)
} else {

View file

@ -202,10 +202,6 @@ func UpdatePeers(client mqtt.Client, msg mqtt.Message) {
return
}
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 err := setHostDNS(peerUpdate.DNS, cfg.Node.Network, ncutils.IsWindows()); err != nil {
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
// 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()
for {
select {
@ -113,8 +113,7 @@ func Hello(nodeCfg *config.ClientConfig) {
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 so that the traffic keys of that node may be fetched for encryption
// node cfg is required in order to fetch the traffic keys of that node for encryption
func publish(nodeCfg *config.ClientConfig, dest string, msg []byte, qos byte) error {
// setup the keys
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 {
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

View file

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

View file

@ -15,30 +15,11 @@ import (
"github.com/gravitl/netmaker/servercfg"
)
// COMMS_NETID - name of the comms network
var COMMS_NETID string
const (
// NETMAKER_BINARY_NAME - name of netmaker binary
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
// 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