mirror of
https://github.com/gravitl/netmaker.git
synced 2025-11-10 00:30:37 +08:00
proxy update json marshal fix
This commit is contained in:
parent
95b578455d
commit
893f13d8b4
3 changed files with 57 additions and 50 deletions
|
|
@ -263,7 +263,7 @@ func GetProxyUpdateForHost(host *models.Host) (proxy_models.ProxyManagerPayload,
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
currentPeers, err := GetNetworkNodes(node.Network)
|
currentPeers, err := GetNetworkNodes(node.Network)
|
||||||
if err == nil {
|
if err != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
for _, peer := range currentPeers {
|
for _, peer := range currentPeers {
|
||||||
|
|
@ -271,30 +271,30 @@ func GetProxyUpdateForHost(host *models.Host) (proxy_models.ProxyManagerPayload,
|
||||||
//skip yourself
|
//skip yourself
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
host, err := GetHost(peer.HostID.String())
|
peerHost, err := GetHost(peer.HostID.String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
proxyStatus := host.ProxyEnabled
|
proxyStatus := peerHost.ProxyEnabled
|
||||||
listenPort := host.LocalListenPort
|
listenPort := peerHost.LocalListenPort
|
||||||
if proxyStatus {
|
if proxyStatus {
|
||||||
listenPort = host.ProxyListenPort
|
listenPort = peerHost.ProxyListenPort
|
||||||
if listenPort == 0 {
|
if listenPort == 0 {
|
||||||
listenPort = proxy_models.NmProxyPort
|
listenPort = proxy_models.NmProxyPort
|
||||||
}
|
}
|
||||||
} else if listenPort == 0 {
|
} else if listenPort == 0 {
|
||||||
listenPort = host.ListenPort
|
listenPort = peerHost.ListenPort
|
||||||
}
|
}
|
||||||
if _, ok := peerConfMap[host.PublicKey.String()]; !ok {
|
if _, ok := peerConfMap[peerHost.PublicKey.String()]; !ok {
|
||||||
peerConfMap[host.PublicKey.String()] = proxy_models.PeerConf{
|
peerConfMap[peerHost.PublicKey.String()] = proxy_models.PeerConf{
|
||||||
Proxy: proxyStatus,
|
Proxy: proxyStatus,
|
||||||
PublicListenPort: int32(listenPort),
|
PublicListenPort: int32(listenPort),
|
||||||
NetworkInfo: make(map[string]proxy_models.NetworkInfo),
|
NetworkInfo: make(map[string]proxy_models.NetworkInfo),
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
peerConfMap[host.PublicKey.String()].NetworkInfo[peer.Network] = proxy_models.NetworkInfo{
|
}
|
||||||
Address: net.IP(peer.PrimaryAddress()),
|
peerConfMap[peerHost.PublicKey.String()].NetworkInfo[peer.Network] = proxy_models.NetworkInfo{
|
||||||
}
|
Address: net.ParseIP(peer.PrimaryAddress()),
|
||||||
}
|
}
|
||||||
|
|
||||||
if peer.IsRelayed {
|
if peer.IsRelayed {
|
||||||
|
|
@ -307,7 +307,7 @@ func GetProxyUpdateForHost(host *models.Host) (proxy_models.ProxyManagerPayload,
|
||||||
}
|
}
|
||||||
relayTo, err := net.ResolveUDPAddr("udp", fmt.Sprintf("%s:%d", relayHost.EndpointIP, relayHost.LocalListenPort))
|
relayTo, err := net.ResolveUDPAddr("udp", fmt.Sprintf("%s:%d", relayHost.EndpointIP, relayHost.LocalListenPort))
|
||||||
if err == nil {
|
if err == nil {
|
||||||
peerConfMap[host.PublicKey.String()] = proxy_models.PeerConf{
|
peerConfMap[peerHost.PublicKey.String()] = proxy_models.PeerConf{
|
||||||
IsRelayed: true,
|
IsRelayed: true,
|
||||||
RelayedTo: relayTo,
|
RelayedTo: relayTo,
|
||||||
Address: net.ParseIP(peer.PrimaryAddress()),
|
Address: net.ParseIP(peer.PrimaryAddress()),
|
||||||
|
|
@ -325,6 +325,7 @@ func GetProxyUpdateForHost(host *models.Host) (proxy_models.ProxyManagerPayload,
|
||||||
|
|
||||||
//proxyPayload.WgAddr = addr.String()
|
//proxyPayload.WgAddr = addr.String()
|
||||||
proxyPayload.PeerMap = peerConfMap
|
proxyPayload.PeerMap = peerConfMap
|
||||||
|
fmt.Printf("----------> PEERRR MAP: %+v\n", peerConfMap)
|
||||||
//proxyPayload.Network = node.Network
|
//proxyPayload.Network = node.Network
|
||||||
//proxyPayload.InterfaceName = node.Interface
|
//proxyPayload.InterfaceName = node.Interface
|
||||||
//hardcode or read from host ??
|
//hardcode or read from host ??
|
||||||
|
|
@ -404,7 +405,12 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) {
|
||||||
Port: peerHost.ListenPort,
|
Port: peerHost.ListenPort,
|
||||||
}
|
}
|
||||||
if !host.ProxyEnabled && peerHost.ProxyEnabled {
|
if !host.ProxyEnabled && peerHost.ProxyEnabled {
|
||||||
peerConfig.Endpoint.Port = peerHost.ProxyListenPort
|
if peerHost.ProxyListenPort == 0 {
|
||||||
|
peerConfig.Endpoint.Port = proxy_models.NmProxyPort
|
||||||
|
} else {
|
||||||
|
peerConfig.Endpoint.Port = peerHost.ProxyListenPort
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if uselocal {
|
if uselocal {
|
||||||
peerConfig.Endpoint.IP = peer.LocalAddress.IP
|
peerConfig.Endpoint.IP = peer.LocalAddress.IP
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
@ -483,43 +482,37 @@ func (node *Node) DoesACLDeny() bool {
|
||||||
return node.DefaultACL == "no"
|
return node.DefaultACL == "no"
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ln *LegacyNode) ConvertToNewNode() (*Host, *Node) {
|
func (ln *LegacyNode) ConvertToNewNode(host *Host) (*Host, *Node) {
|
||||||
var node Node
|
var node Node
|
||||||
//host:= logic.GetHost(node.HostID)
|
host.FirewallInUse = ln.FirewallInUse
|
||||||
var host Host
|
host.Version = ln.Version
|
||||||
if host.ID.String() == "" {
|
host.IPForwarding = parseBool(ln.IPForwarding)
|
||||||
host.ID = uuid.New()
|
//host.HostPass = ln.Password
|
||||||
host.FirewallInUse = ln.FirewallInUse
|
host.Name = ln.Name
|
||||||
host.Version = ln.Version
|
host.ListenPort = int(ln.ListenPort)
|
||||||
host.IPForwarding = parseBool(ln.IPForwarding)
|
if _, cidr, err := net.ParseCIDR(ln.LocalAddress); err == nil {
|
||||||
host.HostPass = ln.Password
|
host.LocalRange = *cidr
|
||||||
host.Name = ln.Name
|
} else {
|
||||||
host.ListenPort = int(ln.ListenPort)
|
if _, cidr, err := net.ParseCIDR(ln.LocalRange); err == nil {
|
||||||
if _, cidr, err := net.ParseCIDR(ln.LocalAddress); err == nil {
|
|
||||||
host.LocalRange = *cidr
|
host.LocalRange = *cidr
|
||||||
} else {
|
|
||||||
if _, cidr, err := net.ParseCIDR(ln.LocalRange); err == nil {
|
|
||||||
host.LocalRange = *cidr
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
host.LocalListenPort = int(ln.LocalListenPort)
|
|
||||||
host.ProxyListenPort = int(ln.ProxyListenPort)
|
|
||||||
host.MTU = int(ln.MTU)
|
|
||||||
host.PublicKey, _ = wgtypes.ParseKey(ln.PublicKey)
|
|
||||||
host.MacAddress, _ = net.ParseMAC(ln.MacAddress)
|
|
||||||
host.TrafficKeyPublic = ln.TrafficKeys.Mine
|
|
||||||
gateway, err := net.ResolveUDPAddr("udp", ln.InternetGateway)
|
|
||||||
if err == nil {
|
|
||||||
host.InternetGateway = *gateway
|
|
||||||
}
|
|
||||||
id, _ := uuid.Parse(ln.ID)
|
|
||||||
host.Nodes = append(host.Nodes, id.String())
|
|
||||||
host.Interfaces = ln.Interfaces
|
|
||||||
host.EndpointIP = net.ParseIP(ln.Endpoint)
|
|
||||||
// host.ProxyEnabled = ln.Proxy // this will always be false..
|
|
||||||
}
|
}
|
||||||
id, _ := uuid.Parse(ln.ID)
|
host.LocalListenPort = int(ln.LocalListenPort)
|
||||||
node.ID = id
|
host.ProxyListenPort = int(ln.ProxyListenPort)
|
||||||
|
host.MTU = int(ln.MTU)
|
||||||
|
// host.PublicKey, _ = wgtypes.ParseKey(ln.PublicKey)
|
||||||
|
// host.MacAddress, _ = net.ParseMAC(ln.MacAddress)
|
||||||
|
// host.TrafficKeyPublic = ln.TrafficKeys.Mine
|
||||||
|
gateway, err := net.ResolveUDPAddr("udp", ln.InternetGateway)
|
||||||
|
if err == nil {
|
||||||
|
host.InternetGateway = *gateway
|
||||||
|
}
|
||||||
|
nodeID, _ := uuid.Parse(ln.ID)
|
||||||
|
host.Nodes = append(host.Nodes, nodeID.String())
|
||||||
|
host.Interfaces = ln.Interfaces
|
||||||
|
host.EndpointIP = net.ParseIP(ln.Endpoint)
|
||||||
|
// host.ProxyEnabled = ln.Proxy // this will always be false..
|
||||||
|
node.ID = nodeID
|
||||||
node.Network = ln.Network
|
node.Network = ln.Network
|
||||||
if _, cidr, err := net.ParseCIDR(ln.NetworkSettings.AddressRange); err == nil {
|
if _, cidr, err := net.ParseCIDR(ln.NetworkSettings.AddressRange); err == nil {
|
||||||
node.NetworkRange = *cidr
|
node.NetworkRange = *cidr
|
||||||
|
|
@ -549,7 +542,7 @@ func (ln *LegacyNode) ConvertToNewNode() (*Host, *Node) {
|
||||||
node.IsIngressGateway = parseBool(ln.IsIngressGateway)
|
node.IsIngressGateway = parseBool(ln.IsIngressGateway)
|
||||||
node.DNSOn = parseBool(ln.DNSOn)
|
node.DNSOn = parseBool(ln.DNSOn)
|
||||||
|
|
||||||
return &host, &node
|
return host, &node
|
||||||
}
|
}
|
||||||
|
|
||||||
// Node.Legacy converts node to legacy format
|
// Node.Legacy converts node to legacy format
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,15 @@ func UpdateNode(client mqtt.Client, msg mqtt.Message) {
|
||||||
logger.Log(1, "error unmarshaling payload ", err.Error())
|
logger.Log(1, "error unmarshaling payload ", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
_, newNode := oldNode.ConvertToNewNode()
|
host, err := logic.GetHost(oldNode.HostID)
|
||||||
|
if err != nil && database.IsEmptyRecord(err) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
host, newNode := oldNode.ConvertToNewNode(host)
|
||||||
|
err = logic.UpsertHost(host)
|
||||||
|
if err != nil {
|
||||||
|
logger.Log(0, "failed to update host: ", err.Error())
|
||||||
|
}
|
||||||
ifaceDelta := logic.IfaceDelta(¤tNode, newNode)
|
ifaceDelta := logic.IfaceDelta(¤tNode, newNode)
|
||||||
if servercfg.Is_EE && ifaceDelta {
|
if servercfg.Is_EE && ifaceDelta {
|
||||||
if err = logic.EnterpriseResetAllPeersFailovers(currentNode.ID.String(), currentNode.Network); err != nil {
|
if err = logic.EnterpriseResetAllPeersFailovers(currentNode.ID.String(), currentNode.Network); err != nil {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue