yak

package
v1.4.4-alpha1202-diff-... Latest Latest
Warning

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

Go to latest
Published: Dec 2, 2025 License: AGPL-3.0 Imports: 122 Imported by: 14

Documentation

Index

Constants

View Source
const (
	// func mirrorHTTPFlow(isHttps, url, request, response, body)
	//     mirror hijacked by filtered http flows
	HOOK_MirrorFilteredHTTPFlow = "mirrorFilteredHTTPFlow"

	// func mirrorHTTPFlow(isHttps, url, request, response, body)
	//     mirror hijacked all
	HOOK_MirrorHTTPFlow = "mirrorHTTPFlow"

	// func mirrorNewWebsite(isHttps, url, request, response, body)
	HOOK_MirrorNewWebsite = "mirrorNewWebsite" // schema + addr

	// func mirrorNewWebsitePath(isHttps, url, request, response, body)
	HOOK_MirrorNewWebsitePath = "mirrorNewWebsitePath" // schema + addr + path (remove params)

	// func mirrorNewWebsitePathParams(isHttps, url, request, response, body)
	HOOK_MirrorNewWebsitePathParams = "mirrorNewWebsitePathParams" // schema + addr + path + param_names

	// func hijackHTTPRequest(isHttps, url, request, forward/*func(modified []byte)*/, drop /*func()*/)
	HOOK_HijackHTTPRequest = "hijackHTTPRequest"

	// func hijackHTTPRequest(isHttps, url, response, forward/*func(modified []byte)*/, drop /*func()*/)
	HOOK_HijackHTTPResponse = "hijackHTTPResponse"
	// func hijackHTTPRequest(isHttps, url, request, response, forward/*func(modified []byte)*/, drop /*func()*/)
	HOOK_HijackHTTPResponseEx = "hijackHTTPResponseEx"

	// func mockHTTPRequest(isHttps, url, request, mockResponse /*func(rsp interface{})*/)
	HOOK_MockHTTPRequest = "mockHTTPRequest"

	// func hijackSaveHTTPFlow(record *httpFlow, forward func(*httpFlow), drop func()) return (*httpFlow)
	HOOK_hijackSaveHTTPFlow = "hijackSaveHTTPFlow"

	// func handle(r *fp.MatchResult)
	HOOK_PortScanHandle = "handle"

	// func execNuclei(target)
	HOOK_NucleiScanHandle = "execNuclei"

	HOOK_NaslScanHandle           = "execNasl"
	HOOK_LoadNaslScriptByNameFunc = "loadNaslScriptByNameFunc"

	// beforeRequest, afterRequest
	HOOK_BeforeRequest = "beforeRequest"
	HOOK_AfterRequest  = "afterRequest"

	HOOK_CLAER = "clear"

	// httpflow analyze
	HOOK_Analyze_HTTPFlow        = "analyzeHTTPFlow"
	HOOK_OnAnalyzeHTTPFlowFinish = "onAnalyzeHTTPFlowFinish"
)
View Source
const (
	DefaultStaleQueueSize = 1000  // 默认保留1000个已完成的trace
	MaxStaleQueueSize     = 10000 // 最大保留10000个已完成的trace
)

默认 stale 队列大小

Variables

View Source
var (
	// Additional With options
	WithCoordinatorId = func(id string) AIAgentOption {
		return func(ag *Agent) error {
			ag.CoordinatorId = id
			return nil
		}
	}

	WithAiAgentEventHandler = func(handler func(e *schema.AiOutputEvent)) AIAgentOption {
		return func(ag *Agent) error {
			ag.AgentEventHandler = handler
			return nil
		}
	}
	WithDisallowRequireForUserPrompt = aicommon.WithDisallowRequireForUserPrompt
	WithAICallback                   = aicommon.WithAICallback
	WithPromptContextProvider        = aid.WithPromptContextProvider
	WithResultHandler                = aid.WithResultHandler

	// aitools
	AllYakScriptTools = yakscripttools.GetAllYakScriptAiTools
)
View Source
var AIAgentExport = map[string]any{

	"ExecuteForge": ExecuteForge,

	"CreateForge":         NewForgeBlueprint,
	"NewExecutor":         NewForgeExecutor,
	"NewExecutorFromJson": NewExecutorFromJson,
	"CreateLiteForge":     NewLiteForge,

	"planAICallback": aicommon.WithQualityPriorityAICallback,
	"taskAICallback": aicommon.WithSpeedPriorityAICallback,
	"aiCallback":     aicommon.WithAICallback,

	"liteForgePrompt":          aiforge.WithLiteForge_Prompt,
	"liteForgeOutputSchema":    aiforge.WithLiteForge_OutputSchema,
	"liteForgedRequireParams":  aiforge.WithLiteForge_RequireParams,
	"liteForgeOutputSchemaRaw": aiforge.WithLiteForge_OutputSchemaRaw,

	"tools":                 aicommon.WithTools,
	"forgeTools":            aiforge.WithTools,
	"initPrompt":            aiforge.WithInitializePrompt,
	"initializePrompt":      aiforge.WithInitializePrompt,
	"persistentPrompt":      aiforge.WithPersistentPrompt,
	"persistentPromptForge": aiforge.WithPersistentPrompt,
	"resultPrompt":          aiforge.WithResultPrompt,
	"resultPromptForge":     aiforge.WithResultPrompt,
	"plan":                  aid.WithPlanMocker,
	"forgePlanMocker":       aiforge.WithPlanMocker,

	"resultHandlerForge":   aiforge.WithResultHandler,
	"toolKeywords":         aiforge.WithToolKeywords,
	"originYaklangCliCode": aiforge.WithOriginYaklangCliCode,

	"offsetSeq":                    aicommon.WithSequence,
	"tool":                         aicommon.WithTool,
	"agreeAuto":                    aicommon.WithAgreeAuto,
	"agreeYOLO":                    aicommon.WithAgreeYOLO,
	"agreePolicyAI":                aicommon.WithAIAgree,
	"agreeManual":                  aicommon.WithAgreeManual,
	"agreePolicy":                  aicommon.WithAgreePolicy,
	"extendedActionCallback":       aicommon.WithExtendedActionCallback,
	"resultHandler":                aid.WithResultHandler,
	"forgeName":                    WithForgeName,
	"context":                      WithContext,
	"extendAIDOptions":             WithExtendAICommonOptions,
	"disallowRequireForUserPrompt": aicommon.WithDisallowRequireForUserPrompt,
	"manualAssistantCallback":      aicommon.WithManualAssistantCallback,
	"allowRequireForUserInteract":  aicommon.WithAllowRequireForUserInteract,
	"coordinatorAICallback":        aicommon.WithQualityPriorityAICallback,
	"systemFileOperator":           aicommon.WithSystemFileOperator,
	"omniSearchTool":               aicommon.WithOmniSearchTool,
	"debugPrompt":                  aicommon.WithDebugPrompt,
	"debug":                        aicommon.WithDebug,
	"appendPersistentMemory":       aicommon.WithAppendPersistentMemory,
	"timelineContentLimit":         aicommon.WithTimelineContentLimit,
	"disableToolUse":               aicommon.WithDisableToolUse,
	"aiAutoRetry":                  aicommon.WithAIAutoRetry,
	"aiTransactionRetry":           aicommon.WithAITransactionRetry,
	"disableOutputType":            aicommon.WithDisableOutputEvent,

	"ExtractPlan":               aid.ExtractPlan,
	"ExtractAction":             aicommon.ExtractAction,
	"GetDefaultContextProvider": aid.GetDefaultContextProvider,
	"AllYakScriptAiTools":       AllYakScriptTools,
	"UpdateYakScriptMetaData":   genmetadata.UpdateYakScriptMetaData,
	"ParseYakScriptToAiTools":   yakscripttools.LoadYakScriptToAiTools,
}

