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 CHANGED
@@ -1,4 +1,4 @@
1
- # RosInterface v1.3
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
- port: 8729, // We recommended change the default port
182
- useTLS: false, // Test only
183
- rateLimit: 50,
184
- allowInsecureConfig: true // Never in production or release
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
- port: Number(process.env.MIKROTIK_PORT) || 8729,
203
- useTLS: true, //Always use TLS between TLS v1.2 or TLS v1.3 deppend that your devices
204
- rateLimit: 50 //Here you adjust the number of requests per second you want it to support (Anti DDoS)
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: '192.168.1.1',
450
+ host: '10.0.0.1',
511
451
  user: 'admin',
512
- password: 'secure',
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.20.30.50',
464
+ host: '10.0.0.2',
520
465
  user: 'admin',
521
- password: 'old',
466
+ password: 'safe1234',
522
467
  protocol: 'socket',
523
- port: 8728
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: 8729, // Se recomienda cambiar el puerto por defecto
711
- useTLS: false, // Solo pruebas
712
- rateLimit: 50,
713
- allowInsecureConfig: true // Nunca en producción
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
- host: process.env.MIKROTIK_HOST,
729
- user: process.env.MIKROTIK_USER,
730
- password: process.env.MIKROTIK_PASSWORD,
731
- port: Number(process.env.MIKROTIK_PORT) || 8729,
732
- useTLS: true, //Utilice siempre TLS entre TLS v1.2 o TLS v1.3 dependiendo de sus dispositivos
733
- rateLimit: 50 //Aqui ajustas la cantidad de peticiones por segundo que deseas que soporte (Anti DDoS)
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('ROUTER_CENTRAL', {
1042
- host: '192.168.1.1',
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: 'segura',
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
- // Nodo B: Router Antiguo (v6) -> Usa Sockets
1050
- enjambre.addNode('TORRE_NORTE', {
1051
- host: '10.20.30.50',
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: 'vieja',
1015
+ password: 'safe1234',
1054
1016
  protocol: 'socket',
1055
- port: 8728
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
- // PRIMER INTENTO: Usa el flujo normal (API-REST por defecto)
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
- // Evaluamos el getter público recién creado
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: Si estamos borrando en lote, damos 50ms de respiro al CPU
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();