gqlmodel

package
v0.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 22, 2023 License: MIT Imports: 0 Imported by: 0

Documentation

Index

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

func (FwConfig) GetID

func (this FwConfig) GetID() int

Numeric ID

func (FwConfig) IsNode

func (FwConfig) IsNode()

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.

func (Group) GetID

func (this Group) GetID() int

Numeric ID

func (Group) IsNode

func (Group) IsNode()

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

func (this Server) GetDescription() *string

Optional description of the entity

func (Server) GetID

func (this Server) GetID() int

Numeric ID

func (Server) GetName

func (this Server) GetName() string

Display name of the entity

func (Server) IsEntity

func (Server) IsEntity()

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

func (this User) GetDescription() *string

Optional description of the entity

func (User) GetID

func (this User) GetID() int

Numeric ID

func (User) GetName

func (this User) GetName() string

Display name of the entity

func (User) IsEntity

func (User) IsEntity()

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL