schema

package
v1.5.1 Latest Latest
Warning

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

Go to latest
Published: Mar 31, 2026 License: Apache-2.0 Imports: 13 Imported by: 7

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNetworkIdentifiersNotProvided = errors.New("network identifiers not provided")
)
View Source
var (
	ErrUserIdentifiersNotProvided = errors.New("user identifiers not provided")
)
View Source
var PostureCheckAttrValues = map[Attribute][]string{
	ClientLocation: {"any_valid_iso_country_codes"},
	ClientVersion:  {"any_valid_semantic_version"},
	OS:             {"linux", "darwin", "windows", "ios", "android"},
	OSVersion:      {"any_valid_semantic_version"},
	OSFamily:       {"linux-debian", "linux-redhat", "linux-suse", "linux-arch", "linux-gentoo", "linux-other", "darwin", "windows", "ios", "android"},
	KernelVersion:  {"any_valid_semantic_version"},
	AutoUpdate:     {"true", "false"},
}
View Source
var PostureCheckAttrValuesMap = map[Attribute]map[string]struct{}{
	ClientLocation: {
		"any_valid_iso_country_codes": {},
	},
	ClientVersion: {
		"any_valid_semantic_version": {},
	},
	OS: {
		"linux":   {},
		"darwin":  {},
		"windows": {},
		"ios":     {},
		"android": {},
	},
	OSVersion: {
		"any_valid_semantic_version": {},
	},
	OSFamily: {
		"linux-debian": {},
		"linux-redhat": {},
		"linux-suse":   {},
		"linux-arch":   {},
		"linux-gentoo": {},
		"linux-other":  {},
		"darwin":       {},
		"windows":      {},
		"ios":          {},
		"android":      {},
	},
	KernelVersion: {
		"any_valid_semantic_version": {},
	},
	AutoUpdate: {
		"true":  {},
		"false": {},
	},
}
View Source
var RsrcTypeMap = map[RsrcType]struct{}{
	HostRsrc:           {},
	RelayRsrc:          {},
	RemoteAccessGwRsrc: {},
	ExtClientsRsrc:     {},
	InetGwRsrc:         {},
	EgressGwRsrc:       {},
	NetworkRsrc:        {},
	EnrollmentKeysRsrc: {},
	UserRsrc:           {},
	AclRsrc:            {},
	DnsRsrc:            {},
	FailOverRsrc:       {},
}

Functions

func ListModels

func ListModels() []interface{}

ListModels lists all the models in this schema.

Types

type Action added in v1.5.1

type Action string
const (
	Create                               Action = "CREATE"
	Update                               Action = "UPDATE"
	Delete                               Action = "DELETE"
	DeleteAll                            Action = "DELETE_ALL"
	Login                                Action = "LOGIN"
	LogOut                               Action = "LOGOUT"
	Connect                              Action = "CONNECT"
	Sync                                 Action = "SYNC"
	RefreshKey                           Action = "REFRESH_KEY"
	RefreshAllKeys                       Action = "REFRESH_ALL_KEYS"
	SyncAll                              Action = "SYNC_ALL"
	UpgradeAll                           Action = "UPGRADE_ALL"
	Disconnect                           Action = "DISCONNECT"
	JoinHostToNet                        Action = "JOIN_HOST_TO_NETWORK"
	RemoveHostFromNet                    Action = "REMOVE_HOST_FROM_NETWORK"
	EnableMFA                            Action = "ENABLE_MFA"
	DisableMFA                           Action = "DISABLE_MFA"
	EnforceMFA                           Action = "ENFORCE_MFA"
	UnenforceMFA                         Action = "UNENFORCE_MFA"
	EnableBasicAuth                      Action = "ENABLE_BASIC_AUTH"
	DisableBasicAuth                     Action = "DISABLE_BASIC_AUTH"
	EnableTelemetry                      Action = "ENABLE_TELEMETRY"
	DisableTelemetry                     Action = "DISABLE_TELEMETRY"
	UpdateClientSettings                 Action = "UPDATE_CLIENT_SETTINGS"
	UpdateAuthenticationSecuritySettings Action = "UPDATE_AUTHENTICATION_SECURITY_SETTINGS"
	UpdateMonitoringAndDebuggingSettings Action = "UPDATE_MONITORING_AND_DEBUGGING_SETTINGS"
	UpdateSMTPSettings                   Action = "UPDATE_EMAIL_SETTINGS"
	UpdateIDPSettings                    Action = "UPDATE_IDP_SETTINGS"
	EnableFlowLogs                       Action = "ENABLE_FLOW_LOGS"
	DisableFlowLogs                      Action = "DISABLE_FLOW_LOGS"
	GatewayAssign                        Action = "GATEWAY_ASSIGN"
	GatewayUnAssign                      Action = "GATEWAY_UNASSIGN"
)

type AddrPort added in v1.5.1

type AddrPort struct {
	netip.AddrPort
}

func (AddrPort) MarshalJSON added in v1.5.1

func (a AddrPort) MarshalJSON() ([]byte, error)

func (*AddrPort) Scan added in v1.5.1

func (a *AddrPort) Scan(value interface{}) error

func (*AddrPort) UnmarshalJSON added in v1.5.1

func (a *AddrPort) UnmarshalJSON(data []byte) error

func (AddrPort) Value added in v1.5.1

