plugin

package
v0.14.0 Latest Latest
Warning

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

Go to latest
Published: Sep 10, 2024 License: MPL-2.0 Imports: 21 Imported by: 286

Documentation

Index

Constants

View Source
const BackendPluginName = "backend"

BackendPluginName is the name of the plugin that can be dispensed from the plugin server.

View Source
const ContextKeyPluginReload = ContextKey("plugin-reload")

Variables

View Source
var (
	ErrPluginShutdown       = errors.New("plugin is shut down")
	ErrClientInMetadataMode = errors.New("plugin client can not perform action while in metadata mode")
)
View Source
var ErrServerInMetadataMode = errors.New("plugin server can not perform action while in metadata mode")
View Source
var HandshakeConfig = plugin.HandshakeConfig{
	MagicCookieKey:   "VAULT_BACKEND_PLUGIN",
	MagicCookieValue: "6669da05-b1c8-4f49-97d9-c8e5bed98e20",
}

handshakeConfigs are used to just do a basic handshake between a plugin and host. If the handshake fails, a user friendly error is shown. This prevents users from executing bad plugins or executing a plugin directory. It is a UX feature, not a security feature.

View Source
var PluginSet = map[int]plugin.PluginSet{
	5: {
		"backend": &GRPCBackendPlugin{},
	},
}

PluginSet is the map of plugins we can dispense.

Functions

func Dispense added in v0.6.0

func Dispense(rpcClient plugin.ClientProtocol, pluginClient pluginutil.PluginClient) (logical.Backend, error)

func NewBackend

func NewBackend(ctx context.Context, pluginName string, pluginType consts.PluginType, sys pluginutil.LookRunnerUtil, conf *logical.BackendConfig, isMetadataMode bool) (logical.Backend, error)

NewBackend will return an instance of an RPC-based client implementation of the backend for external plugins, or a concrete implementation of the backend if it is a builtin backend. The backend is returned as a logical.Backend interface. The isMetadataMode param determines whether the plugin should run in metadata mode.

func NewBackendV5 added in v0.6.0

func NewBackendV5(ctx context.Context, pluginName string, pluginType consts.PluginType, pluginVersion string, sys pluginutil.LookRunnerUtil, conf *logical.BackendConfig) (logical.Backend, error)

NewBackendV5 will return an instance of an RPC-based client implementation of the backend for external plugins, or a concrete implementation of the backend if it is a builtin backend. The backend is returned as a logical.Backend interface.

func NewBackendWithVersion added in v0.6.0

func NewBackendWithVersion(ctx context.Context, pluginName string, pluginType consts.PluginType, sys pluginutil.LookRunnerUtil, conf *logical.BackendConfig, isMetadataMode bool, version string) (logical.Backend, error)

NewBackendWithVersion will return an instance of an RPC-based client implementation of the backend for external plugins, or a concrete implementation of the backend if it is a builtin backend. The backend is returned as a logical.Backend interface. The isMetadataMode param determines whether the plugin should run in metadata mode.

func NewPluginClient

func NewPluginClient(ctx context.Context, sys pluginutil.RunnerUtil, pluginRunner *pluginutil.PluginRunner, logger log.Logger, isMetadataMode bool) (logical.Backend, error)

func NewPluginClientV5 added in v0.6.0

func NewPluginClientV5(ctx context.Context, sys pluginutil.RunnerUtil, config pluginutil.PluginClientConfig) (logical.Backend, error)

func Serve

func Serve(opts *ServeOpts) error

Serve is a helper function used to serve a backend plugin. This should be ran on the plugin's main process.

func ServeMultiplex added in v0.6.0

func ServeMultiplex(opts *ServeOpts) error

ServeMultiplex is a helper function used to serve a backend plugin. This should be ran on the plugin's main process.

Types

type BackendPluginClient

type BackendPluginClient struct {
	logical.Backend
	// contains filtered or unexported fields
}

