plugin

package
v0.0.11 Latest Latest
Warning

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

Go to latest
Published: May 27, 2025 License: AGPL-3.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PluginIsolationLevelNone   = "none"   // 无隔离
	PluginIsolationLevelBasic  = "basic"  // 基本隔离
	PluginIsolationLevelStrict = "strict" // 严格隔离
)

插件隔离级别

View Source
const (
	PluginStatusUnloaded = "unloaded" // 未加载
	PluginStatusLoaded   = "loaded"   // 已加载
	PluginStatusRunning  = "running"  // 运行中
	PluginStatusStopped  = "stopped"  // 已停止
	PluginStatusError    = "error"    // 错误
)

插件状态

View Source
const (
	PluginTypeCore    = "core"    // 核心插件
	PluginTypeService = "service" // 服务插件
	PluginTypeUI      = "ui"      // UI插件
	PluginTypeUtil    = "util"    // 工具插件
)

插件类型

View Source
const (
	PluginEventLoaded   = "loaded"   // 已加载
	PluginEventUnloaded = "unloaded" // 已卸载
	PluginEventStarted  = "started"  // 已启动
	PluginEventStopped  = "stopped"  // 已停止
	PluginEventError    = "error"    // 错误
)

插件事件

View Source
const (
	PluginPermissionNone      = "none"      // 无权限
	PluginPermissionReadOnly  = "readonly"  // 只读权限
	PluginPermissionReadWrite = "readwrite" // 读写权限
	PluginPermissionAdmin     = "admin"     // 管理员权限
)

插件权限

Variables

View Source
var PluginMap = map[string]plugin.Plugin{
	"module": &ModulePlugin{},

	"assets":  &ModulePlugin{},
	"audit":   &ModulePlugin{},
	"control": &ModulePlugin{},
	"device":  &ModulePlugin{},
	"dlp":     &ModulePlugin{},
}

PluginMap 是插件类型到插件实现的映射

Functions

func ConfigToJSON

func ConfigToJSON(config map[string]interface{}) (string, error)

ConfigToJSON 将配置转换为JSON字符串

func ExamplePluginIsolation

func ExamplePluginIsolation()

ExamplePluginIsolation 展示插件隔离的基本用法

func ExamplePluginManager

func ExamplePluginManager()

ExamplePluginManager 展示插件管理器的用法

func ExamplePluginSandbox

func ExamplePluginSandbox()

ExamplePluginSandbox 展示插件沙箱的用法

func JSONToConfig

func JSONToConfig(jsonStr string) (map[string]interface{}, error)

JSONToConfig 将JSON字符串转换为配置

func SavePluginMetadata

func SavePluginMetadata(metadata PluginMetadata, path string) error

SavePluginMetadata 保存插件元数据

Types

type AppFrameworkPlugin

type AppFrameworkPlugin struct {
	hashiPlugin.Plugin
	Impl Module
}

AppFrameworkPlugin Hashicorp插件实现

func (*AppFrameworkPlugin) GRPCClient

func (p *AppFrameworkPlugin) GRPCClient(ctx context.Context, broker *hashiPlugin.GRPCBroker, c *grpc.ClientConn) (interface{}, error)

GRPCClient 实现GRPCPlugin接口

func (*AppFrameworkPlugin) GRPCServer

func (p *AppFrameworkPlugin) GRPCServer(broker *hashiPlugin.GRPCBroker, s *grpc.Server) error

GRPCServer 实现GRPCPlugin接口

type DefaultModule

type DefaultModule struct {
	// 模块名称
	Name string

	// 模块版本
	Version string

	// 模块描述
	Description string

	// 支持的操作列表
	SupportedActions []string

	// 配置
	Config map[string]interface{}
}

DefaultModule 提供了Module接口的默认实现

func NewDefaultModule

func NewDefaultModule(name, version, description string, supportedActions []string) *DefaultModule

NewDefaultModule 创建一个新的默认模块

func (*DefaultModule) Execute

func (m *DefaultModule) Execute(action string, params map[string]interface{}) (map[string]interface{}, error)

Execute 执行模块操作

func (*DefaultModule) GetInfo

func (m *DefaultModule) GetInfo() ModuleInfo

GetInfo 获取模块信息

func (*DefaultModule) HandleMessage

func (m *DefaultModule) HandleMessage(messageType string, messageID string, timestamp int64, payload map[string]interface{}) (map[string]interface{}, error)

HandleMessage 处理消息

func (*DefaultModule) Init

func (m *DefaultModule) Init(config map[string]interface{}) error

Init 初始化模块

func (*DefaultModule) Shutdown

func (m *DefaultModule) Shutdown() error

Shutdown 关闭模块

type GRPCClient

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

GRPCClient 是一个gRPC客户端适配器,用于将gRPC客户端转换为Module接口

func (*GRPCClient) Execute

func (c *GRPCClient) Execute(action string, params map[string]interface{}) (map[string]interface{}, error)

Execute 实现了Module接口的Execute方法

func (*GRPCClient) GetInfo

func (c *GRPCClient) GetInfo() ModuleInfo

GetInfo 实现了Module接口的GetInfo方法

func (*GRPCClient) HandleMessage