exports to yaklang

View Source
var AIEngineExports map[string]interface{}
View Source
var (
	CRYPTO_KEY_SIZE = 16
)
View Source
var DEFAULT_FORGE_HANDLE_NAME = "__DEFAULT_FORGE_HANDLE__"
View Source
var DEFAULT_INIT_PROMPT_NAME = "__INIT_PROMPT__"
View Source
var DEFAULT_PERSISTENT_PROMPT_NAME = "__PERSISTENT_PROMPT__"
View Source
var DEFAULT_PLAN_PROMPT_NAME = "__PLAN_PROMPT__"
View Source
var DEFAULT_RESULT_PROMPT_NAME = "__RESULT_PROMPT__"
View Source
var EvalExports = map[string]interface{}{
	"Eval":            QuickEvalWithoutContext,
	"LoadVarFromFile": LoadingVariableFrom,
	"Import":          ImportVarFromFile,
	"IsYakFunc":       yaklib.IsYakFunction,
	"params":          setYakEvalParams,
	"recursive":       setYakBatchImportRecursiveParams,
}
View Source
var GlobalEvalExports = map[string]interface{}{

	"import": ImportVarFromFile,
}
View Source
var HOOK_AI_FORGE = "forgeHandle"
View Source
var HooksExports = map[string]interface{}{
	"NewManager":                   NewYakToCallerManager,
	"NewMixPluginCaller":           NewMixPluginCaller,
	"NewMixPluginCallerWithFilter": NewMixPluginCallerWithFilter,
	"RemoveYakitPluginByName":      removeScriptByNameCtx,
	"LoadYakitPluginContext":       loadScriptCtx,
	"LoadYakitPlugin":              loadScript,
	"LoadYakitPluginByName":        loadScriptByName,
	"CallYakitPluginFunc":          CallYakitPluginFunc,
}
View Source
var RagExports = map[string]interface{}{
	"Get":           rag.Get,
	"GetCollection": rag.Get,

	"embeddingHandle": _embeddingHandle,

	"DeleteCollection":  _deleteCollection,
	"DeleteRAG":         _deleteRAG,
	"ListCollection":    _listCollection,
	"ListRAG":           _listRAG,
	"GetCollectionInfo": _getCollectionInfo,

	"HasCollection": _hasCollection,

	"Query":           rag.QueryYakitProfile,
	"queryLimit":      rag.WithRAGLimit,
	"queryType":       rag.WithRAGDocumentType,
	"queryCollection": rag.WithRAGCollectionName,
	"queryStatus":     rag.WithRAGQueryStatus,
	"queryEnhance":    rag.WithRAGEnhance,
	"queryCtx":        rag.WithRAGCtx,
	"queryConcurrent": rag.WithRAGConcurrent,
	"queryScoreLimit": rag.WithRAGCollectionScoreLimit,

	"AddDocument":    _addDocument,
	"DeleteDocument": _deleteDocument,
	"QueryDocuments": _queryDocuments,

	"ragForceNew":       rag.WithForceNew,
	"ragDescription":    rag.WithDescription,
	"ragEmbeddingModel": rag.WithEmbeddingModel,
	"ragModelDimension": rag.WithModelDimension,
	"ragCosineDistance": rag.WithCosineDistance,
	"ragHNSWParameters": rag.WithHNSWParameters,

	"docMetadata":        rag.WithDocumentMetadataKeyValue,
	"docRawMetadata":     rag.WithDocumentRawMetadata,
	"NewRagDatabase":     rag.NewVectorStoreDatabase,
	"NewTempRagDatabase": _newTempRagDatabase,
	"EnableMockMode":     _enableMockMode,

	"ctx":             aiforge.WithAnalyzeContext,
	"log":             aiforge.WithAnalyzeLog,
	"statusCard":      aiforge.WithAnalyzeStatusCard,
	"extraPrompt":     aiforge.WithExtraPrompt,
	"entryLength":     aiforge.RefineWithKnowledgeEntryLength,
	"chunkSize":       chunkmaker.WithChunkSize,
	"khopk":           rag.WithKHopK,
	"khopLimit":       rag.WithKHopLimit,
	"khopkMin":        rag.WithKHopKMin,
	"khopkMax":        rag.WithKHopKMax,
	"buildQuery":      rag.WithKHopRagQuery,
	"buildFilter":     rag.WithKHopStartFilter,
	"pathDepth":       rag.WithKHopPathDepth,
	"getEntityFilter": schema.SimpleBuildEntityFilter,

	"BuildCollectionFromFile":   aiforge.BuildKnowledgeFromFile,
	"BuildCollectionFromReader": aiforge.BuildKnowledgeFromReader,
	"BuildCollectionFromRaw":    aiforge.BuildKnowledgeFromBytes,

	"BuildKnowledgeFromEntityRepos": aiforge.BuildKnowledgeFromEntityReposByName,

	"BuildIndexKnowledgeFromFile": BuildIndexKnowledgeFromFile,

	"Import":             rag.ImportRAG,
	"db":                 rag.WithDB,
	"importOverwrite":    rag.WithExportOverwriteExisting,
	"importName":         rag.WithRAGCollectionName,
	"importRebuildGraph": rag.WithImportRebuildHNSWIndex,
	"documentHandler":    rag.WithExportDocumentHandler,
	"progressHandler":    rag.WithExportOnProgressHandler,
	"aiServiceType":      rag.WithAIServiceType,
	"aiService":          rag.WithAIService,

	"Export":             rag.ExportRAG,
	"noHNSWGraph":        rag.WithExportNoHNSWIndex,
	"noMetadata":         rag.WithExportNoMetadata,
	"noOriginInput":      rag.WithExportNoOriginInput,
	"onlyPQCode":         rag.WithExportOnlyPQCode,
	"noEntityRepository": _noEntityRepository,
	"noKnowledgeBase":    _noKnowledgeBase,
	"ragImportFile":      rag.WithImportFile,
}

导出的公共函数

View Source
var SandboxExports = map[string]any{
	"Create":  NewSandbox,
	"library": WithSandbox_ExternalLib,
}
View Source
var YAK_TEMPLATE_NUCLEI_EXECUTOR string

Functions

func AIForgeExec

func AIForgeExec(forgeName string, forgeParams any, opts ...aicommon.ConfigOption) (any, error)

func BindAIConfigToEngine

func BindAIConfigToEngine(nIns *antlr4yak.Engine, agentOptions ...any)

func BindYakitPluginContextToEngine added in v1.2.3

func BindYakitPluginContextToEngine(nIns *antlr4yak.Engine, pluginContext *YakitPluginContext)

func BuildIndexKnowledgeFromFile

func BuildIndexKnowledgeFromFile(kbName string, path string, option ...any) error

func BuildLiteForgeCreateOption

func BuildLiteForgeCreateOption(anyOptions ...any) []aiforge.LiteForgeOption

func BuildLiteForgeExecOption

func BuildLiteForgeExecOption(anyOptions ...any) []any

func CallYakitPluginFunc

func CallYakitPluginFunc(scriptName string, hookName string) (interface{}, error)

func ClearHelper added in v1.2.9

func ClearHelper(helper *yakdoc.DocumentHelper)

func DefaultAfterRequestCallArgumentHook

func DefaultAfterRequestCallArgumentHook(name string, numIn int, args []any) []any

func DefaultBeforeRequestCallArgumentHook

func DefaultBeforeRequestCallArgumentHook(name string, numIn int, args []any) []any

func DocumentHelperWithVerboseInfo added in v1.3.1

func DocumentHelperWithVerboseInfo(funcMap map[string]any) *yakdoc.DocumentHelper

func EngineToDocumentHelperWithVerboseInfo

