n8n-nodes-soar 0.1.15 → 0.1.18

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 (58) hide show
  1. package/dist/common/asset.js +141 -0
  2. package/dist/common/collector.js +32 -0
  3. package/dist/common/connectionType.js +15 -0
  4. package/dist/common/executor/docker.executor.js +97 -0
  5. package/dist/common/executor/executor.js +48 -0
  6. package/dist/common/executor/k8s.executor.js +190 -0
  7. package/dist/common/runner/container.runner.js +174 -0
  8. package/dist/common/runner/priority.js +44 -0
  9. package/dist/common/runner/priority.runner.js +38 -0
  10. package/dist/common/runner/runner.js +57 -0
  11. package/dist/credentials/Docker/Docker.credentials.js +149 -0
  12. package/dist/credentials/Docker/docker.svg +7 -0
  13. package/dist/credentials/{FofaCredentials.credentials.js → FofaApi/FofaApi.credentials.js} +5 -5
  14. package/dist/credentials/Kubernetes/Kubernetes.credentials.js +82 -0
  15. package/dist/credentials/Kubernetes/k8s.svg +1 -0
  16. package/dist/nodes/Asset/SplitAsset/SplitAsset.node.js +110 -0
  17. package/dist/nodes/Asset/SplitAsset/split.svg +13 -0
  18. package/dist/nodes/Collector/Collector.node.js +123 -0
  19. package/dist/nodes/Executor/DockerExecutor/DockerExecutor.node.js +59 -0
  20. package/dist/nodes/Executor/DockerExecutor/docker.svg +7 -0
  21. package/dist/nodes/Executor/KubernetesExecutor/KubernetesExecutor.node.js +59 -0
  22. package/dist/nodes/Executor/KubernetesExecutor/k8s.svg +1 -0
  23. package/dist/nodes/Fofa/Fofa.node.js +20 -7
  24. package/dist/nodes/Katana/Katana.node.js +1 -1
  25. package/dist/nodes/Nuclei/Nuclei.node.js +1 -1
  26. package/dist/nodes/Runner/Dns/Dns.node.js +199 -0
  27. package/dist/nodes/Runner/Dns/script.js +81 -0
  28. package/dist/nodes/Runner/Httpx/Httpx.node.js +830 -0
  29. package/dist/nodes/Runner/Httpx/httpx.svg +3 -0
  30. package/dist/nodes/Runner/Katana/Katana.node.js +521 -0
  31. package/dist/nodes/Runner/Katana/a.json +30 -0
  32. package/dist/nodes/Runner/Katana/katana.svg +3 -0
  33. package/dist/nodes/Runner/Masscan/Masscan.node.js +151 -0
  34. package/dist/nodes/Runner/Masscan/masscan.svg +70 -0
  35. package/dist/nodes/{Naabu → Runner/Naabu}/Naabu.node.js +86 -48
  36. package/dist/nodes/Runner/Naabu/naabu.svg +3 -0
  37. package/dist/nodes/Runner/Nuclei/Nuclei.node.js +1057 -0
  38. package/dist/nodes/Runner/Nuclei/a.json +48 -0
  39. package/dist/nodes/Runner/Nuclei/nuclei.svg +3 -0
  40. package/dist/nodes/Runner/Priority/Priority.node.js +110 -0
  41. package/dist/nodes/Runner/PriorityAdd/PriorityAdd.node.js +97 -0
  42. package/dist/nodes/Runner/Router/SwitchRouter/SwitchRouter.node.js +101 -0
  43. package/dist/nodes/{Subfinder → Runner/Subfinder}/Subfinder.node.js +74 -43
  44. package/dist/nodes/Runner/Subfinder/subfinder.svg +3 -0
  45. package/dist/nodes/Runner/Unauthor/Unauthor.node.js +169 -0
  46. package/dist/nodes/Unauthor/Unauthor.node.js +24 -18
  47. package/package.json +63 -59
  48. package/dist/nodes/Cdncheck/Cdncheck.node.json +0 -9
  49. package/dist/nodes/Fofa/Fofa.node.json +0 -9
  50. package/dist/nodes/Httpx/Httpx.node.json +0 -9
  51. package/dist/nodes/Naabu/Naabu.node.json +0 -9
  52. package/dist/nodes/Subfinder/Subfinder.node.json +0 -9
  53. package/dist/utils/executor.js +0 -233
  54. package/dist/utils/interface.js +0 -4
  55. package/dist/utils/runner/docker.runner.js +0 -72
  56. package/dist/utils/runner/k8s.runner.js +0 -167
  57. package/dist/utils/runner/runner.js +0 -11
  58. /package/dist/credentials/{fofa.svg → FofaApi/fofa.svg} +0 -0
