diff --git a/controllers/hosts.go b/controllers/hosts.go index a8b565c7..a2b708fc 100644 --- a/controllers/hosts.go +++ b/controllers/hosts.go @@ -111,7 +111,7 @@ func updateHost(w http.ResponseWriter, r *http.Request) { } } // publish host update through MQ - if mq.HostUpdate(&models.HostUpdate{ + if err := mq.HostUpdate(&models.HostUpdate{ Action: models.UpdateHost, Host: *newHost, }); err != nil { diff --git a/models/api_host.go b/models/api_host.go index cb40c9f8..427e0876 100644 --- a/models/api_host.go +++ b/models/api_host.go @@ -4,31 +4,32 @@ import "net" // ApiHost - the host struct for API usage type ApiHost struct { - ID string `json:"id"` - Verbosity int `json:"verbosity"` - FirewallInUse string `json:"firewallinuse"` - Version string `json:"version"` - Name string `json:"name"` - OS string `json:"os"` - Debug bool `json:"debug"` - IsStatic bool `json:"isstatic"` - ListenPort int `json:"listenport"` - LocalRange string `json:"localrange"` - LocalListenPort int `json:"locallistenport"` - ProxyListenPort int `json:"proxy_listen_port"` - MTU int `json:"mtu" yaml:"mtu"` - Interfaces []Iface `json:"interfaces" yaml:"interfaces"` - EndpointIP string `json:"endpointip" yaml:"endpointip"` - PublicKey string `json:"publickey"` - MacAddress string `json:"macaddress"` - InternetGateway string `json:"internetgateway"` - Nodes []string `json:"nodes"` - ProxyEnabled bool `json:"proxy_enabled" yaml:"proxy_enabled"` - IsDefault bool `json:"isdefault" yaml:"isdefault"` - IsRelayed bool `json:"isrelayed" bson:"isrelayed" yaml:"isrelayed"` - RelayedBy string `json:"relayed_by" bson:"relayed_by" yaml:"relayed_by"` - IsRelay bool `json:"isrelay" bson:"isrelay" yaml:"isrelay"` - RelayedHosts []string `json:"relay_hosts" bson:"relay_hosts" yaml:"relay_hosts"` + ID string `json:"id"` + Verbosity int `json:"verbosity"` + FirewallInUse string `json:"firewallinuse"` + Version string `json:"version"` + Name string `json:"name"` + OS string `json:"os"` + Debug bool `json:"debug"` + IsStatic bool `json:"isstatic"` + ListenPort int `json:"listenport"` + LocalRange string `json:"localrange"` + LocalListenPort int `json:"locallistenport"` + ProxyListenPort int `json:"proxy_listen_port"` + MTU int `json:"mtu" yaml:"mtu"` + Interfaces []Iface `json:"interfaces" yaml:"interfaces"` + DefaultInterface string `json:"defaultinterface" yaml:"defautlinterface"` + EndpointIP string `json:"endpointip" yaml:"endpointip"` + PublicKey string `json:"publickey"` + MacAddress string `json:"macaddress"` + InternetGateway string `json:"internetgateway"` + Nodes []string `json:"nodes"` + ProxyEnabled bool `json:"proxy_enabled" yaml:"proxy_enabled"` + IsDefault bool `json:"isdefault" yaml:"isdefault"` + IsRelayed bool `json:"isrelayed" bson:"isrelayed" yaml:"isrelayed"` + RelayedBy string `json:"relayed_by" bson:"relayed_by" yaml:"relayed_by"` + IsRelay bool `json:"isrelay" bson:"isrelay" yaml:"isrelay"` + RelayedHosts []string `json:"relay_hosts" bson:"relay_hosts" yaml:"relay_hosts"` } // Host.ConvertNMHostToAPI - converts a Netmaker host to an API editable host @@ -42,6 +43,7 @@ func (h *Host) ConvertNMHostToAPI() *ApiHost { for i := range a.Interfaces { a.Interfaces[i].AddressString = a.Interfaces[i].Address.String() } + a.DefaultInterface = h.DefaultInterface a.InternetGateway = h.InternetGateway.String() if isEmptyAddr(a.InternetGateway) { a.InternetGateway = "" @@ -83,6 +85,7 @@ func (a *ApiHost) ConvertAPIHostToNMHost(currentHost *Host) *Host { h.IPForwarding = currentHost.IPForwarding h.Interface = currentHost.Interface h.Interfaces = currentHost.Interfaces + h.DefaultInterface = currentHost.DefaultInterface h.InternetGateway = currentHost.InternetGateway h.IsDocker = currentHost.IsDocker h.IsK8S = currentHost.IsK8S diff --git a/models/api_node.go b/models/api_node.go index a87c44e1..01a89d7f 100644 --- a/models/api_node.go +++ b/models/api_node.go @@ -92,13 +92,15 @@ func (a *ApiNode) ConvertToServerNode(currentNode *Node) *Node { if err == nil { convertedNode.InternetGateway = udpAddr } - _, addr, err := net.ParseCIDR(a.Address) + ip, addr, err := net.ParseCIDR(a.Address) if err == nil { convertedNode.Address = *addr + convertedNode.Address.IP = ip } - _, addr6, err := net.ParseCIDR(a.Address6) + ip6, addr6, err := net.ParseCIDR(a.Address6) if err == nil { convertedNode.Address = *addr6 + convertedNode.Address.IP = ip6 } convertedNode.FailoverNode, _ = uuid.Parse(a.FailoverNode) convertedNode.LastModified = time.Unix(a.LastModified, 0) diff --git a/models/host.go b/models/host.go index 2fac0085..30b0b8fc 100644 --- a/models/host.go +++ b/models/host.go @@ -39,6 +39,7 @@ type Host struct { IsRelay bool `json:"isrelay" yaml:"isrelay"` RelayedHosts []string `json:"relay_hosts" yaml:"relay_hosts"` Interfaces []Iface `json:"interfaces" yaml:"interfaces"` + DefaultInterface string `json:"defaultinterface" yaml:"defautlinterface"` EndpointIP net.IP `json:"endpointip" yaml:"endpointip"` ProxyEnabled bool `json:"proxy_enabled" yaml:"proxy_enabled"` IsDocker bool `json:"isdocker" yaml:"isdocker"`