edge

package
v0.18.42 Latest Latest
Warning

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

Go to latest
Published: Feb 28, 2023 License: Apache-2.0 Imports: 22 Imported by: 38

Documentation

Index

Constants

View Source
const (
	ContentTypeConnect            = 60783
	ContentTypeStateConnected     = 60784
	ContentTypeStateClosed        = 60785
	ContentTypeData               = 60786
	ContentTypeDial               = 60787
	ContentTypeDialSuccess        = 60788
	ContentTypeDialFailed         = 60789
	ContentTypeBind               = 60790
	ContentTypeUnbind             = 60791
	ContentTypeStateSessionEnded  = 60792
	ContentTypeProbe              = 60793
	ContentTypeUpdateBind         = 60794
	ContentTypeHealthEvent        = 60795
	ContentTypeTraceRoute         = 60796
	ContentTypeTraceRouteResponse = 60797

	ConnIdHeader                   = 1000
	SeqHeader                      = 1001
	SessionTokenHeader             = 1002
	PublicKeyHeader                = 1003
	CostHeader                     = 1004
	PrecedenceHeader               = 1005
	TerminatorIdentityHeader       = 1006
	TerminatorIdentitySecretHeader = 1007
	CallerIdHeader                 = 1008
	CryptoMethodHeader             = 1009
	FlagsHeader                    = 1010
	AppDataHeader                  = 1011
	RouterProvidedConnId           = 1012
	HealthStatusHeader             = 1013
	ErrorCodeHeader                = 1014
	TimestampHeader                = 1015
	TraceHopCountHeader            = 1016
	TraceHopTypeHeader             = 1017
	TraceHopIdHeader               = 1018
	TraceSourceRequestIdHeader     = 1019
	TraceError                     = 1020

	ErrorCodeInternal                    = 1
	ErrorCodeInvalidApiSession           = 2
	ErrorCodeInvalidSession              = 3
	ErrorCodeWrongSessionType            = 4
	ErrorCodeInvalidEdgeRouterForSession = 5
	ErrorCodeInvalidService              = 6
	ErrorCodeTunnelingNotEnabled         = 7
	ErrorCodeInvalidTerminator           = 8
	ErrorCodeInvalidPrecedence           = 9
	ErrorCodeInvalidCost                 = 10
	ErrorCodeEncryptionDataMissing       = 11

	PrecedenceDefault  Precedence = 0
	PrecedenceRequired Precedence = 1
	PrecedenceFailed   Precedence = 2

	// Put this in the reflected range so replies will share the same UUID
	UUIDHeader = 128

	// Crypto Methods
	CryptoMethodLibsodium CryptoMethod = 0 // default: crypto_kx_*, crypto_secretstream_*
	CryptoMethodSSL       CryptoMethod = 1 // OpenSSL(possibly with FIPS): ECDH, AES256-GCM

	// Edge Payload flags
	FIN = 0x1
)
View Source
const (
	ClientConfigV1 = "ziti-tunneler-client.v1"
	InterceptV1    = "intercept.v1"
)

Variables

View Source
var ContentTypeNames = map[int32]string{
	ContentTypeConnect:        "EdgeConnectType",
	ContentTypeStateConnected: "EdgeStateConnectedType",
	ContentTypeStateClosed:    "EdgeStateClosedType",
	ContentTypeData:           "EdgeDataType",
	ContentTypeDial:           "EdgeDialType",
	ContentTypeDialSuccess:    "EdgeDialSuccessType",
	ContentTypeDialFailed:     "EdgeDialFailedType",
	ContentTypeBind:           "EdgeBindType",
	ContentTypeUnbind:         "EdgeUnbindType",
	ContentTypeProbe:          "EdgeProbeType",
}
View Source
var ContentTypeValue = map[string]int32{
	"EdgeConnectType":        ContentTypeConnect,
	"EdgeStateConnectedType": ContentTypeStateConnected,
	"EdgeStateClosedType":    ContentTypeStateClosed,
	"EdgeDataType":           ContentTypeData,
	"EdgeDialType":           ContentTypeDial,
	"EdgeDialSuccessType":    ContentTypeDialSuccess,
	"EdgeDialFailedType":     ContentTypeDialFailed,
	"EdgeBindType":           ContentTypeBind,
	"EdgeUnbindType":         ContentTypeUnbind,
}

Functions

func GetLoggerFields

func GetLoggerFields(msg *channel.Message) logrus.Fields

func NewBindMsg

func NewBindMsg(connId uint32, token string, pubKey []byte, options *ListenOptions) *channel.Message

func NewConnectMsg

func NewConnectMsg(connId uint32, token string, pubKey []byte, options *DialOptions) *channel.Message

