|
@@ -109,12 +109,16 @@ func validateNetworkUpdate(network models.Network) error {
|
|
v := validator.New()
|
|
v := validator.New()
|
|
|
|
|
|
_ = v.RegisterValidation("addressrange_valid", func(fl validator.FieldLevel) bool {
|
|
_ = v.RegisterValidation("addressrange_valid", func(fl validator.FieldLevel) bool {
|
|
- isvalid := fl.Field().String() == "" || functions.IsIpv4CIDR(fl.Field().String())
|
|
|
|
|
|
+ isvalid := fl.Field().String() == "" || functions.IsIpCIDR(fl.Field().String())
|
|
return isvalid
|
|
return isvalid
|
|
})
|
|
})
|
|
|
|
+ _ = v.RegisterValidation("addressrange6_valid", func(fl validator.FieldLevel) bool {
|
|
|
|
+ isvalid := fl.Field().String() == "" || functions.IsIpCIDR(fl.Field().String())
|
|
|
|
+ return isvalid
|
|
|
|
+ })
|
|
|
|
|
|
_ = v.RegisterValidation("localrange_valid", func(fl validator.FieldLevel) bool {
|
|
_ = v.RegisterValidation("localrange_valid", func(fl validator.FieldLevel) bool {
|
|
- isvalid := fl.Field().String() == "" || functions.IsIpv4CIDR(fl.Field().String())
|
|
|
|
|
|
+ isvalid := fl.Field().String() == "" || functions.IsIpCIDR(fl.Field().String())
|
|
return isvalid
|
|
return isvalid
|
|
})
|
|
})
|
|
|
|
|
|
@@ -141,12 +145,20 @@ func validateNetworkCreate(network models.Network) error {
|
|
v := validator.New()
|
|
v := validator.New()
|
|
|
|
|
|
_ = v.RegisterValidation("addressrange_valid", func(fl validator.FieldLevel) bool {
|
|
_ = v.RegisterValidation("addressrange_valid", func(fl validator.FieldLevel) bool {
|
|
- isvalid := functions.IsIpv4CIDR(fl.Field().String())
|
|
|
|
|
|
+ isvalid := functions.IsIpCIDR(fl.Field().String())
|
|
return isvalid
|
|
return isvalid
|
|
})
|
|
})
|
|
|
|
+ _ = v.RegisterValidation("addressrange6_valid", func(fl validator.FieldLevel) bool {
|
|
|
|
+ isvalid := true
|
|
|
|
+ if *network.IsDualStack {
|
|
|
|
+ isvalid = functions.IsIpCIDR(fl.Field().String())
|
|
|
|
+ }
|
|
|
|
+ return isvalid
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
|
|
_ = v.RegisterValidation("localrange_valid", func(fl validator.FieldLevel) bool {
|
|
_ = v.RegisterValidation("localrange_valid", func(fl validator.FieldLevel) bool {
|
|
- isvalid := fl.Field().String() == "" || functions.IsIpv4CIDR(fl.Field().String())
|
|
|
|
|
|
+ isvalid := fl.Field().String() == "" || functions.IsIpCIDR(fl.Field().String())
|
|
return isvalid
|
|
return isvalid
|
|
})
|
|
})
|
|
|
|
|
|
@@ -223,19 +235,20 @@ func keyUpdate(w http.ResponseWriter, r *http.Request) {
|
|
update := bson.D{
|
|
update := bson.D{
|
|
{"$set", bson.D{
|
|
{"$set", bson.D{
|
|
{"addressrange", network.AddressRange},
|
|
{"addressrange", network.AddressRange},
|
|
|
|
+ {"addressrange6", network.AddressRange6},
|
|
{"displayname", network.DisplayName},
|
|
{"displayname", network.DisplayName},
|
|
{"defaultlistenport", network.DefaultListenPort},
|
|
{"defaultlistenport", network.DefaultListenPort},
|
|
{"defaultpostup", network.DefaultPostUp},
|
|
{"defaultpostup", network.DefaultPostUp},
|
|
{"defaultpostdown", network.DefaultPostDown},
|
|
{"defaultpostdown", network.DefaultPostDown},
|
|
- {"defaultkeepalive", network.DefaultKeepalive},
|
|
|
|
- {"keyupdatetimestamp", network.KeyUpdateTimeStamp},
|
|
|
|
- {"defaultsaveconfig", network.DefaultSaveConfig},
|
|
|
|
- {"defaultinterface", network.DefaultInterface},
|
|
|
|
- {"nodeslastmodified", network.NodesLastModified},
|
|
|
|
- {"networklastmodified", network.NetworkLastModified},
|
|
|
|
- {"allowmanualsignup", network.AllowManualSignUp},
|
|
|
|
- {"checkininterval", network.DefaultCheckInInterval},
|
|
|
|
- }},
|
|
|
|
|
|
+ {"defaultkeepalive", network.DefaultKeepalive},
|
|
|
|
+ {"keyupdatetimestamp", network.KeyUpdateTimeStamp},
|
|
|
|
+ {"defaultsaveconfig", network.DefaultSaveConfig},
|
|
|
|
+ {"defaultinterface", network.DefaultInterface},
|
|
|
|
+ {"nodeslastmodified", network.NodesLastModified},
|
|
|
|
+ {"networklastmodified", network.NetworkLastModified},
|
|
|
|
+ {"allowmanualsignup", network.AllowManualSignUp},
|
|
|
|
+ {"checkininterval", network.DefaultCheckInInterval},
|
|
|
|
+ }},
|
|
}
|
|
}
|
|
|
|
|
|
err = collection.FindOneAndUpdate(ctx, filter, update).Decode(&network)
|
|
err = collection.FindOneAndUpdate(ctx, filter, update).Decode(&network)
|
|
@@ -304,6 +317,9 @@ func updateNetwork(w http.ResponseWriter, r *http.Request) {
|
|
if networkChange.AddressRange == "" {
|
|
if networkChange.AddressRange == "" {
|
|
networkChange.AddressRange = network.AddressRange
|
|
networkChange.AddressRange = network.AddressRange
|
|
}
|
|
}
|
|
|
|
+ if networkChange.AddressRange6 == "" {
|
|
|
|
+ networkChange.AddressRange6 = network.AddressRange6
|
|
|
|
+ }
|
|
if networkChange.NetID == "" {
|
|
if networkChange.NetID == "" {
|
|
networkChange.NetID = network.NetID
|
|
networkChange.NetID = network.NetID
|
|
}
|
|
}
|
|
@@ -325,7 +341,7 @@ func updateNetwork(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
|
network.AddressRange = networkChange.AddressRange
|
|
network.AddressRange = networkChange.AddressRange
|
|
|
|
|
|
- var isAddressOK bool = functions.IsIpv4CIDR(networkChange.AddressRange)
|
|
|
|
|
|
+ var isAddressOK bool = functions.IsIpCIDR(networkChange.AddressRange)
|
|
if !isAddressOK {
|
|
if !isAddressOK {
|
|
err := errors.New("Invalid Range of " + networkChange.AddressRange + " for addresses.")
|
|
err := errors.New("Invalid Range of " + networkChange.AddressRange + " for addresses.")
|
|
returnErrorResponse(w, r, formatError(err, "internal"))
|
|
returnErrorResponse(w, r, formatError(err, "internal"))
|
|
@@ -338,7 +354,7 @@ func updateNetwork(w http.ResponseWriter, r *http.Request) {
|
|
if networkChange.LocalRange != "" {
|
|
if networkChange.LocalRange != "" {
|
|
network.LocalRange = networkChange.LocalRange
|
|
network.LocalRange = networkChange.LocalRange
|
|
|
|
|
|
- var isAddressOK bool = functions.IsIpv4CIDR(networkChange.LocalRange)
|
|
|
|
|
|
+ var isAddressOK bool = functions.IsIpCIDR(networkChange.LocalRange)
|
|
if !isAddressOK {
|
|
if !isAddressOK {
|
|
err := errors.New("Invalid Range of " + networkChange.LocalRange + " for internal addresses.")
|
|
err := errors.New("Invalid Range of " + networkChange.LocalRange + " for internal addresses.")
|
|
returnErrorResponse(w, r, formatError(err, "internal"))
|
|
returnErrorResponse(w, r, formatError(err, "internal"))
|
|
@@ -350,6 +366,9 @@ func updateNetwork(w http.ResponseWriter, r *http.Request) {
|
|
if networkChange.IsLocal != nil {
|
|
if networkChange.IsLocal != nil {
|
|
network.IsLocal = networkChange.IsLocal
|
|
network.IsLocal = networkChange.IsLocal
|
|
}
|
|
}
|
|
|
|
+ if networkChange.IsDualStack != nil {
|
|
|
|
+ network.IsDualStack = networkChange.IsDualStack
|
|
|
|
+ }
|
|
if networkChange.DefaultListenPort != 0 {
|
|
if networkChange.DefaultListenPort != 0 {
|
|
network.DefaultListenPort = networkChange.DefaultListenPort
|
|
network.DefaultListenPort = networkChange.DefaultListenPort
|
|
haschange = true
|
|
haschange = true
|
|
@@ -394,6 +413,7 @@ func updateNetwork(w http.ResponseWriter, r *http.Request) {
|
|
update := bson.D{
|
|
update := bson.D{
|
|
{"$set", bson.D{
|
|
{"$set", bson.D{
|
|
{"addressrange", network.AddressRange},
|
|
{"addressrange", network.AddressRange},
|
|
|
|
+ {"addressrange6", network.AddressRange6},
|
|
{"displayname", network.DisplayName},
|
|
{"displayname", network.DisplayName},
|
|
{"defaultlistenport", network.DefaultListenPort},
|
|
{"defaultlistenport", network.DefaultListenPort},
|
|
{"defaultpostup", network.DefaultPostUp},
|
|
{"defaultpostup", network.DefaultPostUp},
|
|
@@ -406,6 +426,7 @@ func updateNetwork(w http.ResponseWriter, r *http.Request) {
|
|
{"allowmanualsignup", network.AllowManualSignUp},
|
|
{"allowmanualsignup", network.AllowManualSignUp},
|
|
{"localrange", network.LocalRange},
|
|
{"localrange", network.LocalRange},
|
|
{"islocal", network.IsLocal},
|
|
{"islocal", network.IsLocal},
|
|
|
|
+ {"isdualstack", network.IsDualStack},
|
|
{"checkininterval", network.DefaultCheckInInterval},
|
|
{"checkininterval", network.DefaultCheckInInterval},
|
|
}},
|
|
}},
|
|
}
|
|
}
|
|
@@ -505,6 +526,10 @@ func createNetwork(w http.ResponseWriter, r *http.Request) {
|
|
falsevar := false
|
|
falsevar := false
|
|
network.IsLocal = &falsevar
|
|
network.IsLocal = &falsevar
|
|
}
|
|
}
|
|
|
|
+ if network.IsDualStack == nil {
|
|
|
|
+ falsevar := false
|
|
|
|
+ network.IsDualStack = &falsevar
|
|
|
|
+ }
|
|
|
|
|
|
err = validateNetworkCreate(network)
|
|
err = validateNetworkCreate(network)
|
|
if err != nil {
|
|
if err != nil {
|