func (c *GRPCClient) HandleMessage(messageType string, messageID string, timestamp int64, payload map[string]interface{}) (map[string]interface{}, error)

HandleMessage 实现了Module接口的HandleMessage方法

func (*GRPCClient) Init

func (c *GRPCClient) Init(config map[string]interface{}) error

Init 实现了Module接口的Init方法

func (*GRPCClient) Shutdown

func (c *GRPCClient) Shutdown() error

Shutdown 实现了Module接口的Shutdown方法

type GRPCServer

type GRPCServer struct {
	pb.UnimplementedModuleServer
	Impl Module
}

GRPCServer 是一个gRPC服务器适配器,用于将Module接口转换为gRPC服务

func (*GRPCServer) Execute

func (s *GRPCServer) Execute(ctx context.Context, req *pb.ActionRequest) (*pb.ActionResponse, error)

Execute 实现了gRPC服务的Execute方法

func (*GRPCServer) GetInfo

func (s *GRPCServer) GetInfo(ctx context.Context, req *pb.EmptyRequest) (*pb.ModuleInfo, error)

GetInfo 实现了gRPC服务的GetInfo方法

func (*GRPCServer) HandleMessage

func (s *GRPCServer) HandleMessage(ctx context.Context, req *pb.MessageRequest) (*pb.MessageResponse, error)

HandleMessage 实现了gRPC服务的HandleMessage方法

func (*GRPCServer) Init

func (s *GRPCServer) Init(ctx context.Context, req *pb.InitRequest) (*pb.InitResponse, error)

Init 实现了gRPC服务的Init方法

func (*GRPCServer) Shutdown

func (s *GRPCServer) Shutdown(ctx context.Context, req *pb.EmptyRequest) (*pb.EmptyRequest, error)

Shutdown 实现了gRPC服务的Shutdown方法,支持优雅终止

type IsolationLevel

type IsolationLevel int

IsolationLevel 表示插件隔离级别

const (
	IsolationLevelNone     IsolationLevel = iota // 无隔离
	IsolationLevelBasic                          // 基本隔离(独立goroutine和错误处理)
	IsolationLevelStrict                         // 严格隔离(独立goroutine、错误处理和资源限制)
	IsolationLevelComplete                       // 完全隔离(独立进程)
)

预定义隔离级别

func (IsolationLevel) String

func (il IsolationLevel) String() string

String 返回隔离级别的字符串表示

type LoadedPlugin

type LoadedPlugin struct {
	Metadata  PluginMetadata
	Instance  interface{}
	Client    *hashiPlugin.Client
	RawPlugin *plugin.Plugin
}

LoadedPlugin 已加载的插件

type ManagedPlugin

type ManagedPlugin struct {
	ID        string
	Name      string
	Version   string
	Path      string
	Client    *plugin.Client
	Interface interface{}
	Sandbox   *PluginSandbox
	Config    *PluginConfig
	State     PluginState
	LastError error
	StartTime time.Time
	StopTime  time.Time
}

ManagedPlugin 受管理的插件

type ManagerConfigV2 added in v0.0.4

type ManagerConfigV2 struct {
	// 插件目录
	PluginsDir string

	// 自动发现
	AutoDiscover bool

	// 扫描间隔
	ScanInterval time.Duration

	// 健康检查间隔
	HealthCheckInterval time.Duration

	// 自动启动
	AutoStart bool
}

ManagerConfigV2 新版管理器配置

func DefaultManagerConfigV2 added in v0.0.4

func DefaultManagerConfigV2() ManagerConfigV2

DefaultManagerConfigV2 返回默认管理器配置

type ManagerConfigV3 added in v0.0.4

type ManagerConfigV3 struct {
	// 插件目录
	PluginsDir string

	// 自动发现
	AutoDiscover bool

	// 扫描间隔
	ScanInterval time.Duration

	// 健康检查间隔
	HealthCheckInterval time.Duration

	// 自动启动
	AutoStart bool

	// 隔离级别
	IsolationLevel isolation.IsolationLevel

	// 资源限制
	ResourceLimits map[string]int64

	// 操作超时
	OperationTimeout time.Duration
}

ManagerConfigV3 新版管理器配置

func DefaultManagerConfigV3 added in v0.0.4

func DefaultManagerConfigV3() ManagerConfigV3

DefaultManagerConfigV3 返回默认管理器配置

type Message

type Message struct {
	ID          string                 // 消息ID
	Type        MessageType            // 消息类型
	Source      string                 // 消息源
	Destination string                 // 消息目标
	Topic       string                 // 消息主题
	Payload     map[string]interface{} // 消息负载
	Timestamp   time.Time              // 时间戳
}

Message 消息

type MessageHandler

type MessageHandler func(ctx context.Context, msg Message) (Message, error)

MessageHandler 消息处理器

type MessageType

type MessageType string

MessageType 消息类型

const (
	MessageTypeRequest  MessageType = "request"  // 请求
	MessageTypeResponse MessageType = "response" // 响应
	MessageTypeEvent    MessageType = "event"    // 事件
	MessageTypeError    MessageType = "error"    // 错误
)

预定义消息类型

type Module

