/
yakit_viewer.go
97 lines (85 loc) · 2.25 KB
/
yakit_viewer.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package yaklib
import (
"fmt"
uuid "github.com/google/uuid"
"github.com/yaklang/yaklang/common/utils"
)
func init() {
YakitExports["EnableWebsiteTrees"] = yakitEnableCrawlerViewer
YakitExports["EnableTable"] = yakitEnableFixedTable
YakitExports["EnableText"] = yakitEnableText
YakitExports["TableData"] = yakitTableData
YakitExports["StatusCard"] = yakitStatusCard
YakitExports["TextTabData"] = yakitTextTabData
}
type YakitFeature struct {
Feature string `json:"feature"`
Params map[string]interface{} `json:"params"`
}
func yakitEnableCrawlerViewer(targets string) {
yakitClientInstance.Output(&YakitFeature{
Feature: "website-trees",
Params: map[string]interface{}{
"targets": targets,
"refresh_interval": 3,
},
})
}
func yakitEnableFixedTable(tableName string, columns []string) {
yakitClientInstance.Output(&YakitFeature{
Feature: "fixed-table",
Params: map[string]interface{}{
"table_name": tableName,
"columns": columns,
},
})
}
func yakitEnableText(tabName string) {
yakitClientInstance.Output(&YakitFeature{
Feature: "text",
Params: map[string]interface{}{
"tab_name": tabName,
},
})
}
type YakitFixedTableData struct {
TableName string `json:"table_name"`
Data map[string]interface{} `json:"data"`
}
func yakitTableData(tableName string, data any) *YakitFixedTableData {
tableData := &YakitFixedTableData{
TableName: tableName,
Data: utils.InterfaceToGeneralMap(data),
}
if tableData.Data == nil {
tableData.Data = map[string]interface{}{}
}
tableData.Data["uuid"] = uuid.New().String()
if yakitClientInstance != nil {
yakitClientInstance.Output(tableData)
}
return nil
}
type YakitTextTabData struct {
TableName string `json:"table_name"`
Data string `json:"data"`
}
func yakitTextTabData(tabName string, data string) {
tabData := &YakitTextTabData{
TableName: tabName,
Data: data,
}
if yakitClientInstance != nil {
yakitClientInstance.Output(tabData)
}
}
type YakitStatusCard struct {
Id string `json:"id"`
Data string `json:"data"`
Tags []string `json:"tags"`
}
func yakitStatusCard(id string, data interface{}, tags ...string) {
yakitClientInstance.Output(&YakitStatusCard{
Id: id, Data: fmt.Sprint(data), Tags: tags,
})
}