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