env

package
v0.19.87 Latest Latest
Warning

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

Go to latest
Published: Apr 22, 2021 License: Apache-2.0 Imports: 54 Imported by: 1

Documentation

Index

Constants

View Source
const EdgeContextKey = ContextKey("edgeContext")

Variables

This section is empty.

Functions

func AddRequestContextToHttpContext added in v0.14.35

func AddRequestContextToHttpContext(r *http.Request, rc *response.RequestContext)

func AddRouter

func AddRouter(rf ApiRouter)

func GetRequestContextFromHttpContext added in v0.14.35

func GetRequestContextFromHttpContext(r *http.Request) (*response.RequestContext, error)

func NewEdgeTerminatorValidator added in v0.16.23

func NewEdgeTerminatorValidator(ae *AppEnv) xtv.Validator

func ServeError added in v0.14.35

func ServeError(rw http.ResponseWriter, r *http.Request, inErr error)

Wrapper for the OpenAPI REST server to allow the the Edge API Error message responses to be used

Types

type AddRouterFunc

type AddRouterFunc func(ae *AppEnv)

func GetRouters

func GetRouters() []AddRouterFunc

type ApiRouter

type ApiRouter interface {
	Register(ae *AppEnv)
}

type AppEnv

type AppEnv struct {
	BoltStores             *persistence.Stores
	Handlers               *model.Handlers
	Config                 *edgeConfig.Config
	EnrollmentJwtGenerator jwt.EnrollmentGenerator
	Versions               *config.Versions
	ApiServerCsrSigner     cert.Signer
	ApiClientCsrSigner     cert.Signer
	ControlClientCsrSigner cert.Signer
	FingerprintGenerator   cert.FingerprintGenerator
	AuthRegistry           model.AuthRegistry
	EnrollRegistry         model.EnrollmentRegistry
	Broker                 *Broker
	HostController         HostController
	Api                    *operations.ZitiEdgeAPI
	IdentityRefreshMap     cmap.ConcurrentMap
	StartupTime            time.Time
	InstanceId             string
}

func NewAppEnv

func NewAppEnv(c *edgeConfig.Config) *AppEnv

func (*AppEnv) CreateRequestContext added in v0.14.35

func (ae *AppEnv) CreateRequestContext(rw http.ResponseWriter, r *http.Request) *response.RequestContext

func (*AppEnv) FillRequestContext added in v0.14.35

func (ae *AppEnv) FillRequestContext(rc *response.RequestContext) error

func (*AppEnv) GetApiClientCsrSigner

func (ae *AppEnv) GetApiClientCsrSigner() cert.Signer

func (*AppEnv) GetApiServerCsrSigner

func (ae *AppEnv) GetApiServerCsrSigner() cert.Signer

func (*AppEnv) GetAuthRegistry

func (ae *AppEnv) GetAuthRegistry() model.AuthRegistry

func (*AppEnv) GetConfig

func (ae *AppEnv) GetConfig() *edgeConfig.Config

func (*AppEnv) GetControlClientCsrSigner

func (ae *AppEnv) GetControlClientCsrSigner() cert.Signer

func (*AppEnv) GetDbProvider

func (ae *AppEnv) GetDbProvider() persistence.DbProvider

func (*AppEnv) GetEnrollRegistry

func (ae *AppEnv) GetEnrollRegistry() model.EnrollmentRegistry

func (*AppEnv) GetEnrollmentJwtGenerator

func (ae *AppEnv) GetEnrollmentJwtGenerator() jwt.EnrollmentGenerator

func (*AppEnv) GetFingerprintGenerator added in v0.17.30

func (ae *AppEnv) GetFingerprintGenerator() cert.FingerprintGenerator

func (*AppEnv) GetHandlers

func (ae *AppEnv) GetHandlers() *model.Handlers

func (*AppEnv) GetHostController

func (ae *AppEnv) GetHostController() model.HostController

func (*AppEnv) GetMetricsRegistry added in v0.16.0

func (ae *AppEnv) GetMetricsRegistry() metrics.Registry

func (*AppEnv) GetSessionTokenFromRequest added in v0.14.35

func (ae *AppEnv) GetSessionTokenFromRequest(r *http.Request) string

func (*AppEnv) GetStores

func (ae *AppEnv) GetStores() *persistence.Stores

func (*AppEnv) HandleServiceEvent added in v0.17.36

func (ae *AppEnv) HandleServiceEvent(event *persistence.ServiceEvent)

func (*AppEnv) HandleServiceUpdatedEventForIdentityId added in v0.19.46

func (ae *AppEnv) HandleServiceUpdatedEventForIdentityId(identityId string)

func (*AppEnv) InitPersistence

func (ae *AppEnv) InitPersistence() error

func (*AppEnv) IsAllowed added in v0.14.35

