daemoncmd

package
v0.15.2 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 daemoncmd contains the entrypoint for webmesh nodes running as an application daemon.

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

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

NewServer returns a new AppDaemon server.

func (*AppDaemon) Close

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

func NewDefaultConfig() *Config

NewDefaultConfig returns the default configuration.

func (*Config) BindFlags

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

BindFlags binds the flags to the given flagset.

func (*Config) LoadKey

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

LoadKey loads the wireguard key from the configuration.

func (*Config) NewLogger

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

NewLogger returns a logger with the given configuration.

func (*Config) Validate

func (conf *Config) Validate() error

Validate validates the configuration.

type WebUI

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

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