func (a AddrPort) Value() (driver.Value, error)

type Attribute added in v1.4.0

type Attribute string
const (
	OS             Attribute = "os"
	OSVersion      Attribute = "os_version"
	OSFamily       Attribute = "os_family"
	KernelVersion  Attribute = "kernel_version"
	AutoUpdate     Attribute = "auto_update"
	ClientVersion  Attribute = "client_version"
	ClientLocation Attribute = "client_location"
)

type AuthType added in v1.5.1

type AuthType string
var (
	BasicAuth AuthType = "basic_auth"
	OAuth     AuthType = "oauth"
)

type Egress

type Egress struct {
	ID           string                      `gorm:"primaryKey" json:"id"`
	Name         string                      `gorm:"name" json:"name"`
	Network      string                      `gorm:"network" json:"network"`
	Description  string                      `gorm:"description" json:"description"`
	Nodes        datatypes.JSONMap           `gorm:"nodes" json:"nodes"`
	Tags         datatypes.JSONMap           `gorm:"tags" json:"tags"`
	Range        string                      `gorm:"range" json:"range"`
	Mode         EgressNATMode               `gorm:"mode;default:direct_nat" json:"mode"`
	VirtualRange string                      `gorm:"virtual_range" json:"virtual_range"`
	DomainAns    datatypes.JSONSlice[string] `gorm:"domain_ans" json:"domain_ans"`
	Domain       string                      `gorm:"domain" json:"domain"`
	Nat          bool                        `gorm:"nat" json:"nat"`
	//IsInetGw    bool              `gorm:"is_inet_gw" json:"is_internet_gateway"`
	Status    bool      `gorm:"status" json:"status"`
	CreatedBy string    `gorm:"created_by" json:"created_by"`
	CreatedAt time.Time `gorm:"created_at" json:"created_at"`
	UpdatedAt time.Time `gorm:"updated_at" json:"updated_at"`
}

func (*Egress) Count added in v1.1.0

func (e *Egress) Count(ctx context.Context) (int, error)

func (*Egress) Create

func (e *Egress) Create(ctx context.Context) error

func (*Egress) Delete

func (e *Egress) Delete(ctx context.Context) error

func (*Egress) DoesEgressRouteExists added in v1.1.0

func (e *Egress) DoesEgressRouteExists(ctx context.Context) error

func (*Egress) Get

func (e *Egress) Get(ctx context.Context) error

func (*Egress) List added in v1.4.0

func (e *Egress) List(ctx context.Context) (egs []Egress, err error)

func (*Egress) ListByNetwork

func (e *Egress) ListByNetwork(ctx context.Context) (egs []Egress, err error)

func (*Egress) ResetDomain added in v1.2.0

func (e *Egress) ResetDomain(ctx context.Context) error

func (*Egress) ResetMode added in v1.5.0

func (e *Egress) ResetMode(ctx context.Context) error

func (*Egress) ResetRange added in v1.2.0

func (e *Egress) ResetRange(ctx context.Context) error

func (*Egress) ResetVirtualRange added in v1.5.0

func (e *Egress) ResetVirtualRange(ctx context.Context) error

func (*Egress) Table

func (e *Egress) Table() string

func (*Egress) Update

func (e *Egress) Update(ctx context.Context) error

func (*Egress) UpdateEgressStatus

func (e *Egress) UpdateEgressStatus(ctx context.Context) error

func (*Egress) UpdateNatStatus

func (e *Egress) UpdateNatStatus(ctx context.Context) error

type EgressNATMode added in v1.5.1

type EgressNATMode string
const (
	VirtualNAT EgressNATMode = "virtual_nat"
	DirectNAT  EgressNATMode = "direct_nat"
)

type Event

type Event struct {
	ID          string         `gorm:"primaryKey" json:"id"`
	Action      Action         `gorm:"action" json:"action"`
	Source      datatypes.JSON `gorm:"source" json:"source"`
	Origin      Origin         `gorm:"origin" json:"origin"`
	Target      datatypes.JSON `gorm:"target" json:"target"`
	NetworkID   NetworkID      `gorm:"network_id" json:"network_id"`
	TriggeredBy string         `gorm:"triggered_by" json:"triggered_by"`
	Diff        datatypes.JSON `gorm:"diff" json:"diff"`
	TimeStamp   time.Time      `gorm:"time_stamp" json:"time_stamp"`
}

func (*Event) Create

func (a *Event) Create(ctx context.Context) error

func (*Event) DeleteOldEvents

func (a *Event) DeleteOldEvents(ctx context.Context, retentionDays int) error

func (*Event) Get

func (a *Event) Get(ctx context.Context) error

func (*Event) List

func (a *Event) List(ctx context.Context, from, to time.Time) (ats []Event, err error)

func (*Event) ListByNetwork

func (a *Event) ListByNetwork(ctx context.Context, from, to time.Time) (ats []Event, err error)

func (*Event) ListByUser

func (a *Event) ListByUser(ctx context.Context, from, to time.Time) (ats []Event, err error)

func (*Event) ListByUserAndNetwork

func (a *Event) ListByUserAndNetwork(ctx context.Context, from, to time.Time) (ats []Event, err error)

func (*Event) Update

func (a *Event) Update(ctx context.Context) error

type Host added in v1.5.1

