mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-05 08:47:35 +08:00
fix fetching uniqueIp
This commit is contained in:
@@ -339,10 +339,13 @@ func createExtClient(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
host, err := logic.GetHost(node.HostID.String())
|
host, err := logic.GetHost(node.HostID.String())
|
||||||
logger.Log(0, r.Header.Get("user"),
|
if err != nil {
|
||||||
fmt.Sprintf("failed to get ingress gateway host for node [%s] info: %v", nodeid, err))
|
logger.Log(0, r.Header.Get("user"),
|
||||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
fmt.Sprintf("failed to get ingress gateway host for node [%s] info: %v", nodeid, err))
|
||||||
listenPort := host.LocalListenPort
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
listenPort := host.ListenPort
|
||||||
if host.ProxyEnabled {
|
if host.ProxyEnabled {
|
||||||
listenPort = host.ProxyListenPort
|
listenPort = host.ProxyListenPort
|
||||||
}
|
}
|
||||||
|
@@ -971,6 +971,17 @@ func updateNode(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
host, err := logic.GetHost(newNode.HostID.String())
|
||||||
|
if err != nil {
|
||||||
|
logger.Log(0, r.Header.Get("user"),
|
||||||
|
fmt.Sprintf("failed to get host for node [ %s ] info: %v", nodeid, err))
|
||||||
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if newNode.IsIngressGateway {
|
||||||
|
host.ProxyEnabled = true
|
||||||
|
logic.UpsertHost(host)
|
||||||
|
}
|
||||||
relayedUpdate := false
|
relayedUpdate := false
|
||||||
if currentNode.IsRelayed && (currentNode.Address.String() != newNode.Address.String() || currentNode.Address6.String() != newNode.Address6.String()) {
|
if currentNode.IsRelayed && (currentNode.Address.String() != newNode.Address.String() || currentNode.Address6.String() != newNode.Address6.String()) {
|
||||||
relayedUpdate = true
|
relayedUpdate = true
|
||||||
|
@@ -131,16 +131,16 @@ func CreateExtClient(extclient *models.ExtClient) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
logger.Log(0, "EXT CLIENT: ", extclient.Address)
|
||||||
if extclient.Address == "" {
|
if extclient.Address == "" {
|
||||||
if parentNetwork.IsIPv4 == "yes" {
|
if parentNetwork.IsIPv4 == "yes" {
|
||||||
newAddress, err := UniqueAddress(extclient.Network, false)
|
newAddress, err := UniqueAddress(extclient.Network, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
extclient.Address = newAddress.String()
|
extclient.Address = newAddress.String()
|
||||||
|
|
||||||
extclientInternalAddr, err := UniqueAddress(extclient.Network, true)
|
extclientInternalAddr, err := UniqueAddress(extclient.Network, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -150,12 +150,12 @@ func CreateExtClient(extclient *models.ExtClient) error {
|
|||||||
|
|
||||||
if extclient.Address6 == "" {
|
if extclient.Address6 == "" {
|
||||||
if parentNetwork.IsIPv6 == "yes" {
|
if parentNetwork.IsIPv6 == "yes" {
|
||||||
addr6, err := UniqueAddress6(extclient.Network, false)
|
addr6, err := UniqueAddress6(extclient.Network, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
extclient.Address6 = addr6.String()
|
extclient.Address6 = addr6.String()
|
||||||
extclientInternalAddr6, err := UniqueAddress6(extclient.Network, true)
|
extclientInternalAddr6, err := UniqueAddress6(extclient.Network, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@@ -211,25 +211,43 @@ func IsIPUnique(network string, ip string, tableName string, isIpv6 bool) bool {
|
|||||||
|
|
||||||
isunique := true
|
isunique := true
|
||||||
collection, err := database.FetchRecords(tableName)
|
collection, err := database.FetchRecords(tableName)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return isunique
|
return isunique
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, value := range collection { // filter
|
for _, value := range collection { // filter
|
||||||
var node models.Node
|
|
||||||
if err = json.Unmarshal([]byte(value), &node); err != nil {
|
if tableName == database.NODES_TABLE_NAME {
|
||||||
continue
|
var node models.Node
|
||||||
}
|
if err = json.Unmarshal([]byte(value), &node); err != nil {
|
||||||
if isIpv6 {
|
continue
|
||||||
if node.Address6.IP.String() == ip && node.Network == network {
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
} else {
|
if isIpv6 {
|
||||||
if node.Address.IP.String() == ip && node.Network == network {
|
if node.Address6.IP.String() == ip && node.Network == network {
|
||||||
return false
|
return false
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if node.Address.IP.String() == ip && node.Network == network {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if tableName == database.EXT_CLIENT_TABLE_NAME {
|
||||||
|
var extClient models.ExtClient
|
||||||
|
if err = json.Unmarshal([]byte(value), &extClient); err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if isIpv6 {
|
||||||
|
if (extClient.Address6 == ip || extClient.InternalIPAddr6 == ip) && extClient.Network == network {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (extClient.Address == ip || extClient.InternalIPAddr == ip) && extClient.Network == network {
|
||||||
|
return false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return isunique
|
return isunique
|
||||||
|
@@ -459,6 +459,7 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) {
|
|||||||
if err == nil {
|
if err == nil {
|
||||||
hostPeerUpdate.Peers = append(hostPeerUpdate.Peers, extPeers...)
|
hostPeerUpdate.Peers = append(hostPeerUpdate.Peers, extPeers...)
|
||||||
for _, extPeerIdAndAddr := range extPeerIDAndAddrs {
|
for _, extPeerIdAndAddr := range extPeerIDAndAddrs {
|
||||||
|
hostPeerUpdate.PeerIDs[extPeerIdAndAddr.ID] = make(map[string]models.IDandAddr)
|
||||||
hostPeerUpdate.PeerIDs[extPeerIdAndAddr.ID][extPeerIdAndAddr.ID] = models.IDandAddr{
|
hostPeerUpdate.PeerIDs[extPeerIdAndAddr.ID][extPeerIdAndAddr.ID] = models.IDandAddr{
|
||||||
ID: extPeerIdAndAddr.ID,
|
ID: extPeerIdAndAddr.ID,
|
||||||
Address: extPeerIdAndAddr.Address,
|
Address: extPeerIdAndAddr.Address,
|
||||||
|
Reference in New Issue
Block a user