util

package
v0.23.0-beta3.patch5 Latest Latest
Warning

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

Go to latest
Published: Sep 4, 2024 License: BSD-3-Clause Imports: 30 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RegisterMethodAuthKey = "authkey"
	RegisterMethodOIDC    = "oidc"
	RegisterMethodCLI     = "cli"
)
View Source
const (
	ByteSize = 8

	// value related to RFC 1123 and 952.
	LabelHostnameLength = 63
)
View Source
const (
	Base8              = 8
	Base10             = 10
	BitSize16          = 16
	BitSize32          = 32
	BitSize64          = 64
	PermissionFallback = 0o700
)

Variables

View Source
var (
	NodePublicKeyRegex       = regexp.MustCompile("nodekey:[a-fA-F0-9]+")
	ErrCannotDecryptResponse = errors.New("cannot decrypt response")
	ZstdCompression          = "zstd"
)
View Source
var AddrPortComparer = cmp.Comparer(func(x, y netip.AddrPort) bool {
	return x == y
})
View Source
var DkeyComparer = cmp.Comparer(func(x, y key.DiscoPublic) bool {
	return x.String() == y.String()
})
View Source
var ErrInvalidUserName = errors.New("invalid user name")
View Source
var IPComparer = cmp.Comparer(func(x, y netip.Addr) bool {
	return x.Compare(y) == 0
})
View Source
var MkeyComparer = cmp.Comparer(func(x, y key.MachinePublic) bool {
	return x.String() == y.String()
})
View Source
var NkeyComparer = cmp.Comparer(func(x, y key.NodePublic) bool {
	return x.String() == y.String()
})
View Source
var PrefixComparer = cmp.Comparer(func(x, y netip.Prefix) bool {
	return x == y
})
View Source
var ViewSliceIPProtoComparer = cmp.Comparer(func(a, b views.Slice[ipproto.Proto]) bool { return views.SliceEqual(a, b) })

Functions

func AbsolutePathFromConfigPath

func AbsolutePathFromConfigPath(path string) string

func CheckForFQDNRules

func CheckForFQDNRules(name string) error

func DecodeAndUnmarshalNaCl

func DecodeAndUnmarshalNaCl(
	msg []byte,
	output interface{},
	pubKey *key.MachinePublic,
	privKey *key.MachinePrivate,
) error

func EnsureDir

func EnsureDir(dir string) error

func GenerateIPv4DNSRootDomain

func GenerateIPv4DNSRootDomain(ipPrefix netip.Prefix) []dnsname.FQDN

From the netmask we can find out the wildcard bits (the bits that are not set in the netmask). This allows us to then calculate the subnets included in the subsequent class block and generate the entries.

func GenerateIPv6DNSRootDomain

func GenerateIPv6DNSRootDomain(ipPrefix netip.Prefix) []dnsname.FQDN

From the netmask we can find out the wildcard bits (the bits that are not set in the netmask). This allows us to then calculate the subnets included in the subsequent class block and generate the entries.

func GenerateRandomBytes

func GenerateRandomBytes(n int) ([]byte, error)

GenerateRandomBytes returns securely generated random bytes. It will return an error if the system's secure random number generator fails to function correctly, in which case the caller should not continue.

func GenerateRandomStringDNSSafe

func GenerateRandomStringDNSSafe(size int) (string, error)

GenerateRandomStringDNSSafe returns a DNS-safe securely generated random string. It will return an error if the system's secure random number generator fails to function correctly, in which case the caller should not continue.

func GenerateRandomStringURLSafe

func GenerateRandomStringURLSafe(n int) (string, error)

GenerateRandomStringURLSafe returns a URL-safe, base64 encoded securely generated random string. It will return an error if the system's secure random number generator fails to function correctly, in which case the caller should not continue.

func GetFileMode

func GetFileMode(key string) fs.FileMode

func GetIPPrefixEndpoints

func GetIPPrefixEndpoints(na netip.Prefix) (netip.Addr, netip.Addr)

func GrpcSocketDialer

func GrpcSocketDialer(ctx context.Context, addr string) (net.Conn, error)

func LogErr

func LogErr(err error, msg string)

func NormalizeToFQDNRules

func NormalizeToFQDNRules(name string, stripEmailDomain bool) (string, error)

NormalizeToFQDNRules will replace forbidden chars in user it can also return an error if the user doesn't respect RFC 952 and 1123.

func NormalizeToFQDNRulesConfigFromViper

func NormalizeToFQDNRulesConfigFromViper(name string) (string, error)

func ParseIPSet

func ParseIPSet(arg string, bits *int) (*netipx.IPSet, error)

parseIPSet parses arg as one:

  • an IP address (IPv4 or IPv6)
  • the string "*" to match everything (both IPv4 & IPv6)
  • a CIDR (e.g. "192.168.0.0/16")
  • a range of two IPs, inclusive, separated by hyphen ("2eff::1-2eff::0800")

bits, if non-nil, is the legacy SrcBits CIDR length to make a IP address (without a slash) treated as a CIDR of *bits length. nolint

func StringOrPrefixListContains

func StringOrPrefixListContains[T string | netip.Prefix](ts []T, t T) bool

func StringToIPPrefix

func StringToIPPrefix(prefixes []string) ([]netip.Prefix, error)

func TSLogfWrapper

func TSLogfWrapper() logger.Logf

func TailMapResponseToString

func TailMapResponseToString(resp tailcfg.MapResponse) string

func TailNodesToString

func TailNodesToString(nodes []*tailcfg.Node) string

func TailscaleVersionNewerOrEqual

func TailscaleVersionNewerOrEqual(minimum, toCheck string) bool

Types

type DBLogWrapper

type DBLogWrapper struct {
	Logger                *zerolog.Logger
	Level                 zerolog.Level
	Event                 *zerolog.Event
	SlowThreshold         time.Duration
	SkipErrRecordNotFound bool
	ParameterizedQueries  bool
}

func NewDBLogWrapper

func NewDBLogWrapper(origin *zerolog.Logger, slowThreshold time.Duration, skipErrRecordNotFound bool, parameterizedQueries bool) *DBLogWrapper

func (*DBLogWrapper) Error

func (l *DBLogWrapper) Error(ctx context.Context, msg string, data ...interface{})

func (*DBLogWrapper) Info

func (l *DBLogWrapper) Info(ctx context.Context, msg string, data ...interface{})

func (*DBLogWrapper) LogMode

func (*DBLogWrapper) ParamsFilter

func (l *DBLogWrapper) ParamsFilter(ctx context.Context, sql string, params ...interface{}) (string, []interface{})

func (*DBLogWrapper) Trace

func (l *DBLogWrapper) Trace(ctx context.Context, begin time.Time, fc func() (sql string, rowsAffected int64), err error)

func (*DBLogWrapper) Warn

func (l *DBLogWrapper) Warn(ctx context.Context, msg string, data ...interface{})

type DBLogWrapperOption

type DBLogWrapperOption func(*DBLogWrapper)

Jump to

Keyboard shortcuts

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