type Host struct {
	ID                  uuid.UUID                   `gorm:"primaryKey" json:"id" yaml:"id"`
	Verbosity           int                         `json:"verbosity" yaml:"verbosity"`
	FirewallInUse       string                      `json:"firewallinuse" yaml:"firewallinuse"`
	Version             string                      `json:"version" yaml:"version"`
	IPForwarding        bool                        `json:"ipforwarding" yaml:"ipforwarding"`
	DaemonInstalled     bool                        `json:"daemoninstalled" yaml:"daemoninstalled"`
	AutoUpdate          bool                        `json:"autoupdate" yaml:"autoupdate"`
	HostPass            string                      `json:"hostpass" yaml:"hostpass"`
	Name                string                      `json:"name" yaml:"name"`
	OS                  string                      `json:"os" yaml:"os"`
	OSFamily            string                      `json:"os_family" yaml:"os_family"`
	OSVersion           string                      `json:"os_version" yaml:"os_version"`
	KernelVersion       string                      `json:"kernel_version" yaml:"kernel_version"`
	Interface           string                      `json:"interface" yaml:"interface"`
	Debug               bool                        `json:"debug" yaml:"debug"`
	ListenPort          int                         `json:"listenport" yaml:"listenport"`
	WgPublicListenPort  int                         `json:"wg_public_listen_port" yaml:"wg_public_listen_port"`
	MTU                 int                         `json:"mtu" yaml:"mtu"`
	PublicKey           WgKey                       `json:"publickey" yaml:"publickey"`
	MacAddress          net.HardwareAddr            `json:"macaddress" yaml:"macaddress"`
	TrafficKeyPublic    datatypes.JSONSlice[byte]   `json:"traffickeypublic" yaml:"traffickeypublic"`
	Nodes               datatypes.JSONSlice[string] `json:"nodes" yaml:"nodes"`
	Interfaces          datatypes.JSONSlice[Iface]  `json:"interfaces" yaml:"interfaces"`
	DefaultInterface    string                      `json:"defaultinterface" yaml:"defaultinterface"`
	EndpointIP          net.IP                      `json:"endpointip" yaml:"endpointip"`
	EndpointIPv6        net.IP                      `json:"endpointipv6" yaml:"endpointipv6"`
	IsDocker            bool                        `json:"isdocker" yaml:"isdocker"`
	IsK8S               bool                        `json:"isk8s" yaml:"isk8s"`
	IsStaticPort        bool                        `json:"isstaticport" yaml:"isstaticport"`
	IsStatic            bool                        `json:"isstatic" yaml:"isstatic"`
	IsDefault           bool                        `json:"isdefault" yaml:"isdefault"`
	DNS                 string                      `json:"dns_status" yaml:"dns_status"`
	NatType             string                      `json:"nat_type,omitempty" yaml:"nat_type,omitempty"`
	TurnEndpoint        *AddrPort                   `json:"turn_endpoint,omitempty" yaml:"turn_endpoint,omitempty"`
	PersistentKeepalive time.Duration               `json:"persistentkeepalive" swaggertype:"primitive,integer" format:"int64" yaml:"persistentkeepalive"`
	Location            string                      `json:"location" yaml:"location"` // Format: "lat,lon"
	CountryCode         string                      `json:"country_code" yaml:"country_code"`
	EnableFlowLogs      bool                        `json:"enable_flow_logs" yaml:"enable_flow_logs"`
	CreatedAt           time.Time                   `json:"created_at" yaml:"created_at"`
	UpdatedAt           time.Time                   `json:"updated_at" yaml:"updated_at"`
}

func (*Host) Count added in v1.5.1

func (h *Host) Count(ctx context.Context, options ...dbtypes.Option) (int, error)

func (*Host) Create added in v1.5.1

func (h *Host) Create(ctx context.Context) error

func (*Host) Delete added in v1.5.1

func (h *Host) Delete(ctx context.Context) error

func (*Host) Get added in v1.5.1

func (h *Host) Get(ctx context.Context) error

func (*Host) ListAll added in v1.5.1

func (h *Host) ListAll(ctx context.Context, options ...dbtypes.Option) ([]Host, error)

func (*Host) TableName added in v1.5.1

func (h *Host) TableName() string

func (*Host) Upsert added in v1.5.1

func (h *Host) Upsert(ctx context.Context) error

type Iface added in v1.5.1

type Iface struct {
	Name          string    `json:"name"`
	Address       net.IPNet `json:"address"`
	AddressString string    `json:"addressString"`
}

Iface struct for local interfaces of a node

type JITGrant added in v1.5.0

type JITGrant struct {
	ID        string    `gorm:"primaryKey" json:"id"`
	NetworkID string    `gorm:"network_id" json:"network_id"`
	UserID    string    `gorm:"user_id" json:"user_id"`
	RequestID string    `gorm:"request_id" json:"request_id"`
	GrantedAt time.Time `gorm:"granted_at" json:"granted_at"`
	ExpiresAt time.Time `gorm:"expires_at" json:"expires_at"`
}

func (*JITGrant) Create added in v1.5.0

func (g *JITGrant) Create(ctx context.Context) error

func (*JITGrant) Delete added in v1.5.0

func (g *JITGrant) Delete(ctx context.Context) error

func (*JITGrant) Get added in v1.5.0

func (g *JITGrant) Get(ctx context.Context) error

