Documentation ¶
Overview ¶
Package daemoncmd contains the entrypoint for webmesh nodes running as an application daemon.
Index ¶
- Constants
- Variables
- func DefaultDaemonSocket() string
- func ParamsFile(connID string) string
- func Run(ctx context.Context, conf Config) error
- type AppDaemon
- func (app *AppDaemon) Close() error
- func (app *AppDaemon) Connect(ctx context.Context, req *v1.ConnectRequest) (*v1.ConnectResponse, error)
- func (app *AppDaemon) ConnectionStatus(ctx context.Context, req *v1.ConnectionStatusRequest) (*v1.ConnectionStatusResponse, error)
- func (app *AppDaemon) Disconnect(ctx context.Context, req *v1.DisconnectRequest) (*v1.DisconnectResponse, error)
- func (app *AppDaemon) Drop(ctx context.Context, req *v1.AppDropRequest) (*v1.AppDropResponse, error)
- func (app *AppDaemon) Metrics(ctx context.Context, req *v1.MetricsRequest) (*v1.MetricsResponse, error)
- func (app *AppDaemon) Query(ctx context.Context, req *v1.AppQueryRequest) (*v1.QueryResponse, error)
- func (app *AppDaemon) Status(ctx context.Context, _ *v1.StatusRequest) (*v1.DaemonStatus, error)
- type CORS
- type Config
- type ConnManager
- func (m *ConnManager) Close() error
- func (m *ConnManager) ConnIDs() []string
- func (m *ConnManager) DataDir(connID string) string
- func (m *ConnManager) Disconnect(ctx context.Context, connID string) error
- func (m *ConnManager) DropStorage(ctx context.Context, connID string) error
- func (m *ConnManager) Get(connID string) (embed.Node, bool)
- func (m *ConnManager) NewConn(ctx context.Context, req *v1.ConnectRequest) (id string, node embed.Node, err error)
- func (m *ConnManager) NodeID() string
- func (m *ConnManager) PublicKey() string
- func (m *ConnManager) RemoveConn(connID string)
- func (m *ConnManager) StoredConns() ([]string, error)
- type Persistence
- type WebUI
Constants ¶
const ParamsDir = "params"
ParamsDir is the relative path where connection request parameters are stored for each connection ID.
Variables ¶
var ( // ErrNoPortsAvailable is returned when no ports are available. ErrNoPortsAvailable = status.Errorf(codes.FailedPrecondition, "no ports available") // ErrNoIndexAvailable is returned when no utun index is available. ErrNoIndexAvailable = status.Errorf(codes.FailedPrecondition, "no utun index available") // 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") // ErrConnected is returned when the node is connected to the mesh. ErrConnected = status.Errorf(codes.FailedPrecondition, "connected to the specified network") )
Functions ¶
func DefaultDaemonSocket ¶
func DefaultDaemonSocket() string
DefaultDaemonSocket returns the default daemon socket path.
func ParamsFile ¶ added in v0.16.0
ParamsFile returns the relative path to the parameters file for the given connection ID.
Types ¶
type AppDaemon ¶
type AppDaemon struct { v1.UnimplementedAppDaemonServer // contains filtered or unexported fields }
AppDaemon is the app daemon RPC server.
func (*AppDaemon) Connect ¶
func (app *AppDaemon) Connect(ctx context.Context, req *v1.ConnectRequest) (*v1.ConnectResponse, error)
func (*AppDaemon) ConnectionStatus ¶ added in v0.16.0
func (app *AppDaemon) ConnectionStatus(ctx context.Context, req *v1.ConnectionStatusRequest) (*v1.ConnectionStatusResponse, error)
func (*AppDaemon) Disconnect ¶
func (app *AppDaemon) Disconnect(ctx context.Context, req *v1.DisconnectRequest) (*v1.DisconnectResponse, error)
func (*AppDaemon) Drop ¶ added in v0.15.13
func (app *AppDaemon) Drop(ctx context.Context, req *v1.AppDropRequest) (*v1.AppDropResponse, 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, _ *v1.StatusRequest) (*v1.DaemonStatus, error)
type CORS ¶ added in v0.15.11
type CORS struct { // Enabled is true if CORS is enabled. Enabled bool `koanf:"enabled"` // AllowedOrigins is a list of allowed origins. AllowedOrigins []string `koanf:"allowed-origins"` }
CORS are options for configuring CORS. These are only applicable when grpc-web is enabled.
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"` // KeyRotation is the duration between key rotations. KeyRotation time.Duration `koanf:"key-rotation"` // 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"` // CORS are options for configuring CORS. These are only applicable when // grpc-web is enabled. CORS CORS `koanf:"cors"` // UI are options for exposing a gRPC UI. UI WebUI `koanf:"ui"` // Persistence are options for persisting mesh data. Persistence Persistence `koanf:"persistence"` // WireGuardStartPort is the starting port for WireGuard connections. WireGuardStartPort uint16 `koanf:"wireguard-start-port"` // 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"` // Logger is a pre-configured logger. Logger *slog.Logger `koanf:"-"` }
Config is the configuration for the applicaton daeemon.
func NewDefaultConfig ¶
func NewDefaultConfig() *Config
NewDefaultConfig returns the default configuration.
type ConnManager ¶ added in v0.15.8
type ConnManager struct {
// contains filtered or unexported fields
}
ConnManager manages the connections for the daemon.
func NewConnManager ¶ added in v0.15.8
func NewConnManager(conf Config) (*ConnManager, error)
NewConnManager creates a new connection manager.
func (*ConnManager) Close ¶ added in v0.15.8
func (m *ConnManager) Close() error
Close closes the connection manager and all connections.
func (*ConnManager) ConnIDs ¶ added in v0.15.8
func (m *ConnManager) ConnIDs() []string
ConnIDs returns the IDs of the connections.
func (*ConnManager) DataDir ¶ added in v0.15.13
func (m *ConnManager) DataDir(connID string) string
DataDir returns the data directory for the given connection ID.
func (*ConnManager) Disconnect ¶ added in v0.15.8
func (m *ConnManager) Disconnect(ctx context.Context, connID string) error
Disconnect disconnects the connection for the given ID.
func (*ConnManager) DropStorage ¶ added in v0.16.0
func (m *ConnManager) DropStorage(ctx context.Context, connID string) error
DropStorage drops storage for the connection with the given ID.
func (*ConnManager) Get ¶ added in v0.15.8
func (m *ConnManager) Get(connID string) (embed.Node, bool)
Get gets the connection for the given ID.
func (*ConnManager) NewConn ¶ added in v0.15.8
func (m *ConnManager) NewConn(ctx context.Context, req *v1.ConnectRequest) (id string, node embed.Node, err error)
NewConn creates a new connection for the given request. Start must be called opn the returned node to start the connection.
func (*ConnManager) NodeID ¶ added in v0.16.0
func (m *ConnManager) NodeID() string
NodeID returns the node ID used for connections.
func (*ConnManager) PublicKey ¶ added in v0.16.0
func (m *ConnManager) PublicKey() string
PublicKey returns the encoded public key used for connections.
func (*ConnManager) RemoveConn ¶ added in v0.16.0
func (m *ConnManager) RemoveConn(connID string)
RemoveConn removes the connection for the given ID.
func (*ConnManager) StoredConns ¶ added in v0.16.0
func (m *ConnManager) StoredConns() ([]string, error)
StoredConns returns all connection IDs known to the persistence layer.
type Persistence ¶ added in v0.15.4
type Persistence struct { // Path is the root path to store mesh connection data. // Each connection will receive its own subdirectory. Path string `koanf:"path"` }
Persistence is configuration for persistence of mesh connection storage.