n8n-nodes-dominusnode 1.1.0 → 1.3.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 +1 -0
- package/README.md +13 -10
- package/dist/credentials/DominusNodeApi.credentials.js +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/nodes/DominusNodeAccount/DominusNodeAccount.node.d.ts +23 -0
- package/dist/nodes/DominusNodeAccount/DominusNodeAccount.node.js +346 -0
- package/dist/nodes/DominusNodeAccount/DominusNodeAccount.node.js.map +1 -0
- package/dist/nodes/DominusNodeKeys/DominusNodeKeys.node.d.ts +20 -0
- package/dist/nodes/DominusNodeKeys/DominusNodeKeys.node.js +162 -0
- package/dist/nodes/DominusNodeKeys/DominusNodeKeys.node.js.map +1 -0
- package/dist/nodes/DominusNodePlans/DominusNodePlans.node.d.ts +19 -0
- package/dist/nodes/DominusNodePlans/DominusNodePlans.node.js +142 -0
- package/dist/nodes/DominusNodePlans/DominusNodePlans.node.js.map +1 -0
- package/dist/nodes/DominusNodeProxy/DominusNodeProxy.node.d.ts +2 -1
- package/dist/nodes/DominusNodeProxy/DominusNodeProxy.node.js +33 -9
- package/dist/nodes/DominusNodeProxy/DominusNodeProxy.node.js.map +1 -1
- package/dist/nodes/DominusNodeTeams/DominusNodeTeams.node.d.ts +27 -0
- package/dist/nodes/DominusNodeTeams/DominusNodeTeams.node.js +309 -0
- package/dist/nodes/DominusNodeTeams/DominusNodeTeams.node.js.map +1 -0
- package/dist/nodes/DominusNodeUsage/DominusNodeUsage.node.d.ts +3 -1
- package/dist/nodes/DominusNodeUsage/DominusNodeUsage.node.js +47 -1
- package/dist/nodes/DominusNodeUsage/DominusNodeUsage.node.js.map +1 -1
- package/dist/nodes/DominusNodeWallet/DominusNodeWallet.node.d.ts +5 -1
- package/dist/nodes/DominusNodeWallet/DominusNodeWallet.node.js +361 -38
- package/dist/nodes/DominusNodeWallet/DominusNodeWallet.node.js.map +1 -1
- package/dist/shared/auth.js +1 -1
- package/dist/shared/auth.js.map +1 -1
- package/dist/shared/ssrf.js.map +1 -1
- package/package.json +8 -3
- package/src/credentials/DominusNodeApi.credentials.ts +0 -48
- package/src/index.ts +0 -4
- package/src/nodes/DominusNodeProxy/DominusNodeProxy.node.ts +0 -460
- package/src/nodes/DominusNodeUsage/DominusNodeUsage.node.ts +0 -131
- package/src/nodes/DominusNodeWallet/DominusNodeWallet.node.ts +0 -899
- package/src/shared/auth.ts +0 -287
- package/src/shared/constants.ts +0 -11
- package/src/shared/ssrf.ts +0 -257
- package/tests/DominusNodeProxy.test.ts +0 -281
- package/tests/DominusNodeUsage.test.ts +0 -250
- package/tests/DominusNodeWallet.test.ts +0 -591
- package/tests/ssrf.test.ts +0 -238
- package/tsconfig.json +0 -18
- package/vitest.config.ts +0 -8
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,7 @@ All notable changes to `n8n-nodes-dominusnode` will be documented in this file.
|
|
|
9
9
|
## [1.0.0] - 2025-02-23
|
|
10
10
|
|
|
11
11
|
### Added
|
|
12
|
+
|
|
12
13
|
- Initial release of n8n community nodes for Dominus Node
|
|
13
14
|
- **Dominus Node Proxy** node: Proxied Fetch, Get Proxy Config, List Active Sessions
|
|
14
15
|
- **Dominus Node Wallet** node: 20 operations covering wallet, agentic wallets, and teams
|
package/README.md
CHANGED
|
@@ -21,12 +21,12 @@ npm install n8n-nodes-dominusnode
|
|
|
21
21
|
|
|
22
22
|
Create a **Dominus Node API** credential with:
|
|
23
23
|
|
|
24
|
-
| Field
|
|
25
|
-
|
|
26
|
-
| API Key
|
|
27
|
-
| Base URL
|
|
28
|
-
| Proxy Host | Proxy gateway hostname
|
|
29
|
-
| Proxy Port | Proxy gateway port
|
|
24
|
+
| Field | Description | Default |
|
|
25
|
+
| ---------- | ---------------------------------------------------------- | ----------------------------- |
|
|
26
|
+
| API Key | Your Dominus Node API key (`dn_live_...` or `dn_test_...`) | _(required)_ |
|
|
27
|
+
| Base URL | Dominus Node API base URL | `https://api.dominusnode.com` |
|
|
28
|
+
| Proxy Host | Proxy gateway hostname | `proxy.dominusnode.com` |
|
|
29
|
+
| Proxy Port | Proxy gateway port | `8080` |
|
|
30
30
|
|
|
31
31
|
## Nodes
|
|
32
32
|
|
|
@@ -35,6 +35,7 @@ Create a **Dominus Node API** credential with:
|
|
|
35
35
|
Make HTTP requests through Dominus Node's rotating proxy network.
|
|
36
36
|
|
|
37
37
|
**Operations:**
|
|
38
|
+
|
|
38
39
|
- **Proxied Fetch** -- Route HTTP requests through datacenter or residential proxies with geo-targeting
|
|
39
40
|
- **Get Proxy Config** -- Retrieve proxy endpoint configuration
|
|
40
41
|
- **List Active Sessions** -- List currently active proxy sessions
|
|
@@ -44,6 +45,7 @@ Make HTTP requests through Dominus Node's rotating proxy network.
|
|
|
44
45
|
Manage your Dominus Node wallet, agentic sub-wallets, and teams.
|
|
45
46
|
|
|
46
47
|
**Operations:**
|
|
48
|
+
|
|
47
49
|
- **Check Balance** -- Get current wallet balance
|
|
48
50
|
- **Top Up (Stripe)** -- Create a Stripe checkout session
|
|
49
51
|
- **Top Up (Crypto)** -- Create a crypto invoice (BTC, ETH, LTC, XMR, ZEC, USDC, SOL, USDT, DAI, BNB)
|
|
@@ -66,6 +68,7 @@ Manage your Dominus Node wallet, agentic sub-wallets, and teams.
|
|
|
66
68
|
Check proxy usage statistics.
|
|
67
69
|
|
|
68
70
|
**Operations:**
|
|
71
|
+
|
|
69
72
|
- **Check Usage** -- Get bandwidth and cost statistics for a given period (day, week, month)
|
|
70
73
|
|
|
71
74
|
## Security
|
|
@@ -81,10 +84,10 @@ All nodes include comprehensive security measures:
|
|
|
81
84
|
|
|
82
85
|
## Pricing
|
|
83
86
|
|
|
84
|
-
| Pool Type
|
|
85
|
-
|
|
86
|
-
| Datacenter
|
|
87
|
-
| Residential | $5/GB |
|
|
87
|
+
| Pool Type | Price |
|
|
88
|
+
| ----------- | ----- |
|
|
89
|
+
| Datacenter | $3/GB |
|
|
90
|
+
| Residential | $5/GB |
|
|
88
91
|
|
|
89
92
|
## Development
|
|
90
93
|
|
|
@@ -13,7 +13,7 @@ class DominusNodeApi {
|
|
|
13
13
|
typeOptions: { password: true },
|
|
14
14
|
default: "",
|
|
15
15
|
required: true,
|
|
16
|
-
description:
|
|
16
|
+
description: "Dominus Node API key (starts with dn_live_ or dn_test_)",
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
displayName: "Base URL",
|
package/dist/index.d.ts
CHANGED
|
@@ -2,3 +2,7 @@ export { DominusNodeApi } from "./credentials/DominusNodeApi.credentials";
|
|
|
2
2
|
export { DominusNodeProxy } from "./nodes/DominusNodeProxy/DominusNodeProxy.node";
|
|
3
3
|
export { DominusNodeWallet } from "./nodes/DominusNodeWallet/DominusNodeWallet.node";
|
|
4
4
|
export { DominusNodeUsage } from "./nodes/DominusNodeUsage/DominusNodeUsage.node";
|
|
5
|
+
export { DominusNodeAccount } from "./nodes/DominusNodeAccount/DominusNodeAccount.node";
|
|
6
|
+
export { DominusNodeKeys } from "./nodes/DominusNodeKeys/DominusNodeKeys.node";
|
|
7
|
+
export { DominusNodePlans } from "./nodes/DominusNodePlans/DominusNodePlans.node";
|
|
8
|
+
export { DominusNodeTeams } from "./nodes/DominusNodeTeams/DominusNodeTeams.node";
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DominusNodeUsage = exports.DominusNodeWallet = exports.DominusNodeProxy = exports.DominusNodeApi = void 0;
|
|
3
|
+
exports.DominusNodeTeams = exports.DominusNodePlans = exports.DominusNodeKeys = exports.DominusNodeAccount = exports.DominusNodeUsage = exports.DominusNodeWallet = exports.DominusNodeProxy = exports.DominusNodeApi = void 0;
|
|
4
4
|
var DominusNodeApi_credentials_1 = require("./credentials/DominusNodeApi.credentials");
|
|
5
5
|
Object.defineProperty(exports, "DominusNodeApi", { enumerable: true, get: function () { return DominusNodeApi_credentials_1.DominusNodeApi; } });
|
|
6
6
|
var DominusNodeProxy_node_1 = require("./nodes/DominusNodeProxy/DominusNodeProxy.node");
|
|
@@ -9,4 +9,12 @@ var DominusNodeWallet_node_1 = require("./nodes/DominusNodeWallet/DominusNodeWal
|
|
|
9
9
|
Object.defineProperty(exports, "DominusNodeWallet", { enumerable: true, get: function () { return DominusNodeWallet_node_1.DominusNodeWallet; } });
|
|
10
10
|
var DominusNodeUsage_node_1 = require("./nodes/DominusNodeUsage/DominusNodeUsage.node");
|
|
11
11
|
Object.defineProperty(exports, "DominusNodeUsage", { enumerable: true, get: function () { return DominusNodeUsage_node_1.DominusNodeUsage; } });
|
|
12
|
+
var DominusNodeAccount_node_1 = require("./nodes/DominusNodeAccount/DominusNodeAccount.node");
|
|
13
|
+
Object.defineProperty(exports, "DominusNodeAccount", { enumerable: true, get: function () { return DominusNodeAccount_node_1.DominusNodeAccount; } });
|
|
14
|
+
var DominusNodeKeys_node_1 = require("./nodes/DominusNodeKeys/DominusNodeKeys.node");
|
|
15
|
+
Object.defineProperty(exports, "DominusNodeKeys", { enumerable: true, get: function () { return DominusNodeKeys_node_1.DominusNodeKeys; } });
|
|
16
|
+
var DominusNodePlans_node_1 = require("./nodes/DominusNodePlans/DominusNodePlans.node");
|
|
17
|
+
Object.defineProperty(exports, "DominusNodePlans", { enumerable: true, get: function () { return DominusNodePlans_node_1.DominusNodePlans; } });
|
|
18
|
+
var DominusNodeTeams_node_1 = require("./nodes/DominusNodeTeams/DominusNodeTeams.node");
|
|
19
|
+
Object.defineProperty(exports, "DominusNodeTeams", { enumerable: true, get: function () { return DominusNodeTeams_node_1.DominusNodeTeams; } });
|
|
12
20
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +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"}
|
|
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;AACzB,8FAAwF;AAA/E,6HAAA,kBAAkB,OAAA;AAC3B,qFAA+E;AAAtE,uHAAA,eAAe,OAAA;AACxB,wFAAkF;AAAzE,yHAAA,gBAAgB,OAAA;AACzB,wFAAkF;AAAzE,yHAAA,gBAAgB,OAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dominus Node Account n8n community node.
|
|
3
|
+
*
|
|
4
|
+
* Operations (6 tools):
|
|
5
|
+
* - Register: Create a new account
|
|
6
|
+
* - Login: Log in with email and password
|
|
7
|
+
* - Get Account Info: Get current account details
|
|
8
|
+
* - Verify Email: Verify email with a token
|
|
9
|
+
* - Resend Verification: Resend the email verification link
|
|
10
|
+
* - Update Password: Change account password
|
|
11
|
+
*
|
|
12
|
+
* Security:
|
|
13
|
+
* - Credential sanitization in error messages
|
|
14
|
+
* - Email and password validation
|
|
15
|
+
* - Control character rejection
|
|
16
|
+
*
|
|
17
|
+
* @module
|
|
18
|
+
*/
|
|
19
|
+
import { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from "n8n-workflow";
|
|
20
|
+
export declare class DominusNodeAccount implements INodeType {
|
|
21
|
+
description: INodeTypeDescription;
|
|
22
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Dominus Node Account n8n community node.
|
|
4
|
+
*
|
|
5
|
+
* Operations (6 tools):
|
|
6
|
+
* - Register: Create a new account
|
|
7
|
+
* - Login: Log in with email and password
|
|
8
|
+
* - Get Account Info: Get current account details
|
|
9
|
+
* - Verify Email: Verify email with a token
|
|
10
|
+
* - Resend Verification: Resend the email verification link
|
|
11
|
+
* - Update Password: Change account password
|
|
12
|
+
*
|
|
13
|
+
* Security:
|
|
14
|
+
* - Credential sanitization in error messages
|
|
15
|
+
* - Email and password validation
|
|
16
|
+
* - Control character rejection
|
|
17
|
+
*
|
|
18
|
+
* @module
|
|
19
|
+
*/
|
|
20
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
23
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
24
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
25
|
+
}
|
|
26
|
+
Object.defineProperty(o, k2, desc);
|
|
27
|
+
}) : (function(o, m, k, k2) {
|
|
28
|
+
if (k2 === undefined) k2 = k;
|
|
29
|
+
o[k2] = m[k];
|
|
30
|
+
}));
|
|
31
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
32
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
33
|
+
}) : function(o, v) {
|
|
34
|
+
o["default"] = v;
|
|
35
|
+
});
|
|
36
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
37
|
+
var ownKeys = function(o) {
|
|
38
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
39
|
+
var ar = [];
|
|
40
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
41
|
+
return ar;
|
|
42
|
+
};
|
|
43
|
+
return ownKeys(o);
|
|
44
|
+
};
|
|
45
|
+
return function (mod) {
|
|
46
|
+
if (mod && mod.__esModule) return mod;
|
|
47
|
+
var result = {};
|
|
48
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
49
|
+
__setModuleDefault(result, mod);
|
|
50
|
+
return result;
|
|
51
|
+
};
|
|
52
|
+
})();
|
|
53
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
|
+
exports.DominusNodeAccount = void 0;
|
|
55
|
+
const crypto = __importStar(require("node:crypto"));
|
|
56
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
57
|
+
const auth_1 = require("../../shared/auth");
|
|
58
|
+
const EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
59
|
+
const CONTROL_CHAR_RE = /[\x00-\x1f\x7f]/;
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
// SHA-256 Proof-of-Work solver
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
function countLeadingZeroBits(buf) {
|
|
64
|
+
let count = 0;
|
|
65
|
+
for (const byte of buf) {
|
|
66
|
+
if (byte === 0) {
|
|
67
|
+
count += 8;
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
let mask = 0x80;
|
|
71
|
+
while (mask && !(byte & mask)) {
|
|
72
|
+
count++;
|
|
73
|
+
mask >>= 1;
|
|
74
|
+
}
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
return count;
|
|
78
|
+
}
|
|
79
|
+
async function solvePoW(baseUrl) {
|
|
80
|
+
try {
|
|
81
|
+
const resp = await fetch(`${baseUrl}/api/auth/pow/challenge`, {
|
|
82
|
+
method: "POST",
|
|
83
|
+
headers: { "Content-Type": "application/json" },
|
|
84
|
+
redirect: "error",
|
|
85
|
+
});
|
|
86
|
+
if (!resp.ok)
|
|
87
|
+
return null;
|
|
88
|
+
const text = await resp.text();
|
|
89
|
+
if (text.length > 10_485_760)
|
|
90
|
+
return null;
|
|
91
|
+
const challenge = JSON.parse(text);
|
|
92
|
+
const prefix = challenge.prefix ?? "";
|
|
93
|
+
const difficulty = challenge.difficulty ?? 20;
|
|
94
|
+
const challengeId = challenge.challengeId ?? "";
|
|
95
|
+
if (!prefix || !challengeId)
|
|
96
|
+
return null;
|
|
97
|
+
for (let nonce = 0; nonce < 100_000_000; nonce++) {
|
|
98
|
+
const hash = crypto
|
|
99
|
+
.createHash("sha256")
|
|
100
|
+
.update(prefix + nonce.toString())
|
|
101
|
+
.digest();
|
|
102
|
+
if (countLeadingZeroBits(hash) >= difficulty) {
|
|
103
|
+
return { challengeId, nonce: nonce.toString() };
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
class DominusNodeAccount {
|
|
113
|
+
description = {
|
|
114
|
+
displayName: "Dominus Node Account",
|
|
115
|
+
name: "dominusNodeAccount",
|
|
116
|
+
icon: "file:dominusnode.svg",
|
|
117
|
+
group: ["transform"],
|
|
118
|
+
version: 1,
|
|
119
|
+
subtitle: '={{$parameter["operation"]}}',
|
|
120
|
+
description: "Manage Dominus Node account registration, login, and settings",
|
|
121
|
+
defaults: { name: "Dominus Node Account" },
|
|
122
|
+
inputs: ["main"],
|
|
123
|
+
outputs: ["main"],
|
|
124
|
+
credentials: [{ name: "dominusNodeApi", required: true }],
|
|
125
|
+
properties: [
|
|
126
|
+
{
|
|
127
|
+
displayName: "Operation",
|
|
128
|
+
name: "operation",
|
|
129
|
+
type: "options",
|
|
130
|
+
noDataExpression: true,
|
|
131
|
+
options: [
|
|
132
|
+
{
|
|
133
|
+
name: "Register",
|
|
134
|
+
value: "register",
|
|
135
|
+
description: "Create a new account",
|
|
136
|
+
action: "Register",
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
name: "Login",
|
|
140
|
+
value: "login",
|
|
141
|
+
description: "Log in with email and password",
|
|
142
|
+
action: "Login",
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
name: "Get Account Info",
|
|
146
|
+
value: "getAccountInfo",
|
|
147
|
+
description: "Get current account details",
|
|
148
|
+
action: "Get account info",
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
name: "Verify Email",
|
|
152
|
+
value: "verifyEmail",
|
|
153
|
+
description: "Verify email with a token",
|
|
154
|
+
action: "Verify email",
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
name: "Resend Verification",
|
|
158
|
+
value: "resendVerification",
|
|
159
|
+
description: "Resend email verification link",
|
|
160
|
+
action: "Resend verification",
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
name: "Update Password",
|
|
164
|
+
value: "updatePassword",
|
|
165
|
+
description: "Change account password",
|
|
166
|
+
action: "Update password",
|
|
167
|
+
},
|
|
168
|
+
],
|
|
169
|
+
default: "getAccountInfo",
|
|
170
|
+
},
|
|
171
|
+
// --- Register / Login ---
|
|
172
|
+
{
|
|
173
|
+
displayName: "Email",
|
|
174
|
+
name: "email",
|
|
175
|
+
type: "string",
|
|
176
|
+
default: "",
|
|
177
|
+
required: true,
|
|
178
|
+
description: "Account email address",
|
|
179
|
+
displayOptions: { show: { operation: ["register", "login"] } },
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
displayName: "Password",
|
|
183
|
+
name: "password",
|
|
184
|
+
type: "string",
|
|
185
|
+
typeOptions: { password: true },
|
|
186
|
+
default: "",
|
|
187
|
+
required: true,
|
|
188
|
+
description: "Account password (8-128 characters)",
|
|
189
|
+
displayOptions: { show: { operation: ["register", "login"] } },
|
|
190
|
+
},
|
|
191
|
+
// --- Verify Email ---
|
|
192
|
+
{
|
|
193
|
+
displayName: "Verification Token",
|
|
194
|
+
name: "verificationToken",
|
|
195
|
+
type: "string",
|
|
196
|
+
default: "",
|
|
197
|
+
required: true,
|
|
198
|
+
description: "Email verification token received via email",
|
|
199
|
+
displayOptions: { show: { operation: ["verifyEmail"] } },
|
|
200
|
+
},
|
|
201
|
+
// --- Update Password ---
|
|
202
|
+
{
|
|
203
|
+
displayName: "Current Password",
|
|
204
|
+
name: "currentPassword",
|
|
205
|
+
type: "string",
|
|
206
|
+
typeOptions: { password: true },
|
|
207
|
+
default: "",
|
|
208
|
+
required: true,
|
|
209
|
+
description: "Current account password",
|
|
210
|
+
displayOptions: { show: { operation: ["updatePassword"] } },
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
displayName: "New Password",
|
|
214
|
+
name: "newPassword",
|
|
215
|
+
type: "string",
|
|
216
|
+
typeOptions: { password: true },
|
|
217
|
+
default: "",
|
|
218
|
+
required: true,
|
|
219
|
+
description: "New password (8-128 characters)",
|
|
220
|
+
displayOptions: { show: { operation: ["updatePassword"] } },
|
|
221
|
+
},
|
|
222
|
+
],
|
|
223
|
+
};
|
|
224
|
+
async execute() {
|
|
225
|
+
const items = this.getInputData();
|
|
226
|
+
const returnData = [];
|
|
227
|
+
const credentials = await this.getCredentials("dominusNodeApi");
|
|
228
|
+
const apiKey = credentials.apiKey;
|
|
229
|
+
const baseUrl = credentials.baseUrl || "https://api.dominusnode.com";
|
|
230
|
+
if (!apiKey) {
|
|
231
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), "API Key is required");
|
|
232
|
+
}
|
|
233
|
+
const agentSecret = credentials.agentSecret || undefined;
|
|
234
|
+
const auth = new auth_1.DominusNodeAuth(apiKey, baseUrl, 30000, agentSecret);
|
|
235
|
+
const operation = this.getNodeParameter("operation", 0);
|
|
236
|
+
for (let i = 0; i < items.length; i++) {
|
|
237
|
+
try {
|
|
238
|
+
let result;
|
|
239
|
+
switch (operation) {
|
|
240
|
+
case "register": {
|
|
241
|
+
const email = this.getNodeParameter("email", i);
|
|
242
|
+
const password = this.getNodeParameter("password", i);
|
|
243
|
+
const safeEmail = validateEmail(this, email, i);
|
|
244
|
+
const safePassword = validatePassword(this, password, i);
|
|
245
|
+
// Solve PoW for CAPTCHA-free registration
|
|
246
|
+
const pow = await solvePoW(baseUrl);
|
|
247
|
+
const regBody = {
|
|
248
|
+
email: safeEmail,
|
|
249
|
+
password: safePassword,
|
|
250
|
+
};
|
|
251
|
+
if (pow)
|
|
252
|
+
regBody.pow = pow;
|
|
253
|
+
result = await auth.apiRequest("POST", "/api/auth/register", regBody);
|
|
254
|
+
break;
|
|
255
|
+
}
|
|
256
|
+
case "login": {
|
|
257
|
+
const email = this.getNodeParameter("email", i);
|
|
258
|
+
const password = this.getNodeParameter("password", i);
|
|
259
|
+
const safeEmail = validateEmail(this, email, i);
|
|
260
|
+
const safePassword = validatePassword(this, password, i);
|
|
261
|
+
result = await auth.apiRequest("POST", "/api/auth/login", {
|
|
262
|
+
email: safeEmail,
|
|
263
|
+
password: safePassword,
|
|
264
|
+
});
|
|
265
|
+
break;
|
|
266
|
+
}
|
|
267
|
+
case "getAccountInfo": {
|
|
268
|
+
result = await auth.apiRequest("GET", "/api/auth/me");
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
case "verifyEmail": {
|
|
272
|
+
const token = this.getNodeParameter("verificationToken", i);
|
|
273
|
+
if (!token ||
|
|
274
|
+
typeof token !== "string" ||
|
|
275
|
+
token.trim().length === 0) {
|
|
276
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), "Verification token is required", { itemIndex: i });
|
|
277
|
+
}
|
|
278
|
+
if (CONTROL_CHAR_RE.test(token)) {
|
|
279
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), "Token contains invalid control characters", { itemIndex: i });
|
|
280
|
+
}
|
|
281
|
+
result = await auth.apiRequest("POST", "/api/auth/verify-email", {
|
|
282
|
+
token: token.trim(),
|
|
283
|
+
});
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
case "resendVerification": {
|
|
287
|
+
result = await auth.apiRequest("POST", "/api/auth/resend-verification");
|
|
288
|
+
break;
|
|
289
|
+
}
|
|
290
|
+
case "updatePassword": {
|
|
291
|
+
const currentPassword = this.getNodeParameter("currentPassword", i);
|
|
292
|
+
const newPassword = this.getNodeParameter("newPassword", i);
|
|
293
|
+
validatePassword(this, currentPassword, i);
|
|
294
|
+
validatePassword(this, newPassword, i);
|
|
295
|
+
result = await auth.apiRequest("POST", "/api/auth/change-password", {
|
|
296
|
+
currentPassword,
|
|
297
|
+
newPassword,
|
|
298
|
+
});
|
|
299
|
+
break;
|
|
300
|
+
}
|
|
301
|
+
default:
|
|
302
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown operation: ${operation}`, { itemIndex: i });
|
|
303
|
+
}
|
|
304
|
+
returnData.push({ json: (result ?? {}) });
|
|
305
|
+
}
|
|
306
|
+
catch (err) {
|
|
307
|
+
if (this.continueOnFail()) {
|
|
308
|
+
returnData.push({
|
|
309
|
+
json: {
|
|
310
|
+
error: (0, auth_1.sanitizeError)(err instanceof Error ? err.message : String(err)),
|
|
311
|
+
},
|
|
312
|
+
});
|
|
313
|
+
continue;
|
|
314
|
+
}
|
|
315
|
+
if (err instanceof n8n_workflow_1.NodeOperationError)
|
|
316
|
+
throw err;
|
|
317
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), (0, auth_1.sanitizeError)(err instanceof Error ? err.message : String(err)), { itemIndex: i });
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
return [returnData];
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
exports.DominusNodeAccount = DominusNodeAccount;
|
|
324
|
+
// ---------------------------------------------------------------------------
|
|
325
|
+
// Validation helpers
|
|
326
|
+
// ---------------------------------------------------------------------------
|
|
327
|
+
function validateEmail(ctx, email, itemIndex) {
|
|
328
|
+
const trimmed = (email ?? "").trim();
|
|
329
|
+
if (!trimmed || !EMAIL_RE.test(trimmed)) {
|
|
330
|
+
throw new n8n_workflow_1.NodeOperationError(ctx.getNode(), "A valid email address is required", { itemIndex });
|
|
331
|
+
}
|
|
332
|
+
if (trimmed.length > 254) {
|
|
333
|
+
throw new n8n_workflow_1.NodeOperationError(ctx.getNode(), "Email address too long (max 254 characters)", { itemIndex });
|
|
334
|
+
}
|
|
335
|
+
return trimmed;
|
|
336
|
+
}
|
|
337
|
+
function validatePassword(ctx, password, itemIndex) {
|
|
338
|
+
if (!password || password.length < 8) {
|
|
339
|
+
throw new n8n_workflow_1.NodeOperationError(ctx.getNode(), "Password must be at least 8 characters", { itemIndex });
|
|
340
|
+
}
|
|
341
|
+
if (password.length > 128) {
|
|
342
|
+
throw new n8n_workflow_1.NodeOperationError(ctx.getNode(), "Password must be at most 128 characters", { itemIndex });
|
|
343
|
+
}
|
|
344
|
+
return password;
|
|
345
|
+
}
|
|
346
|
+
//# sourceMappingURL=DominusNodeAccount.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DominusNodeAccount.node.js","sourceRoot":"","sources":["../../../src/nodes/DominusNodeAccount/DominusNodeAccount.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dominus Node Keys n8n community node.
|
|
3
|
+
*
|
|
4
|
+
* Operations (3 tools):
|
|
5
|
+
* - List Keys: List all API keys
|
|
6
|
+
* - Create Key: Create a new API key
|
|
7
|
+
* - Revoke Key: Revoke an existing API key
|
|
8
|
+
*
|
|
9
|
+
* Security:
|
|
10
|
+
* - UUID validation for key IDs
|
|
11
|
+
* - Control character rejection in labels
|
|
12
|
+
* - Credential sanitization in error messages
|
|
13
|
+
*
|
|
14
|
+
* @module
|
|
15
|
+
*/
|
|
16
|
+
import { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from "n8n-workflow";
|
|
17
|
+
export declare class DominusNodeKeys implements INodeType {
|
|
18
|
+
description: INodeTypeDescription;
|
|
19
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
20
|
+
}
|