BackendPluginClient is a wrapper around backendPluginClient that also contains its plugin.Client instance. It's primarily used to cleanly kill the client on Cleanup()

func (*BackendPluginClient) Cleanup

func (b *BackendPluginClient) Cleanup(ctx context.Context)

Cleanup calls the RPC client's Cleanup() func and also calls the go-plugin's client Kill() func

func (*BackendPluginClient) PluginVersion added in v0.6.0

func (b *BackendPluginClient) PluginVersion() logical.PluginVersion

type BackendPluginClientV5 added in v0.6.0

type BackendPluginClientV5 struct {
	logical.Backend
	// contains filtered or unexported fields
}

BackendPluginClientV5 is a wrapper around backendPluginClient that also contains its plugin.Client instance. It's primarily used to cleanly kill the client on Cleanup()

func (*BackendPluginClientV5) Cleanup added in v0.6.0

func (b *BackendPluginClientV5) Cleanup(ctx context.Context)

Cleanup cleans up the go-plugin client and the plugin catalog

func (*BackendPluginClientV5) IsExternal added in v0.6.0

func (b *BackendPluginClientV5) IsExternal() bool

func (*BackendPluginClientV5) PluginVersion added in v0.6.0

func (b *BackendPluginClientV5) PluginVersion() logical.PluginVersion

type BackendTracingMiddleware added in v0.6.0

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

backendPluginClient implements logical.Backend and is the go-plugin client.

func (*BackendTracingMiddleware) Cleanup added in v0.6.0

func (b *BackendTracingMiddleware) Cleanup(ctx context.Context)

func (*BackendTracingMiddleware) HandleExistenceCheck added in v0.6.0

func (b *BackendTracingMiddleware) HandleExistenceCheck(ctx context.Context, req *logical.Request) (found bool, exists bool, err error)

func (*BackendTracingMiddleware) HandleRequest added in v0.6.0

func (b *BackendTracingMiddleware) HandleRequest(ctx context.Context, req *logical.Request) (resp *logical.Response, err error)

func (*BackendTracingMiddleware) Initialize added in v0.6.0

func (*BackendTracingMiddleware) InvalidateKey added in v0.6.0

func (b *BackendTracingMiddleware) InvalidateKey(ctx context.Context, key string)

func (*BackendTracingMiddleware) Logger added in v0.6.0

func (b *BackendTracingMiddleware) Logger() log.Logger

func (*BackendTracingMiddleware) PluginVersion added in v0.6.0

func (b *BackendTracingMiddleware) PluginVersion() logical.PluginVersion

func (*BackendTracingMiddleware) Setup added in v0.6.0

func (b *BackendTracingMiddleware) Setup(ctx context.Context, config *logical.BackendConfig) (err error)

func (*BackendTracingMiddleware) SpecialPaths added in v0.6.0

func (b *BackendTracingMiddleware) SpecialPaths() *logical.Paths

func (*BackendTracingMiddleware) System added in v0.6.0

func (*BackendTracingMiddleware) Type added in v0.6.0

type ContextKey added in v0.6.0

type ContextKey string

func (ContextKey) String added in v0.6.0

func (c ContextKey) String() string

type GRPCBackendPlugin

type GRPCBackendPlugin struct {
	Factory      logical.Factory
	MetadataMode bool
	Logger       log.Logger

	MultiplexingSupport bool

	// Embeding this will disable the netRPC protocol
	plugin.NetRPCUnsupportedPlugin
}

GRPCBackendPlugin is the plugin.Plugin implementation that only supports GRPC transport

func (*GRPCBackendPlugin) GRPCClient

func (b *GRPCBackendPlugin) GRPCClient(ctx context.Context, broker *plugin.GRPCBroker, c *grpc.ClientConn) (interface{}, error)

func (GRPCBackendPlugin) GRPCServer

