n8n-nodes-dominusnode 1.0.0

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 (42) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/LICENSE +21 -0
  3. package/README.md +99 -0
  4. package/dist/credentials/DominusNodeApi.credentials.d.ts +7 -0
  5. package/dist/credentials/DominusNodeApi.credentials.js +42 -0
  6. package/dist/credentials/DominusNodeApi.credentials.js.map +1 -0
  7. package/dist/index.d.ts +4 -0
  8. package/dist/index.js +12 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/nodes/DominusNodeProxy/DominusNodeProxy.node.d.ts +24 -0
  11. package/dist/nodes/DominusNodeProxy/DominusNodeProxy.node.js +436 -0
  12. package/dist/nodes/DominusNodeProxy/DominusNodeProxy.node.js.map +1 -0
  13. package/dist/nodes/DominusNodeUsage/DominusNodeUsage.node.d.ts +13 -0
  14. package/dist/nodes/DominusNodeUsage/DominusNodeUsage.node.js +105 -0
  15. package/dist/nodes/DominusNodeUsage/DominusNodeUsage.node.js.map +1 -0
  16. package/dist/nodes/DominusNodeWallet/DominusNodeWallet.node.d.ts +33 -0
  17. package/dist/nodes/DominusNodeWallet/DominusNodeWallet.node.js +656 -0
  18. package/dist/nodes/DominusNodeWallet/DominusNodeWallet.node.js.map +1 -0
  19. package/dist/shared/auth.d.ts +74 -0
  20. package/dist/shared/auth.js +264 -0
  21. package/dist/shared/auth.js.map +1 -0
  22. package/dist/shared/constants.d.ts +9 -0
  23. package/dist/shared/constants.js +13 -0
  24. package/dist/shared/constants.js.map +1 -0
  25. package/dist/shared/ssrf.d.ts +42 -0
  26. package/dist/shared/ssrf.js +252 -0
  27. package/dist/shared/ssrf.js.map +1 -0
  28. package/package.json +41 -0
  29. package/src/credentials/DominusNodeApi.credentials.ts +39 -0
  30. package/src/index.ts +4 -0
  31. package/src/nodes/DominusNodeProxy/DominusNodeProxy.node.ts +459 -0
  32. package/src/nodes/DominusNodeUsage/DominusNodeUsage.node.ts +130 -0
  33. package/src/nodes/DominusNodeWallet/DominusNodeWallet.node.ts +898 -0
  34. package/src/shared/auth.ts +272 -0
  35. package/src/shared/constants.ts +11 -0
  36. package/src/shared/ssrf.ts +257 -0
  37. package/tests/DominusNodeProxy.test.ts +281 -0
  38. package/tests/DominusNodeUsage.test.ts +250 -0
  39. package/tests/DominusNodeWallet.test.ts +591 -0
  40. package/tests/ssrf.test.ts +238 -0
  41. package/tsconfig.json +18 -0
  42. package/vitest.config.ts +8 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,21 @@