func (ae *AppEnv) IsAllowed(responderFunc func(ae *AppEnv, rc *response.RequestContext), request *http.Request, entityId string, entitySubId string, permissions ...permissions.Resolver) openApiMiddleware.Responder

func (*AppEnv) IsEdgeRouterOnline

func (ae *AppEnv) IsEdgeRouterOnline(id string) bool

type AppHandler

type AppHandler func(ae *AppEnv, rc *response.RequestContext)

type AppMiddleware

type AppMiddleware func(*AppEnv, http.Handler) http.Handler

type BasicEntitySchema

type BasicEntitySchema struct {
	Post  *gojsonschema.Schema
	Patch *gojsonschema.Schema
	Put   *gojsonschema.Schema
}

type Broker

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

The Broker delegates Ziti Edge events to a RouterSyncStrategy. Handling the details of which events to watch and dealing with casting arguments to their proper concrete types.

func NewBroker

func NewBroker(ae *AppEnv, synchronizer RouterSyncStrategy) *Broker

func (*Broker) GetEdgeRouterState added in v0.19.20

func (broker *Broker) GetEdgeRouterState(id string) RouterStateValues

func (*Broker) IsEdgeRouterOnline added in v0.17.72

func (broker *Broker) IsEdgeRouterOnline(id string) bool

func (*Broker) RouterConnected

func (broker *Broker) RouterConnected(router *network.Router)

func (*Broker) RouterDisconnected

func (broker *Broker) RouterDisconnected(r *network.Router)

func (*Broker) Stop added in v0.17.72

func (broker *Broker) Stop()

type ContextKey added in v0.14.35

type ContextKey string

use own type to avoid collisions

type DefaultEventLogger

type DefaultEventLogger struct {
	Ae *AppEnv
}

func (*DefaultEventLogger) Log

func (el *DefaultEventLogger) Log(actorType, actorId, eventType, entityType, entityId, formatString string, formatData []string, data map[interface{}]interface{})

type EdgeTerminatorValidator added in v0.16.23

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

func (*EdgeTerminatorValidator) Validate added in v0.16.23

func (v *EdgeTerminatorValidator) Validate(tx *bbolt.Tx, terminator xtv.Terminator, create bool) error

type HostController

type HostController interface {
	RegisterXctrl(x xctrl.Xctrl) error
	RegisterXmgmt(x xmgmt.Xmgmt) error
	GetNetwork() *network.Network
	GetCloseNotifyChannel() <-chan struct{}
	Shutdown()
}

type IdentityEntitySchema

type IdentityEntitySchema struct {
	Post           *gojsonschema.Schema
	Patch          *gojsonschema.Schema
	Put            *gojsonschema.Schema
	ServiceConfigs *gojsonschema.Schema
}

type LockingRouterState added in v0.19.20

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

func NewLockingRouterStatus added in v0.19.20

func NewLockingRouterStatus() *LockingRouterState

func (*LockingRouterState) GetVersionInfo added in v0.19.20

func (r *LockingRouterState) GetVersionInfo() common.VersionInfo

func (*LockingRouterState) Hostname added in v0.19.20

func (r *LockingRouterState) Hostname() string

func (*LockingRouterState) IsOnline added in v0.19.20

func (r *LockingRouterState) IsOnline() bool

func (*LockingRouterState) Protocols added in v0.19.20

func (r *LockingRouterState) Protocols() map[string]string

func (*LockingRouterState) SetHostname added in v0.19.20

func (r *LockingRouterState) SetHostname(hostname string)

func (*LockingRouterState) SetIsOnline added in v0.19.20

func (r *LockingRouterState) SetIsOnline(isOnline bool)

func (*LockingRouterState) SetProtocols added in v0.19.20

func (r *LockingRouterState) SetProtocols(protocols map[string]string)

func (*LockingRouterState) SetSyncStatus added in v0.19.20

func (r *LockingRouterState) SetSyncStatus(syncStatus RouterSyncStatus)

func (*LockingRouterState) SetVersionInfo added in v0.19.20

func (r *LockingRouterState) SetVersionInfo(versionInfo common.VersionInfo)

func (*LockingRouterState) SyncStatus added in v0.19.20

func (r *LockingRouterState) SyncStatus() RouterSyncStatus

func (*LockingRouterState) Values added in v0.19.20

type PemProducer added in v0.15.13

type PemProducer struct{}

func (PemProducer) Produce added in v0.15.13

func (p PemProducer) Produce(writer io.Writer, i interface{}) error

type RouterConnectionHandler added in v0.17.72

type RouterConnectionHandler interface {
	RouterConnected(edgeRouter *model.EdgeRouter, router *network.Router)
	RouterDisconnected(router *network.Router)
}

RouterConnectionHandler is responsible for handling router connect/disconnect for synchronizing state. This is intended for API Session but additional state is possible. Implementations may bind additional handlers to the channel.

type RouterState added in v0.19.20