func EngineToDocumentHelperWithVerboseInfo(engine *antlr4yak.Engine) *yakdoc.DocumentHelper

func EngineToLibDocuments

func EngineToLibDocuments(engine *antlr4yak.Engine) []yakdocument.LibDoc

! 老接口

func Execute added in v1.2.3

func Execute(code string, params ...map[string]any) (*antlr4yak.Engine, error)

func ExecuteForge

func ExecuteForge(forgeName string, i any, iopts ...any) (any, error)

func FeedbackFactory

func FeedbackFactory(db *gorm.DB, caller func(result *ypb.ExecResult) error, saveToDb bool, yakScriptName string) func(i interface{}, items ...interface{})

func Fuzz_WithAllHotPatch

func Fuzz_WithAllHotPatch(ctx context.Context, code string) []mutate.FuzzConfigOpt

func Fuzz_WithDynHotPatch

func Fuzz_WithDynHotPatch(ctx context.Context, code string) mutate.FuzzConfigOpt

func Fuzz_WithHotPatch added in v1.2.6

func Fuzz_WithHotPatch(ctx context.Context, code string) mutate.FuzzConfigOpt

func GetDeprecatedFunctionDecls added in v1.3.1

func GetDeprecatedFunctionDecls(helper *yakdoc.DocumentHelper) []*yakdoc.DeprecateFunction

func GetHookCliApp

func GetHookCliApp(tempArg []string) *cli.CliApp

func GetInterfaceDocumentFromAST added in v1.2.9

func GetInterfaceDocumentFromAST(pkg *ast.Package, interfaceName string) map[string]string

func GetMethodFuncDeclFromAST added in v1.2.9

func GetMethodFuncDeclFromAST(pkg *ast.Package, libName, structName, methodName, yakFuncName string, fset *token.FileSet, funcRefType reflect.Type) *yakdoc.FuncDecl

func GetPluginExecutionStatistics

func GetPluginExecutionStatistics(tracker *PluginExecutionTracker) map[string]interface{}

GetPluginExecutionStatistics 获取插件执行统计信息

func ImportVarFromFile

func ImportVarFromFile(file string, exportsName string) (interface{}, error)

func ImportVarFromScript

func ImportVarFromScript(engine *antlr4yak.Engine, script string, exportsName string) (interface{}, error)

func ImportVarFromYakFile

func ImportVarFromYakFile(path string, exportsName string) (interface{}, error)

func InitYaklangLib

func InitYaklangLib()

func IsSameTypeName added in v1.2.9

func IsSameTypeName(typName1, typName2 string) bool

func LoadingVariableFrom

func LoadingVariableFrom(path string, exportsName string, opts ...yakEvalConfigOpt) ([]*yakVariable, error)

func MutateHookCaller

func MutateHookCaller(ctx context.Context, raw string, caller YakitCallerIf, params ...*ypb.ExecParamItem) (
	func(https bool, originReq []byte, req []byte) []byte,
	func(https bool, originReq []byte, req []byte, originRsp []byte, rsp []byte) []byte,
	func([]byte, []byte, map[string]string) map[string]string,
	func(bool, int, []byte, []byte, func(...[]byte)),
	func(bool, []byte, []byte, func(string)),
)

func MutateWithParamsGetter

func MutateWithParamsGetter(raw string) func() *mutate.RegexpMutateCondition

func MutateWithYaklang

func MutateWithYaklang(raw string) *mutate.RegexpMutateCondition

func NewExecutorFromForge

func NewExecutorFromForge(forge *aiforge.ForgeBlueprint, i any, opts ...any) (*aid.Coordinator, error)

func NewExecutorFromJson

func NewExecutorFromJson(json string, i any, opts ...any) (*aid.Coordinator, error)

func NewFetchFuncFromSrcCodeConfig

func NewFetchFuncFromSrcCodeConfig() *fetchFuncFromSrcCodeConfig

func NewForgeBlueprint

func NewForgeBlueprint(name string, opts ...any) *aiforge.ForgeBlueprint

func NewForgeExecutor

func NewForgeExecutor(name string, i any, opts ...any) (*aid.Coordinator, error)

func NewLiteForge

func NewLiteForge(name string, opts ...any) (*aiforge.LiteForge, error)

func NewYakitFetchFuncFromSrcCodeConfig

func NewYakitFetchFuncFromSrcCodeConfig() *fetchFuncFromSrcCodeConfig

func QuickEvalWithoutContext

func QuickEvalWithoutContext(i interface{}) error

func StaticAnalyze

func StaticAnalyze(code string, opts ...StaticAnalyzeOption) []*result.StaticAnalyzeResult

func WithFetchCallArgumentHook

func WithFetchCallArgumentHook(name string, hook callArgumentHookFunc) fetchFuncFromSrcCodeOptions

func WithFetchCode

func WithFetchCode(code string) fetchFuncFromSrcCodeOptions

func WithFetchEngineHook

func WithFetchEngineHook(hook func(e *antlr4yak.Engine) error) fetchFuncFromSrcCodeOptions

func WithFetchFunctionNames

func WithFetchFunctionNames(names ...string) fetchFuncFromSrcCodeOptions

func WithFetchScript

func WithFetchScript(script *schema.YakScript) fetchFuncFromSrcCodeOptions

func YakTool2AITool

func YakTool2AITool(aitools []*schema.AIYakTool) []*aitool.Tool

Types

type AIAgentOption

type AIAgentOption func(*Agent) error

func WithContext

func WithContext(ctx context.Context) AIAgentOption

func WithExtendAICommonOptions

func WithExtendAICommonOptions(opts ...aicommon.ConfigOption) AIAgentOption

func WithForgeName

func WithForgeName(forgeName string) AIAgentOption

type Agent

type Agent struct {
	ForgeName string

	CoordinatorId string

	ExtendAICommonOptions []aicommon.ConfigOption
	AiForgeOptions        []aiforge.Option

	AgentEventHandler func(e *schema.AiOutputEvent)
	// contains filtered or unexported fields
}

func NewAgent

func NewAgent(iopts ...any) *Agent

func (*Agent) AICommonOptions

func (ag *Agent) AICommonOptions() []aicommon.ConfigOption

func (*Agent) SubOption

func (ag *Agent) SubOption() []AIAgentOption

type CallConfig

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

func NewCallConfig

func NewCallConfig() *CallConfig

type CallOpt

type CallOpt func(*CallConfig)

func WithCallConfigCallback

func WithCallConfigCallback(callback func()) CallOpt

func WithCallConfigForceSync

func WithCallConfigForceSync(forceSync bool) CallOpt

func WithCallConfigItemFuncs

func WithCallConfigItemFuncs(itemFuncs ...func() interface{}) CallOpt

func WithCallConfigItems

func WithCallConfigItems(items ...interface{}) CallOpt

func WithCallConfigPluginId

func WithCallConfigPluginId(pluginId string) CallOpt

func WithCallConfigRuntimeCtx

func WithCallConfigRuntimeCtx(ctx context.Context) CallOpt

type Caller

type Caller struct {
	Core    *YakFunctionCaller
	Hash    string
	Id      string
	Verbose string
	Engine  *antlr4yak.Engine
}

type CallerHookDescription

type CallerHookDescription struct {
	// 这两个是
	YakScriptId   string
	YakScriptName string
	VerboseName   string
}

type CallerHooks

type CallerHooks struct {
	HookName string

	Hooks []*CallerHookDescription
}

type EmbedFieldTypeAndMethod added in v1.2.9

type EmbedFieldTypeAndMethod struct {
	FieldType reflect.Type
	Method    reflect.Method
}

type InstanceMethodHandler added in v1.2.9

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

type LibFuncWithFrameType

type LibFuncWithFrameType func(*yakvm.Frame) interface{}

type MixPluginCaller

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