type Module interface {
	// Init 初始化模块
	Init(config map[string]interface{}) error

	// Execute 执行模块操作
	Execute(action string, params map[string]interface{}) (map[string]interface{}, error)

	// Shutdown 关闭模块
	Shutdown() error

	// GetInfo 获取模块信息
	GetInfo() ModuleInfo

	// HandleMessage 处理消息
	HandleMessage(messageType string, messageID string, timestamp int64, payload map[string]interface{}) (map[string]interface{}, error)
}

Module 定义了插件模块的接口

type ModuleInfo

type ModuleInfo struct {
	Name             string   `json:"name"`
	Version          string   `json:"version"`
	Description      string   `json:"description"`
	SupportedActions []string `json:"supported_actions"`
}

ModuleInfo 包含模块的基本信息

type ModulePlugin

type ModulePlugin struct {
	plugin.Plugin
	Impl Module
}

ModulePlugin 是一个go-plugin的实现

func (*ModulePlugin) GRPCClient

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

GRPCClient 实现了go-plugin的GRPCClient接口

func (*ModulePlugin) GRPCServer

func (p *ModulePlugin) GRPCServer(broker *plugin.GRPCBroker, s *grpc.Server) error

GRPCServer 实现了go-plugin的GRPCServer接口

type PluginCommunicationClient

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

PluginCommunicationClient 插件通信客户端

func NewPluginCommunicationClient

func NewPluginCommunicationClient(pluginID string, communicator *PluginCommunicator, logger hclog.Logger) *PluginCommunicationClient

NewPluginCommunicationClient 创建插件通信客户端

func (*PluginCommunicationClient) GetSubscriptions

func (pcc *PluginCommunicationClient) GetSubscriptions() []string

GetSubscriptions 获取订阅

func (*PluginCommunicationClient) PublishEvent

func (pcc *PluginCommunicationClient) PublishEvent(ctx context.Context, topic string, payload map[string]interface{}) error

PublishEvent 发布事件

func (*PluginCommunicationClient) SendMessage

func (pcc *PluginCommunicationClient) SendMessage(ctx context.Context, msg Message) (Message, error)

SendMessage 发送消息

func (*PluginCommunicationClient) Subscribe

func (pcc *PluginCommunicationClient) Subscribe(topic string) error

Subscribe 订阅主题

func (*PluginCommunicationClient) Unsubscribe

func (pcc *PluginCommunicationClient) Unsubscribe(topic string) error

Unsubscribe 取消订阅主题

type PluginCommunicationInterface

type PluginCommunicationInterface interface {
	// SendMessage 发送消息
	SendMessage(ctx context.Context, msg Message) (Message, error)

	// PublishEvent 发布事件
	PublishEvent(ctx context.Context, topic string, payload map[string]interface{}) error

	// Subscribe 订阅主题
	Subscribe(topic string) error

	// Unsubscribe 取消订阅主题
	Unsubscribe(topic string) error

	// GetSubscriptions 获取订阅
	GetSubscriptions() []string
}

PluginCommunicationInterface 插件通信接口

type PluginCommunicator

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

PluginCommunicator 插件通信器

func NewPluginCommunicator

func NewPluginCommunicator(logger hclog.Logger, pluginManager *PluginManager) *PluginCommunicator

NewPluginCommunicator 创建插件通信器

func (*PluginCommunicator) Close

func (pc *PluginCommunicator) Close() error

Close 关闭通信器

func (*PluginCommunicator) GetSubscribers

func (pc *PluginCommunicator) GetSubscribers(topic string) []string

GetSubscribers 获取订阅者

func (*PluginCommunicator) GetSubscriptions

func (pc *PluginCommunicator) GetSubscriptions(pluginID string) []string

GetSubscriptions 获取订阅

func (*PluginCommunicator) PublishEvent

func (pc *PluginCommunicator) PublishEvent(ctx context.Context, source string, topic string, payload map[string]interface{}) error

PublishEvent 发布事件

func (*PluginCommunicator) RegisterHandler

func (pc *PluginCommunicator) RegisterHandler(pluginID string, handler MessageHandler)

RegisterHandler 注册消息处理器

func (*PluginCommunicator) SendMessage

func (pc *PluginCommunicator) SendMessage(ctx context.Context, msg Message) (Message, error)

SendMessage 发送消息

func (*PluginCommunicator) Subscribe

func (pc *PluginCommunicator) Subscribe(pluginID string, topic string)

Subscribe 订阅主题

func (*PluginCommunicator) UnregisterHandler

func (pc *PluginCommunicator) UnregisterHandler(pluginID string)

UnregisterHandler 注销消息处理器

func (*PluginCommunicator) Unsubscribe

func (pc *PluginCommunicator) Unsubscribe(pluginID string, topic string)

Unsubscribe 取消订阅主题

func (*PluginCommunicator) UnsubscribeAll

func (pc *PluginCommunicator) UnsubscribeAll(pluginID string)

UnsubscribeAll 取消所有订阅

type PluginConfig

