123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- package models
- 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"`
- }
- // Host.ConvertNMHostToAPI - converts a Netmaker host to an API editable host
- func (h *Host) ConvertNMHostToAPI() *ApiHost {
- a := ApiHost{}
- a.Debug = h.Debug
- a.EndpointIP = h.EndpointIP.String()
- a.FirewallInUse = h.FirewallInUse
- a.ID = h.ID.String()
- a.Interfaces = h.Interfaces
- for i := range a.Interfaces {
- a.Interfaces[i].AddressString = a.Interfaces[i].Address.String()
- }
- a.InternetGateway = h.InternetGateway.String()
- if isEmptyAddr(a.InternetGateway) {
- a.InternetGateway = ""
- }
- a.IsStatic = h.IsStatic
- a.ListenPort = h.ListenPort
- a.LocalListenPort = h.LocalListenPort
- a.LocalRange = h.LocalRange.String()
- if isEmptyAddr(a.LocalRange) {
- a.LocalRange = ""
- }
- a.MTU = h.MTU
- a.MacAddress = h.MacAddress.String()
- a.Name = h.Name
- a.OS = h.OS
- a.Nodes = h.Nodes
- a.ProxyEnabled = h.ProxyEnabled
- a.ProxyListenPort = h.ProxyListenPort
- a.PublicKey = h.PublicKey.String()
- a.Verbosity = h.Verbosity
- a.Version = h.Version
- a.IsDefault = h.IsDefault
- a.IsRelay = h.IsRelay
- a.RelayedHosts = h.RelayedHosts
- a.IsRelayed = h.IsRelayed
- a.RelayedBy = h.RelayedBy
- return &a
- }
- // APIHost.ConvertAPIHostToNMHost - convert's a given apihost struct to
- // a Host struct
- func (a *ApiHost) ConvertAPIHostToNMHost(currentHost *Host) *Host {
- h := Host{}
- h.ID = currentHost.ID
- h.HostPass = currentHost.HostPass
- h.DaemonInstalled = currentHost.DaemonInstalled
- h.EndpointIP = net.ParseIP(a.EndpointIP)
- h.Debug = a.Debug
- h.FirewallInUse = a.FirewallInUse
- h.IPForwarding = currentHost.IPForwarding
- h.Interface = currentHost.Interface
- h.Interfaces = currentHost.Interfaces
- h.InternetGateway = currentHost.InternetGateway
- h.IsDocker = currentHost.IsDocker
- h.IsK8S = currentHost.IsK8S
- h.IsStatic = a.IsStatic
- h.ListenPort = a.ListenPort
- h.LocalListenPort = currentHost.ListenPort
- h.MTU = a.MTU
- h.MacAddress = currentHost.MacAddress
- h.PublicKey = currentHost.PublicKey
- h.Name = a.Name
- h.Version = currentHost.Version
- h.Verbosity = a.Verbosity
- h.Nodes = currentHost.Nodes
- h.TrafficKeyPublic = currentHost.TrafficKeyPublic
- h.OS = currentHost.OS
- h.RelayedBy = a.RelayedBy
- h.RelayedHosts = a.RelayedHosts
- h.IsRelay = a.IsRelay
- h.IsRelayed = a.IsRelayed
- if len(a.LocalRange) > 0 {
- _, localRange, err := net.ParseCIDR(a.LocalRange)
- if err == nil {
- h.LocalRange = *localRange
- }
- } else if !isEmptyAddr(currentHost.LocalRange.String()) {
- h.LocalRange = currentHost.LocalRange
- }
- h.ProxyEnabled = a.ProxyEnabled
- h.IsDefault = a.IsDefault
- return &h
- }
|