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.
- package/CHANGELOG.md +21 -0
- package/LICENSE +21 -0
- package/README.md +99 -0
- package/dist/credentials/DominusNodeApi.credentials.d.ts +7 -0
- package/dist/credentials/DominusNodeApi.credentials.js +42 -0
- package/dist/credentials/DominusNodeApi.credentials.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/nodes/DominusNodeProxy/DominusNodeProxy.node.d.ts +24 -0
- package/dist/nodes/DominusNodeProxy/DominusNodeProxy.node.js +436 -0
- package/dist/nodes/DominusNodeProxy/DominusNodeProxy.node.js.map +1 -0
- package/dist/nodes/DominusNodeUsage/DominusNodeUsage.node.d.ts +13 -0
- package/dist/nodes/DominusNodeUsage/DominusNodeUsage.node.js +105 -0
- package/dist/nodes/DominusNodeUsage/DominusNodeUsage.node.js.map +1 -0
- package/dist/nodes/DominusNodeWallet/DominusNodeWallet.node.d.ts +33 -0
- package/dist/nodes/DominusNodeWallet/DominusNodeWallet.node.js +656 -0
- package/dist/nodes/DominusNodeWallet/DominusNodeWallet.node.js.map +1 -0
- package/dist/shared/auth.d.ts +74 -0
- package/dist/shared/auth.js +264 -0
- package/dist/shared/auth.js.map +1 -0
- package/dist/shared/constants.d.ts +9 -0
- package/dist/shared/constants.js +13 -0
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/ssrf.d.ts +42 -0
- package/dist/shared/ssrf.js +252 -0
- package/dist/shared/ssrf.js.map +1 -0
- package/package.json +41 -0
- package/src/credentials/DominusNodeApi.credentials.ts +39 -0
- package/src/index.ts +4 -0
- package/src/nodes/DominusNodeProxy/DominusNodeProxy.node.ts +459 -0
- package/src/nodes/DominusNodeUsage/DominusNodeUsage.node.ts +130 -0
- package/src/nodes/DominusNodeWallet/DominusNodeWallet.node.ts +898 -0
- package/src/shared/auth.ts +272 -0
- package/src/shared/constants.ts +11 -0
- package/src/shared/ssrf.ts +257 -0
- package/tests/DominusNodeProxy.test.ts +281 -0
- package/tests/DominusNodeUsage.test.ts +250 -0
- package/tests/DominusNodeWallet.test.ts +591 -0
- package/tests/ssrf.test.ts +238 -0
- package/tsconfig.json +18 -0
- 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,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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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
|
+
}
|