type PluginConfig struct {
	ID             string
	Name           string
	Version        string
	Path           string
	IsolationLevel IsolationLevel
	AutoStart      bool
	AutoRestart    bool
	Enabled        bool
	Dependencies   []string
	ResourceLimits map[string]int
	Environment    map[string]string
	Args           []string
	Timeout        time.Duration
}

PluginConfig 插件配置

type PluginDependency

type PluginDependency struct {
	ID       string // 依赖的插件ID
	Version  string // 依赖的插件版本
	Optional bool   // 是否可选
}

PluginDependency 插件依赖

type PluginDependencyManager

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

PluginDependencyManager 插件依赖管理器

func NewPluginDependencyManager

func NewPluginDependencyManager(logger hclog.Logger) *PluginDependencyManager

NewPluginDependencyManager 创建插件依赖管理器

func (*PluginDependencyManager) AddPlugin

func (pdm *PluginDependencyManager) AddPlugin(metadata PluginMetadata) error

AddPlugin 添加插件

func (*PluginDependencyManager) CheckDependencies

func (pdm *PluginDependencyManager) CheckDependencies(id string) (bool, []string, error)

CheckDependencies 检查插件依赖

func (*PluginDependencyManager) GetDependencies

func (pdm *PluginDependencyManager) GetDependencies(id string) ([]string, error)

GetDependencies 获取插件的依赖

func (*PluginDependencyManager) GetDependents

func (pdm *PluginDependencyManager) GetDependents(id string) ([]string, error)

GetDependents 获取依赖此插件的插件

func (*PluginDependencyManager) GetLoadOrder

func (pdm *PluginDependencyManager) GetLoadOrder() ([]string, error)

GetLoadOrder 获取插件加载顺序

func (*PluginDependencyManager) GetPlugin

func (pdm *PluginDependencyManager) GetPlugin(id string) (PluginMetadata, bool)

GetPlugin 获取插件

func (*PluginDependencyManager) GetPluginGraph

func (pdm *PluginDependencyManager) GetPluginGraph() map[string][]string

GetPluginGraph 获取插件依赖图

func (*PluginDependencyManager) GetPluginReverseGraph

func (pdm *PluginDependencyManager) GetPluginReverseGraph() map[string][]string

GetPluginReverseGraph 获取插件反向依赖图

func (*PluginDependencyManager) GetPlugins

func (pdm *PluginDependencyManager) GetPlugins() map[string]PluginMetadata

GetPlugins 获取所有插件

func (*PluginDependencyManager) GetPluginsByTag

func (pdm *PluginDependencyManager) GetPluginsByTag(tag string) []PluginMetadata

GetPluginsByTag 获取指定标签的插件

func (*PluginDependencyManager) GetUnloadOrder

func (pdm *PluginDependencyManager) GetUnloadOrder() ([]string, error)

GetUnloadOrder 获取插件卸载顺序

func (*PluginDependencyManager) RemovePlugin

func (pdm *PluginDependencyManager) RemovePlugin(id string) error

RemovePlugin 移除插件

type PluginExecutor added in v0.0.3

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

PluginExecutor 插件执行器

func NewPluginExecutor added in v0.0.3

func NewPluginExecutor(pluginID string, pluginPath string, options ...PluginExecutorOption) *PluginExecutor

NewPluginExecutor 创建一个新的插件执行器

func (*PluginExecutor) ExecuteFunc added in v0.0.3

func (pe *PluginExecutor) ExecuteFunc(f func(interface{}) error) error

ExecuteFunc 在插件中执行函数

func (*PluginExecutor) GetInstance added in v0.0.3

func (pe *PluginExecutor) GetInstance() interface{}

GetInstance 获取插件实例

func (*PluginExecutor) GetLastError added in v0.0.3

func (pe *PluginExecutor) GetLastError() error

GetLastError 获取最后一个错误

func (*PluginExecutor) GetUptime added in v0.0.3

func (pe *PluginExecutor) GetUptime() time.Duration

GetUptime 获取插件运行时间

func (*PluginExecutor) IsRunning added in v0.0.3

func (pe *PluginExecutor) IsRunning() bool

IsRunning 检查插件是否正在运行

func (*PluginExecutor) Start added in v0.0.3

func (pe *PluginExecutor) Start() error

Start 启动插件

func (*PluginExecutor) Stop added in v0.0.3

func (pe *PluginExecutor) Stop() error

Stop 停止插件

type PluginExecutorOption added in v0.0.3

type PluginExecutorOption func(*PluginExecutor)

PluginExecutorOption 插件执行器配置选项

func WithExecutorContext added in v0.0.3

func WithExecutorContext(ctx context.Context) PluginExecutorOption

WithExecutorContext 设置上下文

func WithExecutorErrorRegistry added in v0.0.3

func WithExecutorErrorRegistry(registry *errors.ErrorHandlerRegistry) PluginExecutorOption

WithExecutorErrorRegistry 设置错误处理器注册表

func WithExecutorLogger added in v0.0.3

func WithExecutorLogger(logger hclog.Logger) PluginExecutorOption

WithExecutorLogger 设置日志记录器

func WithExecutorRecoveryManager added in v0.0.3

func WithExecutorRecoveryManager(manager *errors.RecoveryManager) PluginExecutorOption

WithExecutorRecoveryManager 设置恢复管理器

