nodedaemon

package
v0.15.0 Latest Latest
Warning

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

Go to latest
Published: Oct 29, 2023 License: Apache-2.0 Imports: 35 Imported by: 0

Documentation

Overview

Package nodedaemon contains the entrypoint for webmesh nodes running as an application daemon.

Package nodecmd contains the entrypoint for webmesh nodes.

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrNotConnected is returned when the node is not connected to the mesh.
	ErrNotConnected = status.Errorf(codes.FailedPrecondition, "not connected to the specified network")
	// ErrAlreadyConnected is returned when the node is already connected to the mesh.
	ErrAlreadyConnected = status.Errorf(codes.FailedPrecondition, "already connected to the specified network")
)

Functions

func DefaultDaemonSocket

func DefaultDaemonSocket() string

DefaultDaemonSocket returns the default daemon socket path.

func Run

func Run(ctx context.Context, conf Config) error

Run runs the app daemon with the given configuration. The context can be used to shutdown the server, otherwise it will wait for a SIGINT or SIGTERM.

Types

type AppDaemon

type AppDaemon struct {
	v1.UnimplementedAppDaemonServer
	// contains filtered or unexported fields
}

AppDaemon is the app daemon RPC server.

func NewServer added in v0.15.0

func NewServer(conf Config) (*AppDaemon, error)

NewServer returns a new AppDaemon server.

func (*AppDaemon) Close added in v0.15.0

func (app *AppDaemon) Close() error

func (*AppDaemon) Connect

func (app *AppDaemon) Connect(ctx context.Context, req *v1.ConnectRequest) (*v1.ConnectResponse, error)

func (*AppDaemon) Disconnect

func (app *AppDaemon) Disconnect(ctx context.Context, req *v1.DisconnectRequest) (*v1.DisconnectResponse, error)

func (*AppDaemon) Metrics

func (app *AppDaemon) Metrics(ctx context.Context, req *v1.MetricsRequest) (*v1.MetricsResponse, error)

func (*AppDaemon) Query

func (app *AppDaemon) Query(ctx context.Context, req *v1.AppQueryRequest) (*v1.QueryResponse, error)

func (*AppDaemon) Status

func (app *AppDaemon) Status(ctx context.Context, req *v1.StatusRequest) (*v1.StatusResponse, error)

type Config

type Config struct {
	// Enabled is true if the daemon is enabled.
	Enabled bool `koanf:"enabled"`
	// NodeID is the ID to use for mesh connections from this server.
	// If not provided, one will be generated from the key.
	NodeID string `koanf:"node-id"`
	// KeyFile is the path to the WireGuard private key for the node.
	// If set and it does not exist it will be created, otherwise one
	// will be generated.
	KeyFile string `koanf:"key-file,omitempty"`
	// Bind is the bind address for the daemon.
	Bind string `koanf:"bind"`
	// InsecureSocket uses an insecure socket when binding to a unix socket.
	InsecureSocket bool `koanf:"insecure-socket"`
	// GRPCWeb enables gRPC-Web support.
	GRPCWeb bool `koanf:"grpc-web"`
	// UI are options for exposing a gRPC UI.
	UI WebUI `koanf:"ui"`
	// LogLevel is the log level for the daemon.
	LogLevel string `koanf:"log-level"`
	// LogFormat is the log format for the daemon.
	LogFormat string `koanf:"log-format"`
}

Config is the configuration for the applicaton daeemon.

func NewDefaultConfig added in v0.15.0

func NewDefaultConfig() *Config

NewDefaultConfig returns the default configuration.

func (*Config) BindFlags added in v0.15.0

func (conf *Config) BindFlags(prefix string, flagset *pflag.FlagSet) *Config

BindFlags binds the flags to the given flagset.

func (*Config) LoadKey added in v0.15.0

func (conf *Config) LoadKey() (crypto.PrivateKey, error)

LoadKey loads the wireguard key from the configuration.

func (*Config) NewLogger added in v0.15.0

func (conf *Config) NewLogger() *slog.Logger

NewLogger returns a logger with the given configuration.

func (*Config) Validate added in v0.15.0

func (conf *Config) Validate() error

Validate validates the configuration.

type WebUI added in v0.15.0

type WebUI struct {
	// Enabled is true if the gRPC UI is enabled.
	Enabled bool `koanf:"enabled"`
	// ListenAddress is the address to listen on.
	ListenAddress string `koanf:"listen-address"`
}

WebUI are options for exposing a gRPC UI.

func (*WebUI) BindFlags added in v0.15.0

func (conf *WebUI) BindFlags(prefix string, flagset *pflag.FlagSet)

BindFlags binds the UI flags to the given flagset.

Jump to

Keyboard shortcuts

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