c2s

package
v0.55.0 Latest Latest
Warning

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

Go to latest
Published: Dec 24, 2021 License: Apache-2.0 Imports: 41 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewRouter

func NewRouter(
	localRouter *LocalRouter,
	clusterRouter *clusterrouter.Router,
	resMng *ResourceManager,
	rep repository.Repository,
	hk *hook.Hooks,
) router.C2SRouter

NewRouter creates and returns an initialized C2S router.

Types

type ListenerConfig added in v0.55.0

type ListenerConfig struct {
	// BindAddr defines listener incoming connections address.
	BindAddr string `fig:"bind_addr"`

	// Port defines listener incoming connections port.
	Port int `fig:"port" default:"5222"`

	// Transport specifies the type of transport used for incoming connections.
	Transport string `fig:"transport" default:"socket"`

	// DirectTLS, if true, tls.Listen will be used as network listener.
	DirectTLS bool `fig:"direct_tls"`

	// SASL contains authentication related configuration.
	SASL struct {
		// Mechanisms contains enabled SASL mechanisms.
		Mechanisms []string `fig:"mechanisms" default:"[scram_sha_1, scram_sha_256, scram_sha_512, scram_sha3_512]"`

		// External contains external authenticator configuration.
		External struct {
			Address  string `fig:"address"`
			IsSecure bool   `fig:"is_secure"`
		} `fig:"external"`
	} `fig:"sasl"`

	// CompressionLevel is the compression level that may be applied to the stream.
	// Valid values are 'default', 'best', 'speed' and 'no_compression'.
	CompressionLevel string `fig:"compression_level" default:"default"`

	// ResourceConflict defines the which rule should be applied in a resource conflict is detected.
	// Valid values are `override`, `disallow` and `terminate_old`.
	ResourceConflict string `fig:"resource_conflict" default:"terminate_old"`

	// MaxStanzaSize is the maximum size a listener incoming stanza may have.
	MaxStanzaSize int `fig:"max_stanza_size" default:"32768"`

	// ConnectTimeout defines connection timeout.
	ConnectTimeout time.Duration `fig:"conn_timeout" default:"3s"`

	// AuthenticateTimeout defines authentication timeout.
	AuthenticateTimeout time.Duration `fig:"auth_timeout" default:"10s"`

	// KeepAliveTimeout defines the maximum amount of time that an inactive connection
	// would be considered alive.
	KeepAliveTimeout time.Duration `fig:"keep_alive_timeout" default:"2m"`

	// RequestTimeout defines C2S stream request timeout.
	RequestTimeout time.Duration `fig:"req_timeout" default:"15s"`
}

ListenerConfig contains a C2S listener configuration.

type ListenersConfig added in v0.55.0

type ListenersConfig []ListenerConfig

ListenersConfig defines a set of C2S listener configurations.

type LocalRouter

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

LocalRouter represents a cluster local router.

func NewLocalRouter

func NewLocalRouter(hosts *host.Hosts) *LocalRouter

NewLocalRouter returns a new initialized local router.

func (*LocalRouter) Bind

func (r *LocalRouter) Bind(id stream.C2SID) (stream.C2S, error)

Bind binds a registered local router resource.

func (*LocalRouter) Disconnect

func (r *LocalRouter) Disconnect(username, resource string, streamErr *streamerror.Error) error

Disconnect performs disconnection over a local router resource.

func (*LocalRouter) Register

func (r *LocalRouter) Register(stm stream.C2S) error

Register registers a local router stream.

func (*LocalRouter) Route

func (r *LocalRouter) Route(stanza stravaganza.Stanza, username, resource string) error

Route routes a stanza to a local router resource.

func (*LocalRouter) Start

func (r *LocalRouter) Start(_ context.Context) error

Start starts local router.

func (*LocalRouter) Stop

func (r *LocalRouter) Stop(ctx context.Context) error

Stop stops local router.

func (*LocalRouter) Stream

func (r *LocalRouter) Stream(username, resource string) stream.C2S

Stream returns stream identified by username and resource.

func (*LocalRouter) Unregister

func (r *LocalRouter) Unregister(stm stream.C2S) error

Unregister unregisters a local router resource.

type ResourceManager

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

ResourceManager type is in charge of keeping track of all cluster resources.

func NewResourceManager

func NewResourceManager(kv kv.KV) *ResourceManager

NewResourceManager creates a new resource manager given a KV storage instance.

func (*ResourceManager) DelResource

func (m *ResourceManager) DelResource(ctx context.Context, username, resource string) error

DelResource removes a registered resource from the manager.

func (*ResourceManager) GetResource

func (m *ResourceManager) GetResource(ctx context.Context, username, resource string) (*c2smodel.Resource, error)

GetResource returns a previously registered resource.

func (*ResourceManager) GetResources

func (m *ResourceManager) GetResources(ctx context.Context, username string) ([]c2smodel.Resource, error)

GetResources returns all user registered resources.

func (*ResourceManager) PutResource

func (m *ResourceManager) PutResource(ctx context.Context, res *c2smodel.Resource) error

PutResource registers or updates a resource into the manager.

type SocketListener

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

SocketListener represents a C2S socket listener type.

func NewListeners added in v0.55.0

func NewListeners(
	cfg ListenersConfig,
	hosts *host.Hosts,
	router router.Router,
	comps *component.Components,
	mods *module.Modules,
	resMng *ResourceManager,
	rep repository.Repository,
	peppers *pepper.Keys,
	shapers shaper.Shapers,
	hk *hook.Hooks,
) []*SocketListener

NewListeners creates and initializes a set of C2S listeners based of cfg configuration.

func (*SocketListener) Start

func (l *SocketListener) Start(ctx context.Context) error

Start starts listening on a TCP network address to handle incoming C2S connections.

func (*SocketListener) Stop

func (l *SocketListener) Stop(ctx context.Context) error

Stop stops handling incoming C2S connections and closes underlying TCP listener.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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