func WithExecutorResourceTracker added in v0.0.3

func WithExecutorResourceTracker(tracker *resource.ResourceTracker) PluginExecutorOption

WithExecutorResourceTracker 设置资源追踪器

func WithExecutorWorkerPool added in v0.0.3

func WithExecutorWorkerPool(pool *concurrency.WorkerPool) PluginExecutorOption

WithExecutorWorkerPool 设置工作池

type PluginIsolationConfig

type PluginIsolationConfig struct {
	Level           IsolationLevel         // 隔离级别
	ResourceLimits  map[string]int         // 资源限制
	TimeoutDuration time.Duration          // 超时时间
	MemoryLimit     int64                  // 内存限制(字节)
	CPULimit        int                    // CPU限制(百分比)
	IOLimit         int                    // IO限制(操作/秒)
	NetworkLimit    int                    // 网络限制(字节/秒)
	AllowedAPIs     map[string]bool        // 允许的API
	BlockedAPIs     map[string]bool        // 阻止的API
	Environment     map[string]string      // 环境变量
	WorkingDir      string                 // 工作目录
	LogLevel        string                 // 日志级别
	ErrorHandler    errors.ErrorHandler    // 错误处理器
	RecoveryHandler errors.RecoveryHandler // 恢复处理器
}

PluginIsolationConfig 插件隔离配置

func DefaultPluginIsolationConfig

func DefaultPluginIsolationConfig() *PluginIsolationConfig

DefaultPluginIsolationConfig 返回默认的插件隔离配置

type PluginIsolationStats

type PluginIsolationStats struct {
	TotalCalls         int64
	SuccessfulCalls    int64
	FailedCalls        int64
	Timeouts           int64
	ResourceViolations int64
	Panics             int64
	TotalExecutionTime time.Duration
	AvgExecutionTime   time.Duration
	MaxExecutionTime   time.Duration
	MinExecutionTime   time.Duration
}

PluginIsolationStats 插件隔离统计信息

type PluginIsolator

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

PluginIsolator 插件隔离器

func NewPluginIsolator

func NewPluginIsolator(config *PluginIsolationConfig, options ...PluginIsolatorOption) *PluginIsolator

NewPluginIsolator 创建一个新的插件隔离器

func (*PluginIsolator) ExecuteFunc

func (pi *PluginIsolator) ExecuteFunc(pluginID string, f func() error) error

ExecuteFunc 在隔离环境中执行函数

func (*PluginIsolator) GetStats

func (pi *PluginIsolator) GetStats() PluginIsolationStats

GetStats 获取统计信息

func (*PluginIsolator) Stop

func (pi *PluginIsolator) Stop()

Stop 停止插件隔离器

type PluginIsolatorOption

type PluginIsolatorOption func(*PluginIsolator)

PluginIsolatorOption 插件隔离器配置选项

func WithContext

func WithContext(ctx context.Context) PluginIsolatorOption

WithContext 设置上下文

func WithErrorRegistry

func WithErrorRegistry(registry *errors.ErrorHandlerRegistry) PluginIsolatorOption

WithErrorRegistry 设置错误处理器注册表

func WithLogger

func WithLogger(logger hclog.Logger) PluginIsolatorOption

WithLogger 设置日志记录器

func WithRecoveryManager

func WithRecoveryManager(manager *errors.RecoveryManager) PluginIsolatorOption

WithRecoveryManager 设置恢复管理器

func WithResourceTracker

func WithResourceTracker(tracker *resource.ResourceTracker) PluginIsolatorOption

WithResourceTracker 设置资源追踪器

func WithWorkerPool

func WithWorkerPool(pool *concurrency.WorkerPool) PluginIsolatorOption

WithWorkerPool 设置工作池

type PluginLoader

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

PluginLoader 插件加载器

func NewPluginLoader

func NewPluginLoader(pluginsDir string, logger hclog.Logger) *PluginLoader

NewPluginLoader 创建插件加载器

func (*PluginLoader) Close

func (pl *PluginLoader) Close() error

Close 关闭插件加载器

func (*PluginLoader) GetLoadedPlugin

func (pl *PluginLoader) GetLoadedPlugin(id string) (*LoadedPlugin, bool)

GetLoadedPlugin 获取已加载的插件

func (*PluginLoader) GetLoadedPlugins

func (pl *PluginLoader) GetLoadedPlugins() map[string]*LoadedPlugin

GetLoadedPlugins 获取所有已加载的插件

func (*PluginLoader) LoadPlugin

func (pl *PluginLoader) LoadPlugin(metadata PluginMetadata) (*LoadedPlugin, error)

LoadPlugin 加载插件

func (*PluginLoader) ScanPluginsDir

func (pl *PluginLoader) ScanPluginsDir() ([]PluginMetadata, error)

ScanPluginsDir 扫描插件目录

func (*PluginLoader) UnloadPlugin

func (pl *PluginLoader) UnloadPlugin(id string) error

UnloadPlugin 卸载插件

type PluginManager

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

PluginManager 插件管理器

func NewPluginManager

func NewPluginManager(options ...PluginManagerOption) *PluginManager

NewPluginManager 创建一个新的插件管理器

