sfx

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Apr 17, 2024 License: MIT Imports: 18 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ConnectionMuxModule = fx.Provide(
	func(l *zap.Logger, g SettingsParams, s SecuritySettingsParams) (out ConnectionMuxResult, err error) {
		err = out.Execute(l, g, s)
		return
	},
)
View Source
var OTelModule = fx.Provide(
	func(
		appSetting mfx.AppParams,
		sSetting SettingsParams,
	) (out OTelProviderResult, err error) {
		err = out.Execute(appSetting, sSetting.OtelEnable)
		return
	},
)
View Source
var SecuritySettingsModule = fx.Provide(
	func() (out SecuritySettingsResult, err error) {
		err = out.LoadFromEnv()
		return
	},
)
View Source
var SettingsModule = fx.Provide(
	func() (out SettingsResult, err error) {
		err = out.LoadFromEnv()
		return
	},
)

Functions

This section is empty.

Types

type AuthServiceParams

type AuthServiceParams struct {
	fx.In

	AuthService siface.IAuth `name:"AuthService" optional:"true"`
}

type AuthServiceResult

type AuthServiceResult struct {
	fx.Out

	AuthService siface.IAuth `name:"AuthService"`
}

type BinderFunc

type BinderFunc func(*zap.Logger) ([]LifecycleHook, error)

type ConnectionMuxParams

type ConnectionMuxParams struct {
	fx.In
	ConnectionMux siface.IConnectionMux `name:"ConnectionMux"`
}

type ConnectionMuxResult

type ConnectionMuxResult struct {
	fx.Out
	ConnectionMux siface.IConnectionMux `name:"ConnectionMux"`
}

func (*ConnectionMuxResult) Execute

func (cmr *ConnectionMuxResult) Execute(
	l *zap.Logger,
	g SettingsParams,
	s SecuritySettingsParams,
) (err error)

type GatewayServiceParams

type GatewayServiceParams struct {
	fx.In

	GatewayServices []siface.IGatewayService `group:"GatewayService"`
}

type GatewayServiceResult

type GatewayServiceResult struct {
	fx.Out

	GatewayService siface.IGatewayService `group:"GatewayService"`
}

type GrpcServiceParams

type GrpcServiceParams struct {
	fx.In

	GrpcServices []siface.IGrpcService `group:"GrpcService"`
}

type GrpcServiceResult

type GrpcServiceResult struct {
	fx.Out

	GrpcService siface.IGrpcService `group:"GrpcService"`
}

type LifecycleHook

type LifecycleHook = func(lc fx.Lifecycle)

type OTelProviderParams added in v0.0.32

type OTelProviderParams struct {
	fx.In

	TracerProvider *sdktrace.TracerProvider `name:"TracerProvider" optional:"true"`
	MetricProvider *sdkmetric.MeterProvider `name:"MetricProvider" optional:"true"`
}

OTelProviderParams OTelProviderModule provides OTel Tracer and Meter

type OTelProviderResult added in v0.0.32

type OTelProviderResult struct {
	fx.Out

	TracerProvider *sdktrace.TracerProvider `name:"TracerProvider" `
	MetricProvider *sdkmetric.MeterProvider `name:"MetricProvider"`
}

OTelProviderResult OTelProviderModule provides OTel Tracer and Meter

func (*OTelProviderResult) Execute added in v0.0.32

func (otel *OTelProviderResult) Execute(appSetting mfx.AppParams, enable bool) (err error)

type SecuritySettingsParams

type SecuritySettingsParams struct {
	fx.In

	// client mTLS settings
	ClientCaCert string `name:"ClientCaCert"`
	ClientCert   string `name:"ClientCert"`
	ClientKey    string `name:"ClientKey"`

	// server mTLS settings
	ServerCaCert string `name:"ServerCaCert"`
	ServerCert   string `name:"ServerCert"`
	ServerKey    string `name:"ServerKey"`
	ServerName   string `name:"ServerName"`

	// Zero trust security model: all services must be mTLS enabled
	// if true, enable imports client for grpc/http(cmux service) clients
	TLSClientEnable bool `name:"TLSClientEnable"`

	// if true, enable service tls for grpc/http(cmux service) services
	TLSServerEnable bool `name:"TLSServerEnable"`
	// if true, enable Tls for tcp services(zinx service)
	TCPTlsEnable bool `name:"TCPTlsEnable"`
}

