Documentation
¶
Index ¶
- type AadConfig
- type AadConfigData
- type Access
- type AccessDevice
- type AccessDeviceData
- type AccessListener
- type AccessListenerData
- type AccessListenerType
- type AccessStatistic
- type AdminDashboard
- type CliAPIConfig
- type CliAPIConfigData
- type CodeListItem
- type ConfigItem
- type CostUsageItem
- type CostUsageMonthItem
- type Entity
- type FwConfig
- type FwConfigData
- type FwConfigRule
- type FwConfigRuleData
- type Group
- type GroupData
- type InviteUserData
- type Lighthouse
- type LogItem
- type Node
- type OsAutoUpdate
- type Server
- type ServerAccessData
- type ServerData
- type ServerForAccess
- type ServerOSAutoUpdatePolicy
- type ServerOSAutoUpdatePolicyData
- type SystemConfig
- type SystemConfigData
- type User
- type UserAccess
- type UserAccessData
- type UserAccessDeviceInfo
- type UserAccessTemplate
- type UserAccessTemplateData
- type UserData
- type UserStatistic
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AadConfig ¶
type AadConfig struct {
// AAD integration enabled
IsEnabled bool `json:"isEnabled"`
// AAD application ID
ClientID string `json:"clientId"`
// AAD application secret - we are showing only first 3 characters from secret
ClientSecret string `json:"clientSecret"`
// AAD tenant ID
TenantID string `json:"tenantId"`
// AAD admin group object ID
AdminGroupObjectID string `json:"adminGroupObjectId"`
// Last processing message
LastProcessingMessage string `json:"lastProcessingMessage"`
}
AAD configuration data
type AadConfigData ¶
type AadConfigData struct {
// AAD integration enabled
IsEnabled bool `json:"isEnabled"`
// AAD application ID
ClientID string `json:"clientId"`
// AAD application secret
ClientSecret string `json:"clientSecret"`
// AAD tenant ID
TenantID string `json:"tenantId"`
// AAD admin group object ID
AdminGroupObjectID string `json:"adminGroupObjectId"`
}
Data necessary for changing AAD configuration
type Access ¶
type Access struct {
// Numeric ID
ID int `json:"id"`
// Name
Name string `json:"name"`
// IP address assigned to the entity
IPAddress string `json:"ipAddress"`
// Fully Qualified Domain Name of the entity
Fqdn string `json:"fqdn"`
// Optional description of the access definition
Description *string `json:"description"`
// Groups that the entity is a member of
Groups []*Group `json:"groups"`
// Firewall configuration
FwConfig *FwConfig `json:"fwConfig"`
// Date and time from which this access definition is valid in the mesh
ValidFrom string `json:"validFrom"`
// Date and time after which this access definition is no longer valid in the mesh
ValidTo string `json:"validTo"`
// Date and time of the last modification to this access
Changed string `json:"changed"`
// Optional access listeners allowing communication forwarding (access box)
Listeners []*AccessListener `json:"listeners"`
// Base64 encoded configuration data for this access
Config *string `json:"config"`
// Setting for nebula communication - punch back mode
PunchBack bool `json:"punchBack"`
// Setting for nebula communication - work on restrictive network
RestrictiveNetwork bool `json:"restrictiveNetwork"`
// Access connection`s statistics
Statistics *AccessStatistic `json:"statistics"`
// Device Access connection`s metadata
DeviceInfo *AccessDevice `json:"deviceInfo"`
}
Definition of the access rules for a single entity in the mesh. One entity can eventually have multiple accesses, e.g. for test and prod environments.
type AccessDevice ¶
type AccessDevice struct {
// Device name
Name string `json:"name"`
// Device Id for communication with shieldoo
DeviceID string `json:"deviceId"`
// Device OS type - [windows,darwin,linux,android,ios,synology]
DeviceOSType string `json:"deviceOSType"`
// Device OS
DeviceOs string `json:"deviceOS"`
// Device client software version
DeviceSWVersion string `json:"deviceSWVersion"`
// Last contact from device - login message
Contacted *string `json:"contacted"`
// OS Auto update statistics
OsAutoUpdate *OsAutoUpdate `json:"osAutoUpdate"`
}
Access device info.
type AccessDeviceData ¶
type AccessDeviceData struct {
// Device name
Name string `json:"name"`
// Device Id for communication with shieldoo
DeviceID string `json:"deviceId"`
// Device OS type - [windows,darwin,linux,android,ios,synology]
DeviceOSType string `json:"deviceOSType"`
// Device OS - full name
DeviceOs string `json:"deviceOS"`
// Device client software version
DeviceSWVersion string `json:"deviceSWVersion"`
// Last contact from device - login message
Contacted *string `json:"contacted"`
}
Data necessary for creating users' device access and info.
type AccessListener ¶
type AccessListener struct {
// Port on which the server is listening
ListenPort *int `json:"listenPort"`
// Communication protocol
Protocol *string `json:"protocol"`
// Port to which the communication is to be forwarded
ForwardPort *int `json:"forwardPort"`
// Name of the host to which the communication is to be forwarded
ForwardHost *string `json:"forwardHost"`
// Mapping to AccessListenerType
AccessListenerType *AccessListenerType `json:"accessListenerType"`
// Description
Description *string `json:"description"`
}
Access listener defines rules for communication forwarding (access box)
type AccessListenerData ¶
type AccessListenerData struct {
// Port on which the server is listening
ListenPort int `json:"listenPort"`
// Communication protocol
Protocol string `json:"protocol"`
// Port to which the communication is to be forwarded
ForwardPort int `json:"forwardPort"`
// Name of the host to which the communication is to be forwarded
ForwardHost string `json:"forwardHost"`
// ID of access listener type
AccessListenerTypeID int `json:"accessListenerTypeId"`
// Description
Description string `json:"description"`
}
Data necessary for creating an access listener
type AccessListenerType ¶
type AccessListenerType struct {
// Numeric ID
ID int `json:"id"`
// Glyph - for mapping to icon
Glyph string `json:"glyph"`
// Name / description of item
Name string `json:"name"`
}
Access listener type defines type of connected device
type AccessStatistic ¶
type AccessStatistic struct {
// Nebula tunnel is connected to lighthouse
IsConnectd *bool `json:"isConnectd"`
// Communication over WebSocket underlay tunnel - communication over restrictive network
IsOverRestrictiveNetwork *bool `json:"isOverRestrictiveNetwork"`
// Last contact from client
LastContact *string `json:"lastContact"`
// Last contact from client from now in seconds
LastContactFromNow *int `json:"lastContactFromNow"`
}
Access statistic.
type AdminDashboard ¶
type AdminDashboard struct {
// Number of users
Users int `json:"users"`
// Number of servers
Servers int `json:"servers"`
// Number of invited users
InvitedUsers int `json:"invitedUsers"`
// User connection statistics
UserStatistics []*UserStatistic `json:"userStatistics"`
}
Admin dashboard data
type CliAPIConfig ¶
type CliAPIConfig struct {
// CLI API integration enabled
IsEnabled bool `json:"isEnabled"`
// CLI API URL
URL string `json:"url"`
// CLI API Key - we are showing only first 3 characters from key when querying, full key returned when setting
APIKey string `json:"apiKey"`
}
CLI API configuration data
type CliAPIConfigData ¶
type CliAPIConfigData struct {
// CLI API integration enabled
Enabled bool `json:"enabled"`
}
Data necessary for changing CLI API configuration
type CodeListItem ¶
type CodeListItem struct {
// Numeric ID
ID int `json:"id"`
// Name of the record
Name string `json:"name"`
}
Code list item.
type ConfigItem ¶
type ConfigItem struct {
// Max DB records
MaxDBRecords int `json:"maxDBRecords"`
// Tenant ID
TenantID string `json:"tenantId"`
// Full tenant name
TenantName string `json:"tenantName"`
// Max certificate validity - max value for ValidTo for access
MaxCertificateValidity string `json:"maxCertificateValidity"`
// Integration with AAD or other identity platform enabled
IdentityImportEnabled bool `json:"identityImportEnabled"`
}
Config data
type CostUsageItem ¶
type CostUsageItem struct {
// YearMonth
YearMonth string `json:"yearMonth"`
// UPN
Upn string `json:"upn"`
// Is user (false means server)
IsUser bool `json:"isUser"`
// Hours spend in the mesh
Hours float64 `json:"hours"`
// Cost
Cost float64 `json:"cost"`
}
Cost usage item.
type CostUsageMonthItem ¶
type CostUsageMonthItem struct {
// YearMonth
YearMonth string `json:"yearMonth"`
// Cost
Cost float64 `json:"cost"`
// Cost usage items for resources in mesh
CostUsageItems []*CostUsageItem `json:"costUsageItems"`
}
Cost usage month item.
type Entity ¶
type Entity interface {
IsEntity()
// Numeric ID
GetID() int
// Display name of the entity
GetName() string
// Optional description of the entity
GetDescription() *string
}
Entity in the mesh; It may be a User or a Server.
type FwConfig ¶
type FwConfig struct {
// Numeric ID
ID int `json:"id"`
// Friendly name of the configuration
Name *string `json:"name"`
// Rules for outgoing communication
FwConfigOuts []*FwConfigRule `json:"fwConfigOuts"`
// Rules for incoming communication
FwConfigIns []*FwConfigRule `json:"fwConfigIns"`
// Date and time of the last modification to this configuration
Changed string `json:"changed"`
}
Firewall configuration
type FwConfigData ¶
type FwConfigData struct {
// ID of the configuration if it already exists
ID *int `json:"id"`
// Friendly name of the configuration
Name *string `json:"name"`
// Rules for outgoing communication
FwConfigOuts []*FwConfigRuleData `json:"fwConfigOuts"`
// Rules for incoming communication
FwConfigIns []*FwConfigRuleData `json:"fwConfigIns"`
}
Data necessary for creating a new or updating an existing firewall configuration
type FwConfigRule ¶
type FwConfigRule struct {
// Port to / from which the communication is comming
Port string `json:"port"`
// Communication protocol
Proto string `json:"proto"`
// Remote hostname, "any" or "group"
Host string `json:"host"`
// Groups to / from which the communication is allowed if host is set to "group"
Groups []*Group `json:"groups"`
}
Firewall rule
type FwConfigRuleData ¶
type FwConfigRuleData struct {
// Port to / from which the communication is comming
Port string `json:"port"`
// Communication protocol
Proto string `json:"proto"`
// Remote hostname, "any" or "group"
Host string `json:"host"`
// Groups to / from which the communication is allowed if host is set to "group"
Groups []*GroupData `json:"groups"`
}
Data necessary for creating a firewall config rule
type Group ¶
type Group struct {
// Numeric ID
ID int `json:"id"`
// Name of the group
Name string `json:"name"`
// Optional description of the group
Description *string `json:"description"`
}
Group of entities.
type GroupData ¶
type GroupData struct {
// ID of the group if it already exists
ID *int `json:"id"`
// Name of the group
Name string `json:"name"`
// Optional group description
Description *string `json:"description"`
}
Data needed to create a new or update an existing group
type InviteUserData ¶
type InviteUserData struct {
// ID of the user if it already exists
ID *int `json:"id"`
// Unique name of the entity
Upn string `json:"upn"`
// Display name of the entity
Name string `json:"name"`
// Optional entity description
Description *string `json:"description"`
// User roles
Roles []*string `json:"roles"`
// ID of parent UserAccessTemplate object - if is empty than we will use default UserAccessTemplate
UserAccessTemplateID *int `json:"userAccessTemplateId"`
}
Data needed to create a new or update an existing user
type Lighthouse ¶
type Lighthouse struct {
// Public IP address
PublicIP string `json:"publicIp"`
// Nebula listening UDP port
Port int `json:"port"`
// Internal IP address in mesh
IPAddress string `json:"ipAddress"`
}
Lighthouse entity
type LogItem ¶
type LogItem struct {
// Unique ID
ID int `json:"id"`
// UPN generated event
Upn string `json:"upn"`
// Log data
Data string `json:"data"`
// Date and time when event was created
Created string `json:"created"`
}
Log data
type Node ¶
type Node interface {
IsNode()
// Numeric ID
GetID() int
}
Base interface for nodes that can be retrieved by ID.
type OsAutoUpdate ¶
type OsAutoUpdate struct {
// OS type - [windows,darwin,linux,android,ios,synology]
OsType string `json:"osType"`
// OS name
Name string `json:"name"`
// OS version
Version string `json:"version"`
// OS description
Description string `json:"description"`
// Last update date
LastUpdate string `json:"lastUpdate"`
// Last update output
LastUpdateOutput string `json:"lastUpdateOutput"`
// Last update success
LastUpdateSuccess bool `json:"lastUpdateSuccess"`
// Security updates count
SecurityUpdatesCount int `json:"securityUpdatesCount"`
// Other updates count
OtherUpdatesCount int `json:"otherUpdatesCount"`
// Security updates
SecurityUpdates []string `json:"securityUpdates"`
// Other updates
OtherUpdates []string `json:"otherUpdates"`
}
OS Auto update statistics data.
type Server ¶
type Server struct {
// Numeric ID
ID int `json:"id"`
// Unique name of the server
Name string `json:"name"`
// Setting for app management - allow client to autoupdate
AllowAutoUpdate bool `json:"allowAutoUpdate"`
// Optional server description
Description *string `json:"description"`
// Access definition issued for this server
Access *Access `json:"access"`
// Server OS auto update policy
ServerOSAutoUpdatePolicy *ServerOSAutoUpdatePolicy `json:"serverOSAutoUpdatePolicy"`
}
Server in the mesh (device entity)
func (Server) GetDescription ¶
Optional description of the entity
type ServerAccessData ¶
type ServerAccessData struct {
// IP address to be assigned to the entity or null if one should be taken from the pool
IPAddress *string `json:"ipAddress"`
// Optional description of the access definition
Description *string `json:"description"`
// IDs of the groups that the entity is a member of
GroupsIds []int `json:"groupsIds"`
// ID of the firewall configuration
FwConfigID int `json:"fwConfigId"`
// Date and time after which this access definition is no longer valid in the mesh
ValidTo string `json:"validTo"`
// Optional access listeners allowing communication forwarding (access box)
Listeners []*AccessListenerData `json:"listeners"`
// Setting for nebula communication - punch back mode
PunchBack bool `json:"punchBack"`
// Setting for nebula communication - work on restrictive network
RestrictiveNetwork bool `json:"restrictiveNetwork"`
}
Data necessary for creating or updating an server-access definition
type ServerData ¶
type ServerData struct {
// ID of the server if it already exists
ID *int `json:"id"`
// Unique name of the server
Name string `json:"name"`
// Setting for app management - allow client to autoupdate
AllowAutoUpdate bool `json:"allowAutoUpdate"`
// Optional entity description
Description *string `json:"description"`
// Server access profile
Access *ServerAccessData `json:"access"`
// Server OS auto update policy
OsAutoUpdatePolicy *ServerOSAutoUpdatePolicyData `json:"osAutoUpdatePolicy"`
}
Data needed to create a new or update an existing server
type ServerForAccess ¶
type ServerForAccess struct {
// Unique name of server
Name string `json:"name"`
// Servers' mesh IP address
IPAddress string `json:"ipAddress"`
// Optional description
Description *string `json:"description"`
// Optional access listeners allowing communication forwarding (access box)
Listeners []*AccessListener `json:"listeners"`
// Access connection`s statistics
Statistics *AccessStatistic `json:"statistics"`
}
Servers accessed by user
type ServerOSAutoUpdatePolicy ¶
type ServerOSAutoUpdatePolicy struct {
// OS auto update enabled
OsAutoUpdateEnabled bool `json:"osAutoUpdateEnabled"`
// OS auto update hour
OsAutoUpdateHour int `json:"osAutoUpdateHour"`
// Security auto update enabled
SecurityAutoUpdateEnabled bool `json:"securityAutoUpdateEnabled"`
// All auto update enabled
AllAutoUpdateEnabled bool `json:"allAutoUpdateEnabled"`
// Restart after update
RestartAfterUpdate bool `json:"restartAfterUpdate"`
}
Server OS auto update policy
type ServerOSAutoUpdatePolicyData ¶
type ServerOSAutoUpdatePolicyData struct {
// OS auto update enabled
OsAutoUpdateEnabled bool `json:"osAutoUpdateEnabled"`
// OS auto update hour
OsAutoUpdateHour int `json:"osAutoUpdateHour"`
// Security auto update enabled
SecurityAutoUpdateEnabled bool `json:"securityAutoUpdateEnabled"`
// All auto update enabled
AllAutoUpdateEnabled bool `json:"allAutoUpdateEnabled"`
// Restart after update
RestartAfterUpdate bool `json:"restartAfterUpdate"`
}
Data needed to create a new or update an existing server OS auto update policy
type SystemConfig ¶
type SystemConfig struct {
// Network mesh CIDR
NetworkCidr string `json:"networkCidr"`
// List of lighthouses
Lighthouses []*Lighthouse `json:"lighthouses"`
// Maximum CA DateTime validity - Accesses cannot have validity after this date
MaximumCertificateValidity string `json:"maximumCertificateValidity"`
// AAD configuration
AadConfig *AadConfig `json:"aadConfig"`
// CLI API configuration
CliAPIConfig *CliAPIConfig `json:"cliApiConfig"`
}
System Configuration attributes
type SystemConfigData ¶
type SystemConfigData struct {
// CIDR
NetworkCidr string `json:"networkCidr"`
}
Data necessary for changing system config
type User ¶
type User struct {
// Numeric ID
ID int `json:"id"`
// User's email
Upn string `json:"upn"`
// User's name
Name string `json:"name"`
// Optional user description
Description *string `json:"description"`
// UserAccess definitions issued for this user
UserAccesses []*UserAccess `json:"userAccesses"`
// Origin of account - from authentication - google/microsoft
Origin *string `json:"origin"`
// User roles
Roles []*string `json:"roles"`
}
User of the system (client entity)
func (User) GetDescription ¶
Optional description of the entity
type UserAccess ¶
type UserAccess struct {
// Numeric ID
ID int `json:"id"`
// Name
Name string `json:"name"`
// Optional description of the access definition
Description *string `json:"description"`
// Groups that the entity is a member of
Groups []*Group `json:"groups"`
// Firewall configuration
FwConfig *FwConfig `json:"fwConfig"`
// Date and time from which this access definition is valid in the mesh
ValidFrom string `json:"validFrom"`
// Date and time after which this access definition is no longer valid in the mesh
ValidTo string `json:"validTo"`
// Date and time of the last modification to this access
Changed string `json:"changed"`
// Link to parent UserAccessTemplate
UserAccessTemplate *UserAccessTemplate `json:"userAccessTemplate"`
// Accesses associated to this UserAccess
Accesses []*Access `json:"accesses"`
// Servers for access - resources which can be accessed by user
ServersForAccess []*ServerForAccess `json:"serversForAccess"`
}
Definition of the access rules for a single user in the mesh. One user can eventually have multiple user-accesses, e.g. for test and prod environments.
type UserAccessData ¶
type UserAccessData struct {
// ID of the access if it already exists
ID *int `json:"id"`
// Name
Name string `json:"name"`
// Optional description of the access definition
Description *string `json:"description"`
// IDs of the groups that the entity is a member of
GroupsIds []int `json:"groupsIds"`
// ID of the firewall configuration
FwConfigID int `json:"fwConfigId"`
// Date and time after which this access definition is no longer valid in the mesh
ValidTo string `json:"validTo"`
// ID of parent UserAccessTemplate object
UserAccessTemplateID *int `json:"userAccessTemplateId"`
// ID of entity
EntityID int `json:"entityId"`
}
Data necessary for creating or updating an access definition
type UserAccessDeviceInfo ¶
type UserAccessDeviceInfo struct {
// Access
Access *Access `json:"access"`
// Certificate data
Certificate string `json:"certificate"`
// CA public key
CaPublicKey string `json:"caPublicKey"`
// Lighthouse public IP
LighthouseIP string `json:"lighthouseIp"`
// Lighthouse port
LighthousePort int `json:"lighthousePort"`
// Lighthouse private IP
LighthousePrivateIP string `json:"lighthousePrivateIp"`
}
Result data for creating user access device.
type UserAccessTemplate ¶
type UserAccessTemplate struct {
// Numeric ID
ID int `json:"id"`
// Name
Name string `json:"name"`
// Optional description of the access definition
Description *string `json:"description"`
// Groups that the entity is a member of
Groups []*Group `json:"groups"`
// Firewall configuration
FwConfig *FwConfig `json:"fwConfig"`
// Date and time from which this access definition is valid in the mesh
ValidFrom string `json:"validFrom"`
// Date and time after which this access definition is no longer valid in the mesh
ValidTo string `json:"validTo"`
// Date and time of the last modification to this access
Changed string `json:"changed"`
}
Definition of the template access rules for a user entity in the mesh.
type UserAccessTemplateData ¶
type UserAccessTemplateData struct {
// ID of the access if it already exists
ID *int `json:"id"`
// Name
Name string `json:"name"`
// Optional description of the access definition
Description *string `json:"description"`
// IDs of the groups that the entity is a member of
GroupsIds []int `json:"groupsIds"`
// ID of the firewall configuration
FwConfigID int `json:"fwConfigId"`
// Date and time after which this access definition is no longer valid in the mesh
ValidTo string `json:"validTo"`
// Flag if record is deleted
Deleted bool `json:"deleted"`
}
Data necessary for creating or updating an access definition
type UserData ¶
type UserData struct {
// ID of the user if it already exists
ID *int `json:"id"`
// Unique name of the entity
Upn string `json:"upn"`
// Display name of the entity
Name string `json:"name"`
// Optional entity description
Description *string `json:"description"`
// Origin of account - from authentication - google/microsoft
Origin *string `json:"origin"`
// User roles
Roles []*string `json:"roles"`
}
Data needed to create a new or update an existing user
type UserStatistic ¶
type UserStatistic struct {
// Date
Date string `json:"date"`
// Hour
Hour int `json:"hour"`
// Number of users online
UsersOnline int `json:"usersOnline"`
}
User connection statistics items