mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-06 05:04:27 +08:00
removed unnecessary variables from network, added IsHubAndSpoke
This commit is contained in:
parent
0aa9dd0992
commit
8cd19c20c6
6 changed files with 14 additions and 149 deletions
|
@ -260,7 +260,7 @@ func createNetwork(w http.ResponseWriter, r *http.Request) {
|
|||
if err != nil {
|
||||
logic.DeleteNetwork(network.NetID)
|
||||
if err == nil {
|
||||
err = errors.New("Failed to add server to network " + network.DisplayName)
|
||||
err = errors.New("Failed to add server to network " + network.NetID)
|
||||
}
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
return
|
||||
|
|
|
@ -3,7 +3,6 @@ package controller
|
|||
import (
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/gravitl/netmaker/database"
|
||||
"github.com/gravitl/netmaker/logic"
|
||||
|
@ -24,7 +23,8 @@ func TestCreateNetwork(t *testing.T) {
|
|||
var network models.Network
|
||||
network.NetID = "skynet"
|
||||
network.AddressRange = "10.0.0.1/24"
|
||||
network.DisplayName = "mynetwork"
|
||||
// if tests break - check here (removed displayname)
|
||||
//network.DisplayName = "mynetwork"
|
||||
|
||||
err := logic.CreateNetwork(network)
|
||||
assert.Nil(t, err)
|
||||
|
@ -61,20 +61,6 @@ func TestDeleteNetwork(t *testing.T) {
|
|||
})
|
||||
}
|
||||
|
||||
func TestKeyUpdate(t *testing.T) {
|
||||
t.Skip() //test is failing on last assert --- not sure why
|
||||
database.InitializeDatabase()
|
||||
createNet()
|
||||
existing, err := logic.GetNetwork("skynet")
|
||||
assert.Nil(t, err)
|
||||
time.Sleep(time.Second * 1)
|
||||
network, err := logic.KeyUpdate("skynet")
|
||||
assert.Nil(t, err)
|
||||
network, err = logic.GetNetwork("skynet")
|
||||
assert.Nil(t, err)
|
||||
assert.Greater(t, network.KeyUpdateTimeStamp, existing.KeyUpdateTimeStamp)
|
||||
}
|
||||
|
||||
func TestCreateKey(t *testing.T) {
|
||||
database.InitializeDatabase()
|
||||
createNet()
|
||||
|
@ -245,28 +231,6 @@ func TestValidateNetworkUpdate(t *testing.T) {
|
|||
},
|
||||
errMessage: "Field validation for 'AddressRange6' failed on the 'cidr' tag",
|
||||
},
|
||||
|
||||
{
|
||||
testname: "BadDisplayName",
|
||||
network: models.Network{
|
||||
DisplayName: "skynet*",
|
||||
},
|
||||
errMessage: "Field validation for 'DisplayName' failed on the 'alphanum' tag",
|
||||
},
|
||||
{
|
||||
testname: "DisplayNameTooLong",
|
||||
network: models.Network{
|
||||
DisplayName: "Thisisareallylongdisplaynamethatistoolong",
|
||||
},
|
||||
errMessage: "Field validation for 'DisplayName' failed on the 'max' tag",
|
||||
},
|
||||
{
|
||||
testname: "DisplayNameTooShort",
|
||||
network: models.Network{
|
||||
DisplayName: "1",
|
||||
},
|
||||
errMessage: "Field validation for 'DisplayName' failed on the 'min' tag",
|
||||
},
|
||||
{
|
||||
testname: "InvalidNetID",
|
||||
network: models.Network{
|
||||
|
@ -309,20 +273,6 @@ func TestValidateNetworkUpdate(t *testing.T) {
|
|||
},
|
||||
errMessage: "Field validation for 'LocalRange' failed on the 'cidr' tag",
|
||||
},
|
||||
{
|
||||
testname: "CheckInIntervalTooBig",
|
||||
network: models.Network{
|
||||
DefaultCheckInInterval: 100001,
|
||||
},
|
||||
errMessage: "Field validation for 'DefaultCheckInInterval' failed on the 'max' tag",
|
||||
},
|
||||
{
|
||||
testname: "CheckInIntervalTooSmall",
|
||||
network: models.Network{
|
||||
DefaultCheckInInterval: 1,
|
||||
},
|
||||
errMessage: "Field validation for 'DefaultCheckInInterval' failed on the 'min' tag",
|
||||
},
|
||||
}
|
||||
for _, tc := range cases {
|
||||
t.Run(tc.testname, func(t *testing.T) {
|
||||
|
@ -346,7 +296,6 @@ func createNet() {
|
|||
var network models.Network
|
||||
network.NetID = "skynet"
|
||||
network.AddressRange = "10.0.0.1/24"
|
||||
network.DisplayName = "mynetwork"
|
||||
_, err := logic.GetNetwork("skynet")
|
||||
if err != nil {
|
||||
logic.CreateNetwork(network)
|
||||
|
|
|
@ -107,26 +107,6 @@ func NetworkExists(name string) (bool, error) {
|
|||
return len(network) > 0, nil
|
||||
}
|
||||
|
||||
// IsNetworkDisplayNameUnique - checks if network display name unique
|
||||
func IsNetworkDisplayNameUnique(name string) (bool, error) {
|
||||
|
||||
isunique := true
|
||||
|
||||
dbs, err := logic.GetNetworks()
|
||||
if err != nil {
|
||||
return database.IsEmptyRecord(err), err
|
||||
}
|
||||
|
||||
for i := 0; i < len(dbs); i++ {
|
||||
|
||||
if name == dbs[i].DisplayName {
|
||||
isunique = false
|
||||
}
|
||||
}
|
||||
|
||||
return isunique, nil
|
||||
}
|
||||
|
||||
// IsKeyValidGlobal - checks if a key is valid globally
|
||||
func IsKeyValidGlobal(keyvalue string) bool {
|
||||
|
||||
|
|
|
@ -8,7 +8,6 @@ import (
|
|||
"net"
|
||||
"os/exec"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/go-playground/validator/v10"
|
||||
"github.com/gravitl/netmaker/database"
|
||||
|
@ -68,7 +67,6 @@ func CreateNetwork(network models.Network) error {
|
|||
network.SetDefaults()
|
||||
network.SetNodesLastModified()
|
||||
network.SetNetworkLastModified()
|
||||
network.KeyUpdateTimeStamp = time.Now().Unix()
|
||||
|
||||
err := ValidateNetwork(&network, false)
|
||||
if err != nil {
|
||||
|
@ -500,27 +498,6 @@ func UpdateNetworkNodeAddresses(networkName string) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// IsNetworkDisplayNameUnique - checks if displayname is unique from other networks
|
||||
func IsNetworkDisplayNameUnique(network *models.Network) (bool, error) {
|
||||
|
||||
isunique := true
|
||||
|
||||
records, err := GetNetworks()
|
||||
|
||||
if err != nil && !database.IsEmptyRecord(err) {
|
||||
return false, err
|
||||
}
|
||||
|
||||
for i := 0; i < len(records); i++ {
|
||||
|
||||
if network.NetID == records[i].DisplayName {
|
||||
isunique = false
|
||||
}
|
||||
}
|
||||
|
||||
return isunique, nil
|
||||
}
|
||||
|
||||
// IsNetworkNameUnique - checks to see if any other networks have the same name (id)
|
||||
func IsNetworkNameUnique(network *models.Network) (bool, error) {
|
||||
|
||||
|
@ -612,14 +589,6 @@ func ValidateNetwork(network *models.Network, isUpdate bool) error {
|
|||
return isFieldUnique && inCharSet
|
||||
})
|
||||
//
|
||||
_ = v.RegisterValidation("displayname_valid", func(fl validator.FieldLevel) bool {
|
||||
isFieldUnique, _ := IsNetworkDisplayNameUnique(network)
|
||||
inCharSet := network.DisplayNameInNetworkCharSet()
|
||||
if isUpdate {
|
||||
return inCharSet
|
||||
}
|
||||
return isFieldUnique && inCharSet
|
||||
})
|
||||
_ = v.RegisterValidation("checkyesorno", func(fl validator.FieldLevel) bool {
|
||||
return validation.CheckYesOrNo(fl)
|
||||
})
|
||||
|
|
|
@ -350,13 +350,9 @@ func SetNodeDefaults(node *models.Node) {
|
|||
if node.ListenPort == 0 {
|
||||
node.ListenPort = parentNetwork.DefaultListenPort
|
||||
}
|
||||
if node.SaveConfig == "" {
|
||||
if parentNetwork.DefaultSaveConfig != "" {
|
||||
node.SaveConfig = parentNetwork.DefaultSaveConfig
|
||||
} else {
|
||||
node.SaveConfig = "yes"
|
||||
}
|
||||
}
|
||||
// SaveConfig is Depricated - remove this field
|
||||
node.SaveConfig = "no"
|
||||
|
||||
if node.Interface == "" {
|
||||
node.Interface = parentNetwork.DefaultInterface
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package models
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/gravitl/netmaker/servercfg"
|
||||
|
@ -12,7 +11,6 @@ import (
|
|||
type Network struct {
|
||||
AddressRange string `json:"addressrange" bson:"addressrange" validate:"required,cidr"`
|
||||
AddressRange6 string `json:"addressrange6" bson:"addressrange6" validate:"regexp=^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))?$"`
|
||||
DisplayName string `json:"displayname,omitempty" bson:"displayname,omitempty" validate:"omitempty,min=1,max=20,displayname_valid"`
|
||||
NetID string `json:"netid" bson:"netid" validate:"required,min=1,max=12,netid_valid"`
|
||||
NodesLastModified int64 `json:"nodeslastmodified" bson:"nodeslastmodified"`
|
||||
NetworkLastModified int64 `json:"networklastmodified" bson:"networklastmodified"`
|
||||
|
@ -21,24 +19,20 @@ type Network struct {
|
|||
NodeLimit int32 `json:"nodelimit" bson:"nodelimit"`
|
||||
DefaultPostUp string `json:"defaultpostup" bson:"defaultpostup"`
|
||||
DefaultPostDown string `json:"defaultpostdown" bson:"defaultpostdown"`
|
||||
KeyUpdateTimeStamp int64 `json:"keyupdatetimestamp" bson:"keyupdatetimestamp"`
|
||||
DefaultKeepalive int32 `json:"defaultkeepalive" bson:"defaultkeepalive" validate:"omitempty,max=1000"`
|
||||
DefaultSaveConfig string `json:"defaultsaveconfig" bson:"defaultsaveconfig" validate:"checkyesorno"`
|
||||
AccessKeys []AccessKey `json:"accesskeys" bson:"accesskeys"`
|
||||
AllowManualSignUp string `json:"allowmanualsignup" bson:"allowmanualsignup" validate:"checkyesorno"`
|
||||
IsLocal string `json:"islocal" bson:"islocal" validate:"checkyesorno"`
|
||||
IsDualStack string `json:"isdualstack" bson:"isdualstack" validate:"checkyesorno"`
|
||||
IsIPv4 string `json:"isipv4" bson:"isipv4" validate:"checkyesorno"`
|
||||
IsIPv6 string `json:"isipv6" bson:"isipv6" validate:"checkyesorno"`
|
||||
IsGRPCHub string `json:"isgrpchub" bson:"isgrpchub" validate:"checkyesorno"`
|
||||
IsHubAndSpoke string `json:"ishubandspoke" bson:"ishubandspoke" validate:"checkyesorno"`
|
||||
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 []ServerAddr `json:"defaultserveraddrs" bson:"defaultserveraddrs" yaml:"defaultserveraddrs"`
|
||||
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"`
|
||||
}
|
||||
|
||||
// SaveData - sensitive fields of a network that should be kept the same
|
||||
|
@ -46,19 +40,6 @@ type SaveData struct { // put sensitive fields here
|
|||
NetID string `json:"netid" bson:"netid" validate:"required,min=1,max=12,netid_valid"`
|
||||
}
|
||||
|
||||
// Network.DisplayNameInNetworkCharSet - checks if displayname uses valid characters
|
||||
func (network *Network) DisplayNameInNetworkCharSet() bool {
|
||||
|
||||
charset := "abcdefghijklmnopqrstuvwxyz1234567890-_./;% ^#()!@$*"
|
||||
|
||||
for _, char := range network.DisplayName {
|
||||
if !strings.Contains(charset, strings.ToLower(string(char))) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// Network.SetNodesLastModified - sets nodes last modified on network, depricated
|
||||
func (network *Network) SetNodesLastModified() {
|
||||
network.NodesLastModified = time.Now().Unix()
|
||||
|
@ -81,11 +62,8 @@ func (network *Network) SetDefaults() {
|
|||
if network.IsLocal == "" {
|
||||
network.IsLocal = "no"
|
||||
}
|
||||
if network.IsGRPCHub == "" {
|
||||
network.IsGRPCHub = "no"
|
||||
}
|
||||
if network.DisplayName == "" {
|
||||
network.DisplayName = network.NetID
|
||||
if network.IsHubAndSpoke == "" {
|
||||
network.IsHubAndSpoke = "no"
|
||||
}
|
||||
if network.DefaultInterface == "" {
|
||||
if len(network.NetID) < 13 {
|
||||
|
@ -100,16 +78,9 @@ func (network *Network) SetDefaults() {
|
|||
if network.NodeLimit == 0 {
|
||||
network.NodeLimit = 999999999
|
||||
}
|
||||
if network.DefaultSaveConfig == "" {
|
||||
network.DefaultSaveConfig = "no"
|
||||
}
|
||||
if network.DefaultKeepalive == 0 {
|
||||
network.DefaultKeepalive = 20
|
||||
}
|
||||
//Check-In Interval for Nodes, In Seconds
|
||||
if network.DefaultCheckInInterval == 0 {
|
||||
network.DefaultCheckInInterval = 30
|
||||
}
|
||||
if network.AllowManualSignUp == "" {
|
||||
network.AllowManualSignUp = "no"
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue