rosinterface 1.2.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/README.md +381 -14
- package/dist/cli/{generate.js → Generate.js} +1 -1
- package/dist/cli/{generate.js.map → Generate.js.map} +1 -1
- package/dist/client/CommandBuilder.d.ts +6 -2
- package/dist/client/CommandBuilder.js +30 -7
- package/dist/client/CommandBuilder.js.map +1 -1
- package/dist/client/MikrotikClient.d.ts +11 -3
- package/dist/client/MikrotikClient.js +114 -23
- package/dist/client/MikrotikClient.js.map +1 -1
- package/dist/client/MikrotikPool.js +2 -2
- package/dist/client/MikrotikPool.js.map +1 -1
- package/dist/client/MikrotikSwarm.d.ts +18 -0
- package/dist/client/MikrotikSwarm.js +93 -0
- package/dist/client/MikrotikSwarm.js.map +1 -0
- package/dist/core/HttpConstants.d.ts +24 -0
- package/dist/core/HttpConstants.js +52 -0
- package/dist/core/HttpConstants.js.map +1 -0
- package/dist/core/RestProtocol.d.ts +24 -0
- package/dist/core/RestProtocol.js +151 -0
- package/dist/core/RestProtocol.js.map +1 -0
- package/dist/core/RosError.d.ts +25 -0
- package/dist/core/RosError.js +71 -0
- package/dist/core/RosError.js.map +1 -0
- package/dist/core/RosProtocol.js.map +1 -1
- package/dist/features/FileManager.d.ts +17 -3
- package/dist/features/FileManager.js +76 -14
- package/dist/features/FileManager.js.map +1 -1
- package/dist/utils/MikrotikCollection.d.ts +1 -0
- package/dist/utils/MikrotikCollection.js +3 -0
- package/dist/utils/MikrotikCollection.js.map +1 -1
- package/package.json +19 -8
- package/dist/generated/ISecret.d.ts +0 -14
- package/dist/generated/ISecret.js +0 -3
- package/dist/generated/ISecret.js.map +0 -1
- package/dist/test_library.d.ts +0 -1
- package/dist/test_library.js +0 -34
- package/dist/test_library.js.map +0 -1
- /package/dist/cli/{generate.d.ts → Generate.d.ts} +0 -0
|
@@ -13,14 +13,22 @@ export interface MikrotikOptions extends SocketClientOptions {
|
|
|
13
13
|
allowInsecureConfig?: boolean;
|
|
14
14
|
rateLimit?: number;
|
|
15
15
|
circuitBreaker?: CircuitBreakerOptions;
|
|
16
|
+
protocol?: 'socket' | 'rest';
|
|
17
|
+
socketPort?: number;
|
|
16
18
|
}
|
|
17
19
|
export interface Subscription {
|
|
18
20
|
stop: () => Promise<void>;
|
|
19
21
|
}
|
|
22
|
+
export interface IWriteOptions {
|
|
23
|
+
idempotent?: boolean;
|
|
24
|
+
idempotencyKey?: string;
|
|
25
|
+
}
|
|
20
26
|
export declare class MikrotikClient {
|
|
21
|
-
private socket;
|
|
27
|
+
private readonly socket;
|
|
22
28
|
private readonly options;
|
|
23
29
|
private readonly isConfigFromEnv;
|
|
30
|
+
private readonly rest;
|
|
31
|
+
private isManuallyClosing;
|
|
24
32
|
private activeLiveCollections;
|
|
25
33
|
readonly files: FileManager;
|
|
26
34
|
readonly schema: SchemaMapper;
|
|
@@ -30,8 +38,8 @@ export declare class MikrotikClient {
|
|
|
30
38
|
private currentSentence;
|
|
31
39
|
constructor(options: MikrotikOptions);
|
|
32
40
|
connect(): Promise<void>;
|
|
33
|
-
private printSeriousWarning;
|
|
34
41
|
close(): void;
|
|
42
|
+
private printSeriousWarning;
|
|
35
43
|
command<T extends Record<string, any> = any>(path: string): CommandBuilder<T>;
|
|
36
44
|
transaction(): MikrotikTransaction;
|
|
37
45
|
collection<T extends Record<string, any> = Record<string, any>>(path: string): {
|
|
@@ -40,7 +48,7 @@ export declare class MikrotikClient {
|
|
|
40
48
|
onSnapshot: (callback: SnapshotCallback<T>) => SnapshotSubscription<T>;
|
|
41
49
|
};
|
|
42
50
|
getMetrics(path: string, metrics: MetricDefinition[], params?: Record<string, any>): Promise<string>;
|
|
43
|
-
write(command: string, parameters?: Record<string, string | boolean | number
|
|
51
|
+
write(command: string, parameters?: Record<string, string | boolean | number>, options?: IWriteOptions): Promise<any[]>;
|
|
44
52
|
stream(commandOrLines: string | string[], parameters: Record<string, string | boolean | number> | undefined, callback: (data: any) => void): Subscription;
|
|
45
53
|
private generateTag;
|
|
46
54
|
private buildPayload;
|
|
@@ -47,10 +47,14 @@ const FileManager_1 = require("../features/FileManager");
|
|
|
47
47
|
const PrometheusExporter_1 = require("../features/PrometheusExporter");
|
|
48
48
|
const LiveCollection_1 = require("../features/LiveCollection");
|
|
49
49
|
const MikrotikTransaction_1 = require("./MikrotikTransaction");
|
|
50
|
+
const RestProtocol_1 = require("../core/RestProtocol");
|
|
50
51
|
dotenv.config();
|
|
51
52
|
class MikrotikClient {
|
|
52
53
|
constructor(options) {
|
|
54
|
+
this.socket = null;
|
|
53
55
|
this.isConfigFromEnv = false;
|
|
56
|
+
this.rest = null;
|
|
57
|
+
this.isManuallyClosing = false;
|
|
54
58
|
this.activeLiveCollections = new Map();
|
|
55
59
|
this.schema = new SchemaMapper_1.SchemaMapper();
|
|
56
60
|
this.pendingCommands = new Map();
|
|
@@ -59,39 +63,108 @@ class MikrotikClient {
|
|
|
59
63
|
const envUser = process.env.MIKROTIK_USER;
|
|
60
64
|
const envPass = process.env.MIKROTIK_PASS;
|
|
61
65
|
const envPort = process.env.MIKROTIK_PORT;
|
|
66
|
+
const envProtocol = process.env.MIKROTIK_PROTOCOL;
|
|
67
|
+
const envSocketPort = process.env.MIKROTIK_PORT_APISSL;
|
|
62
68
|
this.isConfigFromEnv = !!(envHost && envUser && envPass);
|
|
63
69
|
this.options = {
|
|
64
70
|
host: envHost || options.host,
|
|
65
71
|
user: envUser || options.user,
|
|
66
72
|
password: envPass || options.password,
|
|
67
73
|
port: envPort ? Number(envPort) : options.port,
|
|
74
|
+
protocol: envProtocol || options.protocol || 'socket',
|
|
75
|
+
socketPort: envSocketPort ? Number(envSocketPort) : options.socketPort,
|
|
68
76
|
useTLS: options.useTLS ?? false,
|
|
69
77
|
rejectUnauthorized: options.rejectUnauthorized ?? false,
|
|
70
78
|
allowInsecureConfig: options.allowInsecureConfig ?? false,
|
|
71
79
|
timeout: options.timeout || 10,
|
|
72
80
|
rateLimit: options.rateLimit || 50,
|
|
73
81
|
};
|
|
74
|
-
this.rateLimiter = new RateLimiter_1.RateLimiter(this.options.rateLimit);
|
|
82
|
+
this.rateLimiter = new RateLimiter_1.RateLimiter(this.options.rateLimit || 50);
|
|
75
83
|
this.breaker = new CircuitBreaker_1.CircuitBreaker(options.circuitBreaker);
|
|
76
84
|
this.files = new FileManager_1.FileManager(this);
|
|
77
85
|
if (!this.isConfigFromEnv && this.options.allowInsecureConfig) {
|
|
78
86
|
this.printSeriousWarning();
|
|
79
87
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
88
|
+
if (this.options.protocol === 'rest') {
|
|
89
|
+
const targetPort = this.options.port === 8728 ? 443 : (this.options.port || 443);
|
|
90
|
+
this.rest = new RestProtocol_1.RestProtocol({
|
|
91
|
+
host: this.options.host,
|
|
92
|
+
user: this.options.user || 'admin',
|
|
93
|
+
pass: this.options.password || '',
|
|
94
|
+
port: targetPort,
|
|
95
|
+
timeout: (this.options.timeout ?? 10) * 1000,
|
|
96
|
+
insecure: !this.options.rejectUnauthorized
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
const shouldInitSocket = this.options.protocol === 'socket' ||
|
|
100
|
+
(this.options.protocol === 'rest' && !!this.options.socketPort);
|
|
101
|
+
if (shouldInitSocket) {
|
|
102
|
+
const socketTargetPort = this.options.protocol === 'socket'
|
|
103
|
+
? (this.options.port || 8728)
|
|
104
|
+
: this.options.socketPort;
|
|
105
|
+
this.socket = new SocketClient_1.SocketClient({
|
|
106
|
+
host: this.options.host,
|
|
107
|
+
port: socketTargetPort,
|
|
108
|
+
useTLS: this.options.useTLS,
|
|
109
|
+
rejectUnauthorized: this.options.rejectUnauthorized
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
this.socket = null;
|
|
114
|
+
}
|
|
84
115
|
}
|
|
85
116
|
async connect() {
|
|
117
|
+
this.isManuallyClosing = false;
|
|
86
118
|
if (!this.isConfigFromEnv && !this.options.allowInsecureConfig) {
|
|
87
119
|
throw new Error('FATAL: Insecure Configuration. Use .env or allowInsecureConfig: true');
|
|
88
120
|
}
|
|
89
121
|
await this.breaker.execute(async () => {
|
|
90
|
-
|
|
91
|
-
|
|
122
|
+
if (this.rest && this.options.protocol === 'rest') {
|
|
123
|
+
await this.rest.connect();
|
|
124
|
+
if (this.socket) {
|
|
125
|
+
await this.socket.connect();
|
|
126
|
+
this.socket.on('data', (word) => this.processIncomingWord(word));
|
|
127
|
+
this.socket.on('close', () => {
|
|
128
|
+
if (this.isManuallyClosing) {
|
|
129
|
+
this.pendingCommands.clear();
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
this.rejectAllCommands(new Error('Stream Connection closed unexpectedly'));
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
this.socket.on('error', (err) => this.rejectAllCommands(err));
|
|
136
|
+
await this.login();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
else if (this.socket) {
|
|
140
|
+
await this.socket.connect();
|
|
141
|
+
this.socket.on('data', (word) => this.processIncomingWord(word));
|
|
142
|
+
this.socket.on('close', () => {
|
|
143
|
+
if (this.isManuallyClosing) {
|
|
144
|
+
this.pendingCommands.clear();
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
this.rejectAllCommands(new Error('Connection closed unexpectedly'));
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
this.socket.on('error', (err) => this.rejectAllCommands(err));
|
|
151
|
+
await this.login();
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
throw new Error("MikrotikClient: No driver initialized. Check configuration.");
|
|
155
|
+
}
|
|
92
156
|
await this.schema.load(this);
|
|
93
157
|
});
|
|
94
158
|
}
|
|
159
|
+
close() {
|
|
160
|
+
this.isManuallyClosing = true;
|
|
161
|
+
if (this.socket) {
|
|
162
|
+
this.socket.close();
|
|
163
|
+
}
|
|
164
|
+
if (this.rest) {
|
|
165
|
+
this.rest.close();
|
|
166
|
+
}
|
|
167
|
+
}
|
|
95
168
|
printSeriousWarning() {
|
|
96
169
|
const border = "=".repeat(60);
|
|
97
170
|
console.warn(`\n\x1b[33m${border}\x1b[0m`);
|
|
@@ -99,9 +172,6 @@ class MikrotikClient {
|
|
|
99
172
|
console.warn('\x1b[33m%s\x1b[0m', 'Using hardcoded credentials. Please use .env file.');
|
|
100
173
|
console.warn(`\x1b[33m${border}\x1b[0m\n`);
|
|
101
174
|
}
|
|
102
|
-
close() {
|
|
103
|
-
this.socket.close();
|
|
104
|
-
}
|
|
105
175
|
command(path) {
|
|
106
176
|
const realPath = this.schema.resolve(path);
|
|
107
177
|
return new CommandBuilder_1.CommandBuilder(this, realPath);
|
|
@@ -137,22 +207,39 @@ class MikrotikClient {
|
|
|
137
207
|
const data = await this.command(path).print(params);
|
|
138
208
|
return PrometheusExporter_1.PrometheusExporter.export(data, metrics);
|
|
139
209
|
}
|
|
140
|
-
async write(command, parameters) {
|
|
210
|
+
async write(command, parameters, options) {
|
|
141
211
|
return this.breaker.execute(async () => {
|
|
142
212
|
await this.rateLimiter.acquire();
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
213
|
+
if (this.rest && this.options.protocol === 'rest') {
|
|
214
|
+
try {
|
|
215
|
+
const result = await this.rest.command(command, parameters, {
|
|
216
|
+
idempotent: options?.idempotent,
|
|
217
|
+
idempotencyKey: options?.idempotencyKey
|
|
218
|
+
});
|
|
219
|
+
if (result === null)
|
|
220
|
+
return [];
|
|
221
|
+
return Array.isArray(result) ? result : [result];
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
throw error;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
if (this.socket) {
|
|
228
|
+
return new Promise((resolve, reject) => {
|
|
229
|
+
const tag = this.generateTag();
|
|
230
|
+
const payload = this.buildPayload(command, parameters, tag);
|
|
231
|
+
this.pendingCommands.set(tag, {
|
|
232
|
+
resolve,
|
|
233
|
+
reject,
|
|
234
|
+
data: [],
|
|
235
|
+
isStream: false,
|
|
236
|
+
startTime: Date.now(),
|
|
237
|
+
tag
|
|
238
|
+
});
|
|
239
|
+
this.sendPayload(payload);
|
|
153
240
|
});
|
|
154
|
-
|
|
155
|
-
|
|
241
|
+
}
|
|
242
|
+
throw new Error("MikrotikClient: No protocol driver initialized (Socket or REST).");
|
|
156
243
|
});
|
|
157
244
|
}
|
|
158
245
|
stream(commandOrLines, parameters, callback) {
|
|
@@ -199,6 +286,10 @@ class MikrotikClient {
|
|
|
199
286
|
return payload;
|
|
200
287
|
}
|
|
201
288
|
sendPayload(payload) {
|
|
289
|
+
if (!this.socket) {
|
|
290
|
+
console.error("MikrotikClient Error: Attempted to send payload via inactive socket. Check 'socketPort' config.");
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
202
293
|
for (const word of payload) {
|
|
203
294
|
this.socket.write(RosProtocol_1.RosProtocol.encodeSentence(word));
|
|
204
295
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MikrotikClient.js","sourceRoot":"","sources":["../../src/client/MikrotikClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AACjC,uCAAoC;AACpC,uDAAyE;AACzE,qDAAkD;AAClD,iDAA8C;AAC9C,qDAAkD;AAClD,uDAAoD;AACpD,qDAAkD;AAClD,2DAA+E;AAC/E,yDAAsD;AACtD,uEAAsF;AACtF,+DAA8E;AAE9E,+DAA0D;AAG1D,MAAM,CAAC,MAAM,EAAE,CAAC;AA4DhB,MAAa,cAAc;IAkGvB,YAAY,OAAwB;QA/FnB,oBAAe,GAAY,KAAK,CAAC;QAE1C,0BAAqB,GAAG,IAAI,GAAG,EAA+B,CAAC;QAevD,WAAM,GAAiB,IAAI,2BAAY,EAAE,CAAC;QAmBlD,oBAAe,GAAG,IAAI,GAAG,EAA0B,CAAC;QAKpD,oBAAe,GAAwB,EAAE,CAAC;QAwD9C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QAE1C,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC;QAGzD,IAAI,CAAC,OAAO,GAAG;YACX,IAAI,EAAE,OAAO,IAAI,OAAO,CAAC,IAAI;YAC7B,IAAI,EAAE,OAAO,IAAI,OAAO,CAAC,IAAI;YAC7B,QAAQ,EAAE,OAAO,IAAI,OAAO,CAAC,QAAQ;YACrC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;YAC9C,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;YAC/B,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,KAAK;YACvD,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,IAAI,KAAK;YACzD,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;SACrC,CAAC;QAGF,IAAI,CAAC,WAAW,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,GAAG,IAAI,+BAAc,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,CAAC;QAGnC,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;YAC5D,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAG7C,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzE,CAAC;IAMM,KAAK,CAAC,OAAO;QAEhB,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC5F,CAAC;QAGD,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAClC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACP,CAAC;IAKO,mBAAmB;QACvB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,aAAa,MAAM,SAAS,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,6BAA6B,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,oDAAoD,CAAC,CAAC;QACxF,OAAO,CAAC,IAAI,CAAC,WAAW,MAAM,WAAW,CAAC,CAAC;IAC/C,CAAC;IAKM,KAAK;QACR,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAmCM,OAAO,CAAsC,IAAY;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,IAAI,+BAAc,CAAI,IAAI,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IA+BM,WAAW;QACd,OAAO,IAAI,yCAAmB,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAmCM,UAAU,CAAsD,IAAY;QAC/E,MAAM,KAAK,GAA8C,EAAE,CAAC;QAE5D,MAAM,OAAO,GAAG;YACZ,KAAK,EAAE,CAAC,GAAW,EAAE,KAAgC,EAAE,EAAE;gBACrD,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACnB,OAAO,OAAO,CAAC;YACnB,CAAC;YAED,KAAK,EAAE,KAAK,IAAI,EAAE;gBACd,MAAM,GAAG,GAAG,IAAI,+BAAc,CAAI,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC9C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;YAuCD,UAAU,EAAE,CAAC,QAA6B,EAA2B,EAAE;gBACnE,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAEpD,IAAI,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAEvD,IAAI,CAAC,OAAO,EAAE,CAAC;oBACX,OAAO,GAAG,IAAI,+BAAc,CAAI,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;oBACnD,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACtD,CAAC;gBAED,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACxC,CAAC;SACJ,CAAC;QAEF,OAAO,OAAO,CAAC;IACnB,CAAC;IAqCM,KAAK,CAAC,UAAU,CACnB,IAAY,EACZ,OAA2B,EAC3B,MAA4B;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpD,OAAO,uCAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAkCM,KAAK,CAAC,KAAK,CAAC,OAAe,EAAE,UAAsD;QAEtF,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAGnC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAGjC,OAAO,IAAI,OAAO,CAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;gBAE5D,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE;oBAC1B,OAAO;oBACP,MAAM;oBACN,IAAI,EAAE,EAAE;oBACR,QAAQ,EAAE,KAAK;oBACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,GAAG;iBACN,CAAC,CAAC;gBAEH,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAoCM,MAAM,CACT,cAAiC,EACjC,UAAiE,EACjE,QAA6B;QAG7B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAG/B,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACjC,IAAI,OAAiB,CAAC;YAEtB,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;gBAChC,OAAO,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;gBAE9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;oBAC5C,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;gBAChC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YACjE,CAAC;YAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE;gBAC1B,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,EAAE,GAAG,CAAC;gBAC7D,IAAI,EAAE,EAAE;gBACR,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,QAAQ;gBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,GAAG;aACN,CAAC,CAAC;YAEH,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAGH,OAAO;YACH,IAAI,EAAE,KAAK,IAAI,EAAE;gBAEb,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACxD,CAAC;SACJ,CAAC;IACN,CAAC;IAMO,WAAW;QACf,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEO,YAAY,CAAC,OAAe,EAAE,MAAW,EAAE,GAAW;QAC1D,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,MAAM,EAAE,CAAC;YACT,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAEhD,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC9C,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;YAC7C,CAAC;QACL,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QAC5B,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,WAAW,CAAC,OAAiB;QACjC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAW,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;IAEO,KAAK,CAAC,KAAK;QACf,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,IAAI,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;oBAChD,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE;oBAC7B,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;iBACxC,CAAC,CAAC;gBACH,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBAEpD,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjB,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;oBACjC,MAAM,WAAW,GAAG,WAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;oBAEpF,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;wBAC/B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE;wBAC7B,QAAQ,EAAE,WAAW;qBACxB,CAAC,CAAC;gBACP,CAAC;gBACD,OAAO,EAAE,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAMO,aAAa,CAAC,OAAe,EAAE,UAAgB;QACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YAE5D,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE;gBAC1B,OAAO;gBACP,MAAM;gBACN,IAAI,EAAE,EAAE;gBACR,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,GAAG;aACN,CAAC,CAAC;YACH,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,mBAAmB,CAAC,IAAY;QACpC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACzC,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;YAC1B,OAAO;QACX,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;aAC1D,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aAC/E,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACtC,CAAC;IACL,CAAC;IAKO,aAAa,CAAC,QAA6B;QAC/C,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE/B,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QAG3C,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YACjC,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;YAExB,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBAE7B,MAAM,MAAM,GAAG,2BAAY,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjD,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBAEJ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;aAEI,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAExB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC;YAC5C,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAG1C,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC/B,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5D,MAAM,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;oBACjC,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;oBACzB,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC5B,CAAC;gBACD,GAAG,CAAC,OAAO,CAAC,2BAAY,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;aAEI,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC;YAC5C,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAE1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,wBAAwB,CAAC;YAEjE,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjC,OAAO;YACX,CAAC;YAED,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,KAAY;QAClC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5C,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;CACJ;AA9qBD,wCA8qBC"}
|
|
1
|
+
{"version":3,"file":"MikrotikClient.js","sourceRoot":"","sources":["../../src/client/MikrotikClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ class MikrotikPool {
|
|
|
16
16
|
async connect() {
|
|
17
17
|
if (this.isConnected)
|
|
18
18
|
return;
|
|
19
|
-
console.log(
|
|
19
|
+
console.log(`Initializing Pool with ${this.options.poolSize} connections...`);
|
|
20
20
|
const connectionPromises = [];
|
|
21
21
|
for (let i = 0; i < (this.options.poolSize || 5); i++) {
|
|
22
22
|
const client = new MikrotikClient_1.MikrotikClient(this.options);
|
|
@@ -25,7 +25,7 @@ class MikrotikPool {
|
|
|
25
25
|
}
|
|
26
26
|
await Promise.all(connectionPromises);
|
|
27
27
|
this.isConnected = true;
|
|
28
|
-
console.log(
|
|
28
|
+
console.log(`Pool Ready: ${this.clients.length} sockets connected.`);
|
|
29
29
|
}
|
|
30
30
|
close() {
|
|
31
31
|
this.clients.forEach(client => client.close());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MikrotikPool.js","sourceRoot":"","sources":["../../src/client/MikrotikPool.ts"],"names":[],"mappings":";;;AAAA,qDAAiF;AACjF,qDAAkD;AAelD,MAAa,YAAY;IAMrB,YAAY,OAAoB;QALxB,YAAO,GAAqB,EAAE,CAAC;QAE/B,oBAAe,GAAW,CAAC,CAAC;QAC5B,gBAAW,GAAY,KAAK,CAAC;QAGjC,IAAI,CAAC,OAAO,GAAG;YACX,QAAQ,EAAE,CAAC;YACX,GAAG,OAAO;SACb,CAAC;IACN,CAAC;IAKM,KAAK,CAAC,OAAO;QAChB,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"MikrotikPool.js","sourceRoot":"","sources":["../../src/client/MikrotikPool.ts"],"names":[],"mappings":";;;AAAA,qDAAiF;AACjF,qDAAkD;AAelD,MAAa,YAAY;IAMrB,YAAY,OAAoB;QALxB,YAAO,GAAqB,EAAE,CAAC;QAE/B,oBAAe,GAAW,CAAC,CAAC;QAC5B,gBAAW,GAAY,KAAK,CAAC;QAGjC,IAAI,CAAC,OAAO,GAAG;YACX,QAAQ,EAAE,CAAC;YACX,GAAG,OAAO;SACb,CAAC;IACN,CAAC;IAKM,KAAK,CAAC,OAAO;QAChB,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,CAAC,OAAO,CAAC,QAAQ,iBAAiB,CAAC,CAAC;QAE9E,MAAM,kBAAkB,GAAoB,EAAE,CAAC;QAE/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE1B,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9C,CAAC;QAGD,MAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,OAAO,CAAC,MAAM,qBAAqB,CAAC,CAAC;IACzE,CAAC;IAKM,KAAK;QACR,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACtB,CAAC;IAMO,kBAAkB;QACtB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAGlD,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAExE,OAAO,MAAM,CAAC;IAClB,CAAC;IAMM,OAAO,CAAsC,IAAY;QAE5D,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACjD,OAAO,IAAI,+BAAc,CAAI,cAAc,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAKM,KAAK,CAAC,OAAe,EAAE,UAAgC;QAC1D,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAChE,CAAC;IAMM,MAAM,CACT,OAAe,EACf,UAA2C,EAC3C,QAA6B;QAE7B,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC3E,CAAC;CACJ;AA1FD,oCA0FC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { MikrotikClient, MikrotikOptions, IWriteOptions } from './MikrotikClient';
|
|
2
|
+
export interface SwarmResult {
|
|
3
|
+
nodeId: string;
|
|
4
|
+
success: boolean;
|
|
5
|
+
data?: any[];
|
|
6
|
+
error?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class MikrotikSwarm {
|
|
9
|
+
private nodes;
|
|
10
|
+
addNode(id: string, config: MikrotikOptions): void;
|
|
11
|
+
connectAll(): Promise<void>;
|
|
12
|
+
broadcast(command: string, params?: Record<string, any>, options?: IWriteOptions): Promise<SwarmResult[]>;
|
|
13
|
+
multicast(nodeIds: string[], command: string, params?: Record<string, any>, options?: IWriteOptions): Promise<SwarmResult[]>;
|
|
14
|
+
closeAll(): void;
|
|
15
|
+
getOfflineNodes(): string[];
|
|
16
|
+
getNode(id: string): MikrotikClient | undefined;
|
|
17
|
+
private executeOnClients;
|
|
18
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MikrotikSwarm = void 0;
|
|
4
|
+
const MikrotikClient_1 = require("./MikrotikClient");
|
|
5
|
+
class MikrotikSwarm {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.nodes = new Map();
|
|
8
|
+
}
|
|
9
|
+
addNode(id, config) {
|
|
10
|
+
if (this.nodes.has(id)) {
|
|
11
|
+
console.warn(`[MikrotikSwarm] Warning: Overwriting existing node ID '${id}'.`);
|
|
12
|
+
}
|
|
13
|
+
const client = new MikrotikClient_1.MikrotikClient(config);
|
|
14
|
+
this.nodes.set(id, client);
|
|
15
|
+
}
|
|
16
|
+
async connectAll() {
|
|
17
|
+
console.log(`[Swarm] Connecting to ${this.nodes.size} nodes...`);
|
|
18
|
+
const promises = Array.from(this.nodes.entries()).map(async ([id, client]) => {
|
|
19
|
+
try {
|
|
20
|
+
await client.connect();
|
|
21
|
+
console.log(`[${id}] Connected`);
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
console.error(`[${id}] Connection Failed: ${err.message}`);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
await Promise.allSettled(promises);
|
|
28
|
+
}
|
|
29
|
+
async broadcast(command, params, options) {
|
|
30
|
+
console.log(`[Swarm] Broadcasting: ${command} to ${this.nodes.size} nodes.`);
|
|
31
|
+
return this.executeOnClients(Array.from(this.nodes.entries()), command, params, options);
|
|
32
|
+
}
|
|
33
|
+
async multicast(nodeIds, command, params, options) {
|
|
34
|
+
const targetEntries = Array.from(this.nodes.entries())
|
|
35
|
+
.filter(([id]) => nodeIds.includes(id));
|
|
36
|
+
console.log(`🐝 [Swarm] Multicasting: ${command} to ${targetEntries.length} selected nodes.`);
|
|
37
|
+
return this.executeOnClients(targetEntries, command, params, options);
|
|
38
|
+
}
|
|
39
|
+
closeAll() {
|
|
40
|
+
this.nodes.forEach((client, id) => {
|
|
41
|
+
try {
|
|
42
|
+
client.close();
|
|
43
|
+
}
|
|
44
|
+
catch (e) {
|
|
45
|
+
console.error(`Error closing client ${id}`, e);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
console.log('🐝 [Swarm] All connections closed.');
|
|
49
|
+
}
|
|
50
|
+
getOfflineNodes() {
|
|
51
|
+
const offline = [];
|
|
52
|
+
this.nodes.forEach((client, id) => {
|
|
53
|
+
});
|
|
54
|
+
return offline;
|
|
55
|
+
}
|
|
56
|
+
getNode(id) {
|
|
57
|
+
return this.nodes.get(id);
|
|
58
|
+
}
|
|
59
|
+
async executeOnClients(entries, command, params, options) {
|
|
60
|
+
const promises = entries.map(async ([id, client]) => {
|
|
61
|
+
try {
|
|
62
|
+
const result = await client.write(command, params, options);
|
|
63
|
+
return {
|
|
64
|
+
nodeId: id,
|
|
65
|
+
success: true,
|
|
66
|
+
data: result
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
return {
|
|
71
|
+
nodeId: id,
|
|
72
|
+
success: false,
|
|
73
|
+
error: err.message || 'Unknown error'
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
const outcomes = await Promise.allSettled(promises);
|
|
78
|
+
return outcomes.map((outcome, index) => {
|
|
79
|
+
if (outcome.status === 'fulfilled') {
|
|
80
|
+
return outcome.value;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
return {
|
|
84
|
+
nodeId: entries[index][0],
|
|
85
|
+
success: false,
|
|
86
|
+
error: String(outcome.reason)
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
exports.MikrotikSwarm = MikrotikSwarm;
|
|
93
|
+
//# sourceMappingURL=MikrotikSwarm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MikrotikSwarm.js","sourceRoot":"","sources":["../../src/client/MikrotikSwarm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare enum RosHttpStatus {
|
|
2
|
+
OK = 200,
|
|
3
|
+
CREATED = 201,
|
|
4
|
+
NO_CONTENT = 204,
|
|
5
|
+
BAD_REQUEST = 400,
|
|
6
|
+
UNAUTHORIZED = 401,
|
|
7
|
+
FORBIDDEN = 403,
|
|
8
|
+
NOT_FOUND = 404,
|
|
9
|
+
METHOD_NOT_ALLOWED = 405,
|
|
10
|
+
NOT_ACCEPTABLE = 406,
|
|
11
|
+
CONFLICT = 409,
|
|
12
|
+
GONE = 410,
|
|
13
|
+
PAYLOAD_TOO_LARGE = 413,
|
|
14
|
+
UNSUPPORTED_MEDIA_TYPE = 415,
|
|
15
|
+
LOCKED = 423,
|
|
16
|
+
TOO_MANY_REQUESTS = 429,
|
|
17
|
+
INTERNAL_SERVER_ERROR = 500,
|
|
18
|
+
NOT_IMPLEMENTED = 501,
|
|
19
|
+
BAD_GATEWAY = 502,
|
|
20
|
+
SERVICE_UNAVAILABLE = 503,
|
|
21
|
+
GATEWAY_TIMEOUT = 504
|
|
22
|
+
}
|
|
23
|
+
export declare const RosHttpMessages: Record<number, string>;
|
|
24
|
+
export declare function isRetryableCode(status: number): boolean;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RosHttpMessages = exports.RosHttpStatus = void 0;
|
|
4
|
+
exports.isRetryableCode = isRetryableCode;
|
|
5
|
+
var RosHttpStatus;
|
|
6
|
+
(function (RosHttpStatus) {
|
|
7
|
+
RosHttpStatus[RosHttpStatus["OK"] = 200] = "OK";
|
|
8
|
+
RosHttpStatus[RosHttpStatus["CREATED"] = 201] = "CREATED";
|
|
9
|
+
RosHttpStatus[RosHttpStatus["NO_CONTENT"] = 204] = "NO_CONTENT";
|
|
10
|
+
RosHttpStatus[RosHttpStatus["BAD_REQUEST"] = 400] = "BAD_REQUEST";
|
|
11
|
+
RosHttpStatus[RosHttpStatus["UNAUTHORIZED"] = 401] = "UNAUTHORIZED";
|
|
12
|
+
RosHttpStatus[RosHttpStatus["FORBIDDEN"] = 403] = "FORBIDDEN";
|
|
13
|
+
RosHttpStatus[RosHttpStatus["NOT_FOUND"] = 404] = "NOT_FOUND";
|
|
14
|
+
RosHttpStatus[RosHttpStatus["METHOD_NOT_ALLOWED"] = 405] = "METHOD_NOT_ALLOWED";
|
|
15
|
+
RosHttpStatus[RosHttpStatus["NOT_ACCEPTABLE"] = 406] = "NOT_ACCEPTABLE";
|
|
16
|
+
RosHttpStatus[RosHttpStatus["CONFLICT"] = 409] = "CONFLICT";
|
|
17
|
+
RosHttpStatus[RosHttpStatus["GONE"] = 410] = "GONE";
|
|
18
|
+
RosHttpStatus[RosHttpStatus["PAYLOAD_TOO_LARGE"] = 413] = "PAYLOAD_TOO_LARGE";
|
|
19
|
+
RosHttpStatus[RosHttpStatus["UNSUPPORTED_MEDIA_TYPE"] = 415] = "UNSUPPORTED_MEDIA_TYPE";
|
|
20
|
+
RosHttpStatus[RosHttpStatus["LOCKED"] = 423] = "LOCKED";
|
|
21
|
+
RosHttpStatus[RosHttpStatus["TOO_MANY_REQUESTS"] = 429] = "TOO_MANY_REQUESTS";
|
|
22
|
+
RosHttpStatus[RosHttpStatus["INTERNAL_SERVER_ERROR"] = 500] = "INTERNAL_SERVER_ERROR";
|
|
23
|
+
RosHttpStatus[RosHttpStatus["NOT_IMPLEMENTED"] = 501] = "NOT_IMPLEMENTED";
|
|
24
|
+
RosHttpStatus[RosHttpStatus["BAD_GATEWAY"] = 502] = "BAD_GATEWAY";
|
|
25
|
+
RosHttpStatus[RosHttpStatus["SERVICE_UNAVAILABLE"] = 503] = "SERVICE_UNAVAILABLE";
|
|
26
|
+
RosHttpStatus[RosHttpStatus["GATEWAY_TIMEOUT"] = 504] = "GATEWAY_TIMEOUT";
|
|
27
|
+
})(RosHttpStatus || (exports.RosHttpStatus = RosHttpStatus = {}));
|
|
28
|
+
exports.RosHttpMessages = {
|
|
29
|
+
400: "Bad Request: Parameter validation failed, syntax error, or item already exists.",
|
|
30
|
+
401: "Unauthorized: Invalid username/password or token expired.",
|
|
31
|
+
403: "Forbidden: Your user group does not have permission for this policy/menu.",
|
|
32
|
+
404: "Not Found: The menu path or specific item ID (*id) does not exist.",
|
|
33
|
+
405: "Method Not Allowed: This action (verb) is not supported on this menu.",
|
|
34
|
+
406: "Not Acceptable: One or more parameters have invalid types/formats.",
|
|
35
|
+
413: "Payload Too Large: The file/body size exceeds RouterOS limits.",
|
|
36
|
+
429: "Too Many Requests: REST API concurrency limit reached. Slow down.",
|
|
37
|
+
500: "RouterOS Internal Error: The command caused a script failure or system crash.",
|
|
38
|
+
501: "Not Implemented: The required package is disabled or not installed.",
|
|
39
|
+
503: "Service Unavailable: Router is booting, overloaded, or maintenance mode.",
|
|
40
|
+
504: "Gateway Timeout: The command execution exceeded the timeout limit.",
|
|
41
|
+
};
|
|
42
|
+
function isRetryableCode(status) {
|
|
43
|
+
return [
|
|
44
|
+
RosHttpStatus.TOO_MANY_REQUESTS,
|
|
45
|
+
RosHttpStatus.INTERNAL_SERVER_ERROR,
|
|
46
|
+
RosHttpStatus.BAD_GATEWAY,
|
|
47
|
+
RosHttpStatus.SERVICE_UNAVAILABLE,
|
|
48
|
+
RosHttpStatus.GATEWAY_TIMEOUT,
|
|
49
|
+
RosHttpStatus.LOCKED
|
|
50
|
+
].includes(status);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=HttpConstants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpConstants.js","sourceRoot":"","sources":["../../src/core/HttpConstants.ts"],"names":[],"mappings":";;;AAyDA,0CASC;AA3DD,IAAY,aA0BX;AA1BD,WAAY,aAAa;IAErB,+CAAQ,CAAA;IACR,yDAAa,CAAA;IACb,+DAAgB,CAAA;IAGhB,iEAAiB,CAAA;IACjB,mEAAkB,CAAA;IAClB,6DAAe,CAAA;IACf,6DAAe,CAAA;IACf,+EAAwB,CAAA;IACxB,uEAAoB,CAAA;IACpB,2DAAc,CAAA;IACd,mDAAU,CAAA;IACV,6EAAuB,CAAA;IACvB,uFAA4B,CAAA;IAC5B,uDAAY,CAAA;IACZ,6EAAuB,CAAA;IAGvB,qFAA2B,CAAA;IAC3B,yEAAqB,CAAA;IACrB,iEAAiB,CAAA;IACjB,iFAAyB,CAAA;IACzB,yEAAqB,CAAA;AACzB,CAAC,EA1BW,aAAa,6BAAb,aAAa,QA0BxB;AAKY,QAAA,eAAe,GAA2B;IACnD,GAAG,EAAE,iFAAiF;IACtF,GAAG,EAAE,2DAA2D;IAChE,GAAG,EAAE,2EAA2E;IAChF,GAAG,EAAE,oEAAoE;IACzE,GAAG,EAAE,uEAAuE;IAC5E,GAAG,EAAE,oEAAoE;IACzE,GAAG,EAAE,gEAAgE;IACrE,GAAG,EAAE,mEAAmE;IACxE,GAAG,EAAE,+EAA+E;IACpF,GAAG,EAAE,qEAAqE;IAC1E,GAAG,EAAE,0EAA0E;IAC/E,GAAG,EAAE,oEAAoE;CAC5E,CAAC;AAMF,SAAgB,eAAe,CAAC,MAAc;IAC1C,OAAO;QACH,aAAa,CAAC,iBAAiB;QAC/B,aAAa,CAAC,qBAAqB;QACnC,aAAa,CAAC,WAAW;QACzB,aAAa,CAAC,mBAAmB;QACjC,aAAa,CAAC,eAAe;QAC7B,aAAa,CAAC,MAAM;KACvB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface IRestOptions {
|
|
2
|
+
host: string;
|
|
3
|
+
user: string;
|
|
4
|
+
pass: string;
|
|
5
|
+
port?: number;
|
|
6
|
+
timeout?: number;
|
|
7
|
+
insecure?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface ICommandOptions {
|
|
10
|
+
idempotent?: boolean;
|
|
11
|
+
idempotencyKey?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare class RestProtocol {
|
|
14
|
+
private readonly baseUrl;
|
|
15
|
+
private readonly authHeader;
|
|
16
|
+
private readonly dispatcher;
|
|
17
|
+
private readonly timeout;
|
|
18
|
+
constructor(options: IRestOptions);
|
|
19
|
+
connect(): Promise<boolean>;
|
|
20
|
+
close(): void;
|
|
21
|
+
command(cmd: string, params?: Record<string, any>, options?: ICommandOptions): Promise<any>;
|
|
22
|
+
private recoverExistingItem;
|
|
23
|
+
private translateToRest;
|
|
24
|
+
}
|