mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-22 00:19:39 +08:00
initial commit
This commit is contained in:
@@ -13,6 +13,7 @@ import (
|
||||
"github.com/gravitl/netmaker/database"
|
||||
"github.com/gravitl/netmaker/logger"
|
||||
"github.com/gravitl/netmaker/logic/acls/nodeacls"
|
||||
"github.com/gravitl/netmaker/logic/pro"
|
||||
"github.com/gravitl/netmaker/models"
|
||||
"github.com/gravitl/netmaker/netclient/ncutils"
|
||||
"github.com/gravitl/netmaker/validation"
|
||||
@@ -62,6 +63,9 @@ func DeleteNetwork(network string) error {
|
||||
} else {
|
||||
logger.Log(1, "could not remove servers before deleting network", network)
|
||||
}
|
||||
if err = pro.RemoveAllNetworkUsers(network); err != nil {
|
||||
logger.Log(0, "failed to remove network users on network delete for network", network, err.Error())
|
||||
}
|
||||
return database.DeleteRecord(database.NETWORKS_TABLE_NAME, network)
|
||||
}
|
||||
return errors.New("node check failed. All nodes must be deleted before deleting network")
|
||||
@@ -88,20 +92,32 @@ func CreateNetwork(network models.Network) (models.Network, error) {
|
||||
network.SetNodesLastModified()
|
||||
network.SetNetworkLastModified()
|
||||
|
||||
pro.AddProNetDefaults(&network)
|
||||
|
||||
err := ValidateNetwork(&network, false)
|
||||
if err != nil {
|
||||
//returnErrorResponse(w, r, formatError(err, "badrequest"))
|
||||
return models.Network{}, err
|
||||
}
|
||||
|
||||
if err = pro.InitializeNetworkUsers(network.NetID); err != nil {
|
||||
return models.Network{}, err
|
||||
}
|
||||
|
||||
data, err := json.Marshal(&network)
|
||||
if err != nil {
|
||||
return models.Network{}, err
|
||||
}
|
||||
|
||||
if err = database.Insert(network.NetID, string(data), database.NETWORKS_TABLE_NAME); err != nil {
|
||||
return models.Network{}, err
|
||||
}
|
||||
|
||||
// == add all current users to network as network users ==
|
||||
if err = InitializeNetUsers(&network); err != nil {
|
||||
return network, err
|
||||
}
|
||||
|
||||
return network, nil
|
||||
}
|
||||
|
||||
@@ -526,25 +542,29 @@ func IsNetworkNameUnique(network *models.Network) (bool, error) {
|
||||
}
|
||||
|
||||
// UpdateNetwork - updates a network with another network's fields
|
||||
func UpdateNetwork(currentNetwork *models.Network, newNetwork *models.Network) (bool, bool, bool, bool, error) {
|
||||
func UpdateNetwork(currentNetwork *models.Network, newNetwork *models.Network) (bool, bool, bool, bool, []string, []string, error) {
|
||||
if err := ValidateNetwork(newNetwork, true); err != nil {
|
||||
return false, false, false, false, err
|
||||
return false, false, false, false, nil, nil, err
|
||||
}
|
||||
if newNetwork.NetID == currentNetwork.NetID {
|
||||
hasrangeupdate4 := newNetwork.AddressRange != currentNetwork.AddressRange
|
||||
hasrangeupdate6 := newNetwork.AddressRange6 != currentNetwork.AddressRange6
|
||||
localrangeupdate := newNetwork.LocalRange != currentNetwork.LocalRange
|
||||
hasholepunchupdate := newNetwork.DefaultUDPHolePunch != currentNetwork.DefaultUDPHolePunch
|
||||
groupDelta := append(StringDifference(newNetwork.ProSettings.AllowedGroups, currentNetwork.ProSettings.AllowedGroups),
|
||||
StringDifference(currentNetwork.ProSettings.AllowedGroups, newNetwork.ProSettings.AllowedGroups)...)
|
||||
userDelta := append(StringDifference(newNetwork.ProSettings.AllowedUsers, currentNetwork.ProSettings.AllowedUsers),
|
||||
StringDifference(currentNetwork.ProSettings.AllowedUsers, newNetwork.ProSettings.AllowedUsers)...)
|
||||
data, err := json.Marshal(newNetwork)
|
||||
if err != nil {
|
||||
return false, false, false, false, err
|
||||
return false, false, false, false, nil, nil, err
|
||||
}
|
||||
newNetwork.SetNetworkLastModified()
|
||||
err = database.Insert(newNetwork.NetID, string(data), database.NETWORKS_TABLE_NAME)
|
||||
return hasrangeupdate4, hasrangeupdate6, localrangeupdate, hasholepunchupdate, err
|
||||
return hasrangeupdate4, hasrangeupdate6, localrangeupdate, hasholepunchupdate, groupDelta, userDelta, err
|
||||
}
|
||||
// copy values
|
||||
return false, false, false, false, errors.New("failed to update network " + newNetwork.NetID + ", cannot change netid.")
|
||||
return false, false, false, false, nil, nil, errors.New("failed to update network " + newNetwork.NetID + ", cannot change netid.")
|
||||
}
|
||||
|
||||
// GetNetwork - gets a network from database
|
||||
@@ -596,6 +616,15 @@ func ValidateNetwork(network *models.Network, isUpdate bool) error {
|
||||
}
|
||||
}
|
||||
|
||||
if network.ProSettings != nil {
|
||||
if network.ProSettings.DefaultAccessLevel < pro.NET_ADMIN || network.ProSettings.DefaultAccessLevel > pro.NO_ACCESS {
|
||||
return fmt.Errorf("invalid access level")
|
||||
}
|
||||
if network.ProSettings.DefaultUserClientLimit < 0 || network.ProSettings.DefaultUserNodeLimit < 0 {
|
||||
return fmt.Errorf("invalid node/client limit provided")
|
||||
}
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user