func (*JITGrant) GetActiveByUserAndNetwork added in v1.5.0

func (g *JITGrant) GetActiveByUserAndNetwork(ctx context.Context) (*JITGrant, error)

func (*JITGrant) GetByRequestID added in v1.5.0

func (g *JITGrant) GetByRequestID(ctx context.Context) (*JITGrant, error)

func (*JITGrant) ListActiveByNetwork added in v1.5.0

func (g *JITGrant) ListActiveByNetwork(ctx context.Context) ([]JITGrant, error)

func (*JITGrant) ListByUserAndNetwork added in v1.5.0

func (g *JITGrant) ListByUserAndNetwork(ctx context.Context) ([]JITGrant, error)

func (*JITGrant) ListExpired added in v1.5.0

func (g *JITGrant) ListExpired(ctx context.Context) ([]JITGrant, error)

func (*JITGrant) Table added in v1.5.0

func (g *JITGrant) Table() string

type JITRequest added in v1.5.0

type JITRequest struct {
	ID            string    `gorm:"primaryKey" json:"id"`
	NetworkID     string    `gorm:"network_id" json:"network_id"`
	UserID        string    `gorm:"user_id" json:"user_id"`
	UserName      string    `gorm:"user_name" json:"user_name"`
	Reason        string    `gorm:"reason" json:"reason"`
	Status        string    `gorm:"status" json:"status"` // pending, approved, denied, expired
	RevokedAt     time.Time `gorm:"revoked_at" json:"revoked_at"`
	RequestedAt   time.Time `gorm:"requested_at" json:"requested_at"`
	ApprovedAt    time.Time `gorm:"approved_at" json:"approved_at,omitempty"`
	ApprovedBy    string    `gorm:"approved_by" json:"approved_by,omitempty"`
	DurationHours int       `gorm:"duration_hours" json:"duration_hours,omitempty"`
	ExpiresAt     time.Time `gorm:"expires_at" json:"expires_at,omitempty"`
}

func (*JITRequest) CountByNetwork added in v1.5.0

func (r *JITRequest) CountByNetwork(ctx context.Context) (int64, error)

func (*JITRequest) CountByStatusAndNetwork added in v1.5.0

func (r *JITRequest) CountByStatusAndNetwork(ctx context.Context, status string) (int64, error)

func (*JITRequest) Create added in v1.5.0

func (r *JITRequest) Create(ctx context.Context) error

func (*JITRequest) Delete added in v1.5.0

func (r *JITRequest) Delete(ctx context.Context) error

func (*JITRequest) Get added in v1.5.0

func (r *JITRequest) Get(ctx context.Context) error

func (*JITRequest) ListByNetwork added in v1.5.0

func (r *JITRequest) ListByNetwork(ctx context.Context) ([]JITRequest, error)

func (*JITRequest) ListByStatusAndNetwork added in v1.5.0

func (r *JITRequest) ListByStatusAndNetwork(ctx context.Context, status string) ([]JITRequest, error)

func (*JITRequest) ListByUserAndNetwork added in v1.5.0

func (r *JITRequest) ListByUserAndNetwork(ctx context.Context) ([]JITRequest, error)

func (*JITRequest) ListPendingByNetwork added in v1.5.0

func (r *JITRequest) ListPendingByNetwork(ctx context.Context) ([]JITRequest, error)

func (*JITRequest) Table added in v1.5.0

func (r *JITRequest) Table() string

func (*JITRequest) Update added in v1.5.0

func (r *JITRequest) Update(ctx context.Context) error

type Job

type Job struct {
	ID        string `gorm:"primaryKey"`
	CreatedAt time.Time
}

Job represents a task that netmaker server wants to do.

Ideally, a jobs table should have details about its type, status, who initiated it, etc. But, for now, the table only contains records of jobs that have been done, so that it is easier to prevent a task from being executed again.

func (*Job) Create

func (j *Job) Create(ctx context.Context) error

Create creates a job record in the jobs table.

func (*Job) Get

func (j *Job) Get(ctx context.Context) error

Get returns a job record with the given Job.ID.

type Nameserver added in v1.1.0

type Nameserver struct {
	ID          string                                `gorm:"primaryKey" json:"id"`
	Name        string                                `gorm:"name" json:"name"`
	NetworkID   string                                `gorm:"network_id" json:"network_id"`
	Description string                                `gorm:"description" json:"description"`
	Default     bool                                  `gorm:"column:default" json:"default"`
	Fallback    bool                                  `gorm:"fallback" json:"fallback"`
	Servers     datatypes.JSONSlice[string]           `gorm:"servers" json:"servers"`
	MatchAll    bool                                  `gorm:"match_all" json:"match_all"`
	Domains     datatypes.JSONSlice[NameserverDomain] `gorm:"domains" json:"domains"`
	// TODO: deprecate
	MatchDomains datatypes.JSONSlice[string] `gorm:"match_domains" json:"match_domains"`
	Tags         datatypes.JSONMap           `gorm:"tags" json:"tags"`
	Nodes        datatypes.JSONMap           `gorm:"nodes" json:"nodes"`
	Status       bool                        `gorm:"status" json:"status"`
	CreatedBy    string                      `gorm:"created_by" json:"created_by"`
	CreatedAt    time.Time                   `gorm:"created_at" json:"created_at"`
	UpdatedAt    time.Time                   `gorm:"updated_at" json:"updated_at"`
}