@@ -0,0 +1,48 @@
1
+ {
2
+ "template": "http/miscellaneous/rdap-whois.yaml",
3
+ "template-url": "https://templates.nuclei.sh/public/rdap-whois",
4
+ "template-id": "rdap-whois",
5
+ "template-path": "/root/nuclei-templates/http/miscellaneous/rdap-whois.yaml",
6
+ "info": {
7
+ "name": "RDAP WHOIS",
8
+ "author": [
9
+ "ricardomaia",
10
+ "sttlr"
11
+ ],
12
+ "tags": [
13
+ "whois",
14
+ "rdap",
15
+ "osint",
16
+ "misc"
17
+ ],
18
+ "description": "RDAP (Registration Data Access Protocol) is a standard defined by the IETF to replace the whois protocol\nin queries for information about Internet resource records such as domain names, IP addresses, and ASNs.\n",
19
+ "reference": [
20
+ "https://about.rdap.org/"
21
+ ],
22
+ "severity": "info",
23
+ "metadata": {
24
+ "verified": true,
25
+ "max-request": 1
26
+ },
27
+ "classification": {
28
+ "cve-id": null,
29
+ "cwe-id": [
30
+ "cwe-200"
31
+ ],
32
+ "cvss-metrics": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:N"
33
+ }
34
+ },
35
+ "extractor-name": "secureDNS",
36
+ "type": "http",
37
+ "host": "http://snowywar.top:3000/",
38
+ "matched-at": "https://rdap.zdnsgtld.com/top/domain/snowywar.top",
39
+ "extracted-results": [
40
+ "false"
41
+ ],
42
+ "request": "GET /domain/snowywar.top HTTP/1.1\r\nHost: www.rdap.net\r\nUser-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.67 Safari/537.36\r\nConnection: close\r\nAccept: */*\r\nAccept-Language: en\r\nAccept-Encoding: gzip\r\n\r\n",
43
+ "response": "HTTP/1.1 200 \r\nConnection: close\r\nContent-Length: 6154\r\nAccess-Control-Allow-Origin: *\r\nContent-Type: application/rdap+json;charset=UTF-8\r\nDate: Wed, 15 Nov 2023 10:52:49 GMT\r\nP3p: CP=\"CAO PSA OUR\"\r\nServer: nginx/1.24.0\r\nX-Protected-By: zdns\r\nX-Request-Id: 5b1be9d2f9dd4452ac0372956aa31be9\r\n\r\n{\"rdapConformance\":[\"icann_rdap_response_profile_0\",\"icann_rdap_technical_implementation_guide_0\",\"rdap_level_0\"],\"notices\":[{\"title\":\"Status Codes\",\"description\":[\"For more information on domain status codes, please visit https://icann.org/epp\"],\"links\":[{\"href\":\"https://icann.org/epp\",\"title\":\"More information on domain status codes\"}]},{\"title\":\"Terms of Use\",\"description\":[\"For more information on domain status codes, please visit https://icann.org/epp\",\"\",\"NOTICE: The expiration date displayed in this record is the date the\",\"registrar's sponsorship of the domain name registration in the registry is\",\"currently set to expire. This date does not necessarily reflect the expiration\",\"date of the domain name registrant's agreement with the sponsoring\",\"registrar. Users may consult the sponsoring registrar's Whois database to\",\"view the registrar's reported date of expiration for this registration.\",\"\",\"TERMS OF USE: The information in the Whois database is collected through ICANN-accredited registrars. Jiangsu bangning science \u0026 technology Co., Ltd(“BANGNING”) make this information available to you and do not guarantee its accuracy or completeness. By submitting a whois query, you agree to abide by the following terms of use: you agree that you may use this data only for lawful purposes and that under no circumstances will you use this data to: (1) to allow, enable, or otherwise support the transmission of mass unsolicited, commercial advertising or solicitations via direct mail, electronic mail, or by telephone; (2) in contravention of any applicable data and privacy protection acts; or (3) to enable high volume, automated, electronic processes that apply to BANGNING (or its computer systems). Compilation, repackaging, dissemination, or other use of the WHOIS database in its entirety, or of a substantial portion thereof, is not allowed without BANGNING prior written permission. You agree not to use electronic processes that are automated and high-volume to access or query the whois database except as reasonably necessary to register domain names or modify existing registrations. BANGNING reserves the right to restrict your access to the whois database in its sole discretion to ensure operational stability. BANGNING may restrict or terminate your access to the whois database for failure to abide by these terms of use. BANGNING reserves the right to modify these terms at any time without prior or subsequent notification of any kind. \"],\"links\":[{\"href\":\"http://www.nic.top\",\"title\":\"Terms of Use\"}]},{\"title\":\"RDDS Inaccuracy Complaint Form\",\"description\":[\"URL of the ICANN RDDS Inaccuracy Complaint Form: https://www.icann.org/wicf/\"],\"links\":[{\"href\":\"https://www.icann.org/wicf/\",\"title\":\"ICANN RDDS Inaccuracy Complaint Form\"}]},{\"title\":\"Data Policy\",\"description\":[\"The object does not contain all data due to lack of authorization.\"],\"type\":\"object truncated due to authorization\"}],\"objectClassName\":\"domain\",\"handle\":\"D20200909G10001G_47661016-top\",\"links\":[{\"value\":\"https://rdap.zdnsgtld.com/top/domain/snowywar.top.\",\"rel\":\"self\",\"href\":\"https://rdap.zdnsgtld.com/top/domain/snowywar.top.\",\"type\":\"application/rdap+json\"}],\"events\":[{\"eventAction\":\"registration\",\"eventDate\":\"2020-09-09T02:46:33.0Z\"},{\"eventAction\":\"expiration\",\"eventDate\":\"2024-09-09T02:46:33.0Z\"},{\"eventAction\":\"last changed\",\"eventDate\":\"2020-09-09T02:55:40.0Z\"},{\"eventAction\":\"last update of RDAP database\",\"eventDate\":\"2023-11-15T10:50:01.0Z\"}],\"status\":[\"active\"],\"port43\":\"whois.nic.top\",\"entities\":[{\"objectClassName\":\"entity\",\"remarks\":[{\"title\":\"Data Policy\",\"description\":[\"The object does not contain all data due to lack of authorization.\"],\"type\":\"object truncated due to authorization\"},{\"description\":[\"Some of the data in this object has been removed.\"],\"type\":\"object truncated due to authorization\"},{\"title\":\"EMAIL REDACTED FOR PRIVACY\",\"description\":[\"Please query the RDDS service of the Registrar of Record identified in this output for information on how to contact the Registrant of the queried domain name.\"],\"type\":\"object truncated due to authorization\"}],\"roles\":[\"registrant\",\"administrative\",\"technical\"],\"vcardArray\":[\"vcard\",[[\"version\",{},\"text\",\"4.0\"],[\"org\",{},\"text\",\"贾宇琦\"],[\"adr\",{},\"text\",[\"\",\"\",\"\",\"\",\"bei jing shi\",\"\",\"CN\"]],[\"ISO-3166-1-alpha-2\",{},\"text\",\"CN\"]]]},{\"objectClassName\":\"entity\",\"handle\":\"1697\",\"links\":[{\"value\":\"https://rdap.zdnsgtld.com/top/entity/1697\",\"rel\":\"self\",\"href\":\"https://rdap.zdnsgtld.com/top/entity/1697\",\"type\":\"application/rdap+json\"}],\"entities\":[{\"objectClassName\":\"entity\",\"handle\":\"not applicable\",\"roles\":[\"abuse\"],\"vcardArray\":[\"vcard\",[[\"version\",{},\"text\",\"4.0\"],[\"fn\",{},\"text\",\"Abuse Team\"],[\"org\",{},\"text\",\"烟台帝思普网络科技有限公司\"],[\"email\",{},\"text\",\"abuse@dnspod.com\"],[\"tel\",{\"type\":\"voice\"},\"text\",\"tel:4009100100\"],[\"tel\",{\"type\":\"fax\"},\"text\",\"05353389555\"],[\"adr\",{},\"text\",[\"\",\"\",\"\",\"烟台\",\"山东\",\"264000\",\"中国大陆\"]]]]}],\"roles\":[\"registrar\"],\"publicIds\":[{\"type\":\"IANA Registrar ID\",\"identifier\":\"1697\"}],\"vcardArray\":[\"vcard\",[[\"version\",{},\"text\",\"4.0\"],[\"fn\",{},\"text\",\"烟台帝思普网络科技有限公司\"],[\"email\",{},\"text\",\"domain@dnspod.com\"],[\"tel\",{\"type\":\"voice\"},\"text\",\"tel:13910521251\"],[\"tel\",{\"type\":\"fax\"},\"text\",\"05353389555\"],[\"adr\",{},\"text\",[\"\",\"\",\"\",\"烟台\",\"山东\",\"264000\",\"CN\"]],[\"ISO-3166-1-alpha-2\",{},\"text\",\"CN\"]]]}],\"lang\":\"en\",\"ldhName\":\"snowywar.top.\",\"unicodeName\":\"snowywar.top.\",\"nameservers\":[{\"objectClassName\":\"nameserver\",\"links\":[{\"value\":\"https://rdap.zdnsgtld.com/top/nameserver/f1g1ns1.dnspod.net\",\"rel\":\"self\",\"href\":\"https://rdap.zdnsgtld.com/top/nameserver/f1g1ns1.dnspod.net\",\"type\":\"application/rdap+json\"}],\"ldhName\":\"f1g1ns1.dnspod.net.\",\"unicodeName\":\"f1g1ns1.dnspod.net.\"},{\"objectClassName\":\"nameserver\",\"links\":[{\"value\":\"https://rdap.zdnsgtld.com/top/nameserver/f1g1ns2.dnspod.net\",\"rel\":\"self\",\"href\":\"https://rdap.zdnsgtld.com/top/nameserver/f1g1ns2.dnspod.net\",\"type\":\"application/rdap+json\"}],\"ldhName\":\"f1g1ns2.dnspod.net.\",\"unicodeName\":\"f1g1ns2.dnspod.net.\"}],\"secureDNS\":{\"delegationSigned\":false}}",
44
+ "ip": "45.77.228.254",
45
+ "timestamp": "2023-11-15T10:52:50.947757856Z",
46
+ "curl-command": "curl -X 'GET' -H 'Accept: */*' -H 'Accept-Language: en' -H 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.67 Safari/537.36' 'https://www.rdap.net/domain/snowywar.top'",
47
+ "matcher-status": true
48
+ }
@@ -0,0 +1,3 @@
1
+ <svg width="308" height="308" xmlns="http://www.w3.org/2000/svg" version="1.1">
2
+ <image x="0" y="108" width="308" height="91" href="data:image/png;base64,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" />
3
+ </svg>
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "Priority", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return Priority;
9
+ }
10
+ });
11
+ const _connectionType = require("../../../common/connectionType");
12
+ const _priorityrunner = require("../../../common/runner/priority.runner");
13
+ function _define_property(obj, key, value) {
14
+ if (key in obj) {
15
+ Object.defineProperty(obj, key, {
16
+ value: value,
17
+ enumerable: true,
18
+ configurable: true,
19
+ writable: true
20
+ });
21
+ } else {
22
+ obj[key] = value;
23
+ }
24
+ return obj;
25
+ }
26
+ class Priority {
27
+ async supplyData(itemIndex) {
28
+ const runners = (await this.getInputConnectionData(_connectionType.NodeConnectionType.Runner, itemIndex)).flat();
29
+ const mode = this.getNodeParameter("mode", itemIndex);
30
+ const p = this.getNodeParameter("priority", itemIndex);
31
+ const modifyFunc = (priority)=>{
32
+ switch(mode){
33
+ case "increase":
34
+ return priority + p;
35
+ case "decrease":
36
+ return priority - p;
37
+ case "set":
38
+ return p;
39
+ }
40
+ };
41
+ return {
42
+ response: runners.map((r)=>new _priorityrunner.PriorityRunner(r, modifyFunc(r.priority)))
43
+ };
44
+ }
45
+ constructor(){
46
+ _define_property(this, "description", {
47
+ displayName: "Priority Modify",
48
+ icon: "fa:exchange-alt",
49
+ name: "priority",
50
+ group: [
51
+ "output"
52
+ ],
53
+ version: 1,
54
+ codex: {
55
+ alias: [
56
+ "Priority"
57
+ ],
58
+ categories: [
59
+ "SOAR"
60
+ ],
61
+ subcategories: {
62
+ SOAR: [
63
+ "runner"
64
+ ]
65
+ }
66
+ },
67
+ description: "modify runner priority",
68
+ defaults: {
69
+ name: "Priority Modify"
70
+ },
71
+ subtitle: '={{$parameter["mode"]}} {{$parameter["priority"]}}',
72
+ // eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node
73
+ inputs: [
74
+ _connectionType.NodeConnectionType.Runner
75
+ ],
76
+ // eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong
77
+ outputs: [
78
+ _connectionType.NodeConnectionType.Runner
79
+ ],
80
+ properties: [
81
+ {
82
+ displayName: "Mode",
83
+ name: "mode",
84
+ type: "options",
85
+ default: "increase",
86
+ options: [
87
+ {
88
+ name: "Increase",
89
+ value: "increase"
90
+ },
91
+ {
92
+ name: "Decrease",
93
+ value: "decrease"
94
+ },
95
+ {
96
+ name: "Set",
97
+ value: "set"
98
+ }
99
+ ]
100
+ },
101
+ {
102
+ displayName: "Priority",
103
+ name: "priority",
104
+ type: "number",
105
+ default: 0
106
+ }
107
+ ]
108
+ });
109
+ }
110
+ }
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "PriorityAdd", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return PriorityAdd;
9
+ }
10
+ });
11
+ const _connectionType = require("../../../common/connectionType");
12
+ const _containerrunner = require("../../../common/runner/container.runner");
13
+ const _priority = require("../../../common/runner/priority");
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 SubfinderRunner extends _containerrunner.ContainerRunner {
28
+ cmd(assets) {
29
+ return [
30
+ "subfinder",
31
+ "-disable-update-check",
32
+ "-json",
33
+ "-silent",
34
+ ...assets.flatMap((a)=>a.basic.host ? [
35
+ "-domain",
36
+ a.basic.host
37
+ ] : []),
38
+ ...this.collectGeneratedOptions([
39
+ "options.source",
40
+ "options.filter",
41
+ "options.rateLimit",
42
+ "options.output",
43
+ "options.configuration",
44
+ "options.optimization"
45
+ ])
46
+ ];
47
+ }
48
+ process(rawAssets, stdout) {
49
+ const subdomains = new Map();
50
+ for (const line of stdout.trim().split("\n")){
51
+ const json = JSON.parse(line);
52
+ subdomains.set(json.input, [
53
+ ...subdomains.get(json.input) ?? [],
54
+ json.host
55
+ ]);
56
+ }
57
+ return rawAssets.flatMap((a)=>[
58
+ a,
59
+ ...a.setSubdomains(subdomains.get(a.basic.host ?? "") ?? []).splitBySubdomains()
60
+ ]);
61
+ }
62
+ }
63
+ class PriorityAdd {
64
+ async supplyData(itemIndex) {
65
+ return {
66
+ response: new SubfinderRunner("subfinder", _priority.DOMAIN_RUNNER_PRIORITY, this, itemIndex)
67
+ };
68
+ }
69
+ constructor(){
70
+ _define_property(this, "description", {
71
+ displayName: "Soar: PriorityAdd",
72
+ name: "priorityAdd",
73
+ group: [
74
+ "output"
75
+ ],
76
+ version: 1,
77
+ description: "add runner priority",
78
+ defaults: {
79
+ name: "PriorityAdd"
80
+ },
81
+ // eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node
82
+ inputs: [],
83
+ // eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong
84
+ outputs: [
85
+ _connectionType.NodeConnectionType.Runner
86
+ ],
87
+ properties: [
88
+ {
89
+ displayName: "Priority",
90
+ name: "priority",
91
+ type: "number",
92
+ default: _priority.DOMAIN_RUNNER_PRIORITY
93
+ }
94
+ ]
95
+ });
96
+ }
97
+ }
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "SwitchRouter", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return SwitchRouter;
9
+ }
10
+ });
11
+ const _connectionType = require("../../../../common/connectionType");
12
+ const _runner = require("../../../../common/runner/runner");
13
+ function _define_property(obj, key, value) {
14
+ if (key in obj) {
15
+ Object.defineProperty(obj, key, {
16
+ value: value,
17
+ enumerable: true,
18
+ configurable: true,
19
+ writable: true
20
+ });
21
+ } else {
22
+ obj[key] = value;
23
+ }
24
+ return obj;
25
+ }
26
+ class SwitchRouterRunner extends _runner.Runner {
27
+ async __run(collector, assets) {
28
+ debugger;
29
+ const runners = await this.func.getInputConnectionData(_connectionType.NodeConnectionType.Runner, this.itemIndex);
30
+ console.log(runners);
31
+ return assets;
32
+ }
33
+ }
34
+ class SwitchRouter {
35
+ async supplyData(itemIndex) {
36
+ return {
37
+ response: new SwitchRouterRunner("switch_router", this, itemIndex)
38
+ };
39
+ }
40
+ constructor(){
41
+ _define_property(this, "description", {
42
+ displayName: "Switch Router",
43
+ name: "switchRouter",
44
+ group: [
45
+ "output"
46
+ ],
47
+ version: 1,
48
+ description: "Switch Router",
49
+ defaults: {
50
+ name: "Switch Router"
51
+ },
52
+ // eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node
53
+ inputs: `={{$parameter.cases.cases.map(n=>({displayName: n.name, type: ${JSON.stringify(_connectionType.NodeConnectionType.Runner)}}))}}`,
54
+ // eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong
55
+ outputs: [
56
+ _connectionType.NodeConnectionType.Runner
57
+ ],
58
+ properties: [
59
+ {
60
+ displayName: "Switch Case",
61
+ name: "cases",
62
+ type: "fixedCollection",
63
+ default: {},
64
+ typeOptions: {
65
+ multipleValues: true,
66
+ multipleValueButtonText: "Add Case"
67
+ },
68
+ options: [
69
+ {
70
+ name: "cases",
71
+ displayName: "Switch Case",
72
+ values: [
73
+ {
74
+ displayName: "Case Name",
75
+ name: "name",
76
+ type: "string",
77
+ required: true,
78
+ default: "case"
79
+ },
80
+ {
81
+ displayName: "Case Condition",
82
+ name: "condition",
83
+ type: "boolean",
84
+ required: true,
85
+ default: false
86
+ }
87
+ ]
88
+ }
89
+ ]
90
+ },
91
+ {
92
+ displayName: "Multiple Case",
93
+ name: "multipleCase",
94
+ type: "boolean",
95
+ default: false,
96
+ description: "Whether to allow multiple case to be triggered, otherwise only trigger the first case"
97
+ }
98
+ ]
99
+ });
100
+ }
101
+ }
@@ -8,7 +8,9 @@ Object.defineProperty(exports, "Subfinder", {
8
8
  return Subfinder;
9
9
  }
10
10
  });