func (*PluginManager) ExecutePluginFunc

func (pm *PluginManager) ExecutePluginFunc(id string, f func() error) error

ExecutePluginFunc 在插件沙箱中执行函数

func (*PluginManager) ExecutePluginFuncWithContext

func (pm *PluginManager) ExecutePluginFuncWithContext(id string, ctx context.Context, f func(context.Context) error) error

ExecutePluginFuncWithContext 在插件沙箱中执行带上下文的函数

func (*PluginManager) GetPlugin

func (pm *PluginManager) GetPlugin(id string) (*ManagedPlugin, bool)

GetPlugin 获取插件

func (*PluginManager) ListPlugins

func (pm *PluginManager) ListPlugins() []*ManagedPlugin

ListPlugins 列出所有插件

func (*PluginManager) LoadPlugin

func (pm *PluginManager) LoadPlugin(config *PluginConfig) (*ManagedPlugin, error)

LoadPlugin 加载插件

func (*PluginManager) RestartPlugin

func (pm *PluginManager) RestartPlugin(id string) error

RestartPlugin 重启插件

func (*PluginManager) StartHealthCheck

func (pm *PluginManager) StartHealthCheck()

StartHealthCheck 启动健康检查

func (*PluginManager) StartPlugin

func (pm *PluginManager) StartPlugin(id string) error

StartPlugin 启动插件

func (*PluginManager) Stop

func (pm *PluginManager) Stop()

Stop 停止插件管理器

func (*PluginManager) StopPlugin

func (pm *PluginManager) StopPlugin(id string) error

StopPlugin 停止插件

func (*PluginManager) UnloadPlugin

func (pm *PluginManager) UnloadPlugin(id string) error

UnloadPlugin 卸载插件

type PluginManagerOption

type PluginManagerOption func(*PluginManager)

PluginManagerOption 插件管理器配置选项

func WithHealthCheckInterval

func WithHealthCheckInterval(interval time.Duration) PluginManagerOption

WithHealthCheckInterval 设置健康检查间隔

func WithIdleTimeout

func WithIdleTimeout(timeout time.Duration) PluginManagerOption

WithIdleTimeout 设置空闲超时

func WithPluginManagerContext

func WithPluginManagerContext(ctx context.Context) PluginManagerOption

WithPluginManagerContext 设置上下文

func WithPluginManagerErrorRegistry

func WithPluginManagerErrorRegistry(registry *errors.ErrorHandlerRegistry) PluginManagerOption

WithPluginManagerErrorRegistry 设置错误处理器注册表

func WithPluginManagerLogger

func WithPluginManagerLogger(logger hclog.Logger) PluginManagerOption

WithPluginManagerLogger 设置日志记录器

func WithPluginManagerRecoveryManager

func WithPluginManagerRecoveryManager(manager *errors.RecoveryManager) PluginManagerOption

WithPluginManagerRecoveryManager 设置恢复管理器

func WithPluginManagerResourceTracker

func WithPluginManagerResourceTracker(tracker *resource.ResourceTracker) PluginManagerOption

WithPluginManagerResourceTracker 设置资源追踪器

func WithPluginManagerWorkerPool

func WithPluginManagerWorkerPool(pool *concurrency.WorkerPool) PluginManagerOption

WithPluginManagerWorkerPool 设置工作池

func WithPluginsDir

func WithPluginsDir(dir string) PluginManagerOption

WithPluginsDir 设置插件目录

type PluginManagerV2 added in v0.0.4

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

PluginManagerV2 新版插件管理器 负责插件的加载、卸载、启动和停止

func NewPluginManagerV2 added in v0.0.4

func NewPluginManagerV2(logger hclog.Logger, config ManagerConfigV2) *PluginManagerV2

NewPluginManagerV2 创建一个新的插件管理器

func (*PluginManagerV2) GetPlugin added in v0.0.4

func (m *PluginManagerV2) GetPlugin(id string) (api.Plugin, bool)

GetPlugin 获取插件

func (*PluginManagerV2) GetPluginStatus added in v0.0.4

func (m *PluginManagerV2) GetPluginStatus(id string) (api.PluginStatus, error)

GetPluginStatus 获取插件状态

func (*PluginManagerV2) ListPlugins added in v0.0.4

func (m *PluginManagerV2) ListPlugins() []api.PluginInfo

ListPlugins 列出所有插件

func (*PluginManagerV2) LoadPlugin added in v0.0.4

func (m *PluginManagerV2) LoadPlugin(id string) (api.Plugin, error)

LoadPlugin 加载插件

func (*PluginManagerV2) Start added in v0.0.4

func (m *PluginManagerV2) Start() error

Start 启动插件管理器

func (*PluginManagerV2) StartPlugin added in v0.0.4

func (m *PluginManagerV2) StartPlugin(id string) error

StartPlugin 启动插件

func (*PluginManagerV2) Stop added in v0.0.4

func (m *PluginManagerV2) Stop() error

Stop 停止插件管理器

func (*PluginManagerV2) StopPlugin added in v0.0.4

func (m *PluginManagerV2) StopPlugin(id string) error

StopPlugin 停止插件