func (*Nameserver) Create added in v1.1.0

func (ns *Nameserver) Create(ctx context.Context) error

func (*Nameserver) Delete added in v1.1.0

func (ns *Nameserver) Delete(ctx context.Context) error

func (*Nameserver) DeleteByNetwork added in v1.4.0

func (ns *Nameserver) DeleteByNetwork(ctx context.Context) error

func (*Nameserver) Get added in v1.1.0

func (ns *Nameserver) Get(ctx context.Context) error

func (*Nameserver) ListByNetwork added in v1.1.0

func (ns *Nameserver) ListByNetwork(ctx context.Context) (dnsli []Nameserver, err error)

func (*Nameserver) Update added in v1.1.0

func (ns *Nameserver) Update(ctx context.Context) error

func (*Nameserver) UpdateFallback added in v1.4.0

func (ns *Nameserver) UpdateFallback(ctx context.Context) error

func (*Nameserver) UpdateMatchAll added in v1.1.0

func (ns *Nameserver) UpdateMatchAll(ctx context.Context) error

func (*Nameserver) UpdateStatus added in v1.1.0

func (ns *Nameserver) UpdateStatus(ctx context.Context) error

type NameserverDomain added in v1.2.0

type NameserverDomain struct {
	Domain         string `json:"domain"`
	IsSearchDomain bool   `json:"is_search_domain"`
	IsADDomain     bool   `json:"is_ad_domain"`
}

type Network added in v1.5.1

type Network struct {
	ID            string `gorm:"primaryKey" json:"id"`
	Name          string `gorm:"unique" json:"netid"`
	AddressRange  string `json:"addressrange"`
	AddressRange6 string `json:"addressrange6"`
	// in seconds.
	DefaultKeepAlive int                         `gorm:"default:20" json:"defaultkeepalive"`
	DefaultMTU       int32                       `gorm:"default:1280" json:"defaultmtu"`
	AutoJoin         bool                        `json:"auto_join"`
	AutoRemove       bool                        `json:"auto_remove"`
	AutoRemoveTags   datatypes.JSONSlice[string] `json:"auto_remove_tags"`
	// in minutes
	AutoRemoveThreshold         int       `json:"auto_remove_threshold"`
	JITEnabled                  bool      `json:"jit_enabled"`
	VirtualNATPoolIPv4          string    `json:"virtual_nat_pool_ipv4"`
	VirtualNATSitePrefixLenIPv4 int       `json:"virtual_nat_site_prefixlen_ipv4"`
	NodesUpdatedAt              time.Time `json:"nodes_updated_at"`
	CreatedBy                   string    `json:"created_by"`
	CreatedAt                   time.Time `json:"created_at"`
	UpdatedAt                   time.Time `json:"updated_at"`
}

Network schema.

NOTE: json tags are different from field names to ensure compatibility with the older model.

func (*Network) Count added in v1.5.1

func (n *Network) Count(ctx context.Context) (int, error)

func (*Network) Create added in v1.5.1

func (n *Network) Create(ctx context.Context) error

func (*Network) Delete added in v1.5.1

func (n *Network) Delete(ctx context.Context) error

func (*Network) Get added in v1.5.1

func (n *Network) Get(ctx context.Context) error

func (*Network) ListAll added in v1.5.1

func (n *Network) ListAll(ctx context.Context) ([]Network, error)

func (*Network) TableName added in v1.5.1

func (n *Network) TableName() string

func (*Network) Update added in v1.5.1

func (n *Network) Update(ctx context.Context) error

func (*Network) UpdateNodesUpdatedAt added in v1.5.1

func (n *Network) UpdateNodesUpdatedAt(ctx context.Context) error

type NetworkID added in v1.5.1

type NetworkID string
const AllNetworks NetworkID = "all_networks"

func (NetworkID) String added in v1.5.1

func (n NetworkID) String() string

type NetworkRoles added in v1.5.1

type NetworkRoles map[NetworkID]map[UserRoleID]struct{}

type Origin added in v1.5.1

type Origin string
const (
	Dashboard Origin = "DASHBOARD"
	Api       Origin = "API"
	NMCTL     Origin = "NMCTL"
	ClientApp Origin = "CLIENT-APP"
)

type PendingHost added in v1.1.0

type PendingHost struct {
	ID            string         `gorm:"id" json:"id"`
	HostID        string         `gorm:"host_id" json:"host_id"`
	Hostname      string         `gorm:"host_name" json:"host_name"`
	Network       string         `gorm:"network" json:"network"`
	PublicKey     string         `gorm:"public_key" json:"public_key"`
	EnrollmentKey datatypes.JSON `gorm:"enrollment_key_id" json:"enrollment_key_id"`
	OS            string         `gorm:"os" json:"os"`
	Version       string         `gorm:"version" json:"version"`
	Location      string         `gorm:"location" json:"location"` // Format: "lat,lon"
	RequestedAt   time.Time      `gorm:"requested_at" json:"requested_at"`
}

func (*PendingHost) CheckIfPendingHostExists added in v1.1.0

func (p *PendingHost) CheckIfPendingHostExists(ctx context.Context) error

func (*PendingHost) Create added in v1.1.0

func (p *PendingHost) Create(ctx context.Context) error

