domain

package
v0.1.0-rc3 Latest Latest
Warning

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

Go to latest
Published: Sep 20, 2022 License: BSD-3-Clause Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CheckTag

func CheckTag(tag string) error

func CheckTags

func CheckTags(tags []string) error

Types

type ACL

type ACL struct {
	Action string   `json:"action"`
	Src    []string `json:"src"`
	Dst    []string `json:"dst"`
}

type ACLPolicy

type ACLPolicy struct {
	Groups    map[string][]string `json:"groups,omitempty"`
	Hosts     map[string]string   `json:"hosts,omitempty"`
	ACLs      []ACL               `json:"acls"`
	TagOwners map[string][]string `json:"tagowners"`
}

func DefaultPolicy

func DefaultPolicy() ACLPolicy

func (ACLPolicy) BuildFilterRules

func (a ACLPolicy) BuildFilterRules(srcs []Machine, dst *Machine) []tailcfg.FilterRule

func (ACLPolicy) CheckTagOwners

func (a ACLPolicy) CheckTagOwners(tags []string, p *User) error

func (ACLPolicy) CheckTags

func (a ACLPolicy) CheckTags(tags []string) error

func (ACLPolicy) GormDBDataType

func (ACLPolicy) GormDBDataType(db *gorm.DB, field *schema.Field) string

GormDBDataType gorm db data type

func (ACLPolicy) GormDataType

func (ACLPolicy) GormDataType() string

GormDataType gorm common data type

func (ACLPolicy) IsTagOwner

func (a ACLPolicy) IsTagOwner(tag string, p *User) bool

func (ACLPolicy) IsValidPeer

func (a ACLPolicy) IsValidPeer(src *Machine, dest *Machine) bool

func (*ACLPolicy) Scan

func (i *ACLPolicy) Scan(destination interface{}) error

func (ACLPolicy) Value

func (i ACLPolicy) Value() (driver.Value, error)

type Account

type Account struct {
	ID         uint64 `gorm:"primary_key"`
	ExternalID string
	LoginName  string
}

type AllowIPs

type AllowIPs []netip.Prefix

func (AllowIPs) GormDBDataType

func (AllowIPs) GormDBDataType(db *gorm.DB, field *schema.Field) string

GormDBDataType gorm db data type

func (AllowIPs) GormDataType

func (AllowIPs) GormDataType() string

GormDataType gorm common data type

func (*AllowIPs) Scan

func (hi *AllowIPs) Scan(destination interface{}) error

func (AllowIPs) Value

func (hi AllowIPs) Value() (driver.Value, error)

type AllowIPsSet

type AllowIPsSet struct {
	// contains filtered or unexported fields
}

func NewAllowIPsSet

func NewAllowIPsSet(t AllowIPs) *AllowIPsSet

func (*AllowIPsSet) Add

func (s *AllowIPsSet) Add(t ...netip.Prefix) *AllowIPsSet

func (*AllowIPsSet) Items

func (s *AllowIPsSet) Items() []netip.Prefix

func (*AllowIPsSet) Remove

func (s *AllowIPsSet) Remove(t ...netip.Prefix) *AllowIPsSet

type ApiKey

type ApiKey struct {
	ID   uint64 `gorm:"primary_key"`
	Key  string
	Hash string

	CreatedAt time.Time
	ExpiresAt *time.Time

	TailnetID uint64
	Tailnet   Tailnet

	UserID uint64
	User   User
}

func CreateApiKey

func CreateApiKey(tailnet *Tailnet, user *User, expiresAt *time.Time) (string, *ApiKey)

type AuthKey

type AuthKey struct {
	ID        uint64 `gorm:"primary_key"`
	Key       string
	Hash      string
	Ephemeral bool
	Tags      Tags

	CreatedAt time.Time
	ExpiresAt *time.Time

	TailnetID uint64
	Tailnet   Tailnet

	UserID uint64
	User   User
}

func CreateAuthKey

func CreateAuthKey(tailnet *Tailnet, user *User, ephemeral bool, tags Tags, expiresAt *time.Time) (string, *AuthKey)

type AuthenticationRequest

type AuthenticationRequest struct {
	Key       string `gorm:"primary_key"`
	Token     string
	TailnetID *uint64
	Error     string
	CreatedAt time.Time
}