1
+ # Changelog
2
+
3
+ All notable changes to `n8n-nodes-dominusnode` will be documented in this file.
4
+
5
+ ## [1.0.0] - 2025-02-23
6
+
7
+ ### Added
8
+ - Initial release of n8n community nodes for DomiNode
9
+ - **DomiNode Proxy** node: Proxied Fetch, Get Proxy Config, List Active Sessions
10
+ - **DomiNode Wallet** node: 20 operations covering wallet, agentic wallets, and teams
11
+ - **DomiNode Usage** node: Check usage statistics by period (day/week/month)
12
+ - Full SSRF prevention (private IPs, hex/octal/decimal, IPv6, Teredo, 6to4, CGNAT, multicast)
13
+ - DNS rebinding protection
14
+ - OFAC sanctioned country blocking (CU, IR, KP, RU, SY)
15
+ - Read-only HTTP methods for proxied fetch (GET, HEAD, OPTIONS)
16
+ - Credential sanitization in all error messages
17
+ - Prototype pollution prevention in JSON parsing
18
+ - Support for 10 cryptocurrencies (BTC, ETH, LTC, XMR, ZEC, USDC, SOL, USDT, DAI, BNB)
19
+ - PayPal top-up support via Stripe
20
+ - Agentic wallet CRUD with freeze/unfreeze/delete
21
+ - Team management with CRUD, wallet funding, API keys, and member role updates
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Dominus Node
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,99 @@
1
+ # n8n-nodes-dominusnode
2
+
3
+ n8n community nodes for the [DomiNode](https://dominusnode.com) rotating proxy-as-a-service platform.
4
+
5
+ ## Installation
6
+
7
+ ### Community Node (Recommended)
8
+
9
+ 1. Go to **Settings** > **Community Nodes** in your n8n instance
10
+ 2. Enter `n8n-nodes-dominusnode`
11
+ 3. Click **Install**
12
+
13
+ ### Manual Installation
14
+
15
+ ```bash
16
+ cd ~/.n8n/nodes
17
+ npm install n8n-nodes-dominusnode
18
+ ```
19
+
20
+ ## Credentials
21
+
22
+ Create a **DomiNode API** credential with:
23
+
24
+ | Field | Description | Default |
25
+ |-------|-------------|---------|
26
+ | API Key | Your DomiNode API key (`dn_live_...` or `dn_test_...`) | *(required)* |
27
+ | Base URL | DomiNode API base URL | `https://api.dominusnode.com` |
28
+ | Proxy Host | Proxy gateway hostname | `proxy.dominusnode.com` |
29
+ | Proxy Port | Proxy gateway port | `8080` |
30
+
31
+ ## Nodes
32
+
33
+ ### DomiNode Proxy
34
+
35
+ Make HTTP requests through DomiNode's rotating proxy network.
36
+
37
+ **Operations:**
38
+ - **Proxied Fetch** -- Route HTTP requests through datacenter or residential proxies with geo-targeting
39
+ - **Get Proxy Config** -- Retrieve proxy endpoint configuration
40
+ - **List Active Sessions** -- List currently active proxy sessions
41
+
42
+ ### DomiNode Wallet
43
+
44
+ Manage your DomiNode wallet, agentic sub-wallets, and teams.
45
+
46
+ **Operations:**
47
+ - **Check Balance** -- Get current wallet balance
48
+ - **Top Up (Stripe)** -- Create a Stripe checkout session
49
+ - **Top Up (Crypto)** -- Create a crypto invoice (BTC, ETH, LTC, XMR, ZEC, USDC, SOL, USDT, DAI, BNB)
50
+ - **Top Up (PayPal)** -- Create a PayPal checkout session
51
+ - **Create Agentic Wallet** -- Create a sub-wallet with spending limits for AI agents
52
+ - **Fund Agentic Wallet** -- Transfer funds to an agentic wallet
53
+ - **Get Agentic Wallet Balance** -- Check an agentic wallet's balance
54
+ - **List Agentic Wallets** -- List all agentic wallets
55
+ - **Get Agentic Transactions** -- Get transaction history
56
+ - **Freeze/Unfreeze/Delete Agentic Wallet** -- Lifecycle management
57
+ - **Create Team** -- Create a shared billing team
58
+ - **List Teams** / **Team Details** -- View teams
59
+ - **Fund Team** -- Fund a team wallet
60
+ - **Create Team Key** -- Create team API keys
61
+ - **Team Usage** -- View team transaction history
62
+ - **Update Team** / **Update Team Member Role** -- Team administration
63
+
64
+ ### DomiNode Usage
65
+
66
+ Check proxy usage statistics.
67
+
68
+ **Operations:**
69
+ - **Check Usage** -- Get bandwidth and cost statistics for a given period (day, week, month)
70
+
71
+ ## Security
72
+
73
+ All nodes include comprehensive security measures:
74
+
75
+ - **SSRF Prevention**: Blocks private IPs, localhost, cloud metadata endpoints, hex/octal/decimal-encoded IPs, IPv4-mapped/compatible IPv6, Teredo tunneling, 6to4, CGNAT, multicast, and internal TLDs (.localhost, .local, .internal, .arpa)
76
+ - **DNS Rebinding Protection**: Resolves hostnames and validates all returned IPs before making proxy requests
77
+ - **OFAC Compliance**: Blocks geo-targeting to sanctioned countries (Cuba, Iran, North Korea, Russia, Syria)
78
+ - **Read-Only Methods**: Proxied fetch only allows GET, HEAD, and OPTIONS to prevent abuse
79
+ - **Credential Sanitization**: API keys are redacted from all error messages
80
+ - **Prototype Pollution Prevention**: All JSON responses are stripped of dangerous keys
81
+
82
+ ## Pricing
83
+
84
+ | Pool Type | Price | Cost | Margin |
85
+ |-----------|-------|------|--------|
86
+ | Datacenter | $3/GB | $0.012/GB | 99.6% |
87
+ | Residential | $5/GB | $4.00/GB | 20% |
88
+
89
+ ## Development
90
+
91
+ ```bash
92
+ npm install
93
+ npm run build
94
+ npm test
95
+ ```
96
+
97
+ ## License
98
+
99
+ MIT
@@ -0,0 +1,7 @@
1
+ import { ICredentialType, INodeProperties } from "n8n-workflow";
2
+ export declare class DominusNodeApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ documentationUrl: string;
6
+ properties: INodeProperties[];
7
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DominusNodeApi = void 0;
4
+ class DominusNodeApi {
5
+ name = "dominusNodeApi";
6
+ displayName = "DomiNode API";
7
+ documentationUrl = "https://docs.dominusnode.com";
8
+ properties = [
9
+ {
10
+ displayName: "API Key",
11
+ name: "apiKey",
12
+ type: "string",
13
+ typeOptions: { password: true },
14
+ default: "",
15
+ required: true,
16
+ description: 'DomiNode API key (starts with dn_live_ or dn_test_)',
17
+ },
18
+ {
19
+ displayName: "Base URL",
20
+ name: "baseUrl",
21
+ type: "string",
22
+ default: "https://api.dominusnode.com",
23
+ description: "DomiNode API base URL",
24
+ },
25
+ {
26
+ displayName: "Proxy Host",
27
+ name: "proxyHost",
28
+ type: "string",
29
+ default: "proxy.dominusnode.com",
30
+ description: "DomiNode proxy gateway hostname",
31
+ },
32
+ {
33
+ displayName: "Proxy Port",
34
+ name: "proxyPort",
35
+ type: "number",
36
+ default: 8080,
37
+ description: "DomiNode proxy gateway port",
38
+ },
39
+ ];
40
+ }
41
+ exports.DominusNodeApi = DominusNodeApi;
42
+ //# sourceMappingURL=DominusNodeApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DominusNodeApi.credentials.js","sourceRoot":"","sources":["../../src/credentials/DominusNodeApi.credentials.ts"],"names":[],"mappings":";;;AAEA,MAAa,cAAc;IACzB,IAAI,GAAG,gBAAgB,CAAC;IACxB,WAAW,GAAG,cAAc,CAAC;IAC7B,gBAAgB,GAAG,8BAA8B,CAAC;IAClD,UAAU,GAAsB;QAC9B;YACE,WAAW,EAAE,SAAS;YACtB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/B,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,qDAAqD;SACnE;QACD;YACE,WAAW,EAAE,UAAU;YACvB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,6BAA6B;YACtC,WAAW,EAAE,uBAAuB;SACrC;QACD;YACE,WAAW,EAAE,YAAY;YACzB,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,uBAAuB;YAChC,WAAW,EAAE,iCAAiC;SAC/C;QACD;YACE,WAAW,EAAE,YAAY;YACzB,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,6BAA6B;SAC3C;KACF,CAAC;CACH;AApCD,wCAoCC"}
@@ -0,0 +1,4 @@
1
+ export { DominusNodeApi } from "./credentials/DominusNodeApi.credentials";
2
+ export { DominusNodeProxy } from "./nodes/DominusNodeProxy/DominusNodeProxy.node";
3
+ export { DominusNodeWallet } from "./nodes/DominusNodeWallet/DominusNodeWallet.node";
4
+ export { DominusNodeUsage } from "./nodes/DominusNodeUsage/DominusNodeUsage.node";
package/dist/index.js ADDED
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DominusNodeUsage = exports.DominusNodeWallet = exports.DominusNodeProxy = exports.DominusNodeApi = void 0;
4
+ var DominusNodeApi_credentials_1 = require("./credentials/DominusNodeApi.credentials");
5
+ Object.defineProperty(exports, "DominusNodeApi", { enumerable: true, get: function () { return DominusNodeApi_credentials_1.DominusNodeApi; } });
6
+ var DominusNodeProxy_node_1 = require("./nodes/DominusNodeProxy/DominusNodeProxy.node");
7
+ Object.defineProperty(exports, "DominusNodeProxy", { enumerable: true, get: function () { return DominusNodeProxy_node_1.DominusNodeProxy; } });
8
+ var DominusNodeWallet_node_1 = require("./nodes/DominusNodeWallet/DominusNodeWallet.node");
9
+ Object.defineProperty(exports, "DominusNodeWallet", { enumerable: true, get: function () { return DominusNodeWallet_node_1.DominusNodeWallet; } });
10
+ var DominusNodeUsage_node_1 = require("./nodes/DominusNodeUsage/DominusNodeUsage.node");
11
+ Object.defineProperty(exports, "DominusNodeUsage", { enumerable: true, get: function () { return DominusNodeUsage_node_1.DominusNodeUsage; } });
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uFAA0E;AAAjE,4HAAA,cAAc,OAAA;AACvB,wFAAkF;AAAzE,yHAAA,gBAAgB,OAAA;AACzB,2FAAqF;AAA5E,2HAAA,iBAAiB,OAAA;AAC1B,wFAAkF;AAAzE,yHAAA,gBAAgB,OAAA"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * DomiNode Proxy n8n community node.
3
+ *
4
+ * Operations:
5
+ * - Proxied Fetch: Make HTTP requests through DomiNode's rotating proxy network
6
+ * - Get Proxy Config: Retrieve proxy endpoint configuration
7
+ * - List Active Sessions: List currently active proxy sessions
8
+ *
9
+ * Security:
10
+ * - Full SSRF prevention (private IPs, hex/octal/decimal, IPv6 variants,
11
+ * Teredo, 6to4, CGNAT, multicast, .localhost/.local/.internal/.arpa)
12
+ * - DNS rebinding protection
13
+ * - OFAC sanctioned country blocking
14
+ * - Read-only HTTP methods only (GET, HEAD, OPTIONS)
15
+ * - Credential sanitization in error messages
16
+ * - Prototype pollution prevention
17
+ *
18
+ * @module
19
+ */
20
+ import { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from "n8n-workflow";
21
+ export declare class DominusNodeProxy implements INodeType {
22
+ description: INodeTypeDescription;
23
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
24
+ }