func (*PendingHost) Delete added in v1.1.0

func (p *PendingHost) Delete(ctx context.Context) error

func (*PendingHost) DeleteAllPendingHosts added in v1.1.0

func (p *PendingHost) DeleteAllPendingHosts(ctx context.Context) error

func (*PendingHost) Get added in v1.1.0

func (p *PendingHost) Get(ctx context.Context) error

func (*PendingHost) List added in v1.1.0

func (p *PendingHost) List(ctx context.Context) (pendingHosts []PendingHost, err error)

type PostureCheck added in v1.4.0

type PostureCheck struct {
	ID          string                      `gorm:"primaryKey" json:"id"`
	Name        string                      `gorm:"name" json:"name"`
	NetworkID   NetworkID                   `gorm:"network_id" json:"network_id"`
	Description string                      `gorm:"description" json:"description"`
	Attribute   Attribute                   `gorm:"attribute" json:"attribute"`
	Values      datatypes.JSONSlice[string] `gorm:"values" json:"values"`
	Severity    Severity                    `gorm:"severity" json:"severity"`
	Tags        datatypes.JSONMap           `gorm:"tags" json:"tags"`
	UserGroups  datatypes.JSONMap           `gorm:"user_groups" json:"user_groups"`
	Status      bool                        `gorm:"status" json:"status"`
	CreatedBy   string                      `gorm:"created_by" json:"created_by"`
	CreatedAt   time.Time                   `gorm:"created_at" json:"created_at"`
	UpdatedAt   time.Time                   `gorm:"updated_at" json:"updated_at"`
}

func (*PostureCheck) Create added in v1.4.0

func (p *PostureCheck) Create(ctx context.Context) error

func (*PostureCheck) Delete added in v1.4.0

func (p *PostureCheck) Delete(ctx context.Context) error

func (*PostureCheck) Get added in v1.4.0

func (p *PostureCheck) Get(ctx context.Context) error

func (*PostureCheck) ListAll added in v1.5.1

func (p *PostureCheck) ListAll(ctx context.Context) ([]PostureCheck, error)

func (*PostureCheck) ListByNetwork added in v1.4.0

func (p *PostureCheck) ListByNetwork(ctx context.Context) (pcli []PostureCheck, err error)

func (*PostureCheck) Update added in v1.4.0

func (p *PostureCheck) Update(ctx context.Context) error

func (*PostureCheck) UpdateStatus added in v1.4.0

func (p *PostureCheck) UpdateStatus(ctx context.Context) error

type ResourceAccess added in v1.5.1

type ResourceAccess map[RsrcType]map[RsrcID]RsrcPermissionScope

type RsrcID added in v1.5.1

type RsrcID string
const (
	AllHostRsrcID           RsrcID = "all_host"
	AllRelayRsrcID          RsrcID = "all_relay"
	AllRemoteAccessGwRsrcID RsrcID = "all_remote_access_gw"
	AllExtClientsRsrcID     RsrcID = "all_extclients"
	AllInetGwRsrcID         RsrcID = "all_inet_gw"
	AllEgressGwRsrcID       RsrcID = "all_egress"
	AllNetworkRsrcID        RsrcID = "all_network"
	AllEnrollmentKeysRsrcID RsrcID = "all_enrollment_key"
	AllUserRsrcID           RsrcID = "all_user"
	AllDnsRsrcID            RsrcID = "all_dns"
	AllFailOverRsrcID       RsrcID = "all_fail_over"
	AllAclsRsrcID           RsrcID = "all_acl"
	AllTagsRsrcID           RsrcID = "all_tag"
	AllPostureCheckRsrcID   RsrcID = "all_posturecheck"
	AllNameserverRsrcID     RsrcID = "all_nameserver"
	AllJitAdminRsrcID       RsrcID = "all_jit_admin"
	AllJitUserRsrcID        RsrcID = "all_jit_user"
	AllUserActivityRsrcID   RsrcID = "all_user_activity"
	AllTrafficFlowRsrcID    RsrcID = "all_traffic_flow"
)

func (RsrcID) String added in v1.5.1

func (rid RsrcID) String() string

type RsrcPermissionScope added in v1.5.1

type RsrcPermissionScope struct {
	Create    bool `json:"create"`
	Read      bool `json:"read"`
	Update    bool `json:"update"`
	Delete    bool `json:"delete"`
	VPNaccess bool `json:"vpn_access"`
	SelfOnly  bool `json:"self_only"`
}

type RsrcType added in v1.5.1

type RsrcType string
const (
	HostRsrc           RsrcType = "host"
	RelayRsrc          RsrcType = "relay"
	RemoteAccessGwRsrc RsrcType = "remote_access_gw"
	GatewayRsrc        RsrcType = "gateway"
	ExtClientsRsrc     RsrcType = "extclient"
	InetGwRsrc         RsrcType = "inet_gw"
	EgressGwRsrc       RsrcType = "egress"
	NetworkRsrc        RsrcType = "network"
	EnrollmentKeysRsrc RsrcType = "enrollment_key"
	UserRsrc           RsrcType = "user"
	AclRsrc            RsrcType = "acl"
	TagRsrc            RsrcType = "tag"
	DnsRsrc            RsrcType = "dns"
	NameserverRsrc     RsrcType = "nameserver"
	FailOverRsrc       RsrcType = "fail_over"
	MetricRsrc         RsrcType = "metric"
	PostureCheckRsrc   RsrcType = "posturecheck"
	JitAdminRsrc       RsrcType = "jit_admin"
	JitUserRsrc        RsrcType = "jit_user"
	UserActivityRsrc   RsrcType = "user_activity"
	TrafficFlow        RsrcType = "traffic_flow"
)

