| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | package modelsimport "net"// 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"`	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 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.InternetGateway = h.InternetGateway.String()	if isEmptyAddr(a.InternetGateway) {		a.InternetGateway = ""	}	a.IsStatic = h.IsStatic	a.ListenPort = h.ListenPort	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 structfunc (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.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	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}
 |