rosinterface 1.0.1 → 1.1.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 +248 -36
- package/dist/client/CommandBuilder.js +19 -3
- package/dist/client/CommandBuilder.js.map +1 -1
- package/dist/client/MikrotikClient.d.ts +6 -1
- package/dist/client/MikrotikClient.js +32 -5
- package/dist/client/MikrotikClient.js.map +1 -1
- package/dist/core/SocketClient.d.ts +2 -1
- package/dist/core/SocketClient.js +12 -8
- package/dist/core/SocketClient.js.map +1 -1
- package/dist/features/LiveCollection.d.ts +17 -0
- package/dist/features/LiveCollection.js +91 -0
- package/dist/features/LiveCollection.js.map +1 -0
- package/dist/features/PrometheusExporter.js.map +1 -1
- package/dist/test_library.d.ts +1 -0
- package/dist/test_library.js +30 -0
- package/dist/test_library.js.map +1 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
# RosInterface
|
|
2
2
|
|
|
3
|
-
> **
|
|
4
|
-
>
|
|
3
|
+
> **High-Performance RouterOS Automation A modern TypeScript and JavasScript Library for MikroTik interactions.**
|
|
4
|
+
> Built with Reactive Streaming (onSnapshot), Circuit Breakers for fault tolerance, and an Offline Queue system.
|
|
5
|
+
> Transform raw RouterOS commands into synchronized, type-safe application state.
|
|
6
|
+
|
|
7
|
+
> **Automatización de Alto Rendimiento para RouterOS Una librería moderna en TypeScript y JavaScript para interactuar con MikroTik.**
|
|
8
|
+
> Diseñada con Streaming Reactivo (onSnapshot), Circuit Breakers para tolerancia a fallos y un sistema de Cola Offline.
|
|
9
|
+
> Transforma comandos crudos de RouterOS en un estado de aplicación sincronizado y con tipado seguro.
|
|
5
10
|
|
|
6
11
|
[](https://www.npmjs.com/package/rosinterface)
|
|
7
12
|
[](https://opensource.org/licenses/MIT)
|
|
8
13
|
|
|
9
14
|
---
|
|
10
15
|
|
|
16
|
+
|
|
11
17
|
## English Documentation
|
|
12
18
|
|
|
13
19
|
**RosInterface** is designed for **ISPs and mission-critical environments**.
|
|
@@ -17,19 +23,34 @@ It focuses on **connection stability**, **router hardware protection**, and **ef
|
|
|
17
23
|
|
|
18
24
|
### ✨ Key Features
|
|
19
25
|
|
|
20
|
-
-
|
|
26
|
+
- **Hardware Protection**
|
|
21
27
|
Built-in **Rate Limiter** with intelligent backoff to prevent RouterOS CPU saturation.
|
|
22
28
|
|
|
23
|
-
-
|
|
29
|
+
- **Offline-First Architecture**
|
|
24
30
|
Commands marked with `.persistent()` are automatically queued if the router is offline and synchronized once connectivity is restored.
|
|
25
31
|
|
|
26
|
-
-
|
|
32
|
+
- **Smart Caching**
|
|
27
33
|
Read operations are cached for **5 seconds (TTL)** to reduce redundant API calls and router load.
|
|
28
34
|
|
|
29
|
-
-
|
|
35
|
+
- **Source-Side Filtering**
|
|
30
36
|
Use `.findBy()` and `.findOne()` to filter data **directly on the router**, minimizing bandwidth and latency.
|
|
31
37
|
|
|
32
|
-
-
|
|
38
|
+
- **On-time changes**
|
|
39
|
+
Use `.collection()` and `.onSnapshot()` to get changes on real time **directly the router**, for to get new data without call to many times to your router.
|
|
40
|
+
|
|
41
|
+
- **Fault Tolerance (Circuit Breaker)**
|
|
42
|
+
|
|
43
|
+
Implements the `Circuit Breaker` pattern. If the router stops responding or encounters critical errors, the library temporarily "cuts the circuit" to prevent the accumulation of failed requests and protect the stability of your Node.js server.
|
|
44
|
+
|
|
45
|
+
- **Native Observability**
|
|
46
|
+
|
|
47
|
+
Built-in `.getMetrics()` method. Exports traffic statistics and router status directly in a format compatible with Prometheus and Grafana without the need for external plugins.
|
|
48
|
+
|
|
49
|
+
- **Transport Security**
|
|
50
|
+
|
|
51
|
+
Full support for **TLS/SSL (SSL API)**, allowing secure encrypted connections over port 8729 (recommended to change this), ideal for managing routers over the public internet.
|
|
52
|
+
|
|
53
|
+
- **Fluent API**
|
|
33
54
|
Chainable, expressive syntax for clean and maintainable automation code.
|
|
34
55
|
|
|
35
56
|
---
|
|
@@ -39,7 +60,7 @@ It focuses on **connection stability**, **router hardware protection**, and **ef
|
|
|
39
60
|
|
|
40
61
|
### ✨ Important Considerations
|
|
41
62
|
|
|
42
|
-
####
|
|
63
|
+
#### Environment Variables (.env)
|
|
43
64
|
|
|
44
65
|
Create a `.env` file in the root directory of your project:
|
|
45
66
|
|
|
@@ -56,32 +77,41 @@ MIKROTIK_PORT=8729
|
|
|
56
77
|
>
|
|
57
78
|
> Use **only in controlled, local or test environments**.
|
|
58
79
|
|
|
80
|
+
|
|
81
|
+
>⚠️ **Performance Warning**
|
|
82
|
+
>
|
|
83
|
+
> The `onSnapshot` function allows you to receive **real-time** router changes in RosInterface.
|
|
84
|
+
> To avoid negative performance impacts on low-spec devices, it is recommended to use it with **Resilience** enabled.
|
|
85
|
+
>
|
|
86
|
+
> Use it **in moderation; excessive use of onSnapshot can negatively affect the performance of your devices**.
|
|
87
|
+
|
|
88
|
+
|
|
59
89
|
---
|
|
60
90
|
|
|
61
91
|
|
|
62
|
-
###
|
|
92
|
+
### Usage Examples
|
|
63
93
|
|
|
64
|
-
#### 1
|
|
94
|
+
#### 1. Basic Connection
|
|
65
95
|
|
|
66
96
|
```ts
|
|
67
97
|
import { MikrotikClient } from 'rosinterface';
|
|
68
98
|
|
|
69
99
|
const client = new MikrotikClient({
|
|
70
|
-
host: '
|
|
100
|
+
host: 'ROUTER_IP (LOCAL OR REMOTE)',
|
|
71
101
|
user: 'admin',
|
|
72
102
|
password: 'password',
|
|
73
|
-
|
|
103
|
+
port: 8729, // We recommended change the default port
|
|
104
|
+
useTLS: false, // Test only
|
|
74
105
|
rateLimit: 50,
|
|
75
|
-
allowInsecureConfig: true //
|
|
106
|
+
allowInsecureConfig: true // Never in production or release
|
|
76
107
|
});
|
|
77
108
|
|
|
78
109
|
await client.connect();
|
|
79
110
|
```
|
|
80
111
|
---
|
|
81
112
|
|
|
82
|
-
---
|
|
83
113
|
|
|
84
|
-
#### 2
|
|
114
|
+
#### 2. Recommended connection (Production/Release)
|
|
85
115
|
|
|
86
116
|
```ts
|
|
87
117
|
import { MikrotikClient } from 'rosinterface';
|
|
@@ -92,8 +122,8 @@ const client = new MikrotikClient({
|
|
|
92
122
|
user: process.env.MIKROTIK_USER,
|
|
93
123
|
password: process.env.MIKROTIK_PASSWORD,
|
|
94
124
|
port: Number(process.env.MIKROTIK_PORT) || 8729,
|
|
95
|
-
useTLS: true,
|
|
96
|
-
rateLimit: 50
|
|
125
|
+
useTLS: true, //Always use TLS between TLS v1.2 or TLS v1.3 deppend that your devices
|
|
126
|
+
rateLimit: 50 //Here you adjust the number of requests per second you want it to support (Anti DDoS)
|
|
97
127
|
});
|
|
98
128
|
|
|
99
129
|
await client.connect();
|
|
@@ -103,7 +133,7 @@ await client.connect();
|
|
|
103
133
|
|
|
104
134
|
|
|
105
135
|
|
|
106
|
-
####
|
|
136
|
+
#### 3. Optimized Read (select + findOne)
|
|
107
137
|
|
|
108
138
|
```ts
|
|
109
139
|
const user = await client.command('/ppp/secret')
|
|
@@ -115,7 +145,7 @@ console.log(`User: ${user?.name}, Profile: ${user?.profile}`);
|
|
|
115
145
|
|
|
116
146
|
---
|
|
117
147
|
|
|
118
|
-
####
|
|
148
|
+
#### 4. Resilience with Persistence (Offline-Safe)
|
|
119
149
|
|
|
120
150
|
```ts
|
|
121
151
|
const result = await client.command('/ppp/secret')
|
|
@@ -131,9 +161,87 @@ if (result === 'QUEUED_OFFLINE') {
|
|
|
131
161
|
}
|
|
132
162
|
```
|
|
133
163
|
|
|
164
|
+
|
|
165
|
+
#### 5. Time-Limited Listener
|
|
166
|
+
|
|
167
|
+
```ts
|
|
168
|
+
// Start the subscription and store the cleanup function (unsubscribe)
|
|
169
|
+
const unsubscribe = client.collection('/ppp/secret')
|
|
170
|
+
.onSnapshot((secrets) => {
|
|
171
|
+
console.log(`Update received. Total users: ${secrets.length}`);
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
// Set a timer to stop listening
|
|
175
|
+
setTimeout(() => {
|
|
176
|
+
console.log('Time up. Stopping subscription...');
|
|
177
|
+
|
|
178
|
+
// Stops the Router stream and clears local memory
|
|
179
|
+
unsubscribe();
|
|
180
|
+
|
|
181
|
+
// Optional: Close the connection if no further tasks are needed
|
|
182
|
+
client.close();
|
|
183
|
+
}, 60000); // 60 seconds
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
#### 6. Persistent Listener (Always On)
|
|
188
|
+
|
|
189
|
+
```ts
|
|
190
|
+
// The client automatically handles Keep-Alive pings (every 10s)
|
|
191
|
+
// to prevent idle disconnects. No need to call 'unsubscribe'.
|
|
192
|
+
|
|
193
|
+
client.collection('/interface')
|
|
194
|
+
.where('disabled', false) // Optional: Only active interfaces
|
|
195
|
+
.onSnapshot((interfaces) => {
|
|
196
|
+
// This callback will execute infinitely whenever a physical change
|
|
197
|
+
// occurs on the router (cable unplugged, traffic state, rename, etc.)
|
|
198
|
+
const downInterfaces = interfaces.filter(i => i.running === 'false');
|
|
199
|
+
|
|
200
|
+
if (downInterfaces.length > 0) {
|
|
201
|
+
console.alert(`ALERT: ${downInterfaces.length} interfaces are down.`);
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
// Important: Handle network errors to reconnect if power or internet is lost
|
|
206
|
+
client.on('close', () => {
|
|
207
|
+
console.log('Connection lost. Restarting service in 5s...');
|
|
208
|
+
setTimeout(() => connectAndListen(), 5000);
|
|
209
|
+
});
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
#### 7. Prometheus Metric
|
|
215
|
+
|
|
216
|
+
```ts
|
|
217
|
+
// 1. Define the map: Mikrotik Field -> Prometheus Metric
|
|
218
|
+
const metricsDef = [
|
|
219
|
+
{
|
|
220
|
+
name: 'mikrotik_iface_rx_total', // Final name in Prometheus
|
|
221
|
+
help: 'Bytes received', // Description
|
|
222
|
+
type: 'counter', // Type: 'counter' or 'gauge'
|
|
223
|
+
path: 'rx-byte', // Original field in RouterOS
|
|
224
|
+
labels: ['name', 'type'] // Labels for filtering (e.g., wan, bridge)
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
name: 'mikrotik_iface_tx_total',
|
|
228
|
+
help: 'Bytes transmitted',
|
|
229
|
+
type: 'counter',
|
|
230
|
+
path: 'tx-byte',
|
|
231
|
+
labels: ['name', 'type']
|
|
232
|
+
}
|
|
233
|
+
];
|
|
234
|
+
|
|
235
|
+
// 2. Get the formatted plain text ready for Prometheus
|
|
236
|
+
// (Internally executes /interface/print and transforms the data)
|
|
237
|
+
const result = await client.getMetrics('/interface', metricsDef);
|
|
238
|
+
|
|
239
|
+
console.log(result);
|
|
240
|
+
```
|
|
241
|
+
|
|
134
242
|
---
|
|
135
243
|
|
|
136
|
-
##
|
|
244
|
+
## Documentación en Español
|
|
137
245
|
|
|
138
246
|
**RosInterface** está diseñado para **ISPs y entornos críticos**.
|
|
139
247
|
Su objetivo es garantizar **estabilidad de conexión**, **protección del hardware MikroTik** y **consultas eficientes**, incluso con enlaces inestables.
|
|
@@ -142,26 +250,38 @@ Su objetivo es garantizar **estabilidad de conexión**, **protección del hardwa
|
|
|
142
250
|
|
|
143
251
|
### ✨ Características Principales
|
|
144
252
|
|
|
145
|
-
-
|
|
253
|
+
- **Protección del Hardware**
|
|
146
254
|
Limitador de tasa integrado con retroceso inteligente para evitar saturación de CPU.
|
|
147
255
|
|
|
148
|
-
-
|
|
256
|
+
- **Arquitectura Offline-First**
|
|
149
257
|
Los comandos con `.persistent()` se guardan en cola si el router no está disponible y se ejecutan automáticamente al reconectar.
|
|
150
258
|
|
|
151
|
-
-
|
|
259
|
+
- **Caché Inteligente**
|
|
152
260
|
Consultas con TTL de **5 segundos**, reduciendo llamadas innecesarias.
|
|
153
261
|
|
|
154
|
-
-
|
|
262
|
+
- **Filtrado en Origen**
|
|
155
263
|
`.findBy()` y `.findOne()` filtran directamente en RouterOS sin descargar tablas completas.
|
|
156
264
|
|
|
157
|
-
-
|
|
265
|
+
- **Cambios puntuales**
|
|
266
|
+
Usa `.collection()` y `.onSnapshot()` para obtener cambios en tiempo real **directamente desde el router**, para obtener datos nuevos, sin llamar a su router repetidamente.
|
|
267
|
+
|
|
268
|
+
- **Tolerancia a Fallos (Circuit Breaker)**
|
|
269
|
+
Implementa el patrón `Circuit Breaker` . Si el router deja de responder o da errores críticos, la librería "corta el circuito" temporalmente para evitar acumular peticiones fallidas y proteger la estabilidad de tu servidor Node.js.
|
|
270
|
+
|
|
271
|
+
- **Observabilidad Nativa**
|
|
272
|
+
Método `.getMetrics()`integrado. Exporta estadísticas de tráfico y estado del router directamente en formato compatible con Prometheus y Grafana sin necesidad de plugins externos.
|
|
273
|
+
|
|
274
|
+
- **Seguridad de Transporte**
|
|
275
|
+
Soporte completo para **TLS/SSL (API-SSL)**, permitiendo conexiones encriptadas seguras a través del puerto 8729 (Recomendado cambiar), ideal para administrar routers a través de internet pública.
|
|
276
|
+
|
|
277
|
+
- **API Fluida**
|
|
158
278
|
Sintaxis encadenable y clara.
|
|
159
279
|
|
|
160
280
|
---
|
|
161
281
|
|
|
162
282
|
### ✨ Consideraciones Importantes
|
|
163
283
|
|
|
164
|
-
####
|
|
284
|
+
#### Variables de Entorno (.env)
|
|
165
285
|
|
|
166
286
|
Crea un archivo `.env` en el directorio raíz de tu proyecto:
|
|
167
287
|
|
|
@@ -178,22 +298,32 @@ MIKROTIK_PORT=8729
|
|
|
178
298
|
>
|
|
179
299
|
> Úsala **solo en entornos controlados, locales o de prueba**.
|
|
180
300
|
|
|
301
|
+
|
|
302
|
+
> ⚠️ **Aviso de Rendimiento**
|
|
303
|
+
> La función `onSnapshot` permite recibir cambios en **tiempo real** del router en RosInterface.
|
|
304
|
+
> Para evitar el impacto negativo de rendimiento en equipos con pocas prestaciones, se recomienda usarlo con **Resiliencia**.
|
|
305
|
+
>
|
|
306
|
+
> Úsala **con moderación, el abuso de onSnapshot puede afectar el rendimiento de tus equipos**.
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
|
|
181
310
|
---
|
|
182
311
|
|
|
183
|
-
###
|
|
312
|
+
### Ejemplos de Uso
|
|
184
313
|
|
|
185
|
-
#### 1
|
|
314
|
+
#### 1. Conexión rápida (solo pruebas)
|
|
186
315
|
|
|
187
316
|
```ts
|
|
188
317
|
import { MikrotikClient } from 'rosinterface';
|
|
189
318
|
|
|
190
319
|
const client = new MikrotikClient({
|
|
191
|
-
host: 'IP_DEL_ROUTER',
|
|
320
|
+
host: 'IP_DEL_ROUTER (LOCAL O REMOTO)',
|
|
192
321
|
user: 'admin',
|
|
193
322
|
password: 'password',
|
|
194
|
-
|
|
323
|
+
port: 8729, // Se recomienda cambiar el puerto por defecto
|
|
324
|
+
useTLS: false, // Solo pruebas
|
|
195
325
|
rateLimit: 50,
|
|
196
|
-
allowInsecureConfig: true //
|
|
326
|
+
allowInsecureConfig: true // Nunca en producción
|
|
197
327
|
});
|
|
198
328
|
|
|
199
329
|
await client.connect();
|
|
@@ -201,7 +331,7 @@ await client.connect();
|
|
|
201
331
|
|
|
202
332
|
---
|
|
203
333
|
|
|
204
|
-
#### 2
|
|
334
|
+
#### 2. Conexión Recomendada (Producción)
|
|
205
335
|
|
|
206
336
|
```ts
|
|
207
337
|
import { MikrotikClient } from 'rosinterface';
|
|
@@ -212,8 +342,8 @@ const client = new MikrotikClient({
|
|
|
212
342
|
user: process.env.MIKROTIK_USER,
|
|
213
343
|
password: process.env.MIKROTIK_PASSWORD,
|
|
214
344
|
port: Number(process.env.MIKROTIK_PORT) || 8729,
|
|
215
|
-
useTLS: true,
|
|
216
|
-
rateLimit: 50
|
|
345
|
+
useTLS: true, //Utilice siempre TLS entre TLS v1.2 o TLS v1.3 dependiendo de sus dispositivos
|
|
346
|
+
rateLimit: 50 //Aqui ajustas la cantidad de peticiones por segundo que deseas que soporte (Anti DDoS)
|
|
217
347
|
});
|
|
218
348
|
|
|
219
349
|
await client.connect();
|
|
@@ -221,7 +351,7 @@ await client.connect();
|
|
|
221
351
|
|
|
222
352
|
---
|
|
223
353
|
|
|
224
|
-
#### 3
|
|
354
|
+
#### 3. Lectura Optimizada
|
|
225
355
|
|
|
226
356
|
```ts
|
|
227
357
|
const user = await client.command('/ppp/secret')
|
|
@@ -233,7 +363,7 @@ console.log(`User: ${user?.name}, Profile: ${user?.profile}`);
|
|
|
233
363
|
|
|
234
364
|
---
|
|
235
365
|
|
|
236
|
-
#### 4
|
|
366
|
+
#### 4. Persistencia Offline
|
|
237
367
|
|
|
238
368
|
```ts
|
|
239
369
|
const result = await client.command('/ppp/secret')
|
|
@@ -249,4 +379,86 @@ if (result === 'QUEUED_OFFLINE') {
|
|
|
249
379
|
}
|
|
250
380
|
```
|
|
251
381
|
|
|
382
|
+
|
|
383
|
+
#### 5. Escuchar por un Tiempo Determinado (Time-Limited)
|
|
384
|
+
|
|
385
|
+
```ts
|
|
386
|
+
// Iniciar la suscripción y guardar la función de limpieza (unsubscribe)
|
|
387
|
+
const unsubscribe = client.collection('/ppp/secret')
|
|
388
|
+
.onSnapshot((secrets) => {
|
|
389
|
+
console.log(`Actualización recibida. Total usuarios: ${secrets.length}`);
|
|
390
|
+
});
|
|
391
|
+
|
|
392
|
+
// Establecer un temporizador para detener la escucha
|
|
393
|
+
setTimeout(() => {
|
|
394
|
+
console.log('Tiempo finalizado. Cerrando suscripción...');
|
|
395
|
+
|
|
396
|
+
// Detiene el stream del Router y limpia la memoria local
|
|
397
|
+
unsubscribe();
|
|
398
|
+
|
|
399
|
+
// Opcional: Cerrar la conexión si ya no harás más tareas
|
|
400
|
+
client.close();
|
|
401
|
+
}, 60000); // 60 segundos
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
#### 6. Escucha Persistente (Always On)
|
|
407
|
+
|
|
408
|
+
```ts
|
|
409
|
+
// Configuración para mantener la conexión viva (Keep-Alive)
|
|
410
|
+
// El cliente enviará pings internos cada 10s para evitar desconexiones por inactividad.
|
|
411
|
+
// No es necesario llamar a 'unsubscribe' ni poner timeouts.
|
|
412
|
+
|
|
413
|
+
client.collection('/interface')
|
|
414
|
+
.where('disabled', false) // Opcional: Solo interfaces activas
|
|
415
|
+
.onSnapshot((interfaces) => {
|
|
416
|
+
// Este callback se ejecutará infinitamente cada vez que haya un cambio
|
|
417
|
+
// físico en el router (cable desconectado, tráfico, cambio de nombre, etc.)
|
|
418
|
+
const downInterfaces = interfaces.filter(i => i.running === 'false');
|
|
419
|
+
|
|
420
|
+
if (downInterfaces.length > 0) {
|
|
421
|
+
console.alert(`ALERTA: ${downInterfaces.length} interfaces caídas.`);
|
|
422
|
+
}
|
|
423
|
+
});
|
|
424
|
+
|
|
425
|
+
// Importante: Manejar errores de red para reconectar si se va la luz o internet
|
|
426
|
+
client.on('close', () => {
|
|
427
|
+
console.log('Conexión perdida. Reiniciando servicio en 5s...');
|
|
428
|
+
setTimeout(() => connectAndListen(), 5000);
|
|
429
|
+
});
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
#### 7. Métricas Prometheus
|
|
434
|
+
|
|
435
|
+
```ts
|
|
436
|
+
// 1. Define el mapeo: Campo Mikrotik -> Métrica Prometheus
|
|
437
|
+
const metricasDef = [
|
|
438
|
+
{
|
|
439
|
+
name: 'mikrotik_iface_rx_total', // Nombre final en Prometheus
|
|
440
|
+
help: 'Bytes recibidos', // Descripción
|
|
441
|
+
type: 'counter', // Tipo: 'counter' o 'gauge'
|
|
442
|
+
path: 'rx-byte', // Campo original en RouterOS
|
|
443
|
+
labels: ['name', 'type'] // Etiquetas para filtrar (ej: wan, bridge)
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
name: 'mikrotik_iface_tx_total',
|
|
447
|
+
help: 'Bytes transmitidos',
|
|
448
|
+
type: 'counter',
|
|
449
|
+
path: 'tx-byte',
|
|
450
|
+
labels: ['name', 'type']
|
|
451
|
+
}
|
|
452
|
+
];
|
|
453
|
+
|
|
454
|
+
// 2. Obtén el texto formateado listo para Prometheus
|
|
455
|
+
// (Internamente ejecuta /interface/print y transforma los datos)
|
|
456
|
+
const resultado = await client.getMetrics('/interface', metricasDef);
|
|
457
|
+
|
|
458
|
+
console.log(resultado);
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
|
|
252
464
|
---
|
|
@@ -82,8 +82,10 @@ class CommandBuilder {
|
|
|
82
82
|
}
|
|
83
83
|
const response = await this.client.write(`${this.menuPath}/add`, params);
|
|
84
84
|
this.invalidatePathCache();
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
if (Array.isArray(response) && response.length > 0 && response[0]['ret']) {
|
|
86
|
+
return response[0]['ret'];
|
|
87
|
+
}
|
|
88
|
+
return '';
|
|
87
89
|
}
|
|
88
90
|
async set(id, data) {
|
|
89
91
|
const params = this.prepareParams(data);
|
|
@@ -106,8 +108,22 @@ class CommandBuilder {
|
|
|
106
108
|
this.invalidatePathCache();
|
|
107
109
|
}
|
|
108
110
|
listen(callback) {
|
|
111
|
+
const lines = [`${this.menuPath}/print`];
|
|
109
112
|
const params = this.getParams();
|
|
110
|
-
|
|
113
|
+
for (const [key, value] of Object.entries(params)) {
|
|
114
|
+
let cleanKey = key;
|
|
115
|
+
if (cleanKey.startsWith('?')) {
|
|
116
|
+
cleanKey = cleanKey.substring(1);
|
|
117
|
+
}
|
|
118
|
+
if (cleanKey === '.proplist') {
|
|
119
|
+
lines.push(`=${cleanKey}=${value}`);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
lines.push(`?${cleanKey}=${value}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
lines.push('=follow=');
|
|
126
|
+
return this.client.stream(lines, undefined, callback);
|
|
111
127
|
}
|
|
112
128
|
listenMonitor(callback) {
|
|
113
129
|
const rawParams = this.getParams();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandBuilder.js","sourceRoot":"","sources":["../../src/client/CommandBuilder.ts"],"names":[],"mappings":";;;AACA,8CAAgD;AAChD,oEAAiE;AACjE,uDAAoD;AAgBpD,MAAa,cAAc;IAqBvB,YAAY,MAAsB,EAAE,QAAgB;QAhB5C,gBAAW,GAA2B,EAAE,CAAC;QACzC,aAAQ,GAAa,EAAE,CAAC;QAGxB,wBAAmB,GAAY,KAAK,CAAC;QAazC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC;QACrE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC;IAMM,KAAK,CAAC,GAAW,EAAE,KAAgC;QACtD,MAAM,QAAQ,GAAG,IAAA,sBAAY,EAAC,GAAG,CAAC,CAAC;QACnC,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,CAAC,IAAI,QAAQ,EAAE,CAAC,GAAG,cAAc,CAAC;QAClD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,WAAW,CAAC,GAAW;QAC1B,MAAM,QAAQ,GAAG,IAAA,sBAAY,EAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,WAAW,CAAC,IAAI,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,MAAgB;QAC1B,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,sBAAY,EAAC,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IAChB,CAAC;IAWM,UAAU;QACb,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,OAAO,IAAI,CAAC;IAChB,CAAC;IAaM,KAAK,CAAC,MAAM,CAAC,QAAoB;QAEpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAY,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAOM,KAAK,CAAC,OAAO,CAAC,QAAoB;QACrC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/C,OAAO,UAAU,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAOM,KAAK,CAAC,KAAK,CAAC,WAAiC;QAChD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,WAAW,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"CommandBuilder.js","sourceRoot":"","sources":["../../src/client/CommandBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { SchemaMapper } from '../core/SchemaMapper';
|
|
|
4
4
|
import { CircuitBreakerOptions } from '../core/CircuitBreaker';
|
|
5
5
|
import { FileManager } from '../features/FileManager';
|
|
6
6
|
import { MetricDefinition } from '../features/PrometheusExporter';
|
|
7
|
+
import { SnapshotCallback } from "../features/LiveCollection";
|
|
7
8
|
export interface MikrotikOptions extends SocketClientOptions {
|
|
8
9
|
user?: string;
|
|
9
10
|
password?: string;
|
|
@@ -29,9 +30,13 @@ export declare class MikrotikClient {
|
|
|
29
30
|
private printSeriousWarning;
|
|
30
31
|
close(): void;
|
|
31
32
|
command<T extends Record<string, any> = any>(path: string): CommandBuilder<T>;
|
|
33
|
+
collection<T = any>(path: string): {
|
|
34
|
+
where: (key: string, value: string | number | boolean) => any;
|
|
35
|
+
onSnapshot: (callback: SnapshotCallback<T>) => () => void;
|
|
36
|
+
};
|
|
32
37
|
getMetrics(path: string, metrics: MetricDefinition[], params?: Record<string, any>): Promise<string>;
|
|
33
38
|
write(command: string, parameters?: Record<string, string | boolean | number>): Promise<any[]>;
|
|
34
|
-
stream(
|
|
39
|
+
stream(commandOrLines: string | string[], parameters: Record<string, string | boolean | number> | undefined, callback: (data: any) => void): Subscription;
|
|
35
40
|
private generateTag;
|
|
36
41
|
private buildPayload;
|
|
37
42
|
private sendPayload;
|
|
@@ -45,6 +45,7 @@ const RateLimiter_1 = require("../core/RateLimiter");
|
|
|
45
45
|
const CircuitBreaker_1 = require("../core/CircuitBreaker");
|
|
46
46
|
const FileManager_1 = require("../features/FileManager");
|
|
47
47
|
const PrometheusExporter_1 = require("../features/PrometheusExporter");
|
|
48
|
+
const LiveCollection_1 = require("../features/LiveCollection");
|
|
48
49
|
dotenv.config();
|
|
49
50
|
class MikrotikClient {
|
|
50
51
|
constructor(options) {
|
|
@@ -103,6 +104,20 @@ class MikrotikClient {
|
|
|
103
104
|
const realPath = this.schema.resolve(path);
|
|
104
105
|
return new CommandBuilder_1.CommandBuilder(this, realPath);
|
|
105
106
|
}
|
|
107
|
+
collection(path) {
|
|
108
|
+
const query = {};
|
|
109
|
+
const builder = {
|
|
110
|
+
where: (key, value) => {
|
|
111
|
+
query[key] = value;
|
|
112
|
+
return builder;
|
|
113
|
+
},
|
|
114
|
+
onSnapshot: (callback) => {
|
|
115
|
+
const liveCol = new LiveCollection_1.LiveCollection(this, path, query);
|
|
116
|
+
return liveCol.onSnapshot(callback);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
return builder;
|
|
120
|
+
}
|
|
106
121
|
async getMetrics(path, metrics, params) {
|
|
107
122
|
const data = await this.command(path).print(params);
|
|
108
123
|
return PrometheusExporter_1.PrometheusExporter.export(data, metrics);
|
|
@@ -118,22 +133,33 @@ class MikrotikClient {
|
|
|
118
133
|
reject,
|
|
119
134
|
data: [],
|
|
120
135
|
isStream: false,
|
|
121
|
-
startTime: Date.now()
|
|
136
|
+
startTime: Date.now(),
|
|
137
|
+
tag
|
|
122
138
|
});
|
|
123
139
|
this.sendPayload(payload);
|
|
124
140
|
});
|
|
125
141
|
});
|
|
126
142
|
}
|
|
127
|
-
stream(
|
|
143
|
+
stream(commandOrLines, parameters, callback) {
|
|
128
144
|
const tag = this.generateTag();
|
|
129
145
|
this.rateLimiter.acquire().then(() => {
|
|
130
|
-
|
|
146
|
+
let payload;
|
|
147
|
+
if (Array.isArray(commandOrLines)) {
|
|
148
|
+
payload = [...commandOrLines];
|
|
149
|
+
if (!payload.some(l => l.startsWith('.tag='))) {
|
|
150
|
+
payload.push(`.tag=${tag}`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
payload = this.buildPayload(commandOrLines, parameters, tag);
|
|
155
|
+
}
|
|
131
156
|
this.pendingCommands.set(tag, {
|
|
132
157
|
reject: (err) => console.error(`Stream error [${tag}]:`, err),
|
|
133
158
|
data: [],
|
|
134
159
|
isStream: true,
|
|
135
160
|
onData: callback,
|
|
136
|
-
startTime: Date.now()
|
|
161
|
+
startTime: Date.now(),
|
|
162
|
+
tag
|
|
137
163
|
});
|
|
138
164
|
this.sendPayload(payload);
|
|
139
165
|
});
|
|
@@ -195,7 +221,8 @@ class MikrotikClient {
|
|
|
195
221
|
reject,
|
|
196
222
|
data: [],
|
|
197
223
|
isStream: false,
|
|
198
|
-
startTime: Date.now()
|
|
224
|
+
startTime: Date.now(),
|
|
225
|
+
tag
|
|
199
226
|
});
|
|
200
227
|
this.sendPayload(payload);
|
|
201
228
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MikrotikClient.js","sourceRoot":"","sources":["../../src/client/MikrotikClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MikrotikClient.js","sourceRoot":"","sources":["../../src/client/MikrotikClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,12 +11,13 @@ export interface SocketClientOptions {
|
|
|
11
11
|
export declare class SocketClient extends EventEmitter {
|
|
12
12
|
private socket;
|
|
13
13
|
private options;
|
|
14
|
-
|
|
14
|
+
connected: boolean;
|
|
15
15
|
private receiveBuffer;
|
|
16
16
|
constructor(options: SocketClientOptions);
|
|
17
17
|
connect(): Promise<void>;
|
|
18
18
|
write(data: Buffer): void;
|
|
19
19
|
close(): void;
|
|
20
20
|
destroy(): void;
|
|
21
|
+
private cleanup;
|
|
21
22
|
private handleDataChunk;
|
|
22
23
|
}
|
|
@@ -57,11 +57,7 @@ class SocketClient extends events_1.EventEmitter {
|
|
|
57
57
|
return new Promise((resolve, reject) => {
|
|
58
58
|
if (this.connected)
|
|
59
59
|
return resolve();
|
|
60
|
-
|
|
61
|
-
this.socket.removeAllListeners();
|
|
62
|
-
this.socket.destroy();
|
|
63
|
-
this.socket = null;
|
|
64
|
-
}
|
|
60
|
+
this.cleanup();
|
|
65
61
|
const timeoutMs = (this.options.timeout || 10) * 1000;
|
|
66
62
|
try {
|
|
67
63
|
if (this.options.useTLS) {
|
|
@@ -96,8 +92,8 @@ class SocketClient extends events_1.EventEmitter {
|
|
|
96
92
|
this.connected = true;
|
|
97
93
|
if (this.socket)
|
|
98
94
|
this.socket.setTimeout(0);
|
|
99
|
-
resolve();
|
|
100
95
|
this.emit('connect');
|
|
96
|
+
resolve();
|
|
101
97
|
});
|
|
102
98
|
this.socket.on('error', (err) => {
|
|
103
99
|
if (!this.connected) {
|
|
@@ -137,6 +133,14 @@ class SocketClient extends events_1.EventEmitter {
|
|
|
137
133
|
this.connected = false;
|
|
138
134
|
}
|
|
139
135
|
}
|
|
136
|
+
cleanup() {
|
|
137
|
+
if (this.socket) {
|
|
138
|
+
this.socket.removeAllListeners();
|
|
139
|
+
this.socket.destroy();
|
|
140
|
+
this.socket = null;
|
|
141
|
+
}
|
|
142
|
+
this.receiveBuffer = buffer_1.Buffer.alloc(0);
|
|
143
|
+
}
|
|
140
144
|
handleDataChunk(chunk) {
|
|
141
145
|
this.receiveBuffer = buffer_1.Buffer.concat([this.receiveBuffer, chunk]);
|
|
142
146
|
while (this.receiveBuffer.length > 0) {
|
|
@@ -151,8 +155,8 @@ class SocketClient extends events_1.EventEmitter {
|
|
|
151
155
|
}
|
|
152
156
|
const payload = this.receiveBuffer.slice(byteLength, totalPacketSize);
|
|
153
157
|
this.receiveBuffer = this.receiveBuffer.slice(totalPacketSize);
|
|
154
|
-
const
|
|
155
|
-
this.emit('data',
|
|
158
|
+
const word = payload.toString('utf8');
|
|
159
|
+
this.emit('data', word);
|
|
156
160
|
}
|
|
157
161
|
}
|
|
158
162
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SocketClient.js","sourceRoot":"","sources":["../../src/core/SocketClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA2B;AAC3B,yCAA2B;AAC3B,mCAAsC;AACtC,mCAAgC;AAChC,+CAA4C;
|
|
1
|
+
{"version":3,"file":"SocketClient.js","sourceRoot":"","sources":["../../src/core/SocketClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { MikrotikClient } from "../client/MikrotikClient";
|
|
2
|
+
export type SnapshotCallback<T> = (items: T[]) => void;
|
|
3
|
+
export declare class LiveCollection<T = any> {
|
|
4
|
+
private client;
|
|
5
|
+
private path;
|
|
6
|
+
private query;
|
|
7
|
+
private localCache;
|
|
8
|
+
private subscription;
|
|
9
|
+
private listeners;
|
|
10
|
+
private isInitializing;
|
|
11
|
+
constructor(client: MikrotikClient, path: string, query?: Record<string, string | number | boolean>);
|
|
12
|
+
onSnapshot(callback: SnapshotCallback<T>): () => void;
|
|
13
|
+
private startListening;
|
|
14
|
+
private processPacket;
|
|
15
|
+
private emit;
|
|
16
|
+
private unsubscribe;
|
|
17
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LiveCollection = void 0;
|
|
4
|
+
class LiveCollection {
|
|
5
|
+
constructor(client, path, query = {}) {
|
|
6
|
+
this.client = client;
|
|
7
|
+
this.path = path;
|
|
8
|
+
this.query = query;
|
|
9
|
+
this.localCache = new Map();
|
|
10
|
+
this.subscription = null;
|
|
11
|
+
this.listeners = [];
|
|
12
|
+
this.isInitializing = false;
|
|
13
|
+
}
|
|
14
|
+
onSnapshot(callback) {
|
|
15
|
+
this.listeners.push(callback);
|
|
16
|
+
if (this.subscription || this.isInitializing) {
|
|
17
|
+
if (this.localCache.size > 0) {
|
|
18
|
+
callback(Array.from(this.localCache.values()));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
this.startListening().catch(err => {
|
|
23
|
+
console.error("RosInterface: Error starting live listener", err);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return () => this.unsubscribe(callback);
|
|
27
|
+
}
|
|
28
|
+
async startListening() {
|
|
29
|
+
if (this.isInitializing)
|
|
30
|
+
return;
|
|
31
|
+
this.isInitializing = true;
|
|
32
|
+
try {
|
|
33
|
+
const cmd = this.client.command(this.path);
|
|
34
|
+
cmd.where('.proplist', '.id,.dead,name,comment,disabled,profile,service,user,password,address,uptime,mac-address,caller-id');
|
|
35
|
+
if (this.query) {
|
|
36
|
+
Object.keys(this.query).forEach(key => {
|
|
37
|
+
const value = this.query[key];
|
|
38
|
+
if (['string', 'number', 'boolean'].includes(typeof value)) {
|
|
39
|
+
cmd.where(key, value);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
this.subscription = cmd.listen((packet) => {
|
|
44
|
+
this.processPacket(packet);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
console.error(`RosInterface: Failed to listen on ${this.path}`, error);
|
|
49
|
+
this.isInitializing = false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
processPacket(packet) {
|
|
53
|
+
const rawId = packet['.id'] || packet['id'];
|
|
54
|
+
if (!rawId)
|
|
55
|
+
return;
|
|
56
|
+
if (packet['.dead'] === true || packet['dead'] === true) {
|
|
57
|
+
this.localCache.delete(rawId);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
const existing = this.localCache.get(rawId) || {};
|
|
61
|
+
const cleanPacket = {};
|
|
62
|
+
for (const key of Object.keys(packet)) {
|
|
63
|
+
const cleanKey = key.startsWith('.') ? key.substring(1) : key;
|
|
64
|
+
cleanPacket[cleanKey] = packet[key];
|
|
65
|
+
}
|
|
66
|
+
const updated = { ...existing, ...cleanPacket };
|
|
67
|
+
this.localCache.set(rawId, updated);
|
|
68
|
+
}
|
|
69
|
+
this.emit();
|
|
70
|
+
}
|
|
71
|
+
emit() {
|
|
72
|
+
const fullList = Array.from(this.localCache.values());
|
|
73
|
+
this.listeners.forEach(cb => cb(fullList));
|
|
74
|
+
}
|
|
75
|
+
unsubscribe(callback) {
|
|
76
|
+
this.listeners = this.listeners.filter(l => l !== callback);
|
|
77
|
+
if (this.listeners.length === 0 && this.subscription) {
|
|
78
|
+
try {
|
|
79
|
+
this.subscription.stop();
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
console.warn('RosInterface: Error stopping subscription', e);
|
|
83
|
+
}
|
|
84
|
+
this.subscription = null;
|
|
85
|
+
this.localCache.clear();
|
|
86
|
+
this.isInitializing = false;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.LiveCollection = LiveCollection;
|
|
91
|
+
//# sourceMappingURL=LiveCollection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveCollection.js","sourceRoot":"","sources":["../../src/features/LiveCollection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrometheusExporter.js","sourceRoot":"","sources":["../../src/features/PrometheusExporter.ts"],"names":[],"mappings":";;;AAEA,IAAY,UAGX;AAHD,WAAY,UAAU;IAClB,6BAAe,CAAA;IACf,iCAAmB,CAAA;AACvB,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB;AAoBD,MAAa,kBAAkB;
|
|
1
|
+
{"version":3,"file":"PrometheusExporter.js","sourceRoot":"","sources":["../../src/features/PrometheusExporter.ts"],"names":[],"mappings":";;;AAEA,IAAY,UAGX;AAHD,WAAY,UAAU;IAClB,6BAAe,CAAA;IACf,iCAAmB,CAAA;AACvB,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB;AAoBD,MAAa,kBAAkB;IASpB,MAAM,CAAC,MAAM,CAAC,UAAmC,EAAE,WAA+B;QACrF,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;QAE/B,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAE5B,MAAM,IAAI,UAAU,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC;YACnD,MAAM,IAAI,UAAU,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC;YAGnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAGpC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;oBAAE,SAAS;gBAGpD,IAAI,WAAW,GAAG,EAAE,CAAC;gBACrB,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtC,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;wBAE3C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,CAAC;wBAC1D,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBAEvD,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;wBACrD,OAAO,GAAG,cAAc,KAAK,aAAa,GAAG,CAAC;oBAClD,CAAC,CAAC,CAAC;oBACH,WAAW,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC9C,CAAC;gBAID,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,GAAG,WAAW,IAAI,KAAK,IAAI,CAAC;YAC3D,CAAC;YACD,MAAM,IAAI,IAAI,CAAC;QACnB,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAhDD,gDAgDC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const rosinterface_1 = require("rosinterface");
|
|
4
|
+
async function test() {
|
|
5
|
+
console.clear();
|
|
6
|
+
const client = new rosinterface_1.MikrotikClient({
|
|
7
|
+
host: '192.168.3.30',
|
|
8
|
+
user: '',
|
|
9
|
+
password: '',
|
|
10
|
+
port: 8728,
|
|
11
|
+
useTLS: false,
|
|
12
|
+
rateLimit: 50,
|
|
13
|
+
allowInsecureConfig: true,
|
|
14
|
+
});
|
|
15
|
+
try {
|
|
16
|
+
await client.connect();
|
|
17
|
+
await client.command('/ppp/secret').add({
|
|
18
|
+
name: 'PruebaLIB',
|
|
19
|
+
profile: 'default',
|
|
20
|
+
password: 'PruebaConLIB',
|
|
21
|
+
comment: 'Se agrego usando RosInterface'
|
|
22
|
+
});
|
|
23
|
+
console.log("Se agrego el cliente usando RosInterface");
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
console.error(e);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
test();
|
|
30
|
+
//# sourceMappingURL=test_library.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test_library.js","sourceRoot":"","sources":["../src/test_library.ts"],"names":[],"mappings":";;AAAA,+CAA6C;AAE7C,KAAK,UAAU,IAAI;IACf,OAAO,CAAC,KAAK,EAAE,CAAC;IAEhB,MAAM,MAAM,GAAG,IAAI,6BAAc,CAAC;QAC/B,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,EAAE;QACb,mBAAmB,EAAE,IAAI;KAC3B,CAAC,CAAC;IAEH,IAAG,CAAC;QAEA,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QAEtB,MAAM,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC;YACrC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,cAAc;YACxB,OAAO,EAAE,+BAA+B;SAC3C,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAG5D,CAAC;IAAA,OAAM,CAAC,EAAC,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;AACL,CAAC;AAGD,IAAI,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rosinterface",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "High-performance, Offline-First Mikrotik RouterOS API Client for Enterprise.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
"test": "ts-node test_integration.ts"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"dotenv": "^16.4.5"
|
|
32
|
+
"dotenv": "^16.4.5",
|
|
33
|
+
"rosinterface": "^1.0.1"
|
|
33
34
|
},
|
|
34
35
|
"devDependencies": {
|
|
35
36
|
"@types/node": "^20.12.7",
|