utils

package
v11.3.4 Latest Latest
Warning

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

Go to latest
Published: Dec 14, 2022 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Overview

Package utils defines several functions used across the Teleport API and other packages

Index

Constants

View Source
const (
	// ContextDelegator is a delegator for access requests set in the context
	// of the request
	ContextDelegator contextKey = "delegator"
)
View Source
const HumanTimeFormatString = "Mon Jan _2 15:04 UTC"

HumanTimeFormatString is a human readable date formatting

Variables

This section is empty.

Functions

func CopyByteSlice

func CopyByteSlice(in []byte) []byte

CopyByteSlice returns a copy of the byte slice.

func CopyByteSlices

func CopyByteSlices(in [][]byte) [][]byte

CopyByteSlices returns a copy of the byte slices.

func CopyStrings

func CopyStrings(in []string) []string

CopyStrings makes a deep copy of the passed in string slice and returns the copy.

func DecodeClusterName

func DecodeClusterName(serverName string) (string, error)

DecodeClusterName decodes cluster name, returns NotFound if no cluster name is encoded (empty subdomain), so servers can detect cases when no server name passed returns BadParameter if encoding does not match

func Deduplicate

func Deduplicate(in []string) []string

Deduplicate deduplicates list of strings

func EncodeClusterName

func EncodeClusterName(clusterName string) string

EncodeClusterName encodes cluster name in the SNI hostname

func GetDelegator

func GetDelegator(ctx context.Context) string

GetDelegator attempts to load the context value AccessRequestDelegator, returning the empty string if no value was found.

func HumanTimeFormat

func HumanTimeFormat(d time.Time) string

HumanTimeFormat formats time as recognized by humans

func IsLoopback

func IsLoopback(host string) bool

IsLoopback returns 'true' if a given hostname resolves *only* to the local host's loopback interface

func JoinStrings

func JoinStrings[T ~string](elems []T, sep string) T

JoinStrings returns a string that is all the elements in the slice `T[]` joined by `sep` This being generic allows for the usage of custom string times, without having to convert the elements to a string to be passed into `strings.Join`.

func MapToStrings

func MapToStrings(m map[string]string) []string

MapToStrings collects keys and values of a map into a slice of strings.

func ObjectToStruct

func ObjectToStruct(in interface{}, out interface{}) error

ObjectToStruct is converts any structure into JSON and then unmarshalls it into another structure.

Teleport configuration uses this (strange, at first) trick to convert from one struct type to another, if their fields are loosely compatible via their `json` tags

Example: assume you have two structs:

type A struct {
    Name string `json:"name"`
	   Age  int    `json:"age"`
}

type B struct {
	   FullName string `json:"name"`
}

Now you can convert B to A:

		b := &B{ FullName: "Bob Dilan"}
		var a *A
		utils.ObjectToStruct(b, &a)
		fmt.Println(a.Name)

 > "Bob Dilan"

func ParseBool

func ParseBool(value string) (bool, error)

ParseBool parses string as boolean value, returns error in case if value is not recognized

func ParseSessionsURI

func ParseSessionsURI(in string) (*url.URL, error)

ParseSessionsURI parses uri per convention of session upload URIs file is a default scheme

func SliceContainsStr

func SliceContainsStr[T ~string](slice []T, value T) bool

SliceContainsStr returns 'true' if the slice contains the given value

func StrictObjectToStruct

func StrictObjectToStruct(in interface{}, out interface{}) error

StrictObjectToStruct converts any structure into JSON and then unmarshalls it into another structure using a strict decoder.

func StringSlicesEqual

func StringSlicesEqual(a, b []string) bool

StringSlicesEqual returns true if string slices equal

func ToLowerStrings

func ToLowerStrings(strs []string) []string

ToLowerStrings lower cases each string in a slice.

func UTC

func UTC(t *time.Time)

UTC converts time to UTC timezone

func WithDelegator

func WithDelegator(ctx context.Context, delegator string) context.Context

WithDelegator creates a child context with the AccessRequestDelegator value set. Optionally used by AuthServer.SetAccessRequestState to log a delegating identity.

Types

type Strings

type Strings []string

Strings is a list of string that can unmarshal from list of strings or a scalar string from scalar yaml or json property

func (Strings) MarshalJSON

func (s Strings) MarshalJSON() ([]byte, error)

MarshalJSON marshals to scalar value if there is only one value in the list to list otherwise

func (Strings) MarshalYAML

func (s Strings) MarshalYAML() (interface{}, error)

MarshalYAML marshals to scalar value if there is only one value in the list, marshals to list otherwise

func (*Strings) UnmarshalJSON

func (s *Strings) UnmarshalJSON(data []byte) error

UnmarshalJSON unmarshals scalar string or strings slice to Strings

func (*Strings) UnmarshalYAML

func (s *Strings) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML is used to allow Strings to unmarshal from scalar string value or from the list

Directories

Path Synopsis
Package keypaths defines several keypaths used by multiple Teleport services.
Package keypaths defines several keypaths used by multiple Teleport services.
Package keys defines common interfaces for Teleport client keys.
Package keys defines common interfaces for Teleport client keys.
Package retryutils defines common retry and jitter logic.
Package retryutils defines common retry and jitter logic.
Package sshutils defines several functions and types used across the Teleport API and other Teleport packages when working with SSH.
Package sshutils defines several functions and types used across the Teleport API and other Teleport packages when working with SSH.
ppk
Package ppk provides functions implementing conversion between Teleport's native RSA keypairs and PuTTY's PPK format.
Package ppk provides functions implementing conversion between Teleport's native RSA keypairs and PuTTY's PPK format.
Package tlsutils contains utilities for TLS configuration and formats.
Package tlsutils contains utilities for TLS configuration and formats.

Jump to

Keyboard shortcuts

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