rosinterface 1.3.6 → 1.4.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 +207 -171
- package/dist/client/CommandBuilder.js +5 -7
- package/dist/client/CommandBuilder.js.map +1 -1
- package/dist/client/MikrotikClient.d.ts +18 -0
- package/dist/client/MikrotikClient.js +12 -11
- package/dist/client/MikrotikClient.js.map +1 -1
- package/dist/client/MikrotikSwarm.d.ts +16 -7
- package/dist/client/MikrotikSwarm.js +16 -7
- package/dist/client/MikrotikSwarm.js.map +1 -1
- package/dist/features/DiagnosticWrapper.d.ts +58 -0
- package/dist/features/DiagnosticWrapper.js +95 -0
- package/dist/features/DiagnosticWrapper.js.map +1 -0
- package/dist/features/FirewallWrapper.d.ts +209 -0
- package/dist/features/FirewallWrapper.js +272 -0
- package/dist/features/FirewallWrapper.js.map +1 -0
- package/dist/features/IpWrapper.d.ts +140 -0
- package/dist/features/IpWrapper.js +184 -0
- package/dist/features/IpWrapper.js.map +1 -0
- package/dist/features/PPPoEWrapper.d.ts +217 -0
- package/dist/features/PPPoEWrapper.js +293 -0
- package/dist/features/PPPoEWrapper.js.map +1 -0
- package/dist/features/QueueWrapper.d.ts +118 -0
- package/dist/features/QueueWrapper.js +157 -0
- package/dist/features/QueueWrapper.js.map +1 -0
- package/dist/features/SystemWrapper.d.ts +94 -0
- package/dist/features/SystemWrapper.js +145 -0
- package/dist/features/SystemWrapper.js.map +1 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# RosInterface v1.
|
|
1
|
+
# RosInterface v1.4
|
|
2
2
|
|
|
3
3
|
> **High-Performance RouterOS Automation A modern TypeScript and JavasScript Library for MikroTik interactions.**
|
|
4
4
|
> Built with Reactive Streaming (onSnapshot), Circuit Breakers for fault tolerance, and an Offline Queue system.
|
|
@@ -178,10 +178,12 @@ const client = new MikrotikClient({
|
|
|
178
178
|
host: 'ROUTER_IP (LOCAL OR REMOTE)',
|
|
179
179
|
user: 'admin',
|
|
180
180
|
password: 'password',
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
181
|
+
protocol: 'rest', // Can change this by 'socket' if you use only api-ssl
|
|
182
|
+
port: 443, // We recommended change the default port (Use www-ssl)
|
|
183
|
+
socketPort: 8729, // We recommended change the default port (Use api-ssl)
|
|
184
|
+
useTLS: true,
|
|
185
|
+
allowInsecureConfig: true, // Only if you do not have a trusted certificate
|
|
186
|
+
rejectUnauthorized: false // Allow self-certificates
|
|
185
187
|
});
|
|
186
188
|
|
|
187
189
|
await client.connect();
|
|
@@ -199,9 +201,13 @@ const client = new MikrotikClient({
|
|
|
199
201
|
host: process.env.MIKROTIK_HOST,
|
|
200
202
|
user: process.env.MIKROTIK_USER,
|
|
201
203
|
password: process.env.MIKROTIK_PASSWORD,
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
204
|
+
protocol: process.env.MIKROTIK_PROTOCOL,
|
|
205
|
+
port: 443,
|
|
206
|
+
socketPort: 8729,
|
|
207
|
+
useTLS: true, // Always use TLS between TLS v1.2 or TLS v1.3 deppend that your devices
|
|
208
|
+
allowInsecureConfig: true, // Only if you do not have a trusted certificate
|
|
209
|
+
rejectUnauthorized: false, // We allow self-signed certificates
|
|
210
|
+
timeout: 10 // Adjust the time tolerance, so that the library throws an error (10s)
|
|
205
211
|
});
|
|
206
212
|
|
|
207
213
|
await client.connect();
|
|
@@ -431,73 +437,7 @@ async function createSecureUser() {
|
|
|
431
437
|
|
|
432
438
|
```
|
|
433
439
|
|
|
434
|
-
|
|
435
|
-
#### 11. Hybrid Engine (REST + Sockets) & Idempotency
|
|
436
|
-
|
|
437
|
-
```ts
|
|
438
|
-
import { MikrotikClient } from 'rosinterface';
|
|
439
|
-
|
|
440
|
-
const delay = (ms: number) => new Promise(res => setTimeout(res, ms));
|
|
441
|
-
|
|
442
|
-
async function runHybridTest() {
|
|
443
|
-
console.log("Starting Hybrid Engine Test");
|
|
444
|
-
|
|
445
|
-
const client = new MikrotikClient({
|
|
446
|
-
host: '10.0.0.1',
|
|
447
|
-
user: 'admin',
|
|
448
|
-
password: 'password',
|
|
449
|
-
// HYBRID CONFIGURATION:
|
|
450
|
-
protocol: 'rest', // Primary Brain: HTTPS (Port 443)
|
|
451
|
-
port: 443,
|
|
452
|
-
socketPort: 8728, // Secondary Ear: TCP (Port 8728 for Streams)
|
|
453
|
-
rejectUnauthorized: false // Accept Self-Signed Certs (Safe Dispatcher)
|
|
454
|
-
});
|
|
455
|
-
|
|
456
|
-
try {
|
|
457
|
-
await client.connect();
|
|
458
|
-
console.log("Hybrid Connection Established (HTTPS + TCP)");
|
|
459
|
-
|
|
460
|
-
// LIVE MONITORING (Via Socket 8728)
|
|
461
|
-
console.log("Listening for changes...");
|
|
462
|
-
client.collection('/ppp/secret')
|
|
463
|
-
.onSnapshot(data => {
|
|
464
|
-
if ('added' in data) console.log('Live Stream [New]:', data.added.map(x => x.name));
|
|
465
|
-
if ('removed' in data) console.log('Live Stream [Deleted]:', data.removed.map(x => x.name));
|
|
466
|
-
})
|
|
467
|
-
.onDiff();
|
|
468
|
-
|
|
469
|
-
await delay(1000);
|
|
470
|
-
|
|
471
|
-
// IDEMPOTENCY (Via REST 443)
|
|
472
|
-
// Attempt to create the same user twice. The second time should NOT fail.
|
|
473
|
-
const userPayload = { name: 'hybrid_user', password: '123', service: 'pppoe' };
|
|
474
|
-
|
|
475
|
-
console.log("Creating User...");
|
|
476
|
-
await client.command('/ppp/secret').idempotent().add(userPayload);
|
|
477
|
-
|
|
478
|
-
console.log("Creating User Again (Idempotency Check)...");
|
|
479
|
-
// This will strictly recover the existing ID without throwing an error
|
|
480
|
-
const result = await client.command('/ppp/secret').idempotent().add(userPayload);
|
|
481
|
-
console.log("Idempotency Result:", result); // Should return the existing object
|
|
482
|
-
|
|
483
|
-
await delay(2000);
|
|
484
|
-
|
|
485
|
-
// Cleanup
|
|
486
|
-
await client.command('/ppp/secret').remove(result['.id']);
|
|
487
|
-
console.log("Cleanup done.");
|
|
488
|
-
|
|
489
|
-
} catch (e) {
|
|
490
|
-
console.error("Error:", e);
|
|
491
|
-
} finally {
|
|
492
|
-
// Graceful shutdown prevents "Socket Closed" errors
|
|
493
|
-
client.close();
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
|
|
497
|
-
runHybridTest();
|
|
498
|
-
```
|
|
499
|
-
|
|
500
|
-
#### 12. Swarm Mode (Mass Management)
|
|
440
|
+
#### 11. Swarm Mode (Mass Management)
|
|
501
441
|
|
|
502
442
|
```ts
|
|
503
443
|
import { MikrotikSwarm } from 'rosinterface';
|
|
@@ -507,20 +447,29 @@ async function runSwarmTest() {
|
|
|
507
447
|
|
|
508
448
|
// Node A: Modern Router (v7) -> Uses REST
|
|
509
449
|
swarm.addNode('CORE_ROUTER', {
|
|
510
|
-
host: '
|
|
450
|
+
host: '10.0.0.1',
|
|
511
451
|
user: 'admin',
|
|
512
|
-
password: '
|
|
452
|
+
password: 'safe12',
|
|
513
453
|
protocol: 'rest',
|
|
514
|
-
port: 443
|
|
454
|
+
port: 443,
|
|
455
|
+
socketPort: 8729,
|
|
456
|
+
useTLS: true, // Always use TLS between TLS v1.2 or TLS v1.3 deppend that your devices
|
|
457
|
+
allowInsecureConfig: true, // Only if you do not have a trusted certificate
|
|
458
|
+
rejectUnauthorized: false, // We allow self-signed certificates
|
|
459
|
+
timeout: 10 // Adjust the time tolerance, so that the library throws an error (10s)
|
|
515
460
|
});
|
|
516
461
|
|
|
517
462
|
// Node B: Legacy Router (v6) -> Uses Sockets
|
|
518
463
|
swarm.addNode('TOWER_A', {
|
|
519
|
-
host: '10.
|
|
464
|
+
host: '10.0.0.2',
|
|
520
465
|
user: 'admin',
|
|
521
|
-
password: '
|
|
466
|
+
password: 'safe1234',
|
|
522
467
|
protocol: 'socket',
|
|
523
|
-
port:
|
|
468
|
+
port: 8729,
|
|
469
|
+
useTLS: true, // Always use TLS between TLS v1.2 or TLS v1.3 deppend that your devices
|
|
470
|
+
allowInsecureConfig: true, // Only if you do not have a trusted certificate
|
|
471
|
+
rejectUnauthorized: false, // We allow self-signed certificates
|
|
472
|
+
timeout: 10 // Adjust the time tolerance, so that the library throws an error (10s)
|
|
524
473
|
});
|
|
525
474
|
|
|
526
475
|
console.log("Connecting Swarm...");
|
|
@@ -542,6 +491,78 @@ async function runSwarmTest() {
|
|
|
542
491
|
runSwarmTest();
|
|
543
492
|
```
|
|
544
493
|
|
|
494
|
+
|
|
495
|
+
#### 12. Full Integration Testing (Hybrid Engine & Wrappers)
|
|
496
|
+
|
|
497
|
+
```ts
|
|
498
|
+
import { MikrotikClient } from 'rosinterface';
|
|
499
|
+
|
|
500
|
+
async function manageWispNetwork() {
|
|
501
|
+
|
|
502
|
+
const client = new MikrotikClient({
|
|
503
|
+
host: process.env.MIKROTIK_HOST,
|
|
504
|
+
user: process.env.MIKROTIK_USER,
|
|
505
|
+
password: process.env.MIKROTIK_PASSWORD,
|
|
506
|
+
protocol: process.env.MIKROTIK_PROTOCOL,
|
|
507
|
+
port: 443,
|
|
508
|
+
socketPort: 8729, // Remember to change the default port
|
|
509
|
+
useTLS: true, // Always use TLS v1.2 or TLS v1.3, depending on your devices
|
|
510
|
+
allowInsecureConfig: true, // Only if reliable certificates are not available
|
|
511
|
+
rejectUnauthorized: false, // Allows self-signed certificates
|
|
512
|
+
timeout: 10 // Adjusts the timeout tolerance before the library throws an error (10s)
|
|
513
|
+
});
|
|
514
|
+
|
|
515
|
+
await client.connect();
|
|
516
|
+
|
|
517
|
+
// ==========================================
|
|
518
|
+
// 1. DIAGNOSTICS & SYSTEM INFO
|
|
519
|
+
// ==========================================
|
|
520
|
+
|
|
521
|
+
// Get a unified report of CPU, Memory, and Board info
|
|
522
|
+
const report = await client.diagnostic.generateSystemReport();
|
|
523
|
+
console.log(`Model: ${report.board['boardName']} | CPU Load: ${report.resources['cpu-load']}%`);
|
|
524
|
+
|
|
525
|
+
// Run an Automated Security Audit (Checks for open ports, default users, DNS vulnerabilities)
|
|
526
|
+
const vulnerabilities = await client.diagnostic.runSecurityAudit();
|
|
527
|
+
console.log("Security Alerts:", vulnerabilities);
|
|
528
|
+
|
|
529
|
+
// ==========================================
|
|
530
|
+
// 2. CUSTOMER PROVISIONING (PPPoE & Queues)
|
|
531
|
+
// ==========================================
|
|
532
|
+
|
|
533
|
+
// Create a new PPPoE user with a specific plan
|
|
534
|
+
await client.ppp.addSecret('john_doe', 'securePass123', 'Plan_50M');
|
|
535
|
+
|
|
536
|
+
// Limit bandwidth using Simple Queues (e.g., 20Mbps Upload / 50Mbps Download)
|
|
537
|
+
await client.queue.addQueue('John_Home', '10.0.0.5/32', '20M/50M');
|
|
538
|
+
|
|
539
|
+
// ==========================================
|
|
540
|
+
// 3. SECURITY & FIREWALL
|
|
541
|
+
// ==========================================
|
|
542
|
+
|
|
543
|
+
// Suspend a customer by adding them to an Address List
|
|
544
|
+
await client.firewall.addAddressList('10.0.0.5', 'suspended_users', { comment: 'Unpaid Invoice' });
|
|
545
|
+
|
|
546
|
+
// Easy Port Forwarding (nat-api style) - Map public port 8080 to an internal camera on port 80
|
|
547
|
+
await client.firewall.mapPort(8080, '10.0.0.5', 80, 'tcp');
|
|
548
|
+
|
|
549
|
+
// Close the port when no longer needed
|
|
550
|
+
await client.firewall.unmapPort(8080, 'tcp');
|
|
551
|
+
|
|
552
|
+
// ==========================================
|
|
553
|
+
// 4. LIVE TRAFFIC MONITORING
|
|
554
|
+
// ==========================================
|
|
555
|
+
|
|
556
|
+
// Get real-time bandwidth usage of a specific interface
|
|
557
|
+
const traffic = await client.interface.getLiveTraffic('ether1');
|
|
558
|
+
console.log(`Download: ${traffic['rx-bits-per-second']} bps`);
|
|
559
|
+
console.log(`Upload: ${traffic['tx-bits-per-second']} bps`);
|
|
560
|
+
|
|
561
|
+
await client.disconnect();
|
|
562
|
+
}
|
|
563
|
+
```
|
|
564
|
+
|
|
565
|
+
|
|
545
566
|
---
|
|
546
567
|
|
|
547
568
|
## Documentación en Español
|
|
@@ -707,10 +728,11 @@ const client = new MikrotikClient({
|
|
|
707
728
|
host: 'IP_DEL_ROUTER (LOCAL O REMOTO)',
|
|
708
729
|
user: 'admin',
|
|
709
730
|
password: 'password',
|
|
710
|
-
port:
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
allowInsecureConfig: true //
|
|
731
|
+
port: 443, // Se recomienda cambiar el puerto por defecto (Usa www-ssl)
|
|
732
|
+
socketPort: 8729, // Se recomienda cambiar el puerto por defecto (Usa api-ssl)
|
|
733
|
+
useTLS: true,
|
|
734
|
+
allowInsecureConfig: true, // Permite si no tienes un certificado confiable
|
|
735
|
+
rejectUnauthorized: false // Permite certificados auto firmados
|
|
714
736
|
});
|
|
715
737
|
|
|
716
738
|
await client.connect();
|
|
@@ -725,12 +747,16 @@ import { MikrotikClient } from 'rosinterface';
|
|
|
725
747
|
import 'dotenv/config';
|
|
726
748
|
|
|
727
749
|
const client = new MikrotikClient({
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
750
|
+
host: process.env.MIKROTIK_HOST,
|
|
751
|
+
user: process.env.MIKROTIK_USER,
|
|
752
|
+
password: process.env.MIKROTIK_PASSWORD,
|
|
753
|
+
protocol: process.env.MIKROTIK_PROTOCOL,
|
|
754
|
+
port: 443,
|
|
755
|
+
socketPort: 8729, // Recuerda cambiar el puerto por defecto
|
|
756
|
+
useTLS: true, // Siempre usa TLS v1.2 o TLS v1.3, depende de tus dispocitivos
|
|
757
|
+
allowInsecureConfig: true, // Solo si no se cuenta con certificados confiables
|
|
758
|
+
rejectUnauthorized: false, // Permite los certificados auto firmados
|
|
759
|
+
timeout: 10 // Ajusta la tolerancia de tiempo, para que la libreria arroje un error (10s)
|
|
734
760
|
});
|
|
735
761
|
|
|
736
762
|
await client.connect();
|
|
@@ -960,76 +986,7 @@ async function createSecureUser() {
|
|
|
960
986
|
|
|
961
987
|
```
|
|
962
988
|
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
#### 11. Hybrid Engine (REST + Sockets) & Idempotency
|
|
966
|
-
|
|
967
|
-
```ts
|
|
968
|
-
import { MikrotikClient } from 'rosinterface';
|
|
969
|
-
|
|
970
|
-
const delay = (ms: number) => new Promise(res => setTimeout(res, ms));
|
|
971
|
-
|
|
972
|
-
async function ejecutarTestHibrido() {
|
|
973
|
-
console.log("Iniciando Motor Híbrido");
|
|
974
|
-
|
|
975
|
-
const client = new MikrotikClient({
|
|
976
|
-
host: '192.168.1.1',
|
|
977
|
-
user: 'IVMEX',
|
|
978
|
-
password: 'password',
|
|
979
|
-
// CONFIGURACIÓN HÍBRIDA:
|
|
980
|
-
protocol: 'rest', // Cerebro Principal: HTTPS (Puerto 443)
|
|
981
|
-
port: 443,
|
|
982
|
-
socketPort: 8728, // Oído Secundario: TCP (Puerto 8728 para Streams)
|
|
983
|
-
rejectUnauthorized: false // Aceptar Certs Autofirmados (Usa Dispatcher Seguro)
|
|
984
|
-
});
|
|
985
|
-
|
|
986
|
-
try {
|
|
987
|
-
await client.connect();
|
|
988
|
-
console.log("Conexión Híbrida Establecida (HTTPS + TCP)");
|
|
989
|
-
|
|
990
|
-
// A. MONITOREO EN VIVO (Vía Socket 8728)
|
|
991
|
-
console.log("Escuchando cambios...");
|
|
992
|
-
client.collection('/ppp/secret')
|
|
993
|
-
.onSnapshot(data => {
|
|
994
|
-
if ('added' in data) console.log('Stream [Nuevo]:', data.added.map(x => x.name));
|
|
995
|
-
if ('removed' in data) console.log('Stream [Eliminado]:', data.removed.map(x => x.name));
|
|
996
|
-
})
|
|
997
|
-
.onDiff();
|
|
998
|
-
|
|
999
|
-
await delay(1000);
|
|
1000
|
-
|
|
1001
|
-
// B. IDEMPOTENCIA (Vía REST 443)
|
|
1002
|
-
// Intentamos crear el mismo usuario dos veces. La segunda NO debe fallar.
|
|
1003
|
-
const datosUsuario = { name: 'usuario_hibrido', password: '123', service: 'pppoe' };
|
|
1004
|
-
|
|
1005
|
-
console.log("Creando Usuario...");
|
|
1006
|
-
await client.command('/ppp/secret').idempotent().add(datosUsuario);
|
|
1007
|
-
|
|
1008
|
-
console.log("Creando Usuario Nuevamente (Prueba Idempotencia)...");
|
|
1009
|
-
// Esto recuperará el ID existente sin lanzar error
|
|
1010
|
-
const resultado = await client.command('/ppp/secret').idempotent().add(datosUsuario);
|
|
1011
|
-
console.log("Resultado Idempotencia:", resultado); // Debe devolver el objeto existente
|
|
1012
|
-
|
|
1013
|
-
await delay(2000);
|
|
1014
|
-
|
|
1015
|
-
// Limpieza
|
|
1016
|
-
await client.command('/ppp/secret').remove(resultado['.id']);
|
|
1017
|
-
console.log("Limpieza completada.");
|
|
1018
|
-
|
|
1019
|
-
} catch (e) {
|
|
1020
|
-
console.error("Error:", e);
|
|
1021
|
-
} finally {
|
|
1022
|
-
// Cierre elegante evita errores de "Socket Closed"
|
|
1023
|
-
client.close();
|
|
1024
|
-
}
|
|
1025
|
-
}
|
|
1026
|
-
|
|
1027
|
-
ejecutarTestHibrido();
|
|
1028
|
-
```
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
#### 12. Swarm Mode (Mass Management)
|
|
989
|
+
#### 11. Swarm Mode (Mass Management)
|
|
1033
990
|
|
|
1034
991
|
```ts
|
|
1035
992
|
import { MikrotikSwarm } from 'rosinterface';
|
|
@@ -1037,22 +994,31 @@ import { MikrotikSwarm } from 'rosinterface';
|
|
|
1037
994
|
async function ejecutarTestEnjambre() {
|
|
1038
995
|
const enjambre = new MikrotikSwarm();
|
|
1039
996
|
|
|
1040
|
-
// Nodo A: Router Moderno (v7) -> Usa REST
|
|
1041
|
-
enjambre.addNode('
|
|
1042
|
-
host: '
|
|
997
|
+
// Nodo A: Router Moderno (v7) -> Usa API-REST bajo HTTPS
|
|
998
|
+
enjambre.addNode('CORE_ROUTER', {
|
|
999
|
+
host: '10.0.0.1',
|
|
1043
1000
|
user: 'admin',
|
|
1044
|
-
password: '
|
|
1001
|
+
password: 'safe12',
|
|
1045
1002
|
protocol: 'rest',
|
|
1046
|
-
port: 443
|
|
1003
|
+
port: 443,
|
|
1004
|
+
socketPort: 8729,
|
|
1005
|
+
useTLS: true,
|
|
1006
|
+
allowInsecureConfig: true,
|
|
1007
|
+
rejectUnauthorized: false,
|
|
1008
|
+
timeout: 10
|
|
1047
1009
|
});
|
|
1048
1010
|
|
|
1049
|
-
//
|
|
1050
|
-
|
|
1051
|
-
host: '10.
|
|
1011
|
+
// Node B: Legacy Router (v6) -> Usas Sockets
|
|
1012
|
+
swarm.addNode('TOWER_A', {
|
|
1013
|
+
host: '10.0.0.2',
|
|
1052
1014
|
user: 'admin',
|
|
1053
|
-
password: '
|
|
1015
|
+
password: 'safe1234',
|
|
1054
1016
|
protocol: 'socket',
|
|
1055
|
-
port:
|
|
1017
|
+
port: 8729,
|
|
1018
|
+
useTLS: true,
|
|
1019
|
+
allowInsecureConfig: true,
|
|
1020
|
+
rejectUnauthorized: false,
|
|
1021
|
+
timeout: 10
|
|
1056
1022
|
});
|
|
1057
1023
|
|
|
1058
1024
|
console.log("Conectando Enjambre...");
|
|
@@ -1079,6 +1045,76 @@ async function ejecutarTestEnjambre() {
|
|
|
1079
1045
|
ejecutarTestEnjambre();
|
|
1080
1046
|
```
|
|
1081
1047
|
|
|
1048
|
+
#### 12. Pruebas de integración completa (motor híbrido y envoltorios)
|
|
1049
|
+
|
|
1050
|
+
```ts
|
|
1051
|
+
import { MikrotikClient } from 'rosinterface';
|
|
1052
|
+
|
|
1053
|
+
async function manageWispNetwork() {
|
|
1054
|
+
|
|
1055
|
+
const client = new MikrotikClient({
|
|
1056
|
+
host: process.env.MIKROTIK_HOST,
|
|
1057
|
+
user: process.env.MIKROTIK_USER,
|
|
1058
|
+
password: process.env.MIKROTIK_PASSWORD,
|
|
1059
|
+
protocol: process.env.MIKROTIK_PROTOCOL,
|
|
1060
|
+
port: 443,
|
|
1061
|
+
socketPort: 8729, // Recuerda cambiar el puerto por defecto
|
|
1062
|
+
useTLS: true, // Siempre usa TLS v1.2 o TLS v1.3, dependiendo de tus dispositivos
|
|
1063
|
+
allowInsecureConfig: true, // Solo si no se cuenta con certificados confiables
|
|
1064
|
+
rejectUnauthorized: false, // Permite los certificados autofirmados
|
|
1065
|
+
timeout: 10 // Ajusta la tolerancia de tiempo para que la librería arroje un error (10s)
|
|
1066
|
+
});
|
|
1067
|
+
|
|
1068
|
+
await client.connect();
|
|
1069
|
+
|
|
1070
|
+
// ==========================================
|
|
1071
|
+
// 1. DIAGNÓSTICO E INFORMACIÓN DEL SISTEMA
|
|
1072
|
+
// ==========================================
|
|
1073
|
+
|
|
1074
|
+
// Obtiene un reporte unificado de CPU, Memoria e información de la placa
|
|
1075
|
+
const report = await client.diagnostic.generateSystemReport();
|
|
1076
|
+
console.log(`Modelo: ${report.board['boardName']} | Carga CPU: ${report.resources['cpu-load']}%`);
|
|
1077
|
+
|
|
1078
|
+
// Ejecuta una Auditoría de Seguridad Automatizada (Revisa puertos abiertos, usuarios por defecto, vulnerabilidades DNS)
|
|
1079
|
+
const vulnerabilities = await client.diagnostic.runSecurityAudit();
|
|
1080
|
+
console.log("Alertas de Seguridad:", vulnerabilities);
|
|
1081
|
+
|
|
1082
|
+
// ==========================================
|
|
1083
|
+
// 2. APROVISIONAMIENTO DE CLIENTES (PPPoE y Colas)
|
|
1084
|
+
// ==========================================
|
|
1085
|
+
|
|
1086
|
+
// Crea un nuevo usuario PPPoE con un plan específico
|
|
1087
|
+
await client.ppp.addSecret('juan_perez', 'securePass123', 'Plan_50M');
|
|
1088
|
+
|
|
1089
|
+
// Limita el ancho de banda usando Simple Queues (ej. 20Mbps Subida / 50Mbps Bajada)
|
|
1090
|
+
await client.queue.addQueue('Casa_Juan', '10.0.0.5/32', '20M/50M');
|
|
1091
|
+
|
|
1092
|
+
// ==========================================
|
|
1093
|
+
// 3. SEGURIDAD Y FIREWALL
|
|
1094
|
+
// ==========================================
|
|
1095
|
+
|
|
1096
|
+
// Suspende a un cliente agregándolo a una Lista de Direcciones (Address List)
|
|
1097
|
+
await client.firewall.addAddressList('10.0.0.5', 'usuarios_suspendidos', { comment: 'Factura Vencida' });
|
|
1098
|
+
|
|
1099
|
+
// Redirección de puertos fácil (estilo nat-api) - Mapea el puerto público 8080 a una cámara interna en el puerto 80
|
|
1100
|
+
await client.firewall.mapPort(8080, '10.0.0.5', 80, 'tcp');
|
|
1101
|
+
|
|
1102
|
+
// Cierra el puerto cuando ya no se necesite
|
|
1103
|
+
await client.firewall.unmapPort(8080, 'tcp');
|
|
1104
|
+
|
|
1105
|
+
// ==========================================
|
|
1106
|
+
// 4. MONITOREO DE TRÁFICO EN VIVO
|
|
1107
|
+
// ==========================================
|
|
1108
|
+
|
|
1109
|
+
// Obtiene el uso de ancho de banda en tiempo real de una interfaz específica
|
|
1110
|
+
const traffic = await client.interface.getLiveTraffic('ether1');
|
|
1111
|
+
console.log(`Descarga: ${traffic['rx-bits-per-second']} bps`);
|
|
1112
|
+
console.log(`Subida: ${traffic['tx-bits-per-second']} bps`);
|
|
1113
|
+
|
|
1114
|
+
await client.disconnect();
|
|
1115
|
+
}
|
|
1116
|
+
```
|
|
1117
|
+
|
|
1082
1118
|
---
|
|
1083
1119
|
|
|
1084
1120
|
## Author's Note / Nota del Autor
|
|
@@ -491,7 +491,6 @@ class CommandBuilder {
|
|
|
491
491
|
* await client.command('/ppp/active').remove(idsToKick);
|
|
492
492
|
*/
|
|
493
493
|
async remove(id) {
|
|
494
|
-
// Always normalize input to an Array
|
|
495
494
|
const ids = Array.isArray(id) ? id : [id];
|
|
496
495
|
// OFFLINE CHECK
|
|
497
496
|
if (this.shouldDefer()) {
|
|
@@ -502,14 +501,14 @@ class CommandBuilder {
|
|
|
502
501
|
});
|
|
503
502
|
return [];
|
|
504
503
|
}
|
|
504
|
+
const isPppActive = this.menuPath.includes('ppp/active');
|
|
505
|
+
const writeOptions = isPppActive ? { forceProtocol: 'socket' } : undefined;
|
|
505
506
|
for (const singleId of ids) {
|
|
506
507
|
try {
|
|
507
|
-
|
|
508
|
-
await this.client.write(`${this.menuPath}/remove`, { '.id': singleId });
|
|
508
|
+
await this.client.write(`${this.menuPath}/remove`, { '.id': singleId }, writeOptions);
|
|
509
509
|
}
|
|
510
510
|
catch (error) {
|
|
511
|
-
|
|
512
|
-
if (this.client.currentProtocol !== 'socket') {
|
|
511
|
+
if (!isPppActive && this.client.currentProtocol !== 'socket') {
|
|
513
512
|
try {
|
|
514
513
|
await this.client.write(`${this.menuPath}/remove`, { '.id': singleId }, { forceProtocol: 'socket' });
|
|
515
514
|
}
|
|
@@ -521,12 +520,11 @@ class CommandBuilder {
|
|
|
521
520
|
throw error;
|
|
522
521
|
}
|
|
523
522
|
}
|
|
524
|
-
// Smart Throttling
|
|
523
|
+
// Smart Throttling
|
|
525
524
|
if (ids.length > 1) {
|
|
526
525
|
await new Promise(resolve => setTimeout(resolve, 50));
|
|
527
526
|
}
|
|
528
527
|
}
|
|
529
|
-
// Invalidate Cache for this path to ensure next read is fresh
|
|
530
528
|
this.invalidatePathCache();
|
|
531
529
|
return ids;
|
|
532
530
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandBuilder.js","sourceRoot":"","sources":["../../src/client/CommandBuilder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CommandBuilder.js","sourceRoot":"","sources":["../../src/client/CommandBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,12 @@ import { MetricDefinition } from '../features/PrometheusExporter';
|
|
|
8
8
|
import { SnapshotCallback } from "../features/LiveCollection";
|
|
9
9
|
import { SnapshotSubscription } from "./SnapshotSubscription";
|
|
10
10
|
import { MikrotikTransaction } from "./MikrotikTransaction";
|
|
11
|
+
import { DiagnosticWrapper } from "../features/DiagnosticWrapper";
|
|
12
|
+
import { SystemWrapper } from "../features/SystemWrapper";
|
|
13
|
+
import { FirewallWrapper } from "../features/FirewallWrapper";
|
|
14
|
+
import { IpWrapper } from "../features/IpWrapper";
|
|
15
|
+
import { QueueWrapper } from "../features/QueueWrapper";
|
|
16
|
+
import { PPPWrapper } from "../features/PPPoEWrapper";
|
|
11
17
|
export interface MikrotikOptions extends SocketClientOptions {
|
|
12
18
|
/**
|
|
13
19
|
* RouterOS username (default: 'admin')
|
|
@@ -70,6 +76,18 @@ export declare class MikrotikClient extends EventEmitter {
|
|
|
70
76
|
private readonly options;
|
|
71
77
|
private readonly isConfigFromEnv;
|
|
72
78
|
private readonly rest;
|
|
79
|
+
/** Manages PPPoE users, active sessions, and profiles. */
|
|
80
|
+
ppp: PPPWrapper;
|
|
81
|
+
/** Manages Simple Queues for bandwidth control and QoS. */
|
|
82
|
+
queue: QueueWrapper;
|
|
83
|
+
/** Manages DHCP Leases, Static IP assignments, and Layer 2 ARP bindings. */
|
|
84
|
+
ip: IpWrapper;
|
|
85
|
+
/** Manages Address Lists, NAT rules (Port Forwarding), and Filter rules. */
|
|
86
|
+
firewall: FirewallWrapper;
|
|
87
|
+
/** Manages device reboots, backups, and global external IP discovery. */
|
|
88
|
+
system: SystemWrapper;
|
|
89
|
+
/** Runs security audits and aggregates system health/resource data. */
|
|
90
|
+
diagnostic: DiagnosticWrapper;
|
|
73
91
|
private _isConnected;
|
|
74
92
|
private isManuallyClosing;
|
|
75
93
|
get currentProtocol(): "socket" | "rest" | undefined;
|
|
@@ -49,6 +49,12 @@ const PrometheusExporter_1 = require("../features/PrometheusExporter");
|
|
|
49
49
|
const LiveCollection_1 = require("../features/LiveCollection");
|
|
50
50
|
const MikrotikTransaction_1 = require("./MikrotikTransaction");
|
|
51
51
|
const RestProtocol_1 = require("../core/RestProtocol");
|
|
52
|
+
const DiagnosticWrapper_1 = require("../features/DiagnosticWrapper");
|
|
53
|
+
const SystemWrapper_1 = require("../features/SystemWrapper");
|
|
54
|
+
const FirewallWrapper_1 = require("../features/FirewallWrapper");
|
|
55
|
+
const IpWrapper_1 = require("../features/IpWrapper");
|
|
56
|
+
const QueueWrapper_1 = require("../features/QueueWrapper");
|
|
57
|
+
const PPPoEWrapper_1 = require("../features/PPPoEWrapper");
|
|
52
58
|
// Load environment variables immediately
|
|
53
59
|
dotenv.config();
|
|
54
60
|
/**
|
|
@@ -59,7 +65,6 @@ dotenv.config();
|
|
|
59
65
|
* hardware protection (rate limiting), and fault tolerance (circuit breaking).
|
|
60
66
|
*/
|
|
61
67
|
class MikrotikClient extends events_1.EventEmitter {
|
|
62
|
-
// Dentro de la clase MikrotikClient
|
|
63
68
|
get currentProtocol() {
|
|
64
69
|
return this.options.protocol;
|
|
65
70
|
}
|
|
@@ -144,6 +149,12 @@ class MikrotikClient extends events_1.EventEmitter {
|
|
|
144
149
|
const envProtocol = process.env.MIKROTIK_PROTOCOL;
|
|
145
150
|
const envSocketPort = process.env.MIKROTIK_PORT_APISSL;
|
|
146
151
|
this.isConfigFromEnv = !!(envHost && envUser && envPass);
|
|
152
|
+
this.ppp = new PPPoEWrapper_1.PPPWrapper(this);
|
|
153
|
+
this.queue = new QueueWrapper_1.QueueWrapper(this);
|
|
154
|
+
this.ip = new IpWrapper_1.IpWrapper(this);
|
|
155
|
+
this.firewall = new FirewallWrapper_1.FirewallWrapper(this);
|
|
156
|
+
this.system = new SystemWrapper_1.SystemWrapper(this);
|
|
157
|
+
this.diagnostic = new DiagnosticWrapper_1.DiagnosticWrapper(this);
|
|
147
158
|
// Configuration Merging
|
|
148
159
|
this.options = {
|
|
149
160
|
host: envHost || options.host,
|
|
@@ -525,14 +536,8 @@ class MikrotikClient extends events_1.EventEmitter {
|
|
|
525
536
|
return this.breaker.execute(async () => {
|
|
526
537
|
// Wait for Rate Limiter Token (Smart Backoff)
|
|
527
538
|
await this.rateLimiter.acquire();
|
|
528
|
-
// Extraer preferencias de protocolo
|
|
529
539
|
const forceSocket = options?.forceProtocol === 'socket';
|
|
530
540
|
const forceRest = options?.forceProtocol === 'rest';
|
|
531
|
-
// -------------------------------------------------------
|
|
532
|
-
// STRATEGY A: REST API (RouterOS v7+) - PRIORITY
|
|
533
|
-
// -------------------------------------------------------
|
|
534
|
-
// Intentar REST si: Existe la instancia REST Y
|
|
535
|
-
// (Se forzó explícitamente REST O (es el default y NO se forzó Socket))
|
|
536
541
|
const tryRest = this.rest && (forceRest || (this.options.protocol === 'rest' && !forceSocket));
|
|
537
542
|
if (tryRest) {
|
|
538
543
|
try {
|
|
@@ -550,10 +555,6 @@ class MikrotikClient extends events_1.EventEmitter {
|
|
|
550
555
|
throw error; // CircuitBreaker catches this to update health stats
|
|
551
556
|
}
|
|
552
557
|
}
|
|
553
|
-
// -------------------------------------------------------
|
|
554
|
-
// STRATEGY B: SOCKET API (Legacy / RouterOS v6 o Fallback explícito)
|
|
555
|
-
// -------------------------------------------------------
|
|
556
|
-
// Entraremos aquí si: Se forzó el Socket, o el default es Socket, o REST falló la inicialización.
|
|
557
558
|
if (this.socket) {
|
|
558
559
|
return new Promise((resolve, reject) => {
|
|
559
560
|
const tag = this.generateTag();
|