type RouterState interface {
	SetIsOnline(isOnline bool)
	IsOnline() bool

	SetHostname(hostname string)
	Hostname() string

	SetProtocols(protocols map[string]string)
	Protocols() map[string]string

	SetSyncStatus(status RouterSyncStatus)
	SyncStatus() RouterSyncStatus

	SetVersionInfo(versionInfo common.VersionInfo)
	GetVersionInfo() common.VersionInfo

	Values() RouterStateValues
}

RouterState provides a thread save mechanism to access and set router status information that may be influx due to reouter connection/disconnection.

type RouterStateValues added in v0.19.20

type RouterStateValues struct {
	IsOnline    bool
	Hostname    string
	Protocols   map[string]string
	SyncStatus  RouterSyncStatus
	VersionInfo common.VersionInfo
}

func NewRouterStatusValues added in v0.19.20

func NewRouterStatusValues() RouterStateValues

type RouterSyncStatus added in v0.17.72

type RouterSyncStatus string

Aliased type for router sync status

const (
	RouterSyncNew        RouterSyncStatus = "SYNC_NEW"         //connection accepted but no strategy actions have been taken
	RouterSyncQueued     RouterSyncStatus = "SYNC_QUEUED"      //connection handed to strategy, but not processed
	RouterSyncHello      RouterSyncStatus = "SYNC_HELLO"       //connection is beginning hello cycle
	RouterSyncHelloWait  RouterSyncStatus = "SYNC_HELLO_WAIT"  //hello received from router, but there are too many synchronizing routers
	RouterSyncResyncWait RouterSyncStatus = "SYNC_RESYNC_WAIT" //router requested a resync, in queue
	RouterSynInProgress  RouterSyncStatus = "SYNC_IN_PROGRESS" //hello finished, starting to send state
	RouterSyncDone       RouterSyncStatus = "SYNC_DONE"        //initial state sent

	//Error states
	RouterSyncUnknown      RouterSyncStatus = "SYNC_UNKNOWN"       //the router is currently unknown
	RouterSyncDisconnected RouterSyncStatus = "SYNC_DISCONNECTED"  //strategy was disconnected before finishing
	RouterSyncHelloTimeout RouterSyncStatus = "SYNC_HELLO_TIMEOUT" //sync failed due to a hello timeout.
	RouterSyncError        RouterSyncStatus = "SYNC_ERROR"         //sync failed due to an unexpected error

	//msg headers
	SyncStrategyTypeHeader  = 1013
	SyncStrategyStateHeader = 1014
)

type RouterSyncStrategy added in v0.17.72

type RouterSyncStrategy interface {
	Type() RouterSyncStrategyType
	GetEdgeRouterState(id string) RouterStateValues
	Stop()
	RouterConnectionHandler
	RouterSynchronizerEventHandler
}

RouterSyncStrategy handles the life cycle of an Edge Router connecting to the controller, synchronizing any upfront state and then maintaining state after that.

type RouterSyncStrategyType added in v0.17.72

type RouterSyncStrategyType string

Aliased type for router strategies

type RouterSynchronizerEventHandler added in v0.17.72

type RouterSynchronizerEventHandler interface {
	ApiSessionAdded(apiSession *persistence.ApiSession)
	ApiSessionUpdated(apiSession *persistence.ApiSession, apiSessionCert *persistence.ApiSessionCertificate)
	ApiSessionDeleted(apiSession *persistence.ApiSession)

	SessionDeleted(session *persistence.Session)
}

RouterSynchronizerEventHandler is responsible for keeping Edge Routers up to date on API Sessions

type Schemes

type Schemes struct {
	Association             *BasicEntitySchema
	Authenticator           *BasicEntitySchema
	AuthenticatorSelf       *BasicEntitySchema
	Ca                      *BasicEntitySchema
	Config                  *BasicEntitySchema
	ConfigType              *BasicEntitySchema
	Enroller                *BasicEntitySchema
	EnrollEr                *BasicEntitySchema
	EnrollUpdb              *BasicEntitySchema
	EdgeRouter              *BasicEntitySchema
	EdgeRouterPolicy        *BasicEntitySchema
	TransitRouter           *BasicEntitySchema
	Identity                *IdentityEntitySchema
	Service                 *BasicEntitySchema
	ServiceEdgeRouterPolicy *BasicEntitySchema
	ServicePolicy           *BasicEntitySchema
	Session                 *BasicEntitySchema
	Terminator              *BasicEntitySchema
}

func (Schemes) GetEnrollErPost

func (s Schemes) GetEnrollErPost() *gojsonschema.Schema

func (Schemes) GetEnrollUpdbPost

func (s Schemes) GetEnrollUpdbPost() *gojsonschema.Schema

type YamlProducer added in v0.15.16

type YamlProducer struct{}

func (YamlProducer) Produce added in v0.15.16

func (p YamlProducer) Produce(writer io.Writer, i interface{}) error

Jump to

Keyboard shortcuts

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