func NewDataMsg

func NewDataMsg(connId uint32, seq uint32, data []byte) *channel.Message

func NewDialFailedMsg

func NewDialFailedMsg(connId uint32, message string) *channel.Message

func NewDialMsg

func NewDialMsg(connId uint32, token string, callerId string) *channel.Message

func NewDialSuccessMsg

func NewDialSuccessMsg(connId uint32, newConnId uint32) *channel.Message

func NewHealthEventMsg added in v0.15.30

func NewHealthEventMsg(connId uint32, token string, pass bool) *channel.Message

func NewProbeMsg

func NewProbeMsg() *channel.Message

func NewStateClosedMsg

func NewStateClosedMsg(connId uint32, message string) *channel.Message

func NewStateConnectedMsg

func NewStateConnectedMsg(connId uint32) *channel.Message

func NewStateSessionEndedMsg

func NewStateSessionEndedMsg(reason string) *channel.Message

func NewTraceRouteMsg added in v0.15.105

func NewTraceRouteMsg(connId uint32, hops uint32, timestamp uint64) *channel.Message

func NewTraceRouteResponseMsg added in v0.15.105

func NewTraceRouteResponseMsg(connId uint32, hops uint32, timestamp uint64, hopType, hopId string) *channel.Message

func NewUnbindMsg

func NewUnbindMsg(connId uint32, token string) *channel.Message

func NewUpdateBindMsg

func NewUpdateBindMsg(connId uint32, token string, cost *uint16, precedence *Precedence) *channel.Message

Types

type Addr

type Addr struct {
	MsgCh MsgChannel
}

func (*Addr) Network

func (e *Addr) Network() string

func (*Addr) String

func (e *Addr) String() string

type ApiIdentity

type ApiIdentity struct {
	Id   string `json:"id"`
	Name string `json:"name"`
}

type ApiResponseMetadata

type ApiResponseMetadata struct {
	FilterableFields []string `json:"filterableFields"`
	Pagination       *struct {
		Offset     int `json:"offset"`
		Limit      int `json:"limit"`
		TotalCount int `json:"totalCount"`
	} `json:"pagination"`
}

func ApiResponseDecode

func ApiResponseDecode(data interface{}, resp io.Reader) (*ApiResponseMetadata, error)

type ApiSession

type ApiSession struct {
	Id          string       `json:"id"`
	Token       string       `json:"token"`
	Identity    *ApiIdentity `json:"identity"`
	Expires     time.Time    `json:"expiresAt"`
	AuthQueries []*AuthQuery `json:"authQueries"`
}

type AuthQuery added in v0.15.12

type AuthQuery struct {
	Format     string `json:"format,omitempty"`
	HTTPMethod string `json:"httpMethod,omitempty"`
	HTTPURL    string `json:"httpUrl,omitempty"`
	MaxLength  int64  `json:"maxLength,omitempty"`
	MinLength  int64  `json:"minLength,omitempty"`
	Provider   string `json:"provider"`
}

type ClientConfig added in v0.17.0

type ClientConfig struct {
	Protocol string
	Hostname ZitiAddress
	Port     int
}

func (*ClientConfig) String added in v0.17.0

func (s *ClientConfig) String() string

func (*ClientConfig) ToInterceptV1Config added in v0.17.0

func (self *ClientConfig) ToInterceptV1Config() *InterceptV1Config

type CloseWriter added in v0.14.0

type CloseWriter interface {
	CloseWrite() error
}

type Conn

type Conn interface {
	ServiceConn
	Identifiable
	CompleteAcceptSuccess() error
	CompleteAcceptFailed(err error)
}

type ConnOptions

type ConnOptions interface {
	GetConnectTimeout() time.Duration
}

type CowMapMsgMux added in v0.15.0

type CowMapMsgMux struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func (*CowMapMsgMux) AddMsgSink added in v0.15.0

func (mux *CowMapMsgMux) AddMsgSink(sink MsgSink) error

func (*CowMapMsgMux) Close added in v0.15.0

func (mux *CowMapMsgMux) Close()

func (*CowMapMsgMux) ContentType added in v0.15.0

func (mux *CowMapMsgMux) ContentType() int32

func (*CowMapMsgMux) GetNextId added in v0.15.2

func (mux *CowMapMsgMux) GetNextId() uint32

func (*CowMapMsgMux) HandleClose added in v0.15.0

func (mux *CowMapMsgMux) HandleClose(channel.Channel)

func (*CowMapMsgMux) HandleReceive added in v0.15.0

func (mux *CowMapMsgMux) HandleReceive(msg *channel.Message, _ channel.Channel)

func (*CowMapMsgMux) RemoveMsgSink added in v0.15.0