func (*PluginManagerV2) UnloadPlugin added in v0.0.4

func (m *PluginManagerV2) UnloadPlugin(id string) error

UnloadPlugin 卸载插件

type PluginManagerV3 added in v0.0.4

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

PluginManagerV3 新版插件管理器 负责插件的加载、卸载、启动和停止

func NewPluginManagerV3 added in v0.0.4

func NewPluginManagerV3(logger hclog.Logger, config ManagerConfigV3) *PluginManagerV3

NewPluginManagerV3 创建一个新的插件管理器

func (*PluginManagerV3) CreateCommunication added in v0.0.4

func (m *PluginManagerV3) CreateCommunication(protocol sdk.CommunicationProtocol, options map[string]interface{}) (sdk.Communication, error)

CreateCommunication 创建通信

func (*PluginManagerV3) ExecuteInSandbox added in v0.0.4

func (m *PluginManagerV3) ExecuteInSandbox(id string, f func() error) error

ExecuteInSandbox 在沙箱中执行函数

func (*PluginManagerV3) GeneratePluginDiagram added in v0.0.4

func (m *PluginManagerV3) GeneratePluginDiagram(outputPath string) error

GeneratePluginDiagram 生成插件依赖关系图

func (*PluginManagerV3) GeneratePluginDocs added in v0.0.4

func (m *PluginManagerV3) GeneratePluginDocs(outputDir string) error

GeneratePluginDocs 生成插件文档

func (*PluginManagerV3) GetCommunicationFactory added in v0.0.4

func (m *PluginManagerV3) GetCommunicationFactory() *communication.DefaultCommunicationFactory

GetCommunicationFactory 获取通信工厂

func (*PluginManagerV3) GetDependencyInjector added in v0.0.4

func (m *PluginManagerV3) GetDependencyInjector() *dependency.DependencyInjector

GetDependencyInjector 获取依赖注入器

func (*PluginManagerV3) GetDependencyManager added in v0.0.4

func (m *PluginManagerV3) GetDependencyManager() *dependency.DependencyManager

GetDependencyManager 获取依赖管理器

func (*PluginManagerV3) GetDependencyOrder added in v0.0.4

func (m *PluginManagerV3) GetDependencyOrder() ([]string, error)

GetDependencyOrder 获取依赖顺序

func (*PluginManagerV3) GetDependencyResolver added in v0.0.4

func (m *PluginManagerV3) GetDependencyResolver() *dependency.DependencyResolver

GetDependencyResolver 获取依赖解析器

func (*PluginManagerV3) GetIsolator added in v0.0.4

func (m *PluginManagerV3) GetIsolator() isolation.PluginIsolator

GetIsolator 获取隔离器

func (*PluginManagerV3) GetLogger added in v0.0.4

func (m *PluginManagerV3) GetLogger() hclog.Logger

GetLogger 获取日志记录器

func (*PluginManagerV3) GetPlugin added in v0.0.4

func (m *PluginManagerV3) GetPlugin(id string) (api.Plugin, bool)

GetPlugin 获取插件

func (*PluginManagerV3) GetPluginDependencies added in v0.0.4

func (m *PluginManagerV3) GetPluginDependencies(id string) ([]api.PluginDependency, error)

GetPluginDependencies 获取插件依赖

func (*PluginManagerV3) GetPluginDependents added in v0.0.4

func (m *PluginManagerV3) GetPluginDependents(id string) []string

GetPluginDependents 获取依赖于指定插件的插件

func (*PluginManagerV3) GetPluginDocGenerator added in v0.0.4

func (m *PluginManagerV3) GetPluginDocGenerator() *docs.DocGenerator

GetPluginDocGenerator 获取插件文档生成器

func (*PluginManagerV3) GetPluginStatus added in v0.0.4

func (m *PluginManagerV3) GetPluginStatus(id string) (api.PluginStatus, error)

GetPluginStatus 获取插件状态

func (*PluginManagerV3) GetRegistry added in v0.0.4

func (m *PluginManagerV3) GetRegistry() registry.PluginRegistry

GetRegistry 获取插件注册表

func (*PluginManagerV3) InjectPlugin added in v0.0.4

func (m *PluginManagerV3) InjectPlugin(id string, plugin api.Plugin)

InjectPlugin 注入插件 用于测试

func (*PluginManagerV3) ListPlugins added in v0.0.4

func (m *PluginManagerV3) ListPlugins() []api.PluginInfo

ListPlugins 列出所有插件

func (*PluginManagerV3) LoadPlugin added in v0.0.4

func (m *PluginManagerV3) LoadPlugin(id string) (api.Plugin, error)

LoadPlugin 加载插件

func (*PluginManagerV3) RegisterCommunicationHandler added in v0.0.4

func (m *PluginManagerV3) RegisterCommunicationHandler(protocol sdk.CommunicationProtocol, handler sdk.CommunicationHandler)

RegisterCommunicationHandler 注册通信处理器

func (*PluginManagerV3) Start added in v0.0.4

func (m *PluginManagerV3) Start() error

Start 启动插件管理器

func (*PluginManagerV3) StartPlugin added in v0.0.4

func (m *PluginManagerV3) StartPlugin(id string) error