type DNSConfig

type DNSConfig struct {
	MagicDNS         bool                `json:"magic_dns"`
	OverrideLocalDNS bool                `json:"override_local_dns"`
	Nameservers      []string            `json:"nameservers"`
	Routes           map[string][]string `json:"routes"`
}

func (DNSConfig) GormDBDataType

func (DNSConfig) GormDBDataType(db *gorm.DB, field *schema.Field) string

GormDBDataType gorm db data type

func (DNSConfig) GormDataType

func (DNSConfig) GormDataType() string

GormDataType gorm common data type

func (*DNSConfig) Scan

func (i *DNSConfig) Scan(destination interface{}) error

func (DNSConfig) Value

func (i DNSConfig) Value() (driver.Value, error)

type Endpoints

type Endpoints []string

func (Endpoints) GormDBDataType

func (Endpoints) GormDBDataType(db *gorm.DB, field *schema.Field) string

GormDBDataType gorm db data type

func (Endpoints) GormDataType

func (Endpoints) GormDataType() string

GormDataType gorm common data type

func (*Endpoints) Scan

func (hi *Endpoints) Scan(destination interface{}) error

func (Endpoints) Value

func (hi Endpoints) Value() (driver.Value, error)

type HostInfo

type HostInfo tailcfg.Hostinfo

func (HostInfo) GormDBDataType

func (HostInfo) GormDBDataType(db *gorm.DB, field *schema.Field) string

GormDBDataType gorm db data type

func (HostInfo) GormDataType

func (HostInfo) GormDataType() string

GormDataType gorm common data type

func (*HostInfo) Scan

func (hi *HostInfo) Scan(destination interface{}) error

func (HostInfo) Value

func (hi HostInfo) Value() (driver.Value, error)

type IAMPolicy

type IAMPolicy struct {
	Subs    []string            `json:"subs,omitempty"`
	Emails  []string            `json:"emails,omitempty"`
	Filters []string            `json:"filters,omitempty"`
	Roles   map[string]UserRole `json:"roles,omitempty"`
}

func (*IAMPolicy) EvaluatePolicy

func (i *IAMPolicy) EvaluatePolicy(identity *Identity) (bool, error)

func (*IAMPolicy) GetRole

func (i *IAMPolicy) GetRole(user User) UserRole

func (IAMPolicy) GormDBDataType

func (IAMPolicy) GormDBDataType(db *gorm.DB, field *schema.Field) string

GormDBDataType gorm db data type

func (IAMPolicy) GormDataType

func (IAMPolicy) GormDataType() string

GormDataType gorm common data type

func (*IAMPolicy) Scan

func (i *IAMPolicy) Scan(destination interface{}) error

func (IAMPolicy) Value

func (i IAMPolicy) Value() (driver.Value, error)

type IP

type IP struct {
	*netip.Addr
}

func (IP) GormDBDataType

func (IP) GormDBDataType(db *gorm.DB, field *schema.Field) string

func (*IP) Scan

func (i *IP) Scan(destination interface{}) error

func (IP) Value

func (i IP) Value() (driver.Value, error)

type Identity

type Identity struct {
	UserID   string
	Username string
	Email    string
	Attr     map[string]interface{}
}

type Machine

type Machine struct {
	ID                uint64 `gorm:"primary_key"`
	Name              string
	NameIdx           uint64
	MachineKey        string
	NodeKey           string
	DiscoKey          string
	Ephemeral         bool
	RegisteredTags    Tags
	Tags              Tags
	KeyExpiryDisabled bool

	HostInfo  HostInfo
	Endpoints Endpoints
	AllowIPs  AllowIPs

	IPv4 IP
	IPv6 IP

	CreatedAt time.Time
	ExpiresAt time.Time
	LastSeen  *time.Time

	UserID uint64
	User   User

	TailnetID uint64
	Tailnet   Tailnet
}

func (*Machine) HasIP

func (m *Machine) HasIP(v netip.Addr) bool

func (*Machine) HasTag

func (m *Machine) HasTag(tag string) bool

func (*Machine) HasTags

func (m *Machine) HasTags() bool