func (mux *CowMapMsgMux) RemoveMsgSink(sink MsgSink)

func (*CowMapMsgMux) RemoveMsgSinkById added in v0.15.0

func (mux *CowMapMsgMux) RemoveMsgSinkById(sinkId uint32)

type CryptoMethod added in v0.13.55

type CryptoMethod byte

type CurrentIdentity added in v0.15.3

type CurrentIdentity struct {
	Id                        string                 `json:"id"`
	Name                      string                 `json:"name"`
	AppData                   map[string]interface{} `json:"appData"`
	DefaultHostingPrecedence  string                 `json:"defaultHostingPrecedence"`
	DefaultHostingCost        uint16                 `json:"defaultHostingCost"`
	ServiceHostingPrecedences map[string]interface{} `json:"serviceHostingPrecedences"`
	ServiceHostingCosts       map[string]interface{} `json:"serviceHostingCosts"`
}

type DialOptions added in v0.13.47

type DialOptions struct {
	ConnectTimeout time.Duration
	Identity       string
	CallerId       string
	AppData        []byte
}

func (DialOptions) GetConnectTimeout added in v0.13.47

func (d DialOptions) GetConnectTimeout() time.Duration

type DialResult

type DialResult struct {
	ConnId    uint32
	NewConnId uint32
	Success   bool
	Message   string
}

func UnmarshalDialResult

func UnmarshalDialResult(msg *channel.Message) (*DialResult, error)

type DomainName added in v0.17.0

type DomainName string

func (DomainName) Match added in v0.17.0

func (dn DomainName) Match(hostname string) int

type EdgeRouter

type EdgeRouter struct {
	Name     string `json:"name"`
	Hostname string `json:"hostname"`
	Urls     map[string]string
}

type Identifiable

type Identifiable interface {
	Id() uint32
}

type InteceptDialOptions added in v0.17.0

type InteceptDialOptions struct {
	ConnectTimeoutSeconds *int
	Identity              *string
}

type InterceptV1Config added in v0.17.0

type InterceptV1Config struct {
	Addresses   []ZitiAddress
	PortRanges  []*PortRange
	Protocols   []string
	SourceIp    *string
	DialOptions *InteceptDialOptions `json:"dialOptions"`
	Service     *Service
}

func (*InterceptV1Config) Match added in v0.17.0

func (intercept *InterceptV1Config) Match(network, hostname string, port uint16) int

Match returns the matching score of the given target address against this intercept returns -1 in case address is not matched if the address is matched returns a 32bit integer with upper bits set to hostname match and lower bits to port match

type ListenOptions

type ListenOptions struct {
	Cost                  uint16
	Precedence            Precedence
	ConnectTimeout        time.Duration
	MaxConnections        int
	Identity              string
	IdentitySecret        string
	BindUsingEdgeIdentity bool
	ManualStart           bool
}

func (*ListenOptions) GetConnectTimeout

func (options *ListenOptions) GetConnectTimeout() time.Duration

func (*ListenOptions) String

func (options *ListenOptions) String() string

type Listener

type Listener interface {
	net.Listener
	AcceptEdge() (Conn, error)
	IsClosed() bool
	UpdateCost(cost uint16) error
	UpdatePrecedence(precedence Precedence) error
	UpdateCostAndPrecedence(cost uint16, precedence Precedence) error
	SendHealthEvent(pass bool) error
}

type MsgChannel

type MsgChannel struct {
	channel.Channel
	// contains filtered or unexported fields
}

func NewEdgeMsgChannel

func NewEdgeMsgChannel(ch channel.Channel, connId uint32) *MsgChannel

func (*MsgChannel) Id

func (ec *MsgChannel) Id() uint32

func (*MsgChannel) NextMsgId added in v0.15.0

func (ec *MsgChannel) NextMsgId() uint32

func (*MsgChannel) SendState

func (ec *MsgChannel) SendState(msg *channel.Message) error

func (*MsgChannel) SetWriteDeadline

func (ec *MsgChannel) SetWriteDeadline(t time.Time) error

func (*MsgChannel) TraceMsg

func (ec *MsgChannel) TraceMsg(source string, msg *channel.Message)

func (*MsgChannel) Write

func (ec *MsgChannel) Write(data []byte) (n int, err error)

func (*MsgChannel) WriteTraced

func (ec *MsgChannel) WriteTraced(data []byte, msgUUID []byte, hdrs map[int32][]byte) (int, error)

type MsgEvent

type MsgEvent struct {
	ConnId  uint32
	Seq     uint32
	MsgUUID []byte
	Msg     *channel.Message
}

func UnmarshalMsgEvent

func UnmarshalMsgEvent(msg *channel.Message) (*MsgEvent, error)

