isolation

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: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BasicIsolationSandbox

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

BasicIsolationSandbox 基本隔离沙箱 提供基本的错误隔离和资源限制

func NewBasicIsolationSandbox

func NewBasicIsolationSandbox(id string, config api.IsolationConfig, logger hclog.Logger) *BasicIsolationSandbox

NewBasicIsolationSandbox 创建一个新的基本隔离沙箱

func (*BasicIsolationSandbox) Execute

func (s *BasicIsolationSandbox) Execute(f func() error) error

Execute 执行函数

func (*BasicIsolationSandbox) ExecuteWithContext

func (s *BasicIsolationSandbox) ExecuteWithContext(ctx context.Context, f func(context.Context) error) error

ExecuteWithContext 执行带上下文的函数

func (*BasicIsolationSandbox) ExecuteWithTimeout

func (s *BasicIsolationSandbox) ExecuteWithTimeout(timeout time.Duration, f func() error) error

ExecuteWithTimeout 执行带超时的函数

func (*BasicIsolationSandbox) GetConfig

func (s *BasicIsolationSandbox) GetConfig() api.IsolationConfig

GetConfig 获取隔离配置

func (*BasicIsolationSandbox) GetID

func (s *BasicIsolationSandbox) GetID() string

GetID 获取沙箱ID

func (*BasicIsolationSandbox) GetStats

func (s *BasicIsolationSandbox) GetStats() map[string]interface{}

GetStats 获取统计信息

func (*BasicIsolationSandbox) IsHealthy

func (s *BasicIsolationSandbox) IsHealthy() bool

IsHealthy 检查沙箱是否健康

func (*BasicIsolationSandbox) Pause

func (s *BasicIsolationSandbox) Pause() error

Pause 暂停沙箱

func (*BasicIsolationSandbox) Resume

func (s *BasicIsolationSandbox) Resume() error

Resume 恢复沙箱

func (*BasicIsolationSandbox) Stop

func (s *BasicIsolationSandbox) Stop() error

Stop 停止沙箱

type CompleteIsolationSandbox

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

CompleteIsolationSandbox 完全隔离沙箱 提供最高级别的隔离,包括容器隔离

func NewCompleteIsolationSandbox

func NewCompleteIsolationSandbox(id string, config api.IsolationConfig, logger hclog.Logger) *CompleteIsolationSandbox

NewCompleteIsolationSandbox 创建一个新的完全隔离沙箱

func (*CompleteIsolationSandbox) Execute

func (s *CompleteIsolationSandbox) Execute(f func() error) error

Execute 执行函数

func (*CompleteIsolationSandbox) ExecuteWithContext

func (s *CompleteIsolationSandbox) ExecuteWithContext(ctx context.Context, f func(context.Context) error) error

ExecuteWithContext 执行带上下文的函数

func (*CompleteIsolationSandbox) ExecuteWithTimeout

func (s *CompleteIsolationSandbox) ExecuteWithTimeout(timeout time.Duration, f func() error) error

ExecuteWithTimeout 执行带超时的函数

func (*CompleteIsolationSandbox) GetConfig

GetConfig 获取隔离配置

func (*CompleteIsolationSandbox) GetID

func (s *CompleteIsolationSandbox) GetID() string

GetID 获取沙箱ID

func (*CompleteIsolationSandbox) GetStats

func (s *CompleteIsolationSandbox) GetStats() map[string]interface{}

GetStats 获取统计信息

func (*CompleteIsolationSandbox) IsHealthy

func (s *CompleteIsolationSandbox) IsHealthy() bool

IsHealthy 检查沙箱是否健康

func (*CompleteIsolationSandbox) Pause

func (s *CompleteIsolationSandbox) Pause() error

Pause 暂停沙箱

func (*CompleteIsolationSandbox) Resume

func (s *CompleteIsolationSandbox) Resume() error

Resume 恢复沙箱

func (*CompleteIsolationSandbox) Stop

func (s *CompleteIsolationSandbox) Stop() error

Stop 停止沙箱

type DefaultPluginIsolator

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

DefaultPluginIsolator 默认插件隔离器实现

func NewPluginIsolator

func NewPluginIsolator(logger hclog.Logger) *DefaultPluginIsolator

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

func (*DefaultPluginIsolator) Close

func (i *DefaultPluginIsolator) Close() error

Close 关闭隔离器

func (*DefaultPluginIsolator) CreateSandbox

func (i *DefaultPluginIsolator) CreateSandbox(id string, config api.IsolationConfig) (PluginSandbox, error)

