n8n-nodes-soar 0.1.21 → 0.1.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/asset.js +47 -58
- package/dist/common/connectionType.js +3 -2
- package/dist/common/executor/abstract.executor.js +51 -0
- package/dist/common/executor/docker.executor.js +57 -31
- package/dist/common/executor/jsonrpc.executor.js +123 -0
- package/dist/common/executor/{k8s.executor.js → kubernetes.executor.js} +56 -33
- package/dist/common/interface.js +4 -0
- package/dist/common/memorizer/abstract.memorizer.js +49 -0
- package/dist/common/memorizer/asset.memorizer.js +16 -0
- package/dist/common/memorizer/general.memorizer.js +17 -0
- package/dist/common/memorizer/storage/redis.storage.js +71 -0
- package/dist/common/proxy/abstract.proxy.js +4 -0
- package/dist/common/proxy/executor.proxy.js +50 -0
- package/dist/common/proxy/memorizer.proxy.js +51 -0
- package/dist/common/proxy/runner.proxy.js +60 -0
- package/dist/common/runner/container.runner.js +93 -108
- package/dist/common/runner/decorator/assetRunner.js +26 -0
- package/dist/common/runner/decorator/index.js +20 -0
- package/dist/common/runner/decorator/onlySuccess.js +20 -0
- package/dist/common/runner/{priority.js → decorator/priority.js} +16 -8
- package/dist/common/runner/priority.runner.js +6 -7
- package/dist/common/runner/runner.js +10 -29
- package/dist/constants/image.js +11 -0
- package/dist/credentials/SoarRunner/SoarRunner.credentials.js +73 -0
- package/dist/credentials/SoarRunner/icon.svg +8 -0
- package/dist/credentials/VulboxApi/VulboxApi.credentials.js +157 -0
- package/dist/credentials/VulboxApi/vulbox.svg +18 -0
- package/dist/nodes/Collector/Collector.node.js +56 -47
- package/dist/nodes/EmptyCheck/EmptyCheck.node.js +69 -0
- package/dist/nodes/Executor/DockerExecutor/DockerExecutor.node.js +80 -3
- package/dist/nodes/Executor/JsonRpcExecutor/JsonRpcExecutor.node.js +69 -0
- package/dist/nodes/Executor/JsonRpcExecutor/icon.svg +8 -0
- package/dist/nodes/Executor/KubernetesExecutor/KubernetesExecutor.node.js +112 -4
- package/dist/nodes/Fofa/Fofa.node.js +23 -14
- package/dist/nodes/Memorizer/Redis/RedisMemorizer.node.js +127 -0
- package/dist/nodes/Memorizer/Redis/redis.svg +1 -0
- package/dist/nodes/Platform/Vulbox/Vulbox.node.js +166 -0
- package/dist/nodes/Platform/Vulbox/api.js +211 -0
- package/dist/nodes/Platform/Vulbox/methods.js +124 -0
- package/dist/nodes/Platform/Vulbox/properties.js +403 -0
- package/dist/nodes/Platform/Vulbox/vulbox.svg +18 -0
- package/dist/nodes/Runner/Cmd/Cmd.node.js +105 -0
- package/dist/nodes/Runner/Dns/Dns.node.js +38 -22
- package/dist/nodes/Runner/Httpx/Httpx.node.js +147 -18
- package/dist/nodes/Runner/IcpLookup/IcpLookup.node.js +166 -0
- package/dist/nodes/Runner/IcpLookup/icp.svg +3 -0
- package/dist/nodes/Runner/Katana/Katana.node.js +42 -29
- package/dist/nodes/Runner/Masscan/Masscan.node.js +51 -29
- package/dist/nodes/Runner/Naabu/Naabu.node.js +35 -17
- package/dist/nodes/Runner/Nuclei/Nuclei.node.js +32 -14
- package/dist/nodes/Runner/Priority/Priority.node.js +2 -1
- package/dist/nodes/Runner/Subfinder/Subfinder.node.js +38 -15
- package/dist/nodes/Runner/Unauthor/Unauthor.node.js +32 -14
- package/dist/utils/decorator.js +22 -0
- package/package.json +19 -5
- package/dist/common/executor/executor.js +0 -48
- package/dist/nodes/Asset/SplitAsset/SplitAsset.node.js +0 -110
- package/dist/nodes/Asset/SplitAsset/split.svg +0 -13
- package/dist/nodes/Cdncheck/Cdncheck.node.js +0 -229
- package/dist/nodes/Httpx/Httpx.node.js +0 -754
- package/dist/nodes/Katana/Katana.node.js +0 -456
- package/dist/nodes/Katana/Katana.node.json +0 -9
- package/dist/nodes/Nuclei/Nuclei.node.js +0 -1024
- package/dist/nodes/Nuclei/Nuclei.node.json +0 -9
- package/dist/nodes/Runner/Katana/a.json +0 -30
- package/dist/nodes/Runner/Nuclei/a.json +0 -48
- package/dist/nodes/Runner/PriorityAdd/PriorityAdd.node.js +0 -97
- package/dist/nodes/Runner/Router/SwitchRouter/SwitchRouter.node.js +0 -101
- package/dist/nodes/Tshark/Tshark.node.js +0 -104
- package/dist/nodes/Tshark/Tshark.node.json +0 -9
- package/dist/nodes/Tshark/tshark.svg +0 -64
- package/dist/nodes/Unauthor/Unauthor.node.js +0 -135
- package/dist/nodes/Unauthor/Unauthor.node.json +0 -9
- package/dist/nodes/Unauthor/unauthor.svg +0 -7
- package/dist/nodes/Uncover/Uncover.node.js +0 -280
- package/dist/nodes/Uncover/Uncover.node.json +0 -9
@@ -9,7 +9,9 @@ Object.defineProperty(exports, "KubernetesExecutor", {
|
|
9
9
|
}
|
10
10
|
});
|
11
11
|
const _connectionType = require("../../../common/connectionType");
|
12
|
-
const
|
12
|
+
const _kubernetesexecutor = require("../../../common/executor/kubernetes.executor");
|
13
|
+
const _executorproxy = require("../../../common/proxy/executor.proxy");
|
14
|
+
const _image = require("../../../constants/image");
|
13
15
|
function _define_property(obj, key, value) {
|
14
16
|
if (key in obj) {
|
15
17
|
Object.defineProperty(obj, key, {
|
@@ -25,8 +27,16 @@ function _define_property(obj, key, value) {
|
|
25
27
|
}
|
26
28
|
class KubernetesExecutor {
|
27
29
|
async supplyData(itemIndex) {
|
30
|
+
const { value: namespace } = this.getNodeParameter("namespace", itemIndex);
|
31
|
+
const executor = new _kubernetesexecutor.KubernetesExecutor(namespace, this.getNodeParameter("image", itemIndex), await this.getCredentials("kubernetesApi", itemIndex), this);
|
32
|
+
if (this.getNodeParameter("stateless", itemIndex)) {
|
33
|
+
executor.setPodName(await executor.preparePod());
|
34
|
+
} else {
|
35
|
+
const { value } = this.getNodeParameter("pod", itemIndex);
|
36
|
+
executor.setPodName(value);
|
37
|
+
}
|
28
38
|
return {
|
29
|
-
response:
|
39
|
+
response: (0, _executorproxy.proxyExecutor)(executor)
|
30
40
|
};
|
31
41
|
}
|
32
42
|
constructor(){
|
@@ -50,10 +60,108 @@ class KubernetesExecutor {
|
|
50
60
|
],
|
51
61
|
credentials: [
|
52
62
|
{
|
53
|
-
name: "kubernetesApi"
|
63
|
+
name: "kubernetesApi",
|
64
|
+
required: true
|
54
65
|
}
|
55
66
|
],
|
56
|
-
properties: [
|
67
|
+
properties: [
|
68
|
+
{
|
69
|
+
displayName: "Image",
|
70
|
+
name: "image",
|
71
|
+
type: "string",
|
72
|
+
default: _image.IMAGE,
|
73
|
+
required: true,
|
74
|
+
description: "Docker image to use"
|
75
|
+
},
|
76
|
+
{
|
77
|
+
displayName: "Namespace",
|
78
|
+
name: "namespace",
|
79
|
+
type: "resourceLocator",
|
80
|
+
default: {
|
81
|
+
mode: "list",
|
82
|
+
value: ""
|
83
|
+
},
|
84
|
+
required: true,
|
85
|
+
modes: [
|
86
|
+
{
|
87
|
+
displayName: "Namespace",
|
88
|
+
name: "list",
|
89
|
+
type: "list",
|
90
|
+
placeholder: "Select a namespace...",
|
91
|
+
typeOptions: {
|
92
|
+
searchListMethod: "namespaceSearch"
|
93
|
+
}
|
94
|
+
}
|
95
|
+
]
|
96
|
+
},
|
97
|
+
{
|
98
|
+
displayName: "Stateless",
|
99
|
+
name: "stateless",
|
100
|
+
type: "boolean",
|
101
|
+
default: true,
|
102
|
+
description: "Whether to use a stateless pod, which mean we will use any pod that is available. If false, we will use the same pod for all executions."
|
103
|
+
},
|
104
|
+
{
|
105
|
+
displayName: "Pod",
|
106
|
+
name: "pod",
|
107
|
+
type: "resourceLocator",
|
108
|
+
default: {
|
109
|
+
mode: "list",
|
110
|
+
value: ""
|
111
|
+
},
|
112
|
+
required: true,
|
113
|
+
modes: [
|
114
|
+
{
|
115
|
+
displayName: "Pod",
|
116
|
+
name: "list",
|
117
|
+
type: "list",
|
118
|
+
placeholder: "Select a pod...",
|
119
|
+
typeOptions: {
|
120
|
+
searchListMethod: "podSearch"
|
121
|
+
}
|
122
|
+
}
|
123
|
+
],
|
124
|
+
displayOptions: {
|
125
|
+
show: {
|
126
|
+
stateless: [
|
127
|
+
false
|
128
|
+
]
|
129
|
+
}
|
130
|
+
}
|
131
|
+
},
|
132
|
+
{
|
133
|
+
displayName: "Debug Mode",
|
134
|
+
name: "debug",
|
135
|
+
type: "boolean",
|
136
|
+
default: false,
|
137
|
+
description: "Whether open to see more information in node input & output"
|
138
|
+
}
|
139
|
+
]
|
140
|
+
});
|
141
|
+
_define_property(this, "methods", {
|
142
|
+
listSearch: {
|
143
|
+
async namespaceSearch (_filter) {
|
144
|
+
const executor = new _kubernetesexecutor.KubernetesExecutor(this.getNodeParameter("namespace"), this.getNodeParameter("image"), await this.getCredentials("kubernetesApi"), this);
|
145
|
+
const namespaces = await executor.listNamespaces();
|
146
|
+
return {
|
147
|
+
results: namespaces.map((namespace)=>({
|
148
|
+
name: namespace,
|
149
|
+
value: namespace
|
150
|
+
}))
|
151
|
+
};
|
152
|
+
},
|
153
|
+
async podSearch (_filter) {
|
154
|
+
const { value: namespace } = this.getNodeParameter("namespace");
|
155
|
+
const executor = new _kubernetesexecutor.KubernetesExecutor(namespace, this.getNodeParameter("image"), await this.getCredentials("kubernetesApi"), this);
|
156
|
+
const pods = await executor.listPods();
|
157
|
+
return {
|
158
|
+
results: pods.map((pod)=>({
|
159
|
+
name: pod,
|
160
|
+
value: pod
|
161
|
+
}))
|
162
|
+
};
|
163
|
+
}
|
164
|
+
}
|
57
165
|
});
|
58
166
|
}
|
59
167
|
}
|
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "Fofa", {
|
|
9
9
|
}
|
10
10
|
});
|
11
11
|
const _n8nworkflow = require("n8n-workflow");
|
12
|
+
const _asset = require("../../common/asset");
|
12
13
|
function _define_property(obj, key, value) {
|
13
14
|
if (key in obj) {
|
14
15
|
Object.defineProperty(obj, key, {
|
@@ -53,18 +54,26 @@ class Fofa {
|
|
53
54
|
fields.split(",")[idx],
|
54
55
|
item
|
55
56
|
]))).map((item)=>{
|
56
|
-
const
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
metadata: {
|
65
|
-
...item
|
57
|
+
const { ip, port, base_protocol, domain, ...rest } = item;
|
58
|
+
let host = item.host ?? item.ip;
|
59
|
+
rest.rootDomain = domain;
|
60
|
+
if (!/https?:\/\//.test(host)) {
|
61
|
+
if (port === "443") {
|
62
|
+
host = `https://${host}`;
|
63
|
+
} else {
|
64
|
+
host = `http://${host}`;
|
66
65
|
}
|
67
|
-
}
|
66
|
+
}
|
67
|
+
const url = new URL(host);
|
68
|
+
return _asset.Asset.fromPlain({
|
69
|
+
basic: {
|
70
|
+
ip: item.ip,
|
71
|
+
domain: url.hostname,
|
72
|
+
port: parseInt(item.port),
|
73
|
+
protocol: item.base_protocol
|
74
|
+
},
|
75
|
+
metadata: rest
|
76
|
+
}).toPlain();
|
68
77
|
})), {
|
69
78
|
itemData: {
|
70
79
|
item: idx
|
@@ -80,11 +89,11 @@ class Fofa {
|
|
80
89
|
displayName: "Runner Fofa",
|
81
90
|
name: "fofa",
|
82
91
|
group: [
|
83
|
-
"
|
92
|
+
"transform"
|
84
93
|
],
|
85
94
|
version: 1,
|
86
95
|
icon: "file:fofa.svg",
|
87
|
-
subtitle: "={{ 'fofa' + $parameter['query'] }}",
|
96
|
+
subtitle: "={{ 'fofa: ' + $parameter['query'] }}",
|
88
97
|
description: "Interact with Fofa",
|
89
98
|
defaults: {
|
90
99
|
name: "Fofa"
|
@@ -124,7 +133,7 @@ class Fofa {
|
|
124
133
|
displayName: "Fields",
|
125
134
|
name: "fields",
|
126
135
|
type: "string",
|
127
|
-
default: "
|
136
|
+
default: "ip,port,host"
|
128
137
|
},
|
129
138
|
{
|
130
139
|
displayName: "Full",
|
@@ -0,0 +1,127 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "RedisMemorizer", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return RedisMemorizer;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
const _connectionType = require("../../../common/connectionType");
|
12
|
+
const _assetmemorizer = require("../../../common/memorizer/asset.memorizer");
|
13
|
+
const _generalmemorizer = require("../../../common/memorizer/general.memorizer");
|
14
|
+
const _redisstorage = require("../../../common/memorizer/storage/redis.storage");
|
15
|
+
const _memorizerproxy = require("../../../common/proxy/memorizer.proxy");
|
16
|
+
function _define_property(obj, key, value) {
|
17
|
+
if (key in obj) {
|
18
|
+
Object.defineProperty(obj, key, {
|
19
|
+
value: value,
|
20
|
+
enumerable: true,
|
21
|
+
configurable: true,
|
22
|
+
writable: true
|
23
|
+
});
|
24
|
+
} else {
|
25
|
+
obj[key] = value;
|
26
|
+
}
|
27
|
+
return obj;
|
28
|
+
}
|
29
|
+
class RedisMemorizer {
|
30
|
+
async supplyData(itemIndex) {
|
31
|
+
const mode = this.getNodeParameter("mode", itemIndex, "general");
|
32
|
+
const credentials = await this.getCredentials("redis");
|
33
|
+
const keyPrefix = this.getNodeParameter("keyPrefix", itemIndex, "cache");
|
34
|
+
const ttl = this.getNodeParameter("ttl", itemIndex, 3600);
|
35
|
+
const storage = new _redisstorage.RedisStorage(this, credentials, keyPrefix, ttl);
|
36
|
+
let memorizer;
|
37
|
+
if (mode === "asset") {
|
38
|
+
memorizer = new _assetmemorizer.AssetMemorizer(this, itemIndex, storage);
|
39
|
+
} else {
|
40
|
+
memorizer = new _generalmemorizer.GeneralMemorizer(this, itemIndex, storage);
|
41
|
+
}
|
42
|
+
return {
|
43
|
+
response: (0, _memorizerproxy.proxyMemorizer)(memorizer)
|
44
|
+
};
|
45
|
+
}
|
46
|
+
constructor(){
|
47
|
+
_define_property(this, "description", {
|
48
|
+
displayName: "Memorizer: Redis",
|
49
|
+
name: "redisMemorizer",
|
50
|
+
icon: "file:redis.svg",
|
51
|
+
group: [
|
52
|
+
"transform"
|
53
|
+
],
|
54
|
+
codex: {
|
55
|
+
alias: [
|
56
|
+
"Redis"
|
57
|
+
],
|
58
|
+
categories: [
|
59
|
+
"SOAR"
|
60
|
+
],
|
61
|
+
subcategories: {
|
62
|
+
SOAR: [
|
63
|
+
"memorizer"
|
64
|
+
]
|
65
|
+
}
|
66
|
+
},
|
67
|
+
version: 1,
|
68
|
+
description: "Remember the data in redis",
|
69
|
+
defaults: {
|
70
|
+
name: "Redis Memorizer"
|
71
|
+
},
|
72
|
+
credentials: [
|
73
|
+
{
|
74
|
+
name: "redis",
|
75
|
+
required: true
|
76
|
+
}
|
77
|
+
],
|
78
|
+
// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node
|
79
|
+
inputs: [],
|
80
|
+
// eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong
|
81
|
+
outputs: [
|
82
|
+
_connectionType.NodeConnectionType.Memorizer
|
83
|
+
],
|
84
|
+
properties: [
|
85
|
+
{
|
86
|
+
displayName: "Memorize Mode",
|
87
|
+
name: "mode",
|
88
|
+
type: "options",
|
89
|
+
default: "general",
|
90
|
+
options: [
|
91
|
+
{
|
92
|
+
name: "General",
|
93
|
+
value: "general",
|
94
|
+
description: "General mode"
|
95
|
+
},
|
96
|
+
{
|
97
|
+
name: "Asset",
|
98
|
+
value: "asset",
|
99
|
+
description: "Asset mode"
|
100
|
+
}
|
101
|
+
]
|
102
|
+
},
|
103
|
+
{
|
104
|
+
displayName: "Key Prefix",
|
105
|
+
name: "keyPrefix",
|
106
|
+
type: "string",
|
107
|
+
default: "cache",
|
108
|
+
required: true
|
109
|
+
},
|
110
|
+
{
|
111
|
+
displayName: "TTL",
|
112
|
+
name: "ttl",
|
113
|
+
type: "number",
|
114
|
+
default: 0,
|
115
|
+
description: "Time to live in seconds, <= 0 represent forever"
|
116
|
+
},
|
117
|
+
{
|
118
|
+
displayName: "Debug Mode",
|
119
|
+
name: "debug",
|
120
|
+
type: "boolean",
|
121
|
+
default: false,
|
122
|
+
description: "Whether open to see more information in node input & output"
|
123
|
+
}
|
124
|
+
]
|
125
|
+
});
|
126
|
+
}
|
127
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
<svg width="60" height="60" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"><path d="M57.656 43.99c-3.201 1.683-19.787 8.561-23.318 10.417-3.532 1.856-5.494 1.838-8.283.494-2.79-1.343-20.449-8.535-23.629-10.067C.834 44.066.002 43.422.002 42.811v-6.117s22.98-5.045 26.69-6.388c3.711-1.342 4.995-1.39 8.154-.225 3.16 1.165 22.035 4.603 25.154 5.756v6.032c0 .605-.72 1.283-2.35 2.124l.006-.003z" fill="#A41E11"/><path d="M57.656 37.872c-3.201 1.685-19.787 8.56-23.318 10.417-3.532 1.856-5.494 1.838-8.283.494-2.79-1.343-20.449-8.534-23.63-10.068-3.18-1.533-3.243-2.588-.122-3.82l24.388-9.52c3.71-1.34 4.994-1.39 8.153-.225 3.16 1.165 19.643 7.78 22.747 8.951 3.103 1.17 3.24 2.086.037 3.786l.028-.015z" fill="#D82C20"/><path d="M57.656 34.015c-3.201 1.683-19.787 8.561-23.318 10.417-3.532 1.856-5.494 1.838-8.283.495-2.79-1.344-20.449-8.536-23.629-10.067C.834 34.092.002 33.447.002 32.836V26.72s22.98-5.045 26.69-6.387c3.711-1.343 4.995-1.39 8.154-.225 3.16 1.165 22.035 4.602 25.154 5.756v6.032c0 .605-.72 1.283-2.35 2.123l.006-.003z" fill="#A41E11"/><path d="M57.656 27.898c-3.201 1.685-19.787 8.561-23.318 10.417-3.532 1.856-5.494 1.838-8.283.495-2.79-1.344-20.449-8.534-23.63-10.067-3.18-1.534-3.243-2.588-.122-3.82l24.388-9.52c3.71-1.343 4.994-1.39 8.153-.225 3.16 1.166 19.644 7.785 22.765 8.935 3.121 1.15 3.24 2.085.038 3.785h.01z" fill="#D82C20"/><path d="M57.656 23.671c-3.201 1.683-19.787 8.561-23.318 10.419-3.532 1.858-5.494 1.838-8.283.495-2.79-1.344-20.449-8.535-23.629-10.069-1.592-.765-2.424-1.411-2.424-2.02v-6.11s22.98-5.045 26.69-6.388c3.711-1.343 4.995-1.39 8.154-.225 3.16 1.165 22.035 4.591 25.154 5.745v6.032c0 .605-.72 1.283-2.35 2.123l.006-.002z" fill="#A41E11"/><path d="M57.656 17.553c-3.201 1.685-19.787 8.561-23.318 10.417-3.532 1.856-5.494 1.838-8.283.495-2.79-1.344-20.449-8.534-23.63-10.068-3.18-1.533-3.243-2.587-.122-3.82l24.388-9.52c3.71-1.343 4.994-1.39 8.153-.226 3.16 1.165 19.643 7.785 22.765 8.936 3.122 1.15 3.24 2.085.038 3.785l.01.001z" fill="#D82C20"/><path d="M31.497 15.032l-1.88-3.153-6.002-.545 4.48-1.63L26.75 7.2l4.192 1.653 3.955-1.305-1.07 2.586 4.032 1.524-5.198.546-1.164 2.827zm-10.014 6.275l13.903-2.153-4.2 6.211-9.703-4.058zm-11.17-5.167c0-1.61 3.314-2.906 7.431-2.906 4.118 0 7.432 1.296 7.432 2.906s-3.314 2.905-7.432 2.905c-4.117 0-7.431-1.295-7.431-2.905z" fill="#FFF"/><path fill="#7A0C00" d="M52.233 15.714l-8.224 3.276-.007-6.556z"/><path fill="#AD2115" d="M44.01 18.991l-.89.353-8.217-3.276 9.094-3.63z"/></g></svg>
|
@@ -0,0 +1,166 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "Vulbox", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return Vulbox;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
const _api = require("./api");
|
12
|
+
const _methods = require("./methods");
|
13
|
+
const _properties = require("./properties");
|
14
|
+
function _define_property(obj, key, value) {
|
15
|
+
if (key in obj) {
|
16
|
+
Object.defineProperty(obj, key, {
|
17
|
+
value: value,
|
18
|
+
enumerable: true,
|
19
|
+
configurable: true,
|
20
|
+
writable: true
|
21
|
+
});
|
22
|
+
} else {
|
23
|
+
obj[key] = value;
|
24
|
+
}
|
25
|
+
return obj;
|
26
|
+
}
|
27
|
+
class Vulbox {
|
28
|
+
async execute() {
|
29
|
+
const results = [];
|
30
|
+
const client = new _api.VulboxApi(this);
|
31
|
+
for(let i = 0; i < this.getInputData().length; i++){
|
32
|
+
let result = {};
|
33
|
+
const operation = this.getNodeParameter("operation", i);
|
34
|
+
switch(operation){
|
35
|
+
case "list":
|
36
|
+
const resource = this.getNodeParameter("resource", i);
|
37
|
+
const full = this.getNodeParameter("full", i);
|
38
|
+
result = await client.list(resource, full, {
|
39
|
+
page: this.getNodeParameter("page", i),
|
40
|
+
per_page: this.getNodeParameter("per_page", i),
|
41
|
+
search_value: this.getNodeParameter("search_value", i),
|
42
|
+
status: resource === "vulnerability" ? 0 : undefined,
|
43
|
+
type: resource === "vulnerability" ? this.getNodeParameter("vulType", i) : undefined
|
44
|
+
});
|
45
|
+
break;
|
46
|
+
case "submit":
|
47
|
+
result = await client.submitBug({
|
48
|
+
task_id: this.getNodeParameter("task", i).value,
|
49
|
+
bug_title: this.getNodeParameter("bug_title", i),
|
50
|
+
protocol: true,
|
51
|
+
area: this.getNodeParameter("area", i).split("/"),
|
52
|
+
industry: this.getNodeParameter("industry", i),
|
53
|
+
industry_category: this.getNodeParameter("industry_category", i),
|
54
|
+
bug_display: this.getNodeParameter("bug_display", i),
|
55
|
+
bug_category: this.getNodeParameter("bug_category", i),
|
56
|
+
bug_star: this.getNodeParameter("bug_star", i),
|
57
|
+
bug_firm_name: JSON.parse(this.getNodeParameter("business", i).value).bus_name,
|
58
|
+
domain: this.getNodeParameter("domain", i),
|
59
|
+
bug_type: this.getNodeParameter("bug_type", i),
|
60
|
+
bug_level: this.getNodeParameter("bug_level", i),
|
61
|
+
bug_paper: this.getNodeParameter("bug_paper", i),
|
62
|
+
bug_star_desc: this.getNodeParameter("bug_star_desc", i, ""),
|
63
|
+
bug_url: this.getNodeParameter("bug_url", i, ""),
|
64
|
+
bug_parameter: this.getNodeParameter("bug_parameter", i, ""),
|
65
|
+
bug_equipment: this.getNodeParameter("bug_equipment", i, ""),
|
66
|
+
bug_platform: this.getNodeParameter("bug_platform", i, ""),
|
67
|
+
bug_version: this.getNodeParameter("bug_version", i, ""),
|
68
|
+
bug_poc: this.getNodeParameter("bug_poc", i, ""),
|
69
|
+
repetition_step: this.getNodeParameter("repetition_step", i),
|
70
|
+
fix_plan: this.getNodeParameter("fix_plan", i)
|
71
|
+
});
|
72
|
+
break;
|
73
|
+
}
|
74
|
+
results.push(...this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(result), {
|
75
|
+
itemData: {
|
76
|
+
item: i
|
77
|
+
}
|
78
|
+
}));
|
79
|
+
}
|
80
|
+
return [
|
81
|
+
results
|
82
|
+
];
|
83
|
+
}
|
84
|
+
constructor(){
|
85
|
+
_define_property(this, "description", {
|
86
|
+
displayName: "Vulbox",
|
87
|
+
name: "vulbox",
|
88
|
+
group: [
|
89
|
+
"output"
|
90
|
+
],
|
91
|
+
version: 1,
|
92
|
+
subtitle: '={{ $parameter["operation"] + ": " + ($parameter["resource"] ?? "Bug") }}',
|
93
|
+
icon: "file:vulbox.svg",
|
94
|
+
description: "Interact with Vulbox",
|
95
|
+
defaults: {
|
96
|
+
name: "Vulbox"
|
97
|
+
},
|
98
|
+
inputs: [
|
99
|
+
"main"
|
100
|
+
],
|
101
|
+
outputs: [
|
102
|
+
"main"
|
103
|
+
],
|
104
|
+
credentials: [
|
105
|
+
{
|
106
|
+
name: "vulboxApi",
|
107
|
+
required: true
|
108
|
+
}
|
109
|
+
],
|
110
|
+
properties: [
|
111
|
+
{
|
112
|
+
displayName: "Operation",
|
113
|
+
name: "operation",
|
114
|
+
type: "options",
|
115
|
+
noDataExpression: true,
|
116
|
+
default: "list",
|
117
|
+
options: [
|
118
|
+
{
|
119
|
+
name: "List",
|
120
|
+
value: "list"
|
121
|
+
},
|
122
|
+
{
|
123
|
+
name: "Submit",
|
124
|
+
value: "submit"
|
125
|
+
}
|
126
|
+
]
|
127
|
+
},
|
128
|
+
{
|
129
|
+
displayName: "Resource",
|
130
|
+
name: "resource",
|
131
|
+
type: "options",
|
132
|
+
noDataExpression: true,
|
133
|
+
default: "bugs/tasks",
|
134
|
+
displayOptions: {
|
135
|
+
show: {
|
136
|
+
operation: [
|
137
|
+
"list"
|
138
|
+
]
|
139
|
+
}
|
140
|
+
},
|
141
|
+
options: [
|
142
|
+
{
|
143
|
+
name: "Task",
|
144
|
+
value: _api.RESOURCES.TASK
|
145
|
+
},
|
146
|
+
{
|
147
|
+
name: "Vulnerability",
|
148
|
+
value: _api.RESOURCES.VULNERABILITY
|
149
|
+
},
|
150
|
+
{
|
151
|
+
name: "Business",
|
152
|
+
value: _api.RESOURCES.BUSINESS
|
153
|
+
},
|
154
|
+
{
|
155
|
+
name: "VPN",
|
156
|
+
value: _api.RESOURCES.VPN
|
157
|
+
}
|
158
|
+
]
|
159
|
+
},
|
160
|
+
..._properties.listProperties,
|
161
|
+
..._properties.submitProperties
|
162
|
+
]
|
163
|
+
});
|
164
|
+
_define_property(this, "methods", _methods.methods);
|
165
|
+
}
|
166
|
+
}
|