fix fetching uniqueIp

This commit is contained in:
Abhishek Kondur
2023-01-13 19:11:40 +05:30
parent f129316bfe
commit e9dd9ac0a4
5 changed files with 53 additions and 20 deletions

View File

@@ -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())
if err != nil {
logger.Log(0, r.Header.Get("user"), logger.Log(0, r.Header.Get("user"),
fmt.Sprintf("failed to get ingress gateway host for node [%s] info: %v", nodeid, err)) fmt.Sprintf("failed to get ingress gateway host for node [%s] info: %v", nodeid, err))
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal")) logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
listenPort := host.LocalListenPort return
}
listenPort := host.ListenPort
if host.ProxyEnabled { if host.ProxyEnabled {
listenPort = host.ProxyListenPort listenPort = host.ProxyListenPort
} }

View File

@@ -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

View File

@@ -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
} }

View File

@@ -211,12 +211,13 @@ 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
if tableName == database.NODES_TABLE_NAME {
var node models.Node var node models.Node
if err = json.Unmarshal([]byte(value), &node); err != nil { if err = json.Unmarshal([]byte(value), &node); err != nil {
continue continue
@@ -230,6 +231,23 @@ func IsIPUnique(network string, ip string, tableName string, isIpv6 bool) bool {
return false 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

View File

@@ -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,