11
- const _executor = require("../../utils/executor");
11
+ const _connectionType = require("../../../common/connectionType");
12
+ const _containerrunner = require("../../../common/runner/container.runner");
13
+ const _priority = require("../../../common/runner/priority");
12
14
  function _define_property(obj, key, value) {
13
15
  if (key in obj) {
14
16
  Object.defineProperty(obj, key, {
@@ -22,64 +24,93 @@ function _define_property(obj, key, value) {
22
24
  }
23
25
  return obj;
24
26
  }
25
- class Subfinder {
26
- async execute() {
27
- const result = [];
28
- const executor = new _executor.SoarExecutor(this);
29
- for(let idx = 0; idx < this.getInputData().length; idx++){
30
- const response = await executor.run(idx, "subfinder", "-domain", {
31
- extraArgs: [
32
- "-disable-update-check",
33
- "-json",
34
- "-silent"
35
- ],
36
- extraArgParameters: [
37
- "options.source",
38
- "options.filter",
39
- "options.rateLimit",
40
- "options.output",
41
- "options.configuration",
42
- "options.optimization"
43
- ]
44
- });
45
- result.push(...this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(((d)=>d.split("\n").map((n)=>n.trim()).filter(Boolean).map((d)=>JSON.parse(d)))(response.stdout)), {
46
- itemData: {
47
- item: idx
48
- }
49
- }));
50
- }
27
+ class SubfinderRunner extends _containerrunner.ContainerRunner {
28
+ cmd(assets) {
51
29
  return [
52
- result
30
+ "subfinder",
31
+ "-disable-update-check",
32
+ "-json",
33
+ "-silent",
34
+ "-domain",
35
+ assets.map((a)=>a.getDomain()).join(","),
36
+ ...this.collectGeneratedOptions([
37
+ "options.source",
38
+ "options.filter",
39
+ "options.rateLimit",
40
+ "options.output",
41
+ "options.configuration",
42
+ "options.optimization"
43
+ ])
53
44
  ];
54
45
  }
46
+ process(rawAssets, stdout) {
47
+ const subdomains = new Map();
48
+ for (const line of stdout.trim().split("\n")){
49
+ const json = JSON.parse(line);
50
+ subdomains.set(json.input, [
51
+ ...subdomains.get(json.input) ?? [],
52
+ json.host
53
+ ]);
54
+ }
55
+ return rawAssets.flatMap((a)=>{
56
+ a.subdomains = subdomains.get(a.getDomain());
57
+ a.success = true;
58
+ return a.splitBySubdomains();
59
+ });
60
+ }
61
+ }
62
+ class Subfinder {
63
+ async supplyData(itemIndex) {
64
+ return {
65
+ response: new SubfinderRunner("subfinder", _priority.DOMAIN_RUNNER_PRIORITY, this, itemIndex)
66
+ };
67
+ }
55
68
  constructor(){
56
69
  _define_property(this, "description", {
57
- displayName: "Soar: Subfinder",
70
+ displayName: "Runner: Subfinder",
58
71
  name: "subfinder",
72
+ icon: "file:subfinder.svg",
59
73
  group: [
60
- "output"
74
+ "transform"
61
75
  ],
62
76
  version: 1,
63
- subtitle: "={{ 'subfinder' + ($parameter['batch'] ? ' (Batch)' : ' on ' + $parameter['target']) }}",
77
+ codex: {
78
+ alias: [
79
+ "Subfinder"
80
+ ],
81
+ categories: [
82
+ "SOAR"
83
+ ],
84
+ subcategories: {
85
+ SOAR: [
86
+ "runner"
87
+ ]
88
+ },
89
+ resources: {
90
+ primaryDocumentation: [
91
+ {
92
+ url: "https://github.com/projectdiscovery/subfinder"
93
+ }
94
+ ]
95
+ }
96
+ },
64
97
  description: "Interact with Subfinder",
65
98
  defaults: {
66
99
  name: "Subfinder"
67
100
  },
68
- inputs: [
69
- "main"
70
- ],
101
+ // eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node
102
+ inputs: [],
103
+ // eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong
71
104
  outputs: [
72
- "main"
105
+ _connectionType.NodeConnectionType.Runner
73
106
  ],
74
- credentials: [
107
+ properties: [
75
108
  {
76
- name: "dockerCredentialsApi"
109
+ displayName: "Only Success",
110
+ name: "onlySuccess",
111
+ type: "boolean",
112
+ default: true
77
113
  },
78
- {
79
- name: "kubernetesCredentialsApi"
80
- }
81
- ],
82
- properties: (0, _executor.injectCommonProperties)([
83
114
  {
84
115
  displayName: "Options",
85
116
  name: "options",
@@ -305,7 +336,7 @@ class Subfinder {
305
336
  }
306
337
  ]
307
338
  }
308
- ])
339
+ ]
309
340
  });
310
341
  }
311
342
  }
@@ -0,0 +1,3 @@
1
+ <svg width="492" height="492" xmlns="http://www.w3.org/2000/svg" version="1.1">
2
+ <image x="0" y="201" width="492" height="90" href="data:image/png;base64,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" />
3
+ </svg>