CreateSandbox 创建沙箱

func (*DefaultPluginIsolator) DestroySandbox

func (i *DefaultPluginIsolator) DestroySandbox(id string) error

DestroySandbox 销毁沙箱

func (*DefaultPluginIsolator) GetSandbox

func (i *DefaultPluginIsolator) GetSandbox(id string) (PluginSandbox, bool)

GetSandbox 获取沙箱

func (*DefaultPluginIsolator) ListSandboxes

func (i *DefaultPluginIsolator) ListSandboxes() []string

ListSandboxes 列出所有沙箱

type IsolationLevel

type IsolationLevel string

IsolationLevel 定义了隔离级别

const (
	// IsolationLevelNone 无隔离
	IsolationLevelNone IsolationLevel = "none"

	// IsolationLevelBasic 基本隔离
	// 提供基本的错误隔离和资源限制
	IsolationLevelBasic IsolationLevel = "basic"

	// IsolationLevelStrict 严格隔离
	// 提供更严格的隔离,包括进程隔离
	IsolationLevelStrict IsolationLevel = "strict"

	// IsolationLevelComplete 完全隔离
	// 提供最高级别的隔离,包括容器隔离
	IsolationLevelComplete IsolationLevel = "complete"
)

type NoIsolationSandbox

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

NoIsolationSandbox 无隔离沙箱 不提供任何隔离,直接执行函数

func NewNoIsolationSandbox

func NewNoIsolationSandbox(id string, config api.IsolationConfig, logger hclog.Logger) *NoIsolationSandbox

NewNoIsolationSandbox 创建一个新的无隔离沙箱

func (*NoIsolationSandbox) Execute

func (s *NoIsolationSandbox) Execute(f func() error) error

Execute 执行函数

func (*NoIsolationSandbox) ExecuteWithContext

func (s *NoIsolationSandbox) ExecuteWithContext(ctx context.Context, f func(context.Context) error) error

ExecuteWithContext 执行带上下文的函数

func (*NoIsolationSandbox) ExecuteWithTimeout

func (s *NoIsolationSandbox) ExecuteWithTimeout(timeout time.Duration, f func() error) error

ExecuteWithTimeout 执行带超时的函数

func (*NoIsolationSandbox) GetConfig

func (s *NoIsolationSandbox) GetConfig() api.IsolationConfig

GetConfig 获取隔离配置

func (*NoIsolationSandbox) GetID

func (s *NoIsolationSandbox) GetID() string

GetID 获取沙箱ID

func (*NoIsolationSandbox) GetStats

func (s *NoIsolationSandbox) GetStats() map[string]interface{}

GetStats 获取统计信息

func (*NoIsolationSandbox) IsHealthy

func (s *NoIsolationSandbox) IsHealthy() bool

IsHealthy 检查沙箱是否健康

func (*NoIsolationSandbox) Pause

func (s *NoIsolationSandbox) Pause() error

Pause 暂停沙箱

func (*NoIsolationSandbox) Resume

func (s *NoIsolationSandbox) Resume() error

Resume 恢复沙箱

func (*NoIsolationSandbox) Stop

func (s *NoIsolationSandbox) Stop() error

Stop 停止沙箱

type PluginIsolator

type PluginIsolator interface {
	// CreateSandbox 创建沙箱
	// id: 沙箱ID
	// config: 隔离配置
	// 返回: 沙箱和错误
	CreateSandbox(id string, config api.IsolationConfig) (PluginSandbox, error)

	// DestroySandbox 销毁沙箱
	// id: 沙箱ID
	// 返回: 错误
	DestroySandbox(id string) error

	// GetSandbox 获取沙箱
	// id: 沙箱ID
	// 返回: 沙箱和是否存在
	GetSandbox(id string) (PluginSandbox, bool)

	// ListSandboxes 列出所有沙箱
	// 返回: 沙箱ID列表
	ListSandboxes() []string

	// Close 关闭隔离器
	// 返回: 错误
	Close() error
}

PluginIsolator 插件隔离器接口 负责提供插件的隔离环境

type PluginSandbox