func NewMixPluginCaller

func NewMixPluginCaller() (*MixPluginCaller, error)

func NewMixPluginCallerWithFilter added in v1.3.1

func NewMixPluginCallerWithFilter(webFilter filter.Filterable) (*MixPluginCaller, error)

func (*MixPluginCaller) AddExecutionTraceCallback

func (m *MixPluginCaller) AddExecutionTraceCallback(callback func(*PluginExecutionTrace)) (callbackID string, remove func())

AddExecutionTraceCallback 添加执行跟踪回调

func (*MixPluginCaller) CallAfterRequestWithCtx

func (m *MixPluginCaller) CallAfterRequestWithCtx(
	runtimeCtx context.Context,
	isHttps bool, u string,
	originReq, req []byte,
	originRsp, rsp []byte,
) []byte

func (*MixPluginCaller) CallAnalyzeHTTPFlow

func (m *MixPluginCaller) CallAnalyzeHTTPFlow(
	runtimeCtx context.Context,
	flow *schema.HTTPFlow,
	extract func(ruleName string, httpFlow *schema.HTTPFlow, content ...string),
)

func (*MixPluginCaller) CallBeforeRequestWithCtx

func (m *MixPluginCaller) CallBeforeRequestWithCtx(
	runtimeCtx context.Context,
	isHttps bool, u string,
	originReq, req []byte,
) []byte

func (*MixPluginCaller) CallHijackRequest

func (m *MixPluginCaller) CallHijackRequest(
	isHttps bool, u string, getRequest func() interface{},
	reject func() interface{},
	drop func() interface{},
)

func (*MixPluginCaller) CallHijackRequestWithCtx

func (m *MixPluginCaller) CallHijackRequestWithCtx(
	runtimeCtx context.Context,
	isHttps bool, u string, getRequest func() interface{},
	reject func() interface{},
	drop func() interface{},
)

func (*MixPluginCaller) CallHijackResponse

func (m *MixPluginCaller) CallHijackResponse(
	isHttps bool, u string, getResponse,
	reject, drop func() interface{},
)

func (*MixPluginCaller) CallHijackResponseEx

func (m *MixPluginCaller) CallHijackResponseEx(
	isHttps bool, u string, getRequest, getResponse,
	reject, drop func() interface{},
)

func (*MixPluginCaller) CallHijackResponseExWithCtx

func (m *MixPluginCaller) CallHijackResponseExWithCtx(
	runtimeCtx context.Context,
	isHttps bool, u string, getRequest, getResponse,
	reject, drop func() interface{},
)

func (*MixPluginCaller) CallHijackResponseWithCtx

func (m *MixPluginCaller) CallHijackResponseWithCtx(
	runtimeCtx context.Context,
	isHttps bool, u string, getResponse,
	reject, drop func() interface{},
)

func (*MixPluginCaller) CallMockHTTPRequest

func (m *MixPluginCaller) CallMockHTTPRequest(
	isHttps bool, u string, getRequest func() interface{},
	mockResponse func(rsp interface{}),
)

func (*MixPluginCaller) CallMockHTTPRequestWithCtx

func (m *MixPluginCaller) CallMockHTTPRequestWithCtx(
	runtimeCtx context.Context,
	isHttps bool, u string, getRequest func() interface{},
	mockResponse func(rsp interface{}),
)

func (*MixPluginCaller) CallOnAnalyzeHTTPFlowFinish

func (m *MixPluginCaller) CallOnAnalyzeHTTPFlowFinish(
	runtimeCtx context.Context,
	totalCount int64,
	matchedCount int64,
)

func (*MixPluginCaller) CancelAllExecutionTraces

func (m *MixPluginCaller) CancelAllExecutionTraces()

CancelAllExecutionTraces 取消所有执行跟踪

func (*MixPluginCaller) CancelExecutionTrace

func (m *MixPluginCaller) CancelExecutionTrace(traceID string) bool

CancelExecutionTrace 取消指定的执行跟踪

func (*MixPluginCaller) CleanupCompletedExecutionTraces

func (m *MixPluginCaller) CleanupCompletedExecutionTraces(olderThan time.Duration)

CleanupCompletedExecutionTraces 清理已完成的执行跟踪

func (*MixPluginCaller) EnableExecutionTracing

func (m *MixPluginCaller) EnableExecutionTracing(enable bool)

EnableExecutionTracing 启用插件执行跟踪

func (*MixPluginCaller) FeedbackOrdinary

func (c *MixPluginCaller) FeedbackOrdinary(i interface{})

func (*MixPluginCaller) GetAllExecutionTraces

func (m *MixPluginCaller) GetAllExecutionTraces() []*PluginExecutionTrace

GetAllExecutionTraces 获取所有执行跟踪

func (*MixPluginCaller) GetExecutionTracesByHook

func (m *MixPluginCaller) GetExecutionTracesByHook(hookName string) []*PluginExecutionTrace

GetExecutionTracesByHook 根据Hook名获取执行跟踪

func (*MixPluginCaller) GetExecutionTracesByPlugin

func (m *MixPluginCaller) GetExecutionTracesByPlugin(pluginID string) []*PluginExecutionTrace

GetExecutionTracesByPlugin 根据插件ID获取执行跟踪

func (*MixPluginCaller) GetExecutionTracker

func (m *MixPluginCaller) GetExecutionTracker() *PluginExecutionTracker

GetExecutionTracker 获取执行跟踪器

func (*MixPluginCaller) GetFingerprintMatcher

func (m *MixPluginCaller) GetFingerprintMatcher() *fp.Matcher

func (*MixPluginCaller) GetLongRunningThreshold

func (c *MixPluginCaller) GetLongRunningThreshold() int

GetLongRunningThreshold 获取插件长时间运行阈值(秒)

func (*MixPluginCaller) GetNativeCaller

func (m *MixPluginCaller) GetNativeCaller() *YakToCallerManager

func (*MixPluginCaller) GetRunningExecutionTraces

func (m *MixPluginCaller) GetRunningExecutionTraces() []*PluginExecutionTrace

GetRunningExecutionTraces 获取正在运行的执行跟踪

func (*MixPluginCaller) HandleServiceScanResult

func (m *MixPluginCaller) HandleServiceScanResult(r *fp.MatchResult)

func (*MixPluginCaller) HaveTheHookFunc

func (m *MixPluginCaller) HaveTheHookFunc(name string) bool

func (*MixPluginCaller) HijackSaveHTTPFlow

func (m *MixPluginCaller) HijackSaveHTTPFlow(flow *schema.HTTPFlow, reject func(httpFlow *schema.HTTPFlow), drop func())

func (*MixPluginCaller) HijackSaveHTTPFlowEx

func (m *MixPluginCaller) HijackSaveHTTPFlowEx(runtimeCtx context.Context, flow *schema.HTTPFlow, callback func(), reject func(httpFlow *schema.HTTPFlow), drop func())

func (*MixPluginCaller) IsExecutionTracingEnabled

func (m *MixPluginCaller) IsExecutionTracingEnabled() bool

IsExecutionTracingEnabled 检查是否启用了插件执行跟踪

func (*MixPluginCaller) IsPassed added in v1.3.2

func (c *MixPluginCaller) IsPassed(target string) bool

func (*MixPluginCaller) IsStatic

func (c *MixPluginCaller) IsStatic(rawUrl string, req, rsp []byte) bool

func (*MixPluginCaller) LastErr

func (m *MixPluginCaller) LastErr() error

func (*MixPluginCaller) LoadHotPatch

func (c *MixPluginCaller) LoadHotPatch(ctx context.Context, params []*ypb.ExecParamItem, code string) error

func (*MixPluginCaller) LoadPlugin

func (m *MixPluginCaller) LoadPlugin(scriptName string, params ...*ypb.ExecParamItem) error

