| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | package modelsimport (	"net"	"strings"	"time")// 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"`	WgPublicListenPort  int      `json:"wg_public_listen_port" yaml:"wg_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"`	Nodes               []string `json:"nodes"`	IsDefault           bool     `json:"isdefault"             yaml:"isdefault"`	NatType             string   `json:"nat_type"              yaml:"nat_type"`	PersistentKeepalive int      `json:"persistentkeepalive"   yaml:"persistentkeepalive"`	AutoUpdate          bool     `json:"autoupdate"              yaml:"autoupdate"`}// 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.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.WgPublicListenPort = h.WgPublicListenPort	a.PublicKey = h.PublicKey.String()	a.Verbosity = h.Verbosity	a.Version = h.Version	a.IsDefault = h.IsDefault	a.NatType = h.NatType	a.PersistentKeepalive = int(h.PersistentKeepalive.Seconds())	a.AutoUpdate = h.AutoUpdate	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.IsDocker = currentHost.IsDocker	h.IsK8S = currentHost.IsK8S	h.IsStatic = a.IsStatic	h.ListenPort = a.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.IsDefault = a.IsDefault	h.NatType = currentHost.NatType	h.TurnEndpoint = currentHost.TurnEndpoint	h.PersistentKeepalive = time.Duration(a.PersistentKeepalive) * time.Second	h.AutoUpdate = a.AutoUpdate	return &h}
 |