func (RsrcType) String added in v1.5.1

func (r RsrcType) String() string

type Severity added in v1.5.1

type Severity int
const (
	SeverityUnknown Severity = iota
	SeverityLow
	SeverityMedium
	SeverityHigh
	SeverityCritical
)

type SubjectType added in v1.5.1

type SubjectType string
const (
	UserSub            SubjectType = "USER"
	UserAccessTokenSub SubjectType = "USER_ACCESS_TOKEN"
	DeviceSub          SubjectType = "DEVICE"
	NodeSub            SubjectType = "NODE"
	GatewaySub         SubjectType = "GATEWAY"
	SettingSub         SubjectType = "SETTING"
	AclSub             SubjectType = "ACL"
	TagSub             SubjectType = "TAG"
	UserRoleSub        SubjectType = "USER_ROLE"
	UserGroupSub       SubjectType = "USER_GROUP"
	UserInviteSub      SubjectType = "USER_INVITE"
	PendingUserSub     SubjectType = "PENDING_USER"
	EgressSub          SubjectType = "EGRESS"
	NetworkSub         SubjectType = "NETWORK"
	DashboardSub       SubjectType = "DASHBOARD"
	EnrollmentKeySub   SubjectType = "ENROLLMENT_KEY"
	ClientAppSub       SubjectType = "CLIENT-APP"
	NameserverSub      SubjectType = "NAMESERVER"
	PostureCheckSub    SubjectType = "POSTURE_CHECK"
)

func (SubjectType) String added in v1.5.1

func (sub SubjectType) String() string

type User added in v1.5.1

type User struct {
	ID                         string     `gorm:"primaryKey" json:"id"`
	Username                   string     `gorm:"unique" json:"username"`
	DisplayName                string     `json:"display_name"`
	PlatformRoleID             UserRoleID `json:"platform_role_id"`
	ExternalIdentityProviderID string     `json:"external_identity_provider_id"`
	AccountDisabled            bool       `json:"account_disabled"`
	AuthType                   AuthType   `json:"auth_type"`
	Password                   string     `json:"password"`
	IsMFAEnabled               bool       `json:"is_mfa_enabled"`
	TOTPSecret                 string     `json:"totp_secret"`
	// NOTE: json tag is different from field name to ensure compatibility with the older model.
	LastLoginAt time.Time `json:"last_login_time"`
	// NOTE: json tag is different from field name to ensure compatibility with the older model.
	UserGroups datatypes.JSONType[map[UserGroupID]struct{}] `json:"user_group_ids"`
	CreatedBy  string                                       `json:"created_by"`
	CreatedAt  time.Time                                    `json:"created_at"`
	UpdatedAt  time.Time                                    `json:"updated_at"`
}

func (*User) Count added in v1.5.1

func (u *User) Count(ctx context.Context, options ...dbtypes.Option) (int, error)

func (*User) Create added in v1.5.1

func (u *User) Create(ctx context.Context) error

func (*User) Delete added in v1.5.1

func (u *User) Delete(ctx context.Context) error

func (*User) Get added in v1.5.1

func (u *User) Get(ctx context.Context) error

func (*User) GetSuperAdmin added in v1.5.1

func (u *User) GetSuperAdmin(ctx context.Context) error

func (*User) ListAll added in v1.5.1

func (u *User) ListAll(ctx context.Context, options ...dbtypes.Option) ([]User, error)

func (*User) SuperAdminExists added in v1.5.1

func (u *User) SuperAdminExists(ctx context.Context) (bool, error)

func (*User) TableName added in v1.5.1

func (u *User) TableName() string

func (*User) Update added in v1.5.1

func (u *User) Update(ctx context.Context) error

func (*User) UpdateAccountStatus added in v1.5.1

func (u *User) UpdateAccountStatus(ctx context.Context) error

func (*User) UpdateMFA added in v1.5.1

func (u *User) UpdateMFA(ctx context.Context) error

type UserAccessToken

type UserAccessToken struct {
	ID        string    `gorm:"primaryKey" json:"id"`
	Name      string    `json:"name"`
	UserName  string    `json:"user_name"`
	ExpiresAt time.Time `json:"expires_at"`
	LastUsed  time.Time `json:"last_used"`
	CreatedBy string    `json:"created_by"`
	CreatedAt time.Time `json:"created_at"`
}

UserAccessToken - token used to access netmaker

func (*UserAccessToken) CountByUser added in v1.0.0

func (a *UserAccessToken) CountByUser(ctx context.Context) (int, error)

func (*UserAccessToken) Create

func (a *UserAccessToken) Create(ctx context.Context) error

func (*UserAccessToken) Delete

func (a *UserAccessToken) Delete(ctx context.Context) error

func (*UserAccessToken) DeleteAllUserTokens

func (a *UserAccessToken) DeleteAllUserTokens(ctx context.Context) error

func (*UserAccessToken) Get

func (a *UserAccessToken) Get(ctx context.Context) error

