mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-05 20:54:18 +08:00
68 lines
3.6 KiB
Go
68 lines
3.6 KiB
Go
package models
|
|
|
|
import "sync"
|
|
|
|
// ExtClient - struct for external clients
|
|
type ExtClient struct {
|
|
ClientID string `json:"clientid" bson:"clientid"`
|
|
PrivateKey string `json:"privatekey" bson:"privatekey"`
|
|
PublicKey string `json:"publickey" bson:"publickey"`
|
|
Network string `json:"network" bson:"network"`
|
|
DNS string `json:"dns" bson:"dns"`
|
|
Address string `json:"address" bson:"address"`
|
|
Address6 string `json:"address6" bson:"address6"`
|
|
ExtraAllowedIPs []string `json:"extraallowedips" bson:"extraallowedips"`
|
|
AllowedIPs []string `json:"allowed_ips"`
|
|
IngressGatewayID string `json:"ingressgatewayid" bson:"ingressgatewayid"`
|
|
IngressGatewayEndpoint string `json:"ingressgatewayendpoint" bson:"ingressgatewayendpoint"`
|
|
LastModified int64 `json:"lastmodified" bson:"lastmodified" swaggertype:"primitive,integer" format:"int64"`
|
|
Enabled bool `json:"enabled" bson:"enabled"`
|
|
OwnerID string `json:"ownerid" bson:"ownerid"`
|
|
DeniedACLs map[string]struct{} `json:"deniednodeacls" bson:"acls,omitempty"`
|
|
RemoteAccessClientID string `json:"remote_access_client_id"` // unique ID (MAC address) of RAC machine
|
|
PostUp string `json:"postup" bson:"postup"`
|
|
PostDown string `json:"postdown" bson:"postdown"`
|
|
Tags map[TagID]struct{} `json:"tags"`
|
|
Os string `json:"os"`
|
|
DeviceName string `json:"device_name"`
|
|
PublicEndpoint string `json:"public_endpoint"`
|
|
Country string `json:"country"`
|
|
Mutex *sync.Mutex `json:"-"`
|
|
}
|
|
|
|
// CustomExtClient - struct for CustomExtClient params
|
|
type CustomExtClient struct {
|
|
ClientID string `json:"clientid,omitempty"`
|
|
PublicKey string `json:"publickey,omitempty"`
|
|
DNS string `json:"dns,omitempty"`
|
|
ExtraAllowedIPs []string `json:"extraallowedips,omitempty"`
|
|
Enabled bool `json:"enabled,omitempty"`
|
|
DeniedACLs map[string]struct{} `json:"deniednodeacls" bson:"acls,omitempty"`
|
|
RemoteAccessClientID string `json:"remote_access_client_id"` // unique ID (MAC address) of RAC machine
|
|
PostUp string `json:"postup" bson:"postup" validate:"max=1024"`
|
|
PostDown string `json:"postdown" bson:"postdown" validate:"max=1024"`
|
|
Tags map[TagID]struct{} `json:"tags"`
|
|
Os string `json:"os"`
|
|
DeviceName string `json:"device_name"`
|
|
IsAlreadyConnectedToInetGw bool `json:"is_already_connected_to_inet_gw"`
|
|
PublicEndpoint string `json:"public_endpoint"`
|
|
Country string `json:"country"`
|
|
}
|
|
|
|
func (ext *ExtClient) ConvertToStaticNode() Node {
|
|
if ext.Tags == nil {
|
|
ext.Tags = make(map[TagID]struct{})
|
|
}
|
|
return Node{
|
|
CommonNode: CommonNode{
|
|
Network: ext.Network,
|
|
Address: ext.AddressIPNet4(),
|
|
Address6: ext.AddressIPNet6(),
|
|
},
|
|
Tags: ext.Tags,
|
|
IsStatic: true,
|
|
StaticNode: *ext,
|
|
IsUserNode: ext.RemoteAccessClientID != "",
|
|
Mutex: ext.Mutex,
|
|
}
|
|
}
|