func (*MixPluginCaller) LoadPluginByName

func (m *MixPluginCaller) LoadPluginByName(ctx context.Context, name string, params []*ypb.ExecParamItem, codes ...string) error

LoadPluginByName 基于脚本名加载插件,如果没有指定代码,则从数据库中加载,如果指定了代码,则默认视为mitm插件执行

func (*MixPluginCaller) LoadPluginEx added in v1.3.2

func (m *MixPluginCaller) LoadPluginEx(ctx context.Context, script *schema.YakScript, params ...*ypb.ExecParamItem) error

func (*MixPluginCaller) MirrorHTTPFlow

func (m *MixPluginCaller) MirrorHTTPFlow(
	isHttps bool, u string, req, rsp, body []byte,
	filters ...bool,
)

func (*MixPluginCaller) MirrorHTTPFlowEx

func (m *MixPluginCaller) MirrorHTTPFlowEx(
	scanPort bool,
	isHttps bool, u string, req, rsp, body []byte,
	filters ...bool,
)

func (*MixPluginCaller) MirrorHTTPFlowExSync added in v1.3.2

func (m *MixPluginCaller) MirrorHTTPFlowExSync(
	scanPort bool,
	isHttps bool, u string, req, rsp, body []byte,
	filters ...bool,
)

func (*MixPluginCaller) MirrorHTTPFlowWithCtx

func (m *MixPluginCaller) MirrorHTTPFlowWithCtx(
	runtimeCtx context.Context,
	isHttps bool, u string, req, rsp, body []byte,
	filters ...bool,
)

func (*MixPluginCaller) ResetFilter

func (c *MixPluginCaller) ResetFilter()

func (*MixPluginCaller) SetCache added in v1.2.2

func (m *MixPluginCaller) SetCache(b bool)

func (*MixPluginCaller) SetCallPluginTimeout added in v1.3.2

func (c *MixPluginCaller) SetCallPluginTimeout(i float64)

func (*MixPluginCaller) SetConcurrent

func (c *MixPluginCaller) SetConcurrent(i int) error

func (*MixPluginCaller) SetCtx added in v1.3.2

func (m *MixPluginCaller) SetCtx(ctx context.Context)

func (*MixPluginCaller) SetDividedContext

func (m *MixPluginCaller) SetDividedContext(b bool)

func (*MixPluginCaller) SetFeedback

func (m *MixPluginCaller) SetFeedback(i func(i *ypb.ExecResult) error)

func (*MixPluginCaller) SetLoadPluginTimeout

func (c *MixPluginCaller) SetLoadPluginTimeout(i float64)

func (*MixPluginCaller) SetLongRunningThreshold

func (c *MixPluginCaller) SetLongRunningThreshold(seconds int)

SetLongRunningThreshold 设置插件长时间运行阈值(秒)

func (*MixPluginCaller) SetProxy added in v1.2.4

func (m *MixPluginCaller) SetProxy(s ...string)

func (*MixPluginCaller) SetRuntimeId added in v1.2.3

func (m *MixPluginCaller) SetRuntimeId(s string)

func (*MixPluginCaller) SetVar

func (m *MixPluginCaller) SetVar(key string, value any)

func (*MixPluginCaller) Wait

func (c *MixPluginCaller) Wait()

type PalmScriptEngineHelper

type PalmScriptEngineHelper struct {
	Libs             map[string]*PalmScriptLib
	BuildInFunctions map[string]*PalmScriptLibFunc
	UserFunctions    map[string]*PalmScriptLibFunc
	Instances        map[string]*PalmScriptLibInstance
}

func EngineToHelper

func EngineToHelper(engine *antlr4yak.Engine) *PalmScriptEngineHelper

func (*PalmScriptEngineHelper) GetAllLibs

func (p *PalmScriptEngineHelper) GetAllLibs() []string

func (*PalmScriptEngineHelper) HelpInfo

func (p *PalmScriptEngineHelper) HelpInfo() string

func (*PalmScriptEngineHelper) LibHelpInfo

func (p *PalmScriptEngineHelper) LibHelpInfo(name string) string

func (*PalmScriptEngineHelper) ShowHelpInfo

func (p *PalmScriptEngineHelper) ShowHelpInfo()

func (*PalmScriptEngineHelper) ShowLibHelpInfo

func (p *PalmScriptEngineHelper) ShowLibHelpInfo(name string)

type PalmScriptLib

type PalmScriptLib struct {
	Name             string
	Values           map[string]interface{}
	ElementDocs      []string
	FuncElements     []*PalmScriptLibFunc
	InstanceElements []*PalmScriptLibInstance
}

func (*PalmScriptLib) String

func (p *PalmScriptLib) String() string

type PalmScriptLibFunc

type PalmScriptLibFunc struct {
	LibName    string
	MethodName string
	Params     []string
	Returns    []string
}

func (*PalmScriptLibFunc) String

func (p *PalmScriptLibFunc) String() string

type PalmScriptLibInstance

type PalmScriptLibInstance struct {
	LibName      string
	InstanceName string
	Type         string
	Value        interface{}
}

func (*PalmScriptLibInstance) String

func (p *PalmScriptLibInstance) String() string

type PluginExecutionStatus

type PluginExecutionStatus string

PluginExecutionStatus 插件执行状态

const (
	PluginStatusPending   PluginExecutionStatus = "pending"   // 等待执行
	PluginStatusRunning   PluginExecutionStatus = "running"   // 正在执行
	PluginStatusCompleted PluginExecutionStatus = "completed" // 执行完成
	PluginStatusFailed    PluginExecutionStatus = "failed"    // 执行失败
	PluginStatusCancelled PluginExecutionStatus = "cancelled" // 被取消
)

type PluginExecutionTrace

type PluginExecutionTrace struct {
	TraceID    string                `json:"trace_id"`    // 跟踪ID,唯一标识一次执行
	PluginID   string                `json:"plugin_id"`   // 插件ID
	HookName   string                `json:"hook_name"`   // Hook函数名
	Status     PluginExecutionStatus `json:"status"`      // 执行状态
	LoadedTime time.Time             `json:"loaded_time"` // 插件加载时间
	StartTime  time.Time             `json:"start_time"`  // 执行开始时间
	EndTime    time.Time             `json:"end_time"`    // 执行结束时间
	Duration   time.Duration         `json:"duration"`    // 执行耗时
	Args       []interface{}         `json:"args"`        // 执行参数
	Result     interface{}           `json:"result"`      // 执行结果
	Error      string                `json:"error"`       // 错误信息
	CancelFunc context.CancelFunc    `json:"-"`           // 取消函数
	RuntimeCtx context.Context       `json:"-"`           // 运行时上下文
}

PluginExecutionTrace 插件执行跟踪信息

type PluginExecutionTracker

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

PluginExecutionTracker 插件执行跟踪器

func NewPluginExecutionTracker

func NewPluginExecutionTracker() *PluginExecutionTracker

NewPluginExecutionTracker 创建新的插件执行跟踪器

func NewPluginExecutionTrackerWithStaleSize

func NewPluginExecutionTrackerWithStaleSize(staleQueueSize int) *PluginExecutionTracker

NewPluginExecutionTrackerWithStaleSize 创建指定stale队列大小的插件执行跟踪器

func (*PluginExecutionTracker) AddCallback

func (t *PluginExecutionTracker) AddCallback(callback func(*PluginExecutionTrace)) (callbackID string, remove func())

AddCallback 添加跟踪回调函数

func (*PluginExecutionTracker) CancelAllTraces

func (t *PluginExecutionTracker) CancelAllTraces()

CancelAllTraces 取消所有跟踪

func (*PluginExecutionTracker) CancelTrace

func (t *PluginExecutionTracker) CancelTrace(traceID string) bool