type PluginSandbox interface {
	// GetID 获取沙箱ID
	// 返回: 沙箱ID
	GetID() string

	// GetConfig 获取隔离配置
	// 返回: 隔离配置
	GetConfig() api.IsolationConfig

	// Execute 执行函数
	// f: 要执行的函数
	// 返回: 错误
	Execute(f func() error) error

	// ExecuteWithContext 执行带上下文的函数
	// ctx: 上下文
	// f: 要执行的函数
	// 返回: 错误
	ExecuteWithContext(ctx context.Context, f func(context.Context) error) error

	// ExecuteWithTimeout 执行带超时的函数
	// timeout: 超时时间
	// f: 要执行的函数
	// 返回: 错误
	ExecuteWithTimeout(timeout time.Duration, f func() error) error

	// Pause 暂停沙箱
	// 返回: 错误
	Pause() error

	// Resume 恢复沙箱
	// 返回: 错误
	Resume() error

	// Stop 停止沙箱
	// 返回: 错误
	Stop() error

	// IsHealthy 检查沙箱是否健康
	// 返回: 是否健康
	IsHealthy() bool

	// GetStats 获取统计信息
	// 返回: 统计信息
	GetStats() map[string]interface{}
}

PluginSandbox 插件沙箱接口 提供隔离的执行环境

type ResourceMonitor

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

ResourceMonitor 资源监控器 监控插件沙箱的资源使用情况

func NewResourceMonitor

func NewResourceMonitor(logger hclog.Logger) *ResourceMonitor

NewResourceMonitor 创建一个新的资源监控器

func (*ResourceMonitor) GetResourceUsage

func (m *ResourceMonitor) GetResourceUsage(id string) (ResourceUsage, bool)

GetResourceUsage 获取资源使用情况

func (*ResourceMonitor) GetSystemResourceUsage

func (m *ResourceMonitor) GetSystemResourceUsage() map[string]interface{}

GetSystemResourceUsage 获取系统资源使用情况

func (*ResourceMonitor) RegisterSandbox

func (m *ResourceMonitor) RegisterSandbox(sandbox PluginSandbox)

RegisterSandbox 注册沙箱

func (*ResourceMonitor) Stop

func (m *ResourceMonitor) Stop()

Stop 停止监控

func (*ResourceMonitor) UnregisterSandbox

func (m *ResourceMonitor) UnregisterSandbox(id string)

UnregisterSandbox 注销沙箱

type ResourceUsage

type ResourceUsage struct {
	// CPU使用率
	CPUPercent float64

	// 内存使用量
	MemoryUsage uint64

	// 内存使用率
	MemoryPercent float32

	// 磁盘读取字节数
	DiskReadBytes uint64

	// 磁盘写入字节数
	DiskWriteBytes uint64

	// 网络接收字节数
	NetRecvBytes uint64

	// 网络发送字节数
	NetSentBytes uint64

	// 线程数
	NumThreads int32

	// 文件描述符数
	NumFDs int32

	// 上次更新时间
	LastUpdate time.Time
}

ResourceUsage 资源使用情况

type StrictIsolationSandbox

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

StrictIsolationSandbox 严格隔离沙箱 提供进程级别的隔离

func NewStrictIsolationSandbox

func NewStrictIsolationSandbox(id string, config api.IsolationConfig, logger hclog.Logger) *StrictIsolationSandbox

NewStrictIsolationSandbox 创建一个新的严格隔离沙箱

func (*StrictIsolationSandbox) Execute

func (s *StrictIsolationSandbox) Execute(f func() error) error

Execute 执行函数

func (*StrictIsolationSandbox) ExecuteWithContext

func (s *StrictIsolationSandbox) ExecuteWithContext(ctx context.Context, f func(context.Context) error) error

ExecuteWithContext 执行带上下文的函数

func (*StrictIsolationSandbox) ExecuteWithTimeout

func (s *StrictIsolationSandbox) ExecuteWithTimeout(timeout time.Duration, f func() error) error

ExecuteWithTimeout 执行带超时的函数

func (*StrictIsolationSandbox) GetConfig

GetConfig 获取隔离配置

func (*StrictIsolationSandbox) GetID

func (s *StrictIsolationSandbox) GetID() string

GetID 获取沙箱ID

func (*StrictIsolationSandbox) GetStats

func (s *StrictIsolationSandbox) GetStats() map[string]interface{}

GetStats 获取统计信息

func (*StrictIsolationSandbox) IsHealthy

func (s *StrictIsolationSandbox) IsHealthy() bool

IsHealthy 检查沙箱是否健康

func (*StrictIsolationSandbox) Pause

func (s *StrictIsolationSandbox) Pause() error

Pause 暂停沙箱

func (*StrictIsolationSandbox) Resume

func (s *StrictIsolationSandbox) Resume() error

Resume 恢复沙箱

func (*StrictIsolationSandbox) Stop

func (s *StrictIsolationSandbox) Stop() error

Stop 停止沙箱

Jump to

Keyboard shortcuts

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