mirror of
				https://github.com/gravitl/netmaker.git
				synced 2025-10-28 07:00:14 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			117 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package models
 | |
| 
 | |
| import (
 | |
| 	"net"
 | |
| 	"strings"
 | |
| )
 | |
| 
 | |
| // 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"`
 | |
| 	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 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.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 struct
 | |
| func (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
 | |
| 
 | |
| 	return &h
 | |
| }
 |