func (b GRPCBackendPlugin) GRPCServer(broker *plugin.GRPCBroker, s *grpc.Server) error

type GRPCEventsClient added in v0.8.0

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

func (*GRPCEventsClient) SendEvent added in v0.10.0

func (s *GRPCEventsClient) SendEvent(ctx context.Context, eventType logical.EventType, event *logical.EventData) error

type GRPCEventsServer added in v0.8.0

type GRPCEventsServer struct {
	pb.UnimplementedEventsServer
	// contains filtered or unexported fields
}

func (*GRPCEventsServer) SendEvent added in v0.8.0

func (s *GRPCEventsServer) SendEvent(ctx context.Context, req *pb.SendEventRequest) (*pb.Empty, error)

type GRPCStorageClient

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

GRPCStorageClient is an implementation of logical.Storage that communicates over RPC.

func (*GRPCStorageClient) Delete

func (s *GRPCStorageClient) Delete(ctx context.Context, key string) error

func (*GRPCStorageClient) Get

func (*GRPCStorageClient) List

func (s *GRPCStorageClient) List(ctx context.Context, prefix string) ([]string, error)

func (*GRPCStorageClient) Put

type GRPCStorageServer

type GRPCStorageServer struct {
	pb.UnimplementedStorageServer
	// contains filtered or unexported fields
}

GRPCStorageServer is a net/rpc compatible structure for serving

func (*GRPCStorageServer) Delete

func (*GRPCStorageServer) Get

func (*GRPCStorageServer) List

func (*GRPCStorageServer) Put

type LoggerArgs

type LoggerArgs struct {
	Level int
	Msg   string
	Args  []interface{}
}

type LoggerReply

type LoggerReply struct {
	IsTrue bool
	Error  error
}

LoggerReply contains the RPC reply. Not all fields may be used for a particular RPC call.

type LoggerServer

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

func (*LoggerServer) Debug

func (l *LoggerServer) Debug(args *LoggerArgs, _ *struct{}) error

func (*LoggerServer) Error

func (l *LoggerServer) Error(args *LoggerArgs, reply *LoggerReply) error

func (*LoggerServer) Info

func (l *LoggerServer) Info(args *LoggerArgs, _ *struct{}) error

func (*LoggerServer) IsDebug

func (l *LoggerServer) IsDebug(args interface{}, reply *LoggerReply) error

func (*LoggerServer) IsInfo

func (l *LoggerServer) IsInfo(args interface{}, reply *LoggerReply) error

func (*LoggerServer) IsTrace

func (l *LoggerServer) IsTrace(args interface{}, reply *LoggerReply) error

func (*LoggerServer) IsWarn

func (l *LoggerServer) IsWarn(args interface{}, reply *LoggerReply) error

func (*LoggerServer) Log

func (l *LoggerServer) Log(args *LoggerArgs, _ *struct{}) error

func (*LoggerServer) SetLevel

func (l *LoggerServer) SetLevel(args int, _ *struct{}) error

func (*LoggerServer) Trace

func (l *LoggerServer) Trace(args *LoggerArgs, _ *struct{}) error

func (*LoggerServer) Warn

func (l *LoggerServer) Warn(args *LoggerArgs, reply *LoggerReply) error

type NOOPStorage

type NOOPStorage struct{}

NOOPStorage is used to deny access to the storage interface while running a backend plugin in metadata mode.

func (*NOOPStorage) Delete

func (s *NOOPStorage) Delete(_ context.Context, key string) error

func (*NOOPStorage) Get

func (*NOOPStorage) List

func (s *NOOPStorage) List(_ context.Context, prefix string) ([]string, error)

func (*NOOPStorage) Put

type ServeOpts

type ServeOpts struct {
	BackendFactoryFunc logical.Factory
	TLSProviderFunc    TLSProviderFunc
	Logger             log.Logger
}

type TLSProviderFunc

type TLSProviderFunc func() (*tls.Config, error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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