n8n-nodes-soar 0.1.22 → 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.
Files changed (76) hide show
  1. package/dist/common/asset.js +42 -56
  2. package/dist/common/connectionType.js +3 -2
  3. package/dist/common/executor/abstract.executor.js +51 -0
  4. package/dist/common/executor/docker.executor.js +57 -31
  5. package/dist/common/executor/jsonrpc.executor.js +123 -0
  6. package/dist/common/executor/{k8s.executor.js → kubernetes.executor.js} +56 -33
  7. package/dist/common/interface.js +4 -0
  8. package/dist/common/memorizer/abstract.memorizer.js +49 -0
  9. package/dist/common/memorizer/asset.memorizer.js +16 -0
  10. package/dist/common/memorizer/general.memorizer.js +17 -0
  11. package/dist/common/memorizer/storage/redis.storage.js +71 -0
  12. package/dist/common/proxy/abstract.proxy.js +4 -0
  13. package/dist/common/proxy/executor.proxy.js +50 -0
  14. package/dist/common/proxy/memorizer.proxy.js +51 -0
  15. package/dist/common/proxy/runner.proxy.js +60 -0
  16. package/dist/common/runner/container.runner.js +93 -108
  17. package/dist/common/runner/decorator/assetRunner.js +26 -0
  18. package/dist/common/runner/decorator/index.js +20 -0
  19. package/dist/common/runner/decorator/onlySuccess.js +20 -0
  20. package/dist/common/runner/{priority.js → decorator/priority.js} +16 -8
  21. package/dist/common/runner/priority.runner.js +6 -7
  22. package/dist/common/runner/runner.js +10 -29
  23. package/dist/constants/image.js +11 -0
  24. package/dist/credentials/SoarRunner/SoarRunner.credentials.js +73 -0
  25. package/dist/credentials/SoarRunner/icon.svg +8 -0
  26. package/dist/credentials/VulboxApi/VulboxApi.credentials.js +157 -0
  27. package/dist/credentials/VulboxApi/vulbox.svg +18 -0
  28. package/dist/nodes/Collector/Collector.node.js +56 -47
  29. package/dist/nodes/EmptyCheck/EmptyCheck.node.js +69 -0
  30. package/dist/nodes/Executor/DockerExecutor/DockerExecutor.node.js +80 -3
  31. package/dist/nodes/Executor/JsonRpcExecutor/JsonRpcExecutor.node.js +69 -0
  32. package/dist/nodes/Executor/JsonRpcExecutor/icon.svg +8 -0
  33. package/dist/nodes/Executor/KubernetesExecutor/KubernetesExecutor.node.js +112 -4
  34. package/dist/nodes/Fofa/Fofa.node.js +23 -14
  35. package/dist/nodes/Memorizer/Redis/RedisMemorizer.node.js +127 -0
  36. package/dist/nodes/Memorizer/Redis/redis.svg +1 -0
  37. package/dist/nodes/Platform/Vulbox/Vulbox.node.js +166 -0
  38. package/dist/nodes/Platform/Vulbox/api.js +211 -0
  39. package/dist/nodes/Platform/Vulbox/methods.js +124 -0
  40. package/dist/nodes/Platform/Vulbox/properties.js +403 -0
  41. package/dist/nodes/Platform/Vulbox/vulbox.svg +18 -0
  42. package/dist/nodes/Runner/Cmd/Cmd.node.js +105 -0
  43. package/dist/nodes/Runner/Dns/Dns.node.js +38 -22
  44. package/dist/nodes/Runner/Httpx/Httpx.node.js +147 -18
  45. package/dist/nodes/Runner/IcpLookup/IcpLookup.node.js +166 -0
  46. package/dist/nodes/Runner/IcpLookup/icp.svg +3 -0
  47. package/dist/nodes/Runner/Katana/Katana.node.js +42 -29
  48. package/dist/nodes/Runner/Masscan/Masscan.node.js +51 -29
  49. package/dist/nodes/Runner/Naabu/Naabu.node.js +35 -17
  50. package/dist/nodes/Runner/Nuclei/Nuclei.node.js +32 -14
  51. package/dist/nodes/Runner/Priority/Priority.node.js +2 -1
  52. package/dist/nodes/Runner/Subfinder/Subfinder.node.js +38 -15
  53. package/dist/nodes/Runner/Unauthor/Unauthor.node.js +32 -14
  54. package/dist/utils/decorator.js +22 -0
  55. package/package.json +19 -5
  56. package/dist/common/executor/executor.js +0 -48
  57. package/dist/nodes/Asset/SplitAsset/SplitAsset.node.js +0 -110
  58. package/dist/nodes/Asset/SplitAsset/split.svg +0 -13
  59. package/dist/nodes/Cdncheck/Cdncheck.node.js +0 -229
  60. package/dist/nodes/Httpx/Httpx.node.js +0 -754
  61. package/dist/nodes/Katana/Katana.node.js +0 -456
  62. package/dist/nodes/Katana/Katana.node.json +0 -9
  63. package/dist/nodes/Nuclei/Nuclei.node.js +0 -1024
  64. package/dist/nodes/Nuclei/Nuclei.node.json +0 -9
  65. package/dist/nodes/Runner/Katana/a.json +0 -30
  66. package/dist/nodes/Runner/Nuclei/a.json +0 -48
  67. package/dist/nodes/Runner/PriorityAdd/PriorityAdd.node.js +0 -97
  68. package/dist/nodes/Runner/Router/SwitchRouter/SwitchRouter.node.js +0 -101
  69. package/dist/nodes/Tshark/Tshark.node.js +0 -104
  70. package/dist/nodes/Tshark/Tshark.node.json +0 -9
  71. package/dist/nodes/Tshark/tshark.svg +0 -64
  72. package/dist/nodes/Unauthor/Unauthor.node.js +0 -135
  73. package/dist/nodes/Unauthor/Unauthor.node.json +0 -9
  74. package/dist/nodes/Unauthor/unauthor.svg +0 -7
  75. package/dist/nodes/Uncover/Uncover.node.js +0 -280
  76. 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 _k8sexecutor = require("../../../common/executor/k8s.executor");
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: new _k8sexecutor.K8sExecutor(await this.getCredentials("kubernetesApi", itemIndex), this)
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 basic = {
57
- ip: item.ip,
58
- domain: item.domain,
59
- port: parseInt(item.port),
60
- protocol: item.base_protocol
61
- };
62
- return {
63
- basic,
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
- "output"
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: "domain,ip,port,host"
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
+ }