type SecuritySettingsResult

type SecuritySettingsResult struct {
	fx.Out

	//client mTLS settings
	ClientCaCert string `name:"ClientCaCert" envconfig:"CLIENT_CA_CERT" default:"./configs/tls-client/ca.crt"`
	ClientCert   string `name:"ClientCert" envconfig:"CLIENT_CERT" default:"./configs/tls-client/tls.crt"`
	ClientKey    string `name:"ClientKey" envconfig:"CLIENT_KEY" default:"./configs/tls-client/tls.key"`

	//server mTLS settings
	ServerCACert string `name:"ServerCaCert" envconfig:"SERVER_CA_CERT" default:"./configs/tls-server/ca.crt"`
	ServerCert   string `name:"ServerCert" envconfig:"SERVER_CERT" default:"./configs/tls-server/tls.crt"`
	ServerKey    string `name:"ServerKey" envconfig:"SERVER_KEY" default:"./configs/tls-server/tls.key"`
	ServerName   string `name:"ServerName" envconfig:"SERVER_NAME" default:""`

	// if true, enable mTLS for grpc/http(cmux service) services
	// Zero trust security model: all services must be mTLS enabled
	TLSClientEnable bool `name:"TLSClientEnable" envconfig:"TLS_CLIENT_ENABLE" default:"false"`
	TLSServerEnable bool `name:"TLSServerEnable" envconfig:"TLS_SERVER_ENABLE" default:"false"`
	// if true, enable Tls for tcp services(zinx service)
	TcpTlsEnable bool `name:"TCPTlsEnable" envconfig:"TCP_TLS_ENABLE" default:"false"`
}

func (*SecuritySettingsResult) LoadFromEnv

func (g *SecuritySettingsResult) LoadFromEnv() (err error)

type ServiceBinder

type ServiceBinder struct {
	fx.In
	mfx.AppParams // app settings params

	SettingsParams         // server settings
	SecuritySettingsParams // server security settings

	ConnectionMuxParams  // connection mux params
	GrpcServiceParams    //all grpc service injected (grpc)
	ZinxServiceParams    // all zinx service injected (tcp/udp/websocket)
	GatewayServiceParams // all gateway service injected (http)
	AuthServiceParams    // grpc rpc auth middleware injected
	OTelProviderParams   // opentelemetry provider injected
}

func (*ServiceBinder) Execute

func (sb *ServiceBinder) Execute(l *zap.Logger, lc fx.Lifecycle) error

type SettingsParams

type SettingsParams struct {
	fx.In

	Port        int32 `name:"Port"`        // grpc/http port
	ZinxTcpPort int32 `name:"ZinxTcpPort"` // tcp port
	ZinxWSPort  int32 `name:"ZinxWSPort"`  // websocket port
	Timeout     int32 `name:"Timeout"`     // tcp service heartbeat timeout
	RateLimit   int32 `name:"RateLimit"`   // all server type rate limit per second
	OtelEnable  bool  `name:"OtelEnable"`  // open telemetry enable
}

type SettingsResult

type SettingsResult struct {
	fx.Out

	Port        int32 `name:"Port"  envconfig:"PORT" default:"8081"`
	ZinxTcpPort int32 `name:"ZinxTcpPort" envconfig:"ZINX_TCP_PORT" default:"8888"`
	ZinxWSPort  int32 `name:"ZinxWSPort" envconfig:"ZINX_WS_PORT" default:""`
	Timeout     int32 `name:"Timeout" envconfig:"TIMEOUT" default:"10"`
	RateLimit   int32 `name:"RateLimit" envconfig:"RATE_LIMIT" default:"1000"`
	OtelEnable  bool  `name:"OtelEnable" envconfig:"OTEL_ENABLE" default:"false"`
}

SettingsResult loads from the environment and its members are injected into the tfx dependency graph.

func (*SettingsResult) LoadFromEnv

func (g *SettingsResult) LoadFromEnv() (err error)

type ZinxServiceParams

type ZinxServiceParams struct {
	fx.In

	ZinxServices []siface.IZinxService `group:"ZinxService"`
}

type ZinxServiceResult

type ZinxServiceResult struct {
	fx.Out

	ZinxService siface.IZinxService `group:"ZinxService"`
}

Jump to

Keyboard shortcuts

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