func (*UserAccessToken) List

func (a *UserAccessToken) List(ctx context.Context) (ats []UserAccessToken, err error)

func (*UserAccessToken) ListByUser

func (a *UserAccessToken) ListByUser(ctx context.Context) (ats []UserAccessToken)

func (*UserAccessToken) Update

func (a *UserAccessToken) Update(ctx context.Context) error

type UserGroup added in v1.5.1

type UserGroup struct {
	ID                         UserGroupID                      `gorm:"primaryKey" json:"id"`
	Name                       string                           `json:"name"`
	Default                    bool                             `json:"default"`
	ExternalIdentityProviderID string                           `json:"external_identity_provider_id"`
	NetworkRoles               datatypes.JSONType[NetworkRoles] `json:"network_roles"`
	ColorCode                  string                           `json:"color_code"`
	MetaData                   string                           `json:"meta_data"`
	CreatedBy                  string                           `json:"created_by"`
	CreatedAt                  time.Time                        `json:"created_at"`
	UpdatedAt                  time.Time                        `json:"updated_at"`
}

func (*UserGroup) Count added in v1.5.1

func (u *UserGroup) Count(ctx context.Context, options ...dbtypes.Option) (int, error)

func (*UserGroup) Create added in v1.5.1

func (u *UserGroup) Create(ctx context.Context) error

func (*UserGroup) Delete added in v1.5.1

func (u *UserGroup) Delete(ctx context.Context) error

func (*UserGroup) Get added in v1.5.1

func (u *UserGroup) Get(ctx context.Context) error

func (*UserGroup) GetByName added in v1.5.1

func (u *UserGroup) GetByName(ctx context.Context) error

func (*UserGroup) ListAll added in v1.5.1

func (u *UserGroup) ListAll(ctx context.Context, options ...dbtypes.Option) ([]UserGroup, error)

func (*UserGroup) TableName added in v1.5.1

func (u *UserGroup) TableName() string

func (*UserGroup) Update added in v1.5.1

func (u *UserGroup) Update(ctx context.Context) error

func (*UserGroup) Upsert added in v1.5.1

func (u *UserGroup) Upsert(ctx context.Context) error

type UserGroupID added in v1.5.1

type UserGroupID string

func (UserGroupID) String added in v1.5.1

func (g UserGroupID) String() string

type UserRole added in v1.5.1

type UserRole struct {
	ID                  UserRoleID                         `gorm:"primaryKey" json:"id"`
	Name                string                             `json:"name"`
	Default             bool                               `json:"default"`
	MetaData            string                             `json:"meta_data"`
	DenyDashboardAccess bool                               `json:"deny_dashboard_access"`
	FullAccess          bool                               `json:"full_access"`
	NetworkID           NetworkID                          `json:"network_id"`
	NetworkLevelAccess  datatypes.JSONType[ResourceAccess] `json:"network_level_access"`
	GlobalLevelAccess   datatypes.JSONType[ResourceAccess] `json:"global_level_access"`
}

func (*UserRole) Create added in v1.5.1

func (u *UserRole) Create(ctx context.Context) error

func (*UserRole) Delete added in v1.5.1

func (u *UserRole) Delete(ctx context.Context) error

func (*UserRole) DeleteNetworkRoles added in v1.5.1

func (u *UserRole) DeleteNetworkRoles(ctx context.Context) error

func (*UserRole) Exists added in v1.5.1

func (u *UserRole) Exists(ctx context.Context) (bool, error)

func (*UserRole) Get added in v1.5.1

func (u *UserRole) Get(ctx context.Context) error

func (*UserRole) ListNetworkRoles added in v1.5.1

func (u *UserRole) ListNetworkRoles(ctx context.Context) ([]UserRole, error)

func (*UserRole) ListPlatformRoles added in v1.5.1

func (u *UserRole) ListPlatformRoles(ctx context.Context) ([]UserRole, error)

func (*UserRole) TableName added in v1.5.1

func (u *UserRole) TableName() string

func (*UserRole) Update added in v1.5.1

func (u *UserRole) Update(ctx context.Context) error

func (*UserRole) Upsert added in v1.5.1

func (u *UserRole) Upsert(ctx context.Context) error

type UserRoleID added in v1.5.1

type UserRoleID string
const (
	SuperAdminRole UserRoleID = "super-admin"
	AdminRole      UserRoleID = "admin"
	ServiceUser    UserRoleID = "service-user"
	PlatformUser   UserRoleID = "platform-user"
	Auditor        UserRoleID = "auditor"
	NetworkAdmin   UserRoleID = "network-admin"
	NetworkUser    UserRoleID = "network-user"
)

func (UserRoleID) String added in v1.5.1

func (r UserRoleID) String() string

type Values added in v1.4.0

type Values string

type WgKey added in v1.5.1

type WgKey struct {
	wgtypes.Key
}

func (WgKey) MarshalJSON added in v1.5.1

func (k WgKey) MarshalJSON() ([]byte, error)

func (*WgKey) Scan added in v1.5.1

func (k *WgKey) Scan(value interface{}) error

func (*WgKey) UnmarshalJSON added in v1.5.1

func (k *WgKey) UnmarshalJSON(data []byte) error

func (WgKey) Value added in v1.5.1

func (k WgKey) Value() (driver.Value, error)

Jump to

Keyboard shortcuts

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