func (*Machine) HasUser

func (m *Machine) HasUser(loginName string) bool

func (*Machine) IsAllowedIP

func (m *Machine) IsAllowedIP(i netip.Addr) bool

func (*Machine) IsAllowedIPPrefix

func (m *Machine) IsAllowedIPPrefix(i netip.Prefix) bool

func (*Machine) IsExpired

func (m *Machine) IsExpired() bool

type Machines

type Machines []Machine

type Principal

type Principal struct {
	SystemRole SystemRole
	User       *User
	UserRole   UserRole
}

func (Principal) IsSystemAdmin

func (p Principal) IsSystemAdmin() bool

func (Principal) IsTailnetAdmin

func (p Principal) IsTailnetAdmin(tailnetID uint64) bool

func (Principal) IsTailnetMember

func (p Principal) IsTailnetMember(tailnetID uint64) bool

func (Principal) UserMatches

func (p Principal) UserMatches(userID uint64) bool

type RegistrationRequest

type RegistrationRequest struct {
	MachineKey    string `gorm:"primary_key"`
	Key           string
	Data          RegistrationRequestData
	CreatedAt     time.Time
	Authenticated bool
	Error         string
}

func (*RegistrationRequest) IsFinished

func (r *RegistrationRequest) IsFinished() bool

type RegistrationRequestData

type RegistrationRequestData tailcfg.RegisterRequest

func (RegistrationRequestData) GormDBDataType

func (RegistrationRequestData) GormDBDataType(db *gorm.DB, field *schema.Field) string

GormDBDataType gorm db data type

func (RegistrationRequestData) GormDataType

func (RegistrationRequestData) GormDataType() string

GormDataType gorm common data type

func (*RegistrationRequestData) Scan

func (hi *RegistrationRequestData) Scan(destination interface{}) error

func (RegistrationRequestData) Value

func (hi RegistrationRequestData) Value() (driver.Value, error)

type Repository

type Repository interface {
	GetDERPMap(ctx context.Context) (*tailcfg.DERPMap, error)
	SetDERPMap(ctx context.Context, v *tailcfg.DERPMap) error

	GetAccount(ctx context.Context, accountID uint64) (*Account, error)
	GetOrCreateAccount(ctx context.Context, externalID, loginName string) (*Account, bool, error)

	SaveTailnet(ctx context.Context, tailnet *Tailnet) error
	GetOrCreateTailnet(ctx context.Context, name string) (*Tailnet, bool, error)
	GetTailnet(ctx context.Context, id uint64) (*Tailnet, error)
	ListTailnets(ctx context.Context) ([]Tailnet, error)
	DeleteTailnet(ctx context.Context, id uint64) error

	SaveSystemApiKey(ctx context.Context, key *SystemApiKey) error
	LoadSystemApiKey(ctx context.Context, key string) (*SystemApiKey, error)

	SaveApiKey(ctx context.Context, key *ApiKey) error
	LoadApiKey(ctx context.Context, key string) (*ApiKey, error)
	DeleteApiKeysByTailnet(ctx context.Context, tailnetID uint64) error
	DeleteApiKeysByUser(ctx context.Context, userID uint64) error

	GetAuthKey(ctx context.Context, id uint64) (*AuthKey, error)
	SaveAuthKey(ctx context.Context, key *AuthKey) error
	DeleteAuthKey(ctx context.Context, id uint64) (bool, error)
	DeleteAuthKeysByTailnet(ctx context.Context, tailnetID uint64) error
	DeleteAuthKeysByUser(ctx context.Context, userID uint64) error
	ListAuthKeys(ctx context.Context, tailnetID uint64) ([]AuthKey, error)
	ListAuthKeysByTailnetAndUser(ctx context.Context, tailnetID, userID uint64) ([]AuthKey, error)
	LoadAuthKey(ctx context.Context, key string) (*AuthKey, error)

	GetOrCreateServiceUser(ctx context.Context, tailnet *Tailnet) (*User, bool, error)
	GetOrCreateUserWithAccount(ctx context.Context, tailnet *Tailnet, account *Account) (*User, bool, error)
	GetUser(ctx context.Context, userID uint64) (*User, error)
	DeleteUser(ctx context.Context, userID uint64) error
	ListUsers(ctx context.Context, tailnetID uint64) (Users, error)
	DeleteUsersByTailnet(ctx context.Context, tailnetID uint64) error

	SaveMachine(ctx context.Context, m *Machine) error
	DeleteMachine(ctx context.Context, id uint64) (bool, error)
	GetMachine(ctx context.Context, id uint64) (*Machine, error)
	GetMachineByKey(ctx context.Context, tailnetID uint64, key string) (*Machine, error)
	GetMachineByKeys(ctx context.Context, machineKey string, nodeKey string) (*Machine, error)
	CountMachinesWithIPv4(ctx context.Context, ip string) (int64, error)
	GetNextMachineNameIndex(ctx context.Context, tailnetID uint64, name string) (uint64, error)
	ListMachineByTailnet(ctx context.Context, tailnetID uint64) (Machines, error)
	CountMachineByTailnet(ctx context.Context, tailnetID uint64) (int64, error)
	DeleteMachineByTailnet(ctx context.Context, tailnetID uint64) error
	DeleteMachineByUser(ctx context.Context, userID uint64) error
	ListMachinePeers(ctx context.Context, tailnetID uint64, key string) (Machines, error)
	ListInactiveEphemeralMachines(ctx context.Context, checkpoint time.Time) (Machines, error)
	SetMachineLastSeen(ctx context.Context, machineID uint64) error

	SaveRegistrationRequest(ctx context.Context, request *RegistrationRequest) error
	GetRegistrationRequestByKey(ctx context.Context, key string) (*RegistrationRequest, error)
	GetRegistrationRequestByMachineKey(ctx context.Context, key string) (*RegistrationRequest, error)

	SaveAuthenticationRequest(ctx context.Context, session *AuthenticationRequest) error
	GetAuthenticationRequest(ctx context.Context, key string) (*AuthenticationRequest, error)
	DeleteAuthenticationRequest(ctx context.Context, key string) error

	Transaction(func(rp Repository) error) error
}