func (*MsgEvent) GetLoggerFields

func (event *MsgEvent) GetLoggerFields() logrus.Fields

func (*MsgEvent) GetSequence

func (event *MsgEvent) GetSequence() uint32

type MsgMux

type MsgMux interface {
	channel.TypedReceiveHandler
	channel.CloseHandler
	AddMsgSink(sink MsgSink) error
	RemoveMsgSink(sink MsgSink)
	RemoveMsgSinkById(sinkId uint32)
	Close()
	GetNextId() uint32
}

func NewCowMapMsgMux added in v0.15.0

func NewCowMapMsgMux() MsgMux

type MsgSink

type MsgSink interface {
	HandleMuxClose() error
	Id() uint32
	Accept(msg *channel.Message)
}

type PortRange added in v0.17.0

type PortRange struct {
	Low  uint16
	High uint16
}

func (*PortRange) Match added in v0.17.0

func (pr *PortRange) Match(port uint16) int

type PostureQueries added in v0.14.5

type PostureQueries struct {
	IsPassing      bool `json:"isPassing"`
	PostureQueries []PostureQuery
}

type PostureQuery added in v0.14.5

type PostureQuery struct {
	Id        string               `json:"id"`
	IsPassing bool                 `json:"isPassing"`
	QueryType string               `json:"queryType"`
	Process   *PostureQueryProcess `json:"process"`
}

type PostureQueryProcess added in v0.14.5

type PostureQueryProcess struct {
	OsType string `json:"osType"`
	Path   string `json:"path"`
}

type Precedence

type Precedence byte

type RouterClient added in v0.15.5

type RouterClient interface {
	Connect(service *Service, session *Session, options *DialOptions) (Conn, error)
	Listen(service *Service, session *Session, options *ListenOptions) (Listener, error)
}

type RouterConn

type RouterConn interface {
	channel.BindHandler
	io.Closer
	RouterClient
	IsClosed() bool
	Key() string
	GetRouterName() string
}

type Sequenced

type Sequenced interface {
	GetSequence() uint32
}

type Service

type Service struct {
	Id             string                            `json:"id"`
	Name           string                            `json:"name"`
	Permissions    []string                          `json:"permissions"`
	Encryption     bool                              `json:"encryptionRequired"`
	PostureQueries []PostureQueries                  `json:"postureQueries"`
	Configs        map[string]map[string]interface{} `json:"config"`
	Tags           map[string]string                 `json:"tags"`
}

func (*Service) GetConfigOfType

func (service *Service) GetConfigOfType(configType string, target interface{}) (bool, error)

type ServiceConn added in v0.12.0

type ServiceConn interface {
	net.Conn
	CloseWriter
	IsClosed() bool
	GetAppData() []byte
	SourceIdentifier() string
	TraceRoute(hops uint32, timeout time.Duration) (*TraceRouteResult, error)
}

type ServiceUpdates added in v0.15.13

type ServiceUpdates struct {
	LastChangeAt time.Time `json:"lastChangeAt"`
}

type Session

type Session struct {
	Id          string       `json:"id"`
	Service     ApiIdentity  `json:"service"`
	Token       string       `json:"token"`
	Type        SessionType  `json:"type"`
	EdgeRouters []EdgeRouter `json:"edgeRouters"`
}

type SessionListener added in v0.13.2

type SessionListener interface {
	Listener
	GetCurrentSession() *Session
	SetConnectionChangeHandler(func(conn []Listener))
	SetErrorEventHandler(func(error))
	GetErrorEventHandler() func(error)
}

type SessionType added in v0.13.0

type SessionType string
const (
	SessionDial SessionType = "Dial"
	SessionBind SessionType = "Bind"
)

type Terminator added in v0.15.90

type Terminator struct {
	Id        string `json:"id"`
	ServiceId string `json:"serviceId"`
	RouterId  string `json:"routerId"`
	Identity  string `json:"Identity"`
}

type TraceRouteResult added in v0.15.105

type TraceRouteResult struct {
	Hops    uint32
	Time    time.Duration
	HopType string
	HopId   string
	Error   string
}

type ZitiAddress added in v0.17.0

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

func NewZitiAddress added in v0.17.0

func NewZitiAddress(str string) (*ZitiAddress, error)

func (*ZitiAddress) Matches added in v0.17.0

func (self *ZitiAddress) Matches(v any) int

func (*ZitiAddress) UnmarshalJSON added in v0.17.0

func (self *ZitiAddress) UnmarshalJSON(data []byte) error

func (*ZitiAddress) UnmarshalText added in v0.17.0

func (self *ZitiAddress) UnmarshalText(data []byte) error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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