| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | package modelsimport (	"net"	"strings")// ApiHost - the host struct for API usagetype 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"`	LocalListenPort  int      `json:"locallistenport"`	ProxyListenPort  int      `json:"proxy_listen_port"`	PublicListenPort int      `json:"public_listen_port" yaml:"public_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 hostfunc (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.DefaultInterface = h.DefaultInterface	a.InternetGateway = h.InternetGateway.String()	if isEmptyAddr(a.InternetGateway) {		a.InternetGateway = ""	}	a.IsStatic = h.IsStatic	a.ListenPort = h.ListenPort	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.PublicListenPort = h.PublicListenPort	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 structfunc (a *ApiHost) ConvertAPIHostToNMHost(currentHost *Host) *Host {	h := Host{}	h.ID = currentHost.ID	h.HostPass = currentHost.HostPass	h.DaemonInstalled = currentHost.DaemonInstalled	if len(a.EndpointIP) == 0 || strings.Contains(a.EndpointIP, "nil") {		h.EndpointIP = currentHost.EndpointIP	} else {		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.DefaultInterface = currentHost.DefaultInterface	h.InternetGateway = currentHost.InternetGateway	h.IsDocker = currentHost.IsDocker	h.IsK8S = currentHost.IsK8S	h.IsStatic = a.IsStatic	h.ListenPort = a.ListenPort	h.ProxyListenPort = a.ProxyListenPort	h.PublicListenPort = currentHost.PublicListenPort	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	h.ProxyEnabled = a.ProxyEnabled	h.IsDefault = a.IsDefault	h.NatType = currentHost.NatType	h.TurnEndpoint = currentHost.TurnEndpoint	return &h}
 |