StartPlugin 启动插件

func (*PluginManagerV3) Stop added in v0.0.4

func (m *PluginManagerV3) Stop() error

Stop 停止插件管理器

func (*PluginManagerV3) StopPlugin added in v0.0.4

func (m *PluginManagerV3) StopPlugin(id string) error

StopPlugin 停止插件

func (*PluginManagerV3) UnloadPlugin added in v0.0.4

func (m *PluginManagerV3) UnloadPlugin(id string) error

UnloadPlugin 卸载插件

type PluginMetadata

type PluginMetadata struct {
	ID             string    // 插件ID
	Name           string    // 插件名称
	Version        string    // 插件版本
	Author         string    // 插件作者
	Description    string    // 插件描述
	Website        string    // 插件网站
	License        string    // 插件许可证
	Dependencies   []string  // 插件依赖
	Tags           []string  // 插件标签
	CreatedAt      time.Time // 创建时间
	UpdatedAt      time.Time // 更新时间
	Enabled        bool      // 是否启用
	Optional       bool      // 是否可选
	Path           string    // 插件路径
	EntryPoint     string    // 插件入口点
	IsolationLevel string    // 隔离级别
}

PluginMetadata 插件元数据

func LoadPluginMetadata

func LoadPluginMetadata(path string) (PluginMetadata, error)

LoadPluginMetadata 加载插件元数据

func NewPluginMetadata

func NewPluginMetadata(id, name, version string) PluginMetadata

NewPluginMetadata 创建插件元数据

func (*PluginMetadata) AddDependency

func (pm *PluginMetadata) AddDependency(id string)

AddDependency 添加依赖

func (*PluginMetadata) AddTag

func (pm *PluginMetadata) AddTag(tag string)

AddTag 添加标签

func (*PluginMetadata) HasDependency

func (pm *PluginMetadata) HasDependency(id string) bool

HasDependency 是否有依赖

func (*PluginMetadata) HasTag

func (pm *PluginMetadata) HasTag(tag string) bool

HasTag 是否有标签

func (*PluginMetadata) Update

func (pm *PluginMetadata) Update()

Update 更新元数据

type PluginSandbox

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

PluginSandbox 插件沙箱

func NewPluginSandbox

func NewPluginSandbox(pluginID string, isolator *PluginIsolator, options ...PluginSandboxOption) *PluginSandbox

NewPluginSandbox 创建一个新的插件沙箱

func (*PluginSandbox) Execute

func (ps *PluginSandbox) Execute(f func() error) error

Execute 在沙箱中执行函数

func (*PluginSandbox) ExecuteWithContext

func (ps *PluginSandbox) ExecuteWithContext(ctx context.Context, f func(context.Context) error) error

ExecuteWithContext 在沙箱中执行带上下文的函数

func (*PluginSandbox) GetID

func (ps *PluginSandbox) GetID() string

GetID 获取插件ID

func (*PluginSandbox) GetLastActivityTime

func (ps *PluginSandbox) GetLastActivityTime() time.Time

GetLastActivityTime 获取最后活动时间

func (*PluginSandbox) GetState

func (ps *PluginSandbox) GetState() PluginState

GetState 获取插件状态

func (*PluginSandbox) GetStats

func (ps *PluginSandbox) GetStats() map[string]interface{}

GetStats 获取统计信息

func (*PluginSandbox) GetUptime

func (ps *PluginSandbox) GetUptime() time.Duration

GetUptime 获取插件运行时间

func (*PluginSandbox) IsHealthy

func (ps *PluginSandbox) IsHealthy() bool

IsHealthy 检查插件是否健康

func (*PluginSandbox) IsIdle

func (ps *PluginSandbox) IsIdle(duration time.Duration) bool

IsIdle 检查插件是否空闲

func (*PluginSandbox) Pause

func (ps *PluginSandbox) Pause()

Pause 暂停插件沙箱

func (*PluginSandbox) Reset

func (ps *PluginSandbox) Reset()

Reset 重置插件沙箱

func (*PluginSandbox) Resume

func (ps *PluginSandbox) Resume()

Resume 恢复插件沙箱

func (*PluginSandbox) SetState

func (ps *PluginSandbox) SetState(state PluginState)

SetState 设置插件状态

func (*PluginSandbox) Stop

func (ps *PluginSandbox) Stop()

Stop 停止插件沙箱

type PluginSandboxOption

type PluginSandboxOption func(*PluginSandbox)

PluginSandboxOption 插件沙箱配置选项

func WithSandboxContext

func WithSandboxContext(ctx context.Context) PluginSandboxOption

WithSandboxContext 设置上下文

func WithSandboxLogger

func WithSandboxLogger(logger hclog.Logger) PluginSandboxOption

WithSandboxLogger 设置日志记录器

type PluginState

type PluginState int

PluginState 插件状态

const (
	PluginStateUnknown PluginState = iota
	PluginStateInitializing
	PluginStateRunning
	PluginStatePaused
	PluginStateStopped
	PluginStateError
)

预定义插件状态

func (PluginState) String

func (ps PluginState) String() string

String 返回插件状态的字符串表示

Jump to

Keyboard shortcuts

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