diff --git a/functions/helpers.go b/functions/helpers.go index 965f6ec1..c27b0ee4 100644 --- a/functions/helpers.go +++ b/functions/helpers.go @@ -433,35 +433,6 @@ func GenKeyName() string { return "key" + string(b) } -// IsIPUnique - checks if an IP is unique -func IsIPUnique(network string, ip string, tableName string, isIpv6 bool) bool { - - isunique := true - collection, err := database.FetchRecords(tableName) - - if err != nil { - return isunique - } - - for _, value := range collection { // filter - var node models.Node - if err = json.Unmarshal([]byte(value), &node); err != nil { - continue - } - if isIpv6 { - if node.Address6 == ip && node.Network == network { - return false - } - } else { - if node.Address == ip && node.Network == network { - return false - } - } - } - - return isunique -} - // DeleteKey - deletes a key func DeleteKey(network models.Network, i int) { diff --git a/logic/auth.go b/logic/auth.go index d29a9ecf..4853f454 100644 --- a/logic/auth.go +++ b/logic/auth.go @@ -7,7 +7,6 @@ import ( "github.com/go-playground/validator/v10" "github.com/gravitl/netmaker/database" - "github.com/gravitl/netmaker/functions" "github.com/gravitl/netmaker/models" "golang.org/x/crypto/bcrypt" ) @@ -37,8 +36,8 @@ func HasAdmin() (bool, error) { return false, err } -// GetUser - gets a user -func GetUser(username string) (models.ReturnUser, error) { +// GetReturnUser - gets a user +func GetReturnUser(username string) (models.ReturnUser, error) { var user models.ReturnUser record, err := database.FetchRecord(database.USERS_TABLE_NAME, username) @@ -94,7 +93,7 @@ func CreateUser(user models.User) (models.User, error) { // set password to encrypted password user.Password = string(hash) - tokenString, _ := functions.CreateUserJWT(user.UserName, user.Networks, user.IsAdmin) + tokenString, _ := CreateUserJWT(user.UserName, user.Networks, user.IsAdmin) if tokenString == "" { // returnErrorResponse(w, r, errorResponse) @@ -149,7 +148,7 @@ func VerifyAuthRequest(authRequest models.UserAuthParams) (string, error) { } //Create a new JWT for the node - tokenString, _ := functions.CreateUserJWT(authRequest.UserName, result.Networks, result.IsAdmin) + tokenString, _ := CreateUserJWT(authRequest.UserName, result.Networks, result.IsAdmin) return tokenString, nil } diff --git a/logic/networks.go b/logic/networks.go index c2045ed0..9d513f49 100644 --- a/logic/networks.go +++ b/logic/networks.go @@ -88,6 +88,35 @@ func UniqueAddress(networkName string) (string, error) { return "W1R3: NO UNIQUE ADDRESSES AVAILABLE", err1 } +// IsIPUnique - checks if an IP is unique +func IsIPUnique(network string, ip string, tableName string, isIpv6 bool) bool { + + isunique := true + collection, err := database.FetchRecords(tableName) + + if err != nil { + return isunique + } + + for _, value := range collection { // filter + var node models.Node + if err = json.Unmarshal([]byte(value), &node); err != nil { + continue + } + if isIpv6 { + if node.Address6 == ip && node.Network == network { + return false + } + } else { + if node.Address == ip && node.Network == network { + return false + } + } + } + + return isunique +} + // UniqueAddress6 - see if ipv6 address is unique func UniqueAddress6(networkName string) (string, error) { @@ -315,22 +344,15 @@ func UpdateNetwork(currentNetwork *models.Network, newNetwork *models.Network) ( return false, false, errors.New("failed to update network " + newNetwork.NetID + ", cannot change netid.") } -// // SetNetworkNodesLastModified - sets network nodes last modified time -// func SetNetworkNodesLastModified(network *models.Network) error { - -// timestamp := time.Now().Unix() - -// network.NodesLastModified = timestamp -// data, err := json.Marshal(&network) -// if err != nil { -// return err -// } -// err = database.Insert(network.NetID, string(data), database.NETWORKS_TABLE_NAME) -// if err != nil { -// return err -// } -// return nil -// } +// Inc - increments an IP +func Inc(ip net.IP) { + for j := len(ip) - 1; j >= 0; j-- { + ip[j]++ + if ip[j] > 0 { + break + } + } +} // GetNetwork - gets a network from database func GetNetwork(networkname string) (models.Network, error) {