CancelTrace 取消跟踪

func (*PluginExecutionTracker) CleanupCompletedTraces

func (t *PluginExecutionTracker) CleanupCompletedTraces(olderThan time.Duration)

CleanupCompletedTraces 清理已完成的跟踪信息(现在主要用于清理stale队列中过旧的数据)

func (*PluginExecutionTracker) ClearStaleTraces

func (t *PluginExecutionTracker) ClearStaleTraces()

ClearStaleTraces 清空stale队列

func (*PluginExecutionTracker) CreateTrace

func (t *PluginExecutionTracker) CreateTrace(pluginID, hookName string, runtimeCtx context.Context) *PluginExecutionTrace

CreateTrace 创建新的插件执行跟踪记录(每次调用都创建新的Trace)

func (*PluginExecutionTracker) FindLatestRunningTraceByPluginAndHook

func (t *PluginExecutionTracker) FindLatestRunningTraceByPluginAndHook(pluginID, hookName string) *PluginExecutionTrace

FindLatestRunningTraceByPluginAndHook 查找指定插件和Hook的最新正在运行的Trace

func (*PluginExecutionTracker) FindTraceByPluginAndHook

func (t *PluginExecutionTracker) FindTraceByPluginAndHook(pluginID, hookName string) *PluginExecutionTrace

FindTraceByPluginAndHook 根据插件ID和Hook名查找最新的跟踪记录 注意:此方法现在返回最新创建的Trace记录,主要用于兼容性

func (*PluginExecutionTracker) GetActiveTraces

func (t *PluginExecutionTracker) GetActiveTraces() []*PluginExecutionTrace

GetActiveTraces 获取所有活跃的跟踪信息(不包括stale的)

func (*PluginExecutionTracker) GetAllTraces

func (t *PluginExecutionTracker) GetAllTraces() []*PluginExecutionTrace

GetAllTraces 获取所有跟踪信息(包括活跃的和stale的)

func (*PluginExecutionTracker) GetRunningTraces

func (t *PluginExecutionTracker) GetRunningTraces() []*PluginExecutionTrace

GetRunningTraces 获取正在运行的跟踪信息(只从活跃traces中查找)

func (*PluginExecutionTracker) GetStaleQueueInfo

func (t *PluginExecutionTracker) GetStaleQueueInfo() map[string]interface{}

GetStaleQueueInfo 获取stale队列信息

func (*PluginExecutionTracker) GetStaleTraces

func (t *PluginExecutionTracker) GetStaleTraces() []*PluginExecutionTrace

GetStaleTraces 获取所有stale的跟踪信息

func (*PluginExecutionTracker) GetTrace

func (t *PluginExecutionTracker) GetTrace(traceID string) (*PluginExecutionTrace, bool)

GetTrace 获取跟踪信息(先从活跃traces查找,再从stale队列查找)

func (*PluginExecutionTracker) GetTracesByHook

func (t *PluginExecutionTracker) GetTracesByHook(hookName string) []*PluginExecutionTrace

GetTracesByHook 根据Hook名获取跟踪信息(包括活跃的和stale的)

func (*PluginExecutionTracker) GetTracesByPlugin

func (t *PluginExecutionTracker) GetTracesByPlugin(pluginID string) []*PluginExecutionTrace

GetTracesByPlugin 根据插件ID获取跟踪信息(包括活跃的和stale的)

func (*PluginExecutionTracker) RemoveTrace

func (t *PluginExecutionTracker) RemoveTrace(traceID string) bool

RemoveTrace 删除指定的跟踪记录(只能删除活跃的trace)

func (*PluginExecutionTracker) RemoveTracesByPluginAndHook

func (t *PluginExecutionTracker) RemoveTracesByPluginAndHook(pluginID, hookName string) int

RemoveTracesByPluginAndHook 删除指定插件和Hook的所有跟踪记录(只能删除活跃的trace)

func (*PluginExecutionTracker) StartExecution

func (t *PluginExecutionTracker) StartExecution(traceID string, args []interface{}) bool

StartExecution 开始执行跟踪(从Pending转为Running)

func (*PluginExecutionTracker) UpdateTraceStatus

func (t *PluginExecutionTracker) UpdateTraceStatus(traceID string, status PluginExecutionStatus, result interface{}, err error)

UpdateTraceStatus 更新跟踪状态

type Sandbox added in v1.3.1

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

func NewSandbox added in v1.3.1

func NewSandbox(opts ...SandboxOption) *Sandbox

func (*Sandbox) ExecuteAsBoolean added in v1.3.1

func (s *Sandbox) ExecuteAsBoolean(code string, vars ...any) (ret bool, err error)

func (*Sandbox) ExecuteAsExpression added in v1.3.1

func (s *Sandbox) ExecuteAsExpression(code string, vars ...any) (ret any, err error)

func (Sandbox) ExecuteAsExpressionRaw added in v1.3.3

func (s Sandbox) ExecuteAsExpressionRaw(code string, vars map[string]any) (ret any, err error)

type SandboxConfig added in v1.3.1

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

type SandboxOption added in v1.3.1

type SandboxOption func(*SandboxConfig)

func WithSandbox_ExternalLib added in v1.3.1

func WithSandbox_ExternalLib(lib map[string]any) SandboxOption

func WithYaklang_Libs

func WithYaklang_Libs(b bool) SandboxOption

type ScriptEngine

type ScriptEngine struct {

	// 设定几个 hook
	RegisterLogHook          yaklib.RegisterOutputFuncType
	UnregisterLogHook        yaklib.UnregisterOutputFuncType
	RegisterLogConsoleHook   yaklib.RegisterOutputFuncType
	UnregisterLogConsoleHook yaklib.UnregisterOutputFuncType
	RegisterOutputHook       yaklib.RegisterOutputFuncType
	UnregisterOutputHook     yaklib.UnregisterOutputFuncType
	RegisterFailedHook       yaklib.RegisterOutputFuncType
	UnregisterFailedHook     yaklib.UnregisterOutputFuncType
	RegisterFinishHook       yaklib.RegisterOutputFuncType
	UnregisterFinishHook     yaklib.UnregisterOutputFuncType
	RegisterAlertHook        yaklib.RegisterOutputFuncType
	UnregisterAlertHook      yaklib.UnregisterOutputFuncType
	// contains filtered or unexported fields
}

func NewScriptEngine

func NewScriptEngine(maxConcurrent int) *ScriptEngine

func NewYakitVirtualClientScriptEngine added in v1.2.2

func NewYakitVirtualClientScriptEngine(client *yaklib.YakitClient) *ScriptEngine

func (*ScriptEngine) Compile

func (e *ScriptEngine) Compile(code string) ([]byte, error)

func (*ScriptEngine) Execute

func (e *ScriptEngine) Execute(code string) error

func (*ScriptEngine) ExecuteEx

func (e *ScriptEngine) ExecuteEx(code string, params map[string]interface{}) (*antlr4yak.Engine, error)

func (*ScriptEngine) ExecuteExWithContext

func (e *ScriptEngine) ExecuteExWithContext(ctx context.Context, code string, params map[string]interface{}) (_ *antlr4yak.Engine, fErr error)

func (*ScriptEngine) ExecuteMain

func (e *ScriptEngine) ExecuteMain(code string, AbsFile string) error

func (*ScriptEngine) ExecuteMainWithContext

func (e *ScriptEngine) ExecuteMainWithContext(ctx context.Context, code string, AbsFile string) error

func (*ScriptEngine) ExecuteWithContext

func (e *ScriptEngine) ExecuteWithContext(ctx context.Context, code string) error

func (*ScriptEngine) ExecuteWithTaskID

func (e *ScriptEngine) ExecuteWithTaskID(taskId, code string) error

func (*ScriptEngine) ExecuteWithTaskIDAndContext