func NewRepository

func NewRepository(db *gorm.DB) Repository

type ServerConfig

type ServerConfig struct {
	Key   configKey `gorm:"primary_key"`
	Value []byte
}

type StringSet

type StringSet struct {
	// contains filtered or unexported fields
}

func (*StringSet) Add

func (s *StringSet) Add(t ...string) *StringSet

func (*StringSet) Items

func (s *StringSet) Items() []string

type SystemApiKey

type SystemApiKey struct {
	ID   uint64 `gorm:"primary_key"`
	Key  string
	Hash string

	CreatedAt time.Time
	ExpiresAt *time.Time

	AccountID uint64
	Account   Account
}

func CreateSystemApiKey

func CreateSystemApiKey(account *Account, expiresAt *time.Time) (string, *SystemApiKey)

type SystemRole

type SystemRole string
const (
	SystemRoleNone  SystemRole = ""
	SystemRoleAdmin SystemRole = "admin"
)

func (SystemRole) IsAdmin

func (s SystemRole) IsAdmin() bool

type Tags

type Tags []string

func SanitizeTags

func SanitizeTags(input []string) Tags

func (*Tags) Scan

func (i *Tags) Scan(destination interface{}) error

func (Tags) Value

func (i Tags) Value() (driver.Value, error)

type Tailnet

type Tailnet struct {
	ID        uint64 `gorm:"primary_key"`
	Name      string
	DNSConfig DNSConfig
	IAMPolicy IAMPolicy
	ACLPolicy ACLPolicy
}

type User

type User struct {
	ID        uint64 `gorm:"primary_key"`
	Name      string
	UserType  UserType
	TailnetID uint64
	Tailnet   Tailnet
	AccountID *uint64
	Account   *Account
}

type UserRole

type UserRole string
const (
	UserRoleNone   UserRole = ""
	UserRoleMember UserRole = "member"
	UserRoleAdmin  UserRole = "admin"
)

func (UserRole) IsAdmin

func (s UserRole) IsAdmin() bool

type UserType

type UserType string
const (
	UserTypeService UserType = "service"
	UserTypePerson  UserType = "person"
)

type Users

type Users []User

Jump to

Keyboard shortcuts

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