Documentation ¶
Overview ¶
package for logicing client and server code
Index ¶
- Constants
- Variables
- func AddHook(ifaceToAdd interface{})
- func AssociateNodeToHost(n *models.Node, h *models.Host) error
- func CheckAndRemoveLegacyNode(nodeID string) bool
- func CheckEndpoint(endpoint string) bool
- func CheckHostPorts(h *models.Host)
- func CheckIfFileExists(filePath string) bool
- func CheckZombies(newnode *models.Node)
- func ClearNodeCache()
- func ContinueIfUserMatch(next http.Handler) http.HandlerFunc
- func ConvHostPassToHash(hostPass string) string
- func CreateDNS(entry models.DNSEntry) (models.DNSEntry, error)
- func CreateEgressGateway(gateway models.EgressGatewayRequest) (models.Node, error)
- func CreateEnrollmentKey(uses int, expiration time.Time, networks, tags []string, unlimited bool, ...) (*models.EnrollmentKey, error)
- func CreateExtClient(extclient *models.ExtClient) error
- func CreateHost(h *models.Host) error
- func CreateIngressGateway(netid string, nodeid string, ingress models.IngressRequest) (models.Node, error)
- func CreateJWT(uuid string, macAddress string, network string) (response string, err error)
- func CreateNetwork(network models.Network) (models.Network, error)
- func CreateSuperAdmin(u *models.User) error
- func CreateUser(user *models.User) error
- func CreateUserJWT(username string, issuperadmin, isadmin bool) (response string, err error)
- func DeTokenize(b64Token string) (*models.EnrollmentKey, error)
- func DeleteDNS(domain string, network string) error
- func DeleteEgressGateway(network, nodeid string) (models.Node, error)
- func DeleteEnrollmentKey(value string) error
- func DeleteExpiredNodes(ctx context.Context, peerUpdate chan *models.Node)
- func DeleteExtClient(network string, clientid string) error
- func DeleteExtClientAndCleanup(extClient models.ExtClient) error
- func DeleteGatewayExtClients(gatewayID string, networkName string) error
- func DeleteIngressGateway(nodeid string) (models.Node, []models.ExtClient, error)
- func DeleteNetwork(network string) error
- func DeleteNode(node *models.Node, purge bool) error
- func DeleteNodeByID(node *models.Node) error
- func DeletePendingUser(username string) error
- func DeleteUser(user string) (bool, error)
- func DisassociateAllNodesFromHost(hostID string) error
- func DissasociateNodeFromHost(n *models.Node, h *models.Host) error
- func EnterpriseCheck()
- func FetchAuthSecret() (string, error)
- func FetchJWTSecret() (string, error)
- func FetchTelemetryData() telemetryData
- func FetchTelemetryRecord() (models.Telemetry, error)
- func FileExists(f string) bool
- func FindRelay(node *models.Node) *models.Node
- func FormatError(err error, errType string) models.ErrorResponse
- func GetAllDNS() ([]models.DNSEntry, error)
- func GetAllEgresses() ([]models.Node, error)
- func GetAllEnrollmentKeys() ([]*models.EnrollmentKey, error)
- func GetAllExtClients() ([]models.ExtClient, error)
- func GetAllFailOvers() ([]models.Node, error)
- func GetAllHosts() ([]models.Host, error)
- func GetAllHostsAPI(hosts []models.Host) []models.ApiHost
- func GetAllIngresses() ([]models.Node, error)
- func GetAllNodes() ([]models.Node, error)
- func GetAllNodesAPI(nodes []models.Node) []models.ApiNode
- func GetAllowedIPs(node, peer *models.Node, metrics *models.Metrics) []net.IPNet
- func GetCustomDNS(network string) ([]models.DNSEntry, error)
- func GetDNS(network string) ([]models.DNSEntry, error)
- func GetDNSEntryNum(domain string, network string) (int, error)
- func GetDefaultHosts() []models.Host
- func GetDeletedNodeByID(uuid string) (models.Node, error)
- func GetEgressIPs(peer *models.Node) []net.IPNet
- func GetEgressRangesOnNetwork(client *models.ExtClient) ([]string, error)
- func GetEnrollmentKey(value string) (*models.EnrollmentKey, error)
- func GetExtClient(clientid string, network string) (models.ExtClient, error)
- func GetExtClientByName(ID string) (models.ExtClient, error)
- func GetExtClientByPubKey(publicKey string, network string) (*models.ExtClient, error)
- func GetExtClientsByID(nodeid, network string) ([]models.ExtClient, error)
- func GetExtclientAllowedIPs(client models.ExtClient) (allowedIPs []string)
- func GetExtclientDNS() []models.DNSEntry
- func GetGwExtclients(nodeID, network string) []models.ExtClient
- func GetHost(hostid string) (*models.Host, error)
- func GetHostByNodeID(id string) *models.Host
- func GetHostByPubKey(hostPubKey string) (*models.Host, error)
- func GetHostNetworks(hostID string) []string
- func GetHostNodes(host *models.Host) []models.Node
- func GetHostsMap() (map[string]models.Host, error)
- func GetIngressGwUsers(node models.Node) (models.IngressGwUsers, error)
- func GetInternetGateways() ([]models.Node, error)
- func GetNetwork(networkname string) (models.Network, error)
- func GetNetworkByNode(node *models.Node) (models.Network, error)
- func GetNetworkExtClients(network string) ([]models.ExtClient, error)
- func GetNetworkNodes(network string) ([]models.Node, error)
- func GetNetworkNodesMemory(allNodes []models.Node, network string) []models.Node
- func GetNetworkNonServerNodeCount(networkName string) (int, error)
- func GetNetworkSettings(networkname string) (models.Network, error)
- func GetNetworks() ([]models.Network, error)
- func GetNodeByHostRef(hostid, network string) (node models.Node, err error)
- func GetNodeByID(uuid string) (models.Node, error)
- func GetNodeDNS(network string) ([]models.DNSEntry, error)
- func GetParentNetwork(networkname string) (models.Network, error)
- func GetPeerListenPort(host *models.Host) int
- func GetPeerUpdateForHost(network string, host *models.Host, allNodes []models.Node, ...) (models.HostPeerUpdate, error)
- func GetRecordKey(id string, network string) (string, error)
- func GetRelatedHosts(hostID string) []models.Host
- func GetReturnUser(username string) (models.ReturnUser, error)
- func GetState(state string) (*models.SsoState, error)
- func GetSuperAdmin() (models.ReturnUser, error)
- func GetUser(username string) (*models.User, error)
- func GetUsers() ([]models.ReturnUser, error)
- func GetUsersDB() ([]models.User, error)
- func HasSuperAdmin() (bool, error)
- func HostExists(h *models.Host) bool
- func IfaceDelta(currentNode *models.Node, newNode *models.Node) bool
- func InitializeZombies()
- func InsertPendingUser(u *models.User) error
- func IsAddressInCIDR(address net.IP, cidr string) bool
- func IsBase64(s string) bool
- func IsIPUnique(network string, ip string, tableName string, isIpv6 bool) bool
- func IsInternetGw(node models.Node) bool
- func IsLegacyNode(nodeID string) bool
- func IsNetworkCIDRUnique(cidr4 *net.IPNet, cidr6 *net.IPNet) bool
- func IsNetworkNameUnique(network *models.Network) (bool, error)
- func IsNodeIDUnique(node *models.Node) (bool, error)
- func IsPendingUser(username string) bool
- func IsSlicesEqual(a, b []string) bool
- func IsStateValid(state string) (string, bool)
- func IsUserAllowedAccessToExtClient(username string, client models.ExtClient) bool
- func IsVersionCompatible(ver string) bool
- func ListPendingUsers() ([]models.ReturnUser, error)
- func ManageZombies(ctx context.Context, peerUpdate chan *models.Node)
- func NetIDInNetworkCharSet(network *models.Network) bool
- func NetworkExists(name string) (bool, error)
- func NormalizeCIDR(address string) (string, error)
- func ParseNetwork(value string) (models.Network, error)
- func RandomString(length int) string
- func RemoveAllLegacyNodes() error
- func RemoveHost(h *models.Host, forceDelete bool) error
- func RemoveHostByID(hostID string) error
- func RemoveStringSlice(slice []string, i int) []string
- func RetrievePrivateTrafficKey() ([]byte, error)
- func RetrievePublicTrafficKey() ([]byte, error)
- func ReturnErrorResponse(response http.ResponseWriter, request *http.Request, ...)
- func ReturnSuccessResponse(response http.ResponseWriter, request *http.Request, message string)
- func ReturnSuccessResponseWithJson(response http.ResponseWriter, request *http.Request, res interface{}, ...)
- func SaveExtClient(extclient *models.ExtClient) error
- func SaveNetwork(network *models.Network) error
- func SecurityCheck(reqAdmin bool, next http.Handler) http.HandlerFunc
- func SetAuthSecret(secret string) error
- func SetCorefile(domains string) error
- func SetDNS() error
- func SetFreeTierForTelemetry(freeTierFlag bool)
- func SetFreeTierLimits()
- func SetJWTSecret()
- func SetNetworkNodesLastModified(networkName string) error
- func SetNodeDefaults(node *models.Node)
- func SetState(state string) error
- func SetUserDefaults(user *models.User)
- func SortApiHosts(unsortedHosts []models.ApiHost)
- func SortApiNodes(unsortedNodes []models.ApiNode)
- func SortDNSEntrys(unsortedDNSEntrys []models.DNSEntry)
- func SortExtClient(unsortedExtClient []models.ExtClient)
- func SortNetworks(unsortedNetworks []models.Network)
- func SortUsers(unsortedUsers []models.ReturnUser)
- func StartHookManager(ctx context.Context, wg *sync.WaitGroup)
- func StoreJWTSecret(privateKey string) error
- func StringDifference(a, b []string) []string
- func StringSliceContains(slice []string, item string) bool
- func TimerCheckpoint() error
- func ToReturnUser(user models.User) models.ReturnUser
- func ToggleExtClientConnectivity(client *models.ExtClient, enable bool) (models.ExtClient, error)
- func Tokenize(k *models.EnrollmentKey, serverAddr string) error
- func TryToUseEnrollmentKey(k *models.EnrollmentKey) bool
- func UniqueAddress(networkName string, reverse bool) (net.IP, error)
- func UniqueAddress6(networkName string, reverse bool) (net.IP, error)
- func UpdateEnrollmentKey(keyId string, relayId uuid.UUID) (*models.EnrollmentKey, error)
- func UpdateExtClient(old *models.ExtClient, update *models.CustomExtClient) models.ExtClient
- func UpdateHost(newHost, currentHost *models.Host)
- func UpdateHostFromClient(newHost, currHost *models.Host) (sendPeerUpdate bool)
- func UpdateHostNetwork(h *models.Host, network string, add bool) (*models.Node, error)
- func UpdateNetwork(currentNetwork *models.Network, newNetwork *models.Network) (bool, bool, bool, error)
- func UpdateNode(currentNode *models.Node, newNode *models.Node) error
- func UpdateNodeCheckin(node *models.Node) error
- func UpdateUser(userchange, user *models.User) (*models.User, error)
- func UpsertHost(h *models.Host) error
- func UpsertNode(newNode *models.Node) error
- func UpsertUser(user models.User) error
- func UserPermissions(reqAdmin bool, token string) (string, error)
- func ValidateDNSCreate(entry models.DNSEntry) error
- func ValidateDNSUpdate(change models.DNSEntry, entry models.DNSEntry) error
- func ValidateEgressGateway(gateway models.EgressGatewayRequest) error
- func ValidateNetwork(network *models.Network, isUpdate bool) error
- func ValidateNode(node *models.Node, isUpdate bool) error
- func ValidateParams(nodeid, netid string) (models.Node, error)
- func ValidateUser(user *models.User) error
- func VerifyAuthRequest(authRequest models.UserAuthParams) (string, error)
- func VerifyHostToken(tokenString string) (hostID string, mac string, network string, err error)
- func VerifyJWT(bearerToken string) (username string, issuperadmin, isadmin bool, err error)
- func VerifyUserToken(tokenString string) (username string, issuperadmin, isadmin bool, err error)
Constants ¶
const ( // RELAY_NODE_ERR - error to return if relay node is unfound RELAY_NODE_ERR = "could not find relay for node" // NodePurgeTime time to wait for node to response to a NODE_DELETE actions NodePurgeTime = time.Second * 10 // NodePurgeCheckTime is how often to check nodes for Pending Delete NodePurgeCheckTime = time.Second * 30 )
const ( MasterUser = "masteradministrator" Forbidden_Msg = "forbidden" Forbidden_Err = models.Error(Forbidden_Msg) )
const ( // ZOMBIE_TIMEOUT - timeout in hours for checking zombie status ZOMBIE_TIMEOUT = 6 // ZOMBIE_DELETE_TIME - timeout in minutes for zombie node deletion ZOMBIE_DELETE_TIME = 10 )
const KUBERNETES_LISTEN_PORT = 31821
KUBERNETES_LISTEN_PORT - starting port for Kubernetes in order to use NodePort range
const KUBERNETES_SERVER_MTU = 1024
KUBERNETES_SERVER_MTU - ideal mtu for kubernetes deployments right now
const MinVersion = "v0.17.0"
Variables ¶
var ( // DenyClientNodeAccess - function to handle adding a node to an ext client's denied node set DenyClientNodeAccess = func(ec *models.ExtClient, clientOrNodeID string) bool { return true } // IsClientNodeAllowed - function to check if an ext client's denied node set contains a node ID IsClientNodeAllowed = func(ec *models.ExtClient, clientOrNodeID string) bool { return true } // AllowClientNodeAccess - function to handle removing a node ID from ext client's denied nodes, thus allowing it AllowClientNodeAccess = func(ec *models.ExtClient, clientOrNodeID string) bool { return true } SetClientDefaultACLs = func(ec *models.ExtClient) error { networkAcls := acls.ACLContainer{} networkAcls, err := networkAcls.Get(acls.ContainerID(ec.Network)) if err != nil { slog.Error("failed to get network acls", "error", err) return err } networkAcls[acls.AclID(ec.ClientID)] = acls.ACL{} for objId := range networkAcls { networkAcls[objId][acls.AclID(ec.ClientID)] = acls.Allowed networkAcls[acls.AclID(ec.ClientID)][objId] = acls.Allowed } delete(networkAcls[acls.AclID(ec.ClientID)], acls.AclID(ec.ClientID)) if _, err = networkAcls.Save(acls.ContainerID(ec.Network)); err != nil { slog.Error("failed to update network acls", "error", err) return err } return nil } SetClientACLs = func(ec *models.ExtClient, newACLs map[string]struct{}) { } UpdateProNodeACLs = func(node *models.Node) error { return nil } )
var ( // ErrHostExists error indicating that host exists when trying to create new host ErrHostExists error = errors.New("host already exists") // ErrInvalidHostID ErrInvalidHostID error = errors.New("invalid host id") )
var ( // ResetFailOver - function to reset failOvered peers on this node ResetFailOver = func(failOverNode *models.Node) error { return nil } // ResetFailedOverPeer - removes failed over node from network peers ResetFailedOverPeer = func(failedOverNode *models.Node) error { return nil } // FailOverExists - check if failover node existed or not FailOverExists = func(network string) (failOverNode models.Node, exists bool) { return failOverNode, exists } // GetFailOverPeerIps - gets failover peerips GetFailOverPeerIps = func(peer, node *models.Node) []net.IPNet { return []net.IPNet{} } // CreateFailOver - creates failover in a network CreateFailOver = func(node models.Node) error { return nil } // SetDefaulGw SetDefaultGw = func(node models.Node, peerUpdate models.HostPeerUpdate) models.HostPeerUpdate { return peerUpdate } SetDefaultGwForRelayedUpdate = func(relayed, relay models.Node, peerUpdate models.HostPeerUpdate) models.HostPeerUpdate { return peerUpdate } // UnsetInternetGw UnsetInternetGw = func(node *models.Node) { node.IsInternetGateway = false } // SetInternetGw SetInternetGw = func(node *models.Node, req models.InetNodeReq) { node.IsInternetGateway = true } // GetAllowedIpForInetNodeClient GetAllowedIpForInetNodeClient = func(node, peer *models.Node) []net.IPNet { return []net.IPNet{} } )
var ( // NetworksLimit - dummy var for community NetworksLimit = 1000000000 // UsersLimit - dummy var for community UsersLimit = 1000000000 // MachinesLimit - dummy var for community MachinesLimit = 1000000000 // IngressesLimit - dummy var for community IngressesLimit = 1000000000 // EgressesLimit - dummy var for community EgressesLimit = 1000000000 // FreeTier - specifies if free tier FreeTier = false // DefaultTrialEndDate - is a placeholder date for not applicable trial end dates DefaultTrialEndDate, _ = time.Parse("2006-Jan-02", "2021-Apr-01") GetTrialEndDate = func() (time.Time, error) { return DefaultTrialEndDate, nil } )
var DeleteMetrics = func(string) error { return nil }
var EnrollmentErrors = struct { InvalidCreate error NoKeyFound error InvalidKey error NoUsesRemaining error FailedToTokenize error FailedToDeTokenize error }{ InvalidCreate: fmt.Errorf("failed to create enrollment key. paramters invalid"), NoKeyFound: fmt.Errorf("no enrollmentkey found"), InvalidKey: fmt.Errorf("invalid key provided"), NoUsesRemaining: fmt.Errorf("no uses remaining"), FailedToTokenize: fmt.Errorf("failed to tokenize"), FailedToDeTokenize: fmt.Errorf("failed to detokenize"), }
EnrollmentErrors - struct for holding EnrollmentKey error messages
var EnterpriseCheckFuncs []func()
EnterpriseCheckFuncs - can be set to run functions for EE
var GetAllowedIpsForRelayed = func(relayed, relay *models.Node) []net.IPNet { return []net.IPNet{} }
var GetMetrics = func(string) (*models.Metrics, error) { var metrics models.Metrics return &metrics, nil }
var HookManagerCh = make(chan models.HookDetails, 3)
HookManagerCh - channel to add any new hooks
var RelayUpdates = func(currentNode, newNode *models.Node) bool { return false }
var RelayedAllowedIPs = func(peer, node *models.Node) []net.IPNet { return []net.IPNet{} }
var SetRelayedNodes = func(setRelayed bool, relay string, relayed []string) []models.Node { return []models.Node{} }
var UpdateRelayed = func(currentNode, newNode *models.Node) {
}
var ValidateRelay = func(relay models.RelayRequest, update bool) error { return nil }
Functions ¶
func AddHook ¶
func AddHook(ifaceToAdd interface{})
AddHook - adds a hook function to run every 24hrs
func AssociateNodeToHost ¶
AssociateNodeToHost - associates and creates a node with a given host should be the only way nodes get created as of 0.18
func CheckAndRemoveLegacyNode ¶
CheckAndRemoveLegacyNode - checks for legacy node and removes
func CheckEndpoint ¶
CheckEndpoint - checks if an endpoint is valid
func CheckHostPorts ¶
CheckHostPort checks host endpoints to ensures that hosts on the same server with the same endpoint have different listen ports in the case of 64535 hosts or more with same endpoint, ports will not be changed
func CheckIfFileExists ¶
CheckIfFileExists - checks if file exists or not in the given path
func CheckZombies ¶
CheckZombies - checks if new node has same hostid as existing node if so, existing node is added to zombie node quarantine list also cleans up nodes past their expiration date
func ClearNodeCache ¶
func ClearNodeCache()
func ContinueIfUserMatch ¶
func ContinueIfUserMatch(next http.Handler) http.HandlerFunc
func ConvHostPassToHash ¶
ConvHostPassToHash - converts password to md5 hash
func CreateEgressGateway ¶
func CreateEgressGateway(gateway models.EgressGatewayRequest) (models.Node, error)
CreateEgressGateway - creates an egress gateway
func CreateEnrollmentKey ¶
func CreateEnrollmentKey(uses int, expiration time.Time, networks, tags []string, unlimited bool, relay uuid.UUID) (*models.EnrollmentKey, error)
CreateEnrollmentKey - creates a new enrollment key in db
func CreateExtClient ¶
CreateExtClient - creates and saves an extclient
func CreateIngressGateway ¶
func CreateIngressGateway(netid string, nodeid string, ingress models.IngressRequest) (models.Node, error)
CreateIngressGateway - creates an ingress gateway
func CreateNetwork ¶
CreateNetwork - creates a network in database
func CreateSuperAdmin ¶
CreateSuperAdmin - creates an super admin user
func CreateUserJWT ¶
CreateUserJWT - creates a user jwt token
func DeTokenize ¶
func DeTokenize(b64Token string) (*models.EnrollmentKey, error)
DeTokenize - detokenizes a base64 encoded string and finds the associated enrollment key
func DeleteEgressGateway ¶
DeleteEgressGateway - deletes egress from node
func DeleteEnrollmentKey ¶
DeleteEnrollmentKey - delete's a given enrollment key by value
func DeleteExpiredNodes ¶
DeleteExpiredNodes - goroutine which deletes nodes which are expired
func DeleteExtClient ¶
DeleteExtClient - deletes an existing ext client
func DeleteExtClientAndCleanup ¶ added in v0.24.1
DeleteExtClientAndCleanup - deletes an existing ext client and update ACLs
func DeleteGatewayExtClients ¶
DeleteGatewayExtClients - deletes ext clients based on gateway (mac) of ingress node and network
func DeleteIngressGateway ¶
DeleteIngressGateway - deletes an ingress gateway
func DeleteNode ¶
DeleteNode - marks node for deletion (and adds to zombie list) if called by UI or deletes node if called by node
func DeleteNodeByID ¶ added in v0.21.2
DeleteNodeByID - deletes a node from database
func DeletePendingUser ¶ added in v0.24.0
func DisassociateAllNodesFromHost ¶
DisassociateAllNodesFromHost - deletes all nodes of the host
func DissasociateNodeFromHost ¶
DissasociateNodeFromHost - deletes a node and removes from host nodes should be the only way nodes are deleted as of 0.18
func EnterpriseCheck ¶
func EnterpriseCheck()
EnterpriseCheck - Runs enterprise functions if presented
func FetchAuthSecret ¶
FetchAuthSecret - manages secrets for oauth
func FetchJWTSecret ¶
FetchJWTSecret - fetches jwt secret from db
func FetchTelemetryData ¶ added in v0.23.0
func FetchTelemetryData() telemetryData
FetchTelemetryData - fetches telemetry data: count of various object types in DB
func FetchTelemetryRecord ¶ added in v0.23.0
FetchTelemetryRecord - get the existing UUID and Timestamp from the DB
func FormatError ¶
func FormatError(err error, errType string) models.ErrorResponse
FormatError - takes ErrorResponse and uses correct code
func GetAllEgresses ¶
GetAllEgresses - gets all the nodes that are egresses
func GetAllEnrollmentKeys ¶
func GetAllEnrollmentKeys() ([]*models.EnrollmentKey, error)
GetAllEnrollmentKeys - fetches all enrollment keys from DB TODO drop double pointer
func GetAllExtClients ¶
GetAllExtClients - gets all ext clients from DB
func GetAllFailOvers ¶ added in v0.24.0
GetAllFailOvers - gets all the nodes that are failovers
func GetAllHosts ¶
GetAllHosts - returns all hosts in flat list or error
func GetAllHostsAPI ¶
GetAllHostsAPI - get's all the hosts in an API usable format
func GetAllIngresses ¶
GetAllIngresses - gets all the nodes that are ingresses
func GetAllNodes ¶
GetAllNodes - returns all nodes in the DB
func GetAllNodesAPI ¶
GetAllNodesAPI - get all nodes for api usage
func GetAllowedIPs ¶
GetAllowedIPs - calculates the wireguard allowedip field for a peer of a node based on the peer and node settings
func GetCustomDNS ¶
GetCustomDNS - gets the custom DNS of a network
func GetDNSEntryNum ¶
GetDNSEntryNum - gets which entry the dns was
func GetDefaultHosts ¶
GetDefaultHosts - retrieve all hosts marked as default from DB
func GetDeletedNodeByID ¶
GetDeletedNodeByID - get a deleted node
func GetEgressRangesOnNetwork ¶
ExtClient.GetEgressRangesOnNetwork - returns the egress ranges on network of ext client
func GetEnrollmentKey ¶
func GetEnrollmentKey(value string) (*models.EnrollmentKey, error)
GetEnrollmentKey - fetches a single enrollment key returns nil and error if not found
func GetExtClient ¶
GetExtClient - gets a single ext client on a network
func GetExtClientByName ¶
GetExtClientByName - gets an ext client by name
func GetExtClientByPubKey ¶
GetExtClient - gets a single ext client on a network
func GetExtClientsByID ¶
GetExtClientsByID - gets the clients of attached gateway
func GetExtclientAllowedIPs ¶ added in v0.22.0
func GetExtclientDNS ¶ added in v0.22.0
GetExtclientDNS - gets all extclients dns entries
func GetGwExtclients ¶ added in v0.21.2
GetGwExtclients - return all ext clients attached to the passed gw id
func GetHostByNodeID ¶
GetHostByNodeID - returns a host if found to have a node's ID, else nil
func GetHostByPubKey ¶ added in v0.22.0
GetHostByPubKey - gets a host from db given pubkey
func GetHostNetworks ¶
GetHostNetworks - fetches all the networks
func GetHostNodes ¶
GetHostNodes - fetches all nodes part of the host
func GetHostsMap ¶
GetHostsMap - gets all the current hosts on machine in a map
func GetIngressGwUsers ¶
func GetIngressGwUsers(node models.Node) (models.IngressGwUsers, error)
GetIngressGwUsers - lists the users having to access to ingressGW
func GetInternetGateways ¶
GetInternetGateways - gets all the nodes that are internet gateways
func GetNetwork ¶
GetNetwork - gets a network from database
func GetNetworkByNode ¶
GetNetworkByNode - gets the network model from a node
func GetNetworkExtClients ¶
GetNetworkExtClients - gets the ext clients of given network
func GetNetworkNodes ¶
GetNetworkNodes - gets the nodes of a network
func GetNetworkNodesMemory ¶
GetNetworkNodesMemory - gets all nodes belonging to a network from list in memory
func GetNetworkNonServerNodeCount ¶
GetNetworkNonServerNodeCount - get number of network non server nodes
func GetNetworkSettings ¶
GetNetworkSettings - get parent network
func GetNetworks ¶
GetNetworks - returns all networks from database
func GetNodeByHostRef ¶ added in v0.21.2
GetNodeByHostRef - gets the node by host id and network
func GetNodeDNS ¶
GetNodeDNS - gets the DNS of a network node
func GetParentNetwork ¶
GetParentNetwork - get parent network
func GetPeerListenPort ¶
GetPeerListenPort - given a host, retrieve it's appropriate listening port
func GetPeerUpdateForHost ¶
func GetPeerUpdateForHost(network string, host *models.Host, allNodes []models.Node, deletedNode *models.Node, deletedClients []models.ExtClient) (models.HostPeerUpdate, error)
GetPeerUpdateForHost - gets the consolidated peer update for the host from all networks
func GetRecordKey ¶
GetRecordKey - get record key depricated
func GetRelatedHosts ¶
GetRelatedHosts - fetches related hosts of a given host
func GetReturnUser ¶
func GetReturnUser(username string) (models.ReturnUser, error)
GetReturnUser - gets a user
func GetSuperAdmin ¶
func GetSuperAdmin() (models.ReturnUser, error)
GetSuperAdmin - fetches superadmin user
func HasSuperAdmin ¶
HasSuperAdmin - checks if server has an superadmin/owner
func HostExists ¶
HostExists - checks if given host already exists
func IfaceDelta ¶
IfaceDelta - checks if the new node causes an interface change
func InitializeZombies ¶
func InitializeZombies()
InitializeZombies - populates the zombie quarantine list (should be called from initialization)
func InsertPendingUser ¶ added in v0.24.0
func IsAddressInCIDR ¶
IsAddressInCIDR - util to see if an address is in a cidr or not
func IsBase64 ¶
IsBase64 - checks if a string is in base64 format This is used to validate public keys (make sure they're base64 encoded like all public keys should be).
func IsIPUnique ¶
IsIPUnique - checks if an IP is unique
func IsInternetGw ¶ added in v0.22.0
IsInternetGw - checks if node is acting as internet gw
func IsLegacyNode ¶
IsLegacyNode - checks if a node is legacy or not
func IsNetworkCIDRUnique ¶ added in v0.21.2
func IsNetworkNameUnique ¶
IsNetworkNameUnique - checks to see if any other networks have the same name (id)
func IsNodeIDUnique ¶
IsNodeIDUnique - checks if node id is unique
func IsPendingUser ¶ added in v0.24.0
func IsSlicesEqual ¶ added in v0.22.0
IsSlicesEqual tells whether a and b contain the same elements. A nil argument is equivalent to an empty slice.
func IsStateValid ¶
IsStateValid - checks if given state is valid or not deletes state after call is made to clean up, should only be called once per sign-in
func IsUserAllowedAccessToExtClient ¶
IsUserAllowedAccessToExtClient - checks if user has permission to access extclient
func IsVersionCompatible ¶ added in v0.24.1
IsVersionCompatible checks that the version passed is compabtible (>=) with MinVersion
func ListPendingUsers ¶ added in v0.24.0
func ListPendingUsers() ([]models.ReturnUser, error)
func ManageZombies ¶
ManageZombies - goroutine which adds/removes/deletes nodes from the zombie node quarantine list
func NetIDInNetworkCharSet ¶
NetIDInNetworkCharSet - checks if a netid of a network uses valid characters
func NetworkExists ¶
NetworkExists - check if network exists
func NormalizeCIDR ¶
NormalizeCIDR - returns the first address of CIDR
func ParseNetwork ¶
ParseNetwork - parses a network into a model
func RandomString ¶
RandomString - returns a random string in a charset
func RemoveAllLegacyNodes ¶
func RemoveAllLegacyNodes() error
RemoveAllLegacyNodes - fetches all legacy nodes from DB and removes
func RemoveHost ¶
RemoveHost - removes a given host from server
func RemoveHostByID ¶
RemoveHostByID - removes a given host by id from server
func RemoveStringSlice ¶
RemoveStringSlice - removes an element at given index i from a given string slice
func RetrievePrivateTrafficKey ¶
RetrievePrivateTrafficKey - retrieves private key of server
func RetrievePublicTrafficKey ¶
RetrievePublicTrafficKey - retrieves public key of server
func ReturnErrorResponse ¶
func ReturnErrorResponse(response http.ResponseWriter, request *http.Request, errorMessage models.ErrorResponse)
ReturnErrorResponse - processes error and adds header
func ReturnSuccessResponse ¶
func ReturnSuccessResponse(response http.ResponseWriter, request *http.Request, message string)
ReturnSuccessResponse - processes message and adds header
func ReturnSuccessResponseWithJson ¶ added in v0.22.0
func ReturnSuccessResponseWithJson(response http.ResponseWriter, request *http.Request, res interface{}, message string)
ReturnSuccessResponseWithJson - processes message and adds header
func SaveExtClient ¶
SaveExtClient - saves an ext client to database
func SaveNetwork ¶
SaveNetwork - save network struct to database
func SecurityCheck ¶
func SecurityCheck(reqAdmin bool, next http.Handler) http.HandlerFunc
SecurityCheck - Check if user has appropriate permissions
func SetAuthSecret ¶ added in v0.24.0
func SetCorefile ¶
SetCorefile - sets the core file of the system
func SetFreeTierForTelemetry ¶
func SetFreeTierForTelemetry(freeTierFlag bool)
setFreeTierForTelemetry - store free tier flag without having an import cycle when used for telemetry (as the pro package needs the logic package as currently written).
func SetNetworkNodesLastModified ¶
SetNetworkNodesLastModified - sets the network nodes last modified
func SetNodeDefaults ¶
SetNodeDefaults - sets the defaults of a node to avoid empty fields
func SetUserDefaults ¶
SetUserDefaults - sets the defaults of a user to avoid empty fields
func SortApiHosts ¶
SortApiHosts - Sorts slice of ApiHosts by their ID alphabetically with numbers first
func SortApiNodes ¶
SortApiNodes - Sorts slice of ApiNodes by their ID alphabetically with numbers first
func SortDNSEntrys ¶
SortDNSEntrys - Sorts slice of DNSEnteys by their Address alphabetically with numbers first
func SortExtClient ¶
SortExtClient - Sorts slice of ExtClients by their ClientID alphabetically with numbers first
func SortNetworks ¶
SortNetworks - Sorts slice of Networks by their NetID alphabetically with numbers first
func SortUsers ¶
func SortUsers(unsortedUsers []models.ReturnUser)
SortUsers - Sorts slice of Users by username
func StartHookManager ¶
StartHookManager - listens on `HookManagerCh` to run any hook
func StoreJWTSecret ¶
StoreJWTSecret - stores server jwt secret if needed
func StringDifference ¶
StringDifference - returns the elements in `a` that aren't in `b`.
func StringSliceContains ¶
StringSliceContains - sees if a string slice contains a string element
func TimerCheckpoint ¶
func TimerCheckpoint() error
TimerCheckpoint - Checks if 24 hours has passed since telemetry was last sent. If so, sends telemetry data to posthog
func ToReturnUser ¶
func ToReturnUser(user models.User) models.ReturnUser
ToReturnUser - gets a user as a return user
func ToggleExtClientConnectivity ¶
ToggleExtClientConnectivity - enables or disables an ext client
func Tokenize ¶
func Tokenize(k *models.EnrollmentKey, serverAddr string) error
Tokenize - tokenizes an enrollment key to be used via registration and attaches it to the Token field on the struct
func TryToUseEnrollmentKey ¶
func TryToUseEnrollmentKey(k *models.EnrollmentKey) bool
TryToUseEnrollmentKey - checks first if key can be decremented returns true if it is decremented or isvalid
func UniqueAddress ¶
UniqueAddress - get a unique ipv4 address
func UniqueAddress6 ¶
UniqueAddress6 - see if ipv6 address is unique
func UpdateEnrollmentKey ¶ added in v0.21.2
UpdateEnrollmentKey - updates an existing enrollment key's associated relay
func UpdateExtClient ¶
UpdateExtClient - updates an ext client with new values
func UpdateHost ¶
UpdateHost - updates host data by field
func UpdateHostFromClient ¶
UpdateHostFromClient - used for updating host on server with update recieved from client
func UpdateHostNetwork ¶
UpdateHostNetwork - adds/deletes host from a network
func UpdateNetwork ¶
func UpdateNetwork(currentNetwork *models.Network, newNetwork *models.Network) (bool, bool, bool, error)
UpdateNetwork - updates a network with another network's fields
func UpdateNode ¶
UpdateNode - takes a node and updates another node with it's values
func UpdateNodeCheckin ¶
UpdateNodeCheckin - updates the checkin time of a node
func UpdateUser ¶
UpdateUser - updates a given user
func UpsertHost ¶
UpsertHost - upserts into DB a given host model, does not check for existence*
func UserPermissions ¶
UserPermissions - checks token stuff
func ValidateDNSCreate ¶
ValidateDNSCreate - checks if an entry is valid
func ValidateDNSUpdate ¶
ValidateDNSUpdate - validates a DNS update
func ValidateEgressGateway ¶
func ValidateEgressGateway(gateway models.EgressGatewayRequest) error
ValidateEgressGateway - validates the egress gateway model
func ValidateNetwork ¶
Validate - validates fields of an network struct
func ValidateNode ¶
ValidateNode - validates node values
func ValidateParams ¶ added in v0.23.0
func ValidateUser ¶
ValidateUser - validates a user model
func VerifyAuthRequest ¶
func VerifyAuthRequest(authRequest models.UserAuthParams) (string, error)
VerifyAuthRequest - verifies an auth request
func VerifyHostToken ¶
VerifyHostToken - [hosts] Only
Types ¶
This section is empty.