Net 509 515 (#2496)

* NET-509

* External client config files with IPv6 endpoints now have the [] separating the address and port.

* NET-515

* Increased network name max length to 32

* NET-509-515

* Updated unit test for network name max length check.

* Updated extclient endpoint ip string manipulation to use sprintf

* Added proper error message for network name length more than max allowed.

* NET-515 small typo fix for error strings should not be capitalized
This commit is contained in:
Farukh Khan 2023-08-09 01:47:22 +08:00 committed by GitHub
parent bbd1c31ccd
commit 449f3f947b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 20 additions and 7 deletions

View file

@ -217,7 +217,12 @@ func getExtClientConf(w http.ResponseWriter, r *http.Request) {
if network.DefaultKeepalive != 0 {
keepalive = "PersistentKeepalive = " + strconv.Itoa(int(network.DefaultKeepalive))
}
gwendpoint := host.EndpointIP.String() + ":" + strconv.Itoa(host.ListenPort)
gwendpoint := ""
if host.EndpointIP.To4() == nil {
gwendpoint = fmt.Sprintf("[%s]:%d", host.EndpointIP.String(), host.ListenPort)
} else {
gwendpoint = fmt.Sprintf("%s:%d", host.EndpointIP.String(), host.ListenPort)
}
newAllowedIPs := network.AddressRange
if newAllowedIPs != "" && network.AddressRange6 != "" {
newAllowedIPs += ","

View file

@ -245,6 +245,14 @@ func createNetwork(w http.ResponseWriter, r *http.Request) {
return
}
if len(network.NetID) > 32 {
err := errors.New("network name shouldn't exceed 32 characters")
logger.Log(0, r.Header.Get("user"), "failed to create network: ",
err.Error())
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
return
}
if network.AddressRange == "" && network.AddressRange6 == "" {
err := errors.New("IPv4 or IPv6 CIDR required")
logger.Log(0, r.Header.Get("user"), "failed to create network: ",

View file

@ -80,7 +80,7 @@ func TestDeleteNetwork(t *testing.T) {
err := logic.DeleteNetwork("skynet")
assert.Nil(t, err)
})
t.Run("NonExistantNetwork", func(t *testing.T) {
t.Run("NonExistentNetwork", func(t *testing.T) {
err := logic.DeleteNetwork("skynet")
assert.Nil(t, err)
})
@ -151,7 +151,7 @@ func TestValidateNetwork(t *testing.T) {
{
testname: "NetIDTooLong",
network: models.Network{
NetID: "LongNetIDName",
NetID: "LongNetIDNameForMaxCharactersTest",
},
errMessage: "Field validation for 'NetID' failed on the 'max' tag",
},

View file

@ -11,10 +11,10 @@ import (
type Network struct {
AddressRange string `json:"addressrange" bson:"addressrange" validate:"omitempty,cidrv4"`
AddressRange6 string `json:"addressrange6" bson:"addressrange6" validate:"omitempty,cidrv6"`
NetID string `json:"netid" bson:"netid" validate:"required,min=1,max=12,netid_valid"`
NetID string `json:"netid" bson:"netid" validate:"required,min=1,max=32,netid_valid"`
NodesLastModified int64 `json:"nodeslastmodified" bson:"nodeslastmodified"`
NetworkLastModified int64 `json:"networklastmodified" bson:"networklastmodified"`
DefaultInterface string `json:"defaultinterface" bson:"defaultinterface" validate:"min=1,max=15"`
DefaultInterface string `json:"defaultinterface" bson:"defaultinterface" validate:"min=1,max=35"`
DefaultListenPort int32 `json:"defaultlistenport,omitempty" bson:"defaultlistenport,omitempty" validate:"omitempty,min=1024,max=65535"`
NodeLimit int32 `json:"nodelimit" bson:"nodelimit"`
DefaultPostDown string `json:"defaultpostdown" bson:"defaultpostdown"`
@ -30,7 +30,7 @@ type Network struct {
// SaveData - sensitive fields of a network that should be kept the same
type SaveData struct { // put sensitive fields here
NetID string `json:"netid" bson:"netid" validate:"required,min=1,max=12,netid_valid"`
NetID string `json:"netid" bson:"netid" validate:"required,min=1,max=32,netid_valid"`
}
// Network.SetNodesLastModified - sets nodes last modified on network, depricated
@ -49,7 +49,7 @@ func (network *Network) SetDefaults() {
network.DefaultUDPHolePunch = "no"
}
if network.DefaultInterface == "" {
if len(network.NetID) < 13 {
if len(network.NetID) < 33 {
network.DefaultInterface = "nm-" + network.NetID
} else {
network.DefaultInterface = network.NetID