Documentation
¶
Index ¶
- Constants
- Variables
- func NewLuaVM() *lua.LState
- func NewYaegiInterpreter() *interp.Interpreter
- type Command
- type Commands
- type DefaultPlugin
- type EmbedPlugin
- type GoMalPlugin
- type LuaParam
- type LuaPlugin
- type LuaVMPool
- type LuaVMWrapper
- type MalLevel
- type MalManager
- func (mm *MalManager) GetAllEmbeddedPlugins() map[string]*EmbedPlugin
- func (mm *MalManager) GetAllExternalPlugins() map[string]Plugin
- func (mm *MalManager) GetEmbedPlugin(name string) (*EmbedPlugin, bool)
- func (mm *MalManager) GetExternalPlugin(name string) (Plugin, bool)
- func (mm *MalManager) GetGlobalPlugin(name string) (*DefaultPlugin, bool)
- func (mm *MalManager) GetGlobalPlugins() []*DefaultPlugin
- func (mm *MalManager) GetLoadedMals() []string
- func (mm *MalManager) GetPlugin(name string) (Plugin, bool)
- func (mm *MalManager) GetPluginManifests() []*MalManiFest
- func (mm *MalManager) LoadExternalMal(manifest *MalManiFest) (Plugin, error)
- func (mm *MalManager) ReloadExternalMal(malName string) error
- func (mm *MalManager) RemoveExternalMal(malName string) error
- type MalManiFest
- type Plugin
Constants ¶
View Source
const ( LuaInternal = iota LuaFlag LuaArg LuaReverse )
View Source
const ( LuaScript = "lua" GoPlugin = "go" EmbedType = "embed" )
View Source
const CMDSeq = ":"
Variables ¶
View Source
var ( ReservedARGS = "args" ReservedCMDLINE = "cmdline" ReservedCMD = "cmd" ReservedWords = []string{ReservedCMDLINE, ReservedARGS, ReservedCMD} ProtoPackage = []string{"implantpb", "clientpb", "modulepb"} )
Functions ¶
func NewYaegiInterpreter ¶
func NewYaegiInterpreter() *interp.Interpreter
Types ¶
type DefaultPlugin ¶
type DefaultPlugin struct {
*MalManiFest
Enable bool
Content []byte
Path string
CMDs Commands
Events map[intermediate.EventCondition]intermediate.OnEventFunc
}
func LoadGlobalLuaPlugin ¶
func LoadGlobalLuaPlugin() []*DefaultPlugin
func NewPlugin ¶
func NewPlugin(manifest *MalManiFest) (*DefaultPlugin, error)
func (*DefaultPlugin) Commands ¶
func (plug *DefaultPlugin) Commands() Commands
func (*DefaultPlugin) GetEvents ¶
func (plug *DefaultPlugin) GetEvents() map[intermediate.EventCondition]intermediate.OnEventFunc
func (*DefaultPlugin) Manifest ¶
func (plug *DefaultPlugin) Manifest() *MalManiFest
type EmbedPlugin ¶
type EmbedPlugin struct {
*LuaPlugin
// 嵌入式插件特有的信息
Level MalLevel
FS embed.FS
RootPath string // 在embed.FS中的根路径,如"community"、"professional"等
}
EmbedPlugin 嵌入式Lua插件,直接实现Plugin接口
func NewEmbedPlugin ¶
func NewEmbedPlugin(malPath, malName string, level MalLevel) (*EmbedPlugin, error)
NewEmbedPlugin 创建嵌入式插件
func (*EmbedPlugin) FileExists ¶
func (plug *EmbedPlugin) FileExists(filename string) bool
FileExists 检查文件是否存在
func (*EmbedPlugin) GetFileContent ¶
func (plug *EmbedPlugin) GetFileContent(filename string) ([]byte, bool)
GetFileContent 获取文件内容 - 直接从embed.FS读取
func (*EmbedPlugin) ReadDir ¶
func (plug *EmbedPlugin) ReadDir(dirname string) ([]fs.DirEntry, error)
ReadDir 读取目录内容
func (*EmbedPlugin) Run ¶
func (plug *EmbedPlugin) Run() error
type GoMalPlugin ¶
type GoMalPlugin struct {
*DefaultPlugin
Interpreter *interp.Interpreter
}
func NewGoMalPlugin ¶
func NewGoMalPlugin(manifest *MalManiFest) (*GoMalPlugin, error)
func (*GoMalPlugin) Destroy ¶
func (plug *GoMalPlugin) Destroy() error
func (*GoMalPlugin) Run ¶
func (plug *GoMalPlugin) Run() error
type LuaPlugin ¶
type LuaPlugin struct {
*DefaultPlugin
// contains filtered or unexported fields
}
func NewLuaMalPlugin ¶
func NewLuaMalPlugin(manifest *MalManiFest) (*LuaPlugin, error)
func (*LuaPlugin) Acquire ¶
func (plug *LuaPlugin) Acquire() (*LuaVMWrapper, error)
func (*LuaPlugin) Release ¶
func (plug *LuaPlugin) Release(wrapper *LuaVMWrapper)
type LuaVMPool ¶
type LuaVMPool struct {
// contains filtered or unexported fields
}
func NewLuaVMPool ¶
func (*LuaVMPool) AcquireVM ¶
func (p *LuaVMPool) AcquireVM() (*LuaVMWrapper, error)
func (*LuaVMPool) ReleaseVM ¶
func (p *LuaVMPool) ReleaseVM(wrapper *LuaVMWrapper)
type LuaVMWrapper ¶
func NewLuaVMWrapper ¶
func NewLuaVMWrapper() *LuaVMWrapper
func (*LuaVMWrapper) Lock ¶
func (w *LuaVMWrapper) Lock()
func (*LuaVMWrapper) Unlock ¶
func (w *LuaVMWrapper) Unlock()
type MalManager ¶
type MalManager struct {
// contains filtered or unexported fields
}
MalManager 统一的mal插件管理器,分别管理嵌入式和外部插件
func GetGlobalMalManager ¶
func GetGlobalMalManager() *MalManager
GetGlobalMalManager 获取全局mal管理器(单例)
func (*MalManager) GetAllEmbeddedPlugins ¶
func (mm *MalManager) GetAllEmbeddedPlugins() map[string]*EmbedPlugin
GetAllEmbeddedPlugins 获取所有嵌入式插件
func (*MalManager) GetAllExternalPlugins ¶
func (mm *MalManager) GetAllExternalPlugins() map[string]Plugin
GetAllExternalPlugins 获取所有外部插件
func (*MalManager) GetEmbedPlugin ¶
func (mm *MalManager) GetEmbedPlugin(name string) (*EmbedPlugin, bool)
GetEmbedPlugin 获取指定名称的嵌入式插件
func (*MalManager) GetExternalPlugin ¶
func (mm *MalManager) GetExternalPlugin(name string) (Plugin, bool)
GetExternalPlugin 获取指定名称的外部插件
func (*MalManager) GetGlobalPlugin ¶
func (mm *MalManager) GetGlobalPlugin(name string) (*DefaultPlugin, bool)
GetGlobalPlugin 获取指定名称的全局插件
func (*MalManager) GetGlobalPlugins ¶
func (mm *MalManager) GetGlobalPlugins() []*DefaultPlugin
GetGlobalPlugins 获取所有全局插件
func (*MalManager) GetLoadedMals ¶
func (mm *MalManager) GetLoadedMals() []string
GetLoadedMals 获取所有已加载的插件列表
func (*MalManager) GetPlugin ¶
func (mm *MalManager) GetPlugin(name string) (Plugin, bool)
GetPlugin 获取指定名称的插件(先查找外部,再查找嵌入式)
func (*MalManager) GetPluginManifests ¶
func (mm *MalManager) GetPluginManifests() []*MalManiFest
GetPluginManifests 获取所有外部插件清单
func (*MalManager) LoadExternalMal ¶
func (mm *MalManager) LoadExternalMal(manifest *MalManiFest) (Plugin, error)
LoadExternalMal 加载单个外部mal插件
func (*MalManager) ReloadExternalMal ¶
func (mm *MalManager) ReloadExternalMal(malName string) error
ReloadExternalMal 重新加载指定的外部mal插件
func (*MalManager) RemoveExternalMal ¶
func (mm *MalManager) RemoveExternalMal(malName string) error
RemoveExternalMal 移除指定的外部mal插件
type MalManiFest ¶
type MalManiFest struct {
Name string `json:"name" yaml:"name"`
Type string `json:"type" yaml:"type"` // lua, tcl
Author string `json:"author" yaml:"author"`
Version string `json:"version" yaml:"version"`
EntryFile string `json:"entry" yaml:"entry"`
Lib bool `json:"lib" yaml:"lib"`
DependModule []string `json:"depend_module" yaml:"depend_modules"`
DependArmory []string `json:"depend_armory" yaml:"depend_armory"`
}
func GetPluginManifest ¶
func GetPluginManifest() []*MalManiFest
func LoadMalManiFest ¶
func LoadMalManiFest(filename string) (*MalManiFest, error)
func ParseMalManifest ¶
func ParseMalManifest(data []byte) (*MalManiFest, error)
type Plugin ¶
type Plugin interface {
Run() error
Manifest() *MalManiFest
Commands() Commands
Destroy() error
GetEvents() map[intermediate.EventCondition]intermediate.OnEventFunc
}
Click to show internal directories.
Click to hide internal directories.