func (e *ScriptEngine) ExecuteWithTaskIDAndContext(ctx context.Context, taskId, code string) error

func (*ScriptEngine) ExecuteWithTaskIDAndParams

func (e *ScriptEngine) ExecuteWithTaskIDAndParams(ctx context.Context, taskId, code string, params map[string]interface{}) error

func (*ScriptEngine) ExecuteWithTemplate

func (e *ScriptEngine) ExecuteWithTemplate(codeTmp string, i map[string][]string) error

func (*ScriptEngine) ExecuteWithoutCache

func (e *ScriptEngine) ExecuteWithoutCache(code string, params map[string]interface{}) (*antlr4yak.Engine, error)

func (*ScriptEngine) GetTaskByTaskID

func (s *ScriptEngine) GetTaskByTaskID(id string) (*Task, error)

func (*ScriptEngine) HookOsExit

func (e *ScriptEngine) HookOsExit()

func (*ScriptEngine) RegisterEngineHooks

func (e *ScriptEngine) RegisterEngineHooks(f func(engine *antlr4yak.Engine) error)

func (*ScriptEngine) SaveTask

func (s *ScriptEngine) SaveTask(task *Task) error

func (*ScriptEngine) SetCallFuncCallback

func (e *ScriptEngine) SetCallFuncCallback(f func(caller *yakvm.Value, wavy bool, args []*yakvm.Value))

func (*ScriptEngine) SetCryptoKey

func (s *ScriptEngine) SetCryptoKey(key []byte) error

func (*ScriptEngine) SetDebug

func (s *ScriptEngine) SetDebug(debug bool)

func (*ScriptEngine) SetDebugCallback

func (s *ScriptEngine) SetDebugCallback(callback func(*yakvm.Debugger))

func (*ScriptEngine) SetDebugInit

func (s *ScriptEngine) SetDebugInit(callback func(*yakvm.Debugger))

func (*ScriptEngine) SetYakitClient added in v1.2.2

func (e *ScriptEngine) SetYakitClient(client *yaklib.YakitClient)

func (*ScriptEngine) Status

func (s *ScriptEngine) Status() map[string]*Task

type StaleTraceQueue

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

StaleTraceQueue stale trace 队列,使用 container/ring 实现

func NewStaleTraceQueue

func NewStaleTraceQueue(capacity int) *StaleTraceQueue

NewStaleTraceQueue 创建新的stale trace队列

func (*StaleTraceQueue) Capacity

func (q *StaleTraceQueue) Capacity() int

Capacity 获取队列容量

func (*StaleTraceQueue) Clear

func (q *StaleTraceQueue) Clear()

Clear 清空队列

func (*StaleTraceQueue) GetAll

func (q *StaleTraceQueue) GetAll() []*PluginExecutionTrace

GetAll 获取所有stale traces(按时间顺序,最新的在前面)

func (*StaleTraceQueue) GetByTraceID

func (q *StaleTraceQueue) GetByTraceID(traceID string) *PluginExecutionTrace

GetByTraceID 根据traceID查找stale trace

func (*StaleTraceQueue) Push

Push 添加trace到队列,如果队列满了则覆盖最老的trace

func (*StaleTraceQueue) Size

func (q *StaleTraceQueue) Size() int

Size 获取队列当前大小

type StaticAnalyzeConfig

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

func NewStaticAnalyzeConfig

func NewStaticAnalyzeConfig() *StaticAnalyzeConfig

type StaticAnalyzeOption

type StaticAnalyzeOption func(*StaticAnalyzeConfig)

func WithStaticAnalyzeKindAnalyze

func WithStaticAnalyzeKindAnalyze() StaticAnalyzeOption

func WithStaticAnalyzeKindScore

func WithStaticAnalyzeKindScore() StaticAnalyzeOption

func WithStaticAnalyzePluginType

func WithStaticAnalyzePluginType(typ string) StaticAnalyzeOption

type Task

type Task struct {
	TaskID string
	Code   string

	Output   []string
	Log      []string
	Alert    []string
	Finished []string
	Failed   []string
	// contains filtered or unexported fields
}

func (*Task) IsFinished

func (t *Task) IsFinished() bool

func (*Task) IsRunning

func (t *Task) IsRunning() bool

type TextHandlingScript

type TextHandlingScript struct {
	RuleID         string `json:"rule_id" yaml:"rule_id"`
	MatchingScript string `json:"matching_script" yaml:"matching_script"`
	ParsingScript  string `json:"parsing_script" yaml:"parsing_script"`
}

type TextParser

type TextParser struct {
	Scripts map[string]*TextHandlingScript
	// contains filtered or unexported fields
}

func NewTextParser

func NewTextParser() *TextParser

NewTextParser 创建一个新的文本解析器

func (*TextParser) ParseLine

func (t *TextParser) ParseLine(r io.Reader, handler func(line string, r map[string]string, data []map[string]string)) error

type YakFunctionCaller

type YakFunctionCaller struct {
	Handler func(callback func(*yakvm.Frame), args ...any) any
}

type YakToCallerManager

type YakToCallerManager struct {
	ContextCancelFuncs *sync.Map
	Err                error
	// contains filtered or unexported fields
}

YakToCallerManager 是 Yaklang 中用于管理插件函数调用的核心结构体。

func NewYakToCallerManager

func NewYakToCallerManager() *YakToCallerManager

func (*YakToCallerManager) Add

func (y *YakToCallerManager) Add(ctx context.Context, script *schema.YakScript, paramMap map[string]any, code string, hook func(*antlr4yak.Engine) error, funcName ...string) (retError error)

func (*YakToCallerManager) AddExecutionTraceCallback

func (y *YakToCallerManager) AddExecutionTraceCallback(callback func(*PluginExecutionTrace)) (callbackID string, remove func())

AddExecutionTraceCallback 添加执行跟踪回调

func (*YakToCallerManager) AddForYakit

func (y *YakToCallerManager) AddForYakit(
	ctx context.Context, script *schema.YakScript,
	paramMap map[string]any,
	code string, callerIf interface {
		Send(result *ypb.ExecResult) error
	},
	hooks ...string,
) error

func (*YakToCallerManager) Call

func (y *YakToCallerManager) Call(name string, opts ...CallOpt) (results []any)

only forceSync can get results

func (*YakToCallerManager) CallByName

func (y *YakToCallerManager) CallByName(name string, items ...interface{})

func (*YakToCallerManager) CallByNameExSync

func (y *YakToCallerManager) CallByNameExSync(name string, items ...func() interface{})

func (*YakToCallerManager) CallByNameSync added in v1.3.2

func (y *YakToCallerManager) CallByNameSync(name string, items ...interface{})

func (*YakToCallerManager) CallByNameWithCallback

func (y *YakToCallerManager) CallByNameWithCallback(name string, callback func(), items ...interface{})

func (*YakToCallerManager) CallPluginKeyByName

func (y *YakToCallerManager) CallPluginKeyByName(pluginId string, name string, items ...interface{})

func (*YakToCallerManager) CallPluginKeyByNameEx

func (y *YakToCallerManager) CallPluginKeyByNameEx(pluginId string, name string, callback func(), itemsFuncs ...func() interface{})

func (*YakToCallerManager) CallPluginKeyByNameExWithAsync

func (y *YakToCallerManager) CallPluginKeyByNameExWithAsync(runtimeCtx context.Context, forceSync bool, pluginId string, name string, callback func(), itemsFuncs ...func() interface{})

func (*YakToCallerManager) CallPluginKeyByNameSyncWithCallback

func (y *YakToCallerManager) CallPluginKeyByNameSyncWithCallback(pluginId string, name string, callback func(), items ...interface{})

func (*YakToCallerManager) CallPluginKeyByNameWithCallback

func (y *YakToCallerManager) CallPluginKeyByNameWithCallback(pluginId string, name string, callback func(), items ...interface{})

func (*YakToCallerManager) CancelAllExecutionTraces

func (y *YakToCallerManager) CancelAllExecutionTraces()

CancelAllExecutionTraces 取消所有执行跟踪

func (*YakToCallerManager) CancelExecutionTrace

func (y *YakToCallerManager) CancelExecutionTrace(traceID string) bool

CancelExecutionTrace 取消指定的执行跟踪

func (*YakToCallerManager) CleanupCompletedExecutionTraces

func (y *YakToCallerManager) CleanupCompletedExecutionTraces(olderThan time.Duration)

CleanupCompletedExecutionTraces 清理已完成的执行跟踪

func (*YakToCallerManager) EnableExecutionTracing

func (y *YakToCallerManager) EnableExecutionTracing(enable bool)

EnableExecutionTracing 启用插件执行跟踪

func (*YakToCallerManager) GetAllExecutionTraces

func (y *YakToCallerManager) GetAllExecutionTraces() []*PluginExecutionTrace

GetAllExecutionTraces 获取所有执行跟踪

func (*YakToCallerManager) GetCurrentHooks

func (y *YakToCallerManager) GetCurrentHooks() []*CallerHooks

func (*YakToCallerManager) GetCurrentHooksGRPCModel

func (y *YakToCallerManager) GetCurrentHooksGRPCModel() []*ypb.YakScriptHooks

func (*YakToCallerManager) GetExecutionTracesByHook

func (y *YakToCallerManager) GetExecutionTracesByHook(hookName string) []*PluginExecutionTrace

GetExecutionTracesByHook 根据Hook名获取执行跟踪

func (*YakToCallerManager) GetExecutionTracesByPlugin

func (y *YakToCallerManager) GetExecutionTracesByPlugin(pluginID string) []*PluginExecutionTrace

GetExecutionTracesByPlugin 根据插件ID获取执行跟踪

func (*YakToCallerManager) GetExecutionTracker

func (y *YakToCallerManager) GetExecutionTracker() *PluginExecutionTracker

GetExecutionTracker 获取执行跟踪器

func (*YakToCallerManager) GetLongRunningThreshold

func (y *YakToCallerManager) GetLongRunningThreshold() int

GetLongRunningThreshold 获取插件长时间运行阈值(秒)

func (*YakToCallerManager) GetRunningExecutionTraces

func (y *YakToCallerManager) GetRunningExecutionTraces() []*PluginExecutionTrace

GetRunningExecutionTraces 获取正在运行的执行跟踪

func (*YakToCallerManager) GetWaitingEventCount

func (y *YakToCallerManager) GetWaitingEventCount() int

func (*YakToCallerManager) IsExecutionTracingEnabled

func (y *YakToCallerManager) IsExecutionTracingEnabled() bool

IsExecutionTracingEnabled 检查是否启用了插件执行跟踪

func (*YakToCallerManager) LoadPlugin

func (y *YakToCallerManager) LoadPlugin(t string, hooks ...string) error

func (*YakToCallerManager) LoadPluginContext

func (y *YakToCallerManager) LoadPluginContext(ctx context.Context, t string, hooks ...string) error

func (*YakToCallerManager) Remove

func (y *YakToCallerManager) Remove(params *ypb.RemoveHookParams)

func (*YakToCallerManager) Set

func (y *YakToCallerManager) Set(ctx context.Context, code string, paramMap map[string]any, hook func(engine *antlr4yak.Engine) error, funcName ...string) (retError error)

func (*YakToCallerManager) SetCallPluginTimeout added in v1.3.2

func (y *YakToCallerManager) SetCallPluginTimeout(i float64)

func (*YakToCallerManager) SetConcurrent

func (y *YakToCallerManager) SetConcurrent(i int) error

func (*YakToCallerManager) SetDividedContext

func (y *YakToCallerManager) SetDividedContext(b bool)

func (*YakToCallerManager) SetForYakit

func (y *YakToCallerManager) SetForYakit(
	ctx context.Context,
	code string,
	paramMap map[string]any, callerIf interface {
		Send(result *ypb.ExecResult) error
	},
	hooks ...string,
) error

func (*YakToCallerManager) SetLoadPluginTimeout

func (y *YakToCallerManager) SetLoadPluginTimeout(i float64)

func (*YakToCallerManager) SetLongRunningThreshold

func (y *YakToCallerManager) SetLongRunningThreshold(seconds int)

SetLongRunningThreshold 设置插件长时间运行阈值(秒)

func (*YakToCallerManager) ShouldCallByName added in v1.2.6

func (y *YakToCallerManager) ShouldCallByName(name string, callbacks ...func()) (ret bool)

func (*YakToCallerManager) SyncCallPluginKeyByNameEx

func (y *YakToCallerManager) SyncCallPluginKeyByNameEx(pluginId string, name string, callback func(), itemsFuncs ...func() interface{})

func (*YakToCallerManager) Wait

func (y *YakToCallerManager) Wait()

func (*YakToCallerManager) WithVulFilter

func (y *YakToCallerManager) WithVulFilter(filter filter.Filterable) *YakToCallerManager

type YakitCallerIf

type YakitCallerIf func(result *ypb.ExecResult) error

func (YakitCallerIf) Send

func (y YakitCallerIf) Send(i *ypb.ExecResult) error

type YakitPluginContext added in v1.2.4

type YakitPluginContext struct {
	yakit.YakitPluginInfo
	Proxy  string
	Ctx    context.Context
	CliApp *cli.CliApp
	Cancel context.CancelFunc

	YakitClient *yaklib.YakitClient
	// contains filtered or unexported fields
}

func CreateYakitPluginContext added in v1.3.1

func CreateYakitPluginContext(runtimeId string) *YakitPluginContext

func (*YakitPluginContext) WithCliApp added in v1.3.1

func (y *YakitPluginContext) WithCliApp(cliApp *cli.CliApp) *YakitPluginContext

func (*YakitPluginContext) WithContext added in v1.3.1

func (*YakitPluginContext) WithContextCancel added in v1.3.2

func (y *YakitPluginContext) WithContextCancel(cancel context.CancelFunc) *YakitPluginContext

func (*YakitPluginContext) WithPluginName added in v1.3.1

func (y *YakitPluginContext) WithPluginName(id string) *YakitPluginContext

func (*YakitPluginContext) WithPluginUUID

func (y *YakitPluginContext) WithPluginUUID(uuid string) *YakitPluginContext

func (*YakitPluginContext) WithProxy added in v1.3.1

func (y *YakitPluginContext) WithProxy(proxy string) *YakitPluginContext

func (*YakitPluginContext) WithVulFilter

func (y *YakitPluginContext) WithVulFilter(filter filter.Filterable) *YakitPluginContext

func (*YakitPluginContext) WithYakitClient

func (y *YakitPluginContext) WithYakitClient(yakitClient *yaklib.YakitClient) *YakitPluginContext

Directories

Path Synopsis
antlr4JS
antlr4c
antlr4go
lib
cmd command
dap
lsp
cmd
yakcmds
Package yakcmds @Author bcy2007 2024/3/12 16:06
Package yakcmds @Author bcy2007 2024/3/12 16:06
java
jsp
php
ssa
typescript
frontend/diagnostics
Package diagnostics contains generated localizable diagnostic messages.
Package diagnostics contains generated localizable diagnostic messages.
frontend/jsnum
Package jsnum provides JS-like number handling.
Package jsnum provides JS-like number handling.
frontend/stringutil
Package stringutil Exports common rune utilities for parsing and emitting javascript
Package stringutil Exports common rune utilities for parsing and emitting javascript
doc
generate_doc command

Jump to

Keyboard shortcuts

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