MikroTik Router API Stream Library
A zero-dependency, environment-agnostic TypeScript library for working with MikroTik Router API using WebStreams.
Example 1
Example 1
import { createClient } from '@hertzg/routeros-api'; // Connect to router (example uses Deno, but works with any streams) const conn = await Deno.connect({ hostname: '192.168.88.1', port: 8728 }); // Create client const client = createClient({ readable: conn.readable, writable: conn.writable }); // Authenticate first const login = await client.send({ command: '/login', attributes: { name: 'admin', password: '' } }); const loginTrap = login.find(r => r.type === 'trap'); if(loginTrap) { throw new Error(loginTrap.message || 'Login failed'); } // check if login was successful // Execute commands (they can be sent concurrently as well) const interfaces = await client.send({ command: '/interface/print' }); const addresses = await client.send({ command: '/ip/address/print' }); // Close session await client.quit(); // Close connection await conn.close();
f
createClient(options: ClientOptions): Client
Creates a MikroTik API client with automatic request multiplexing
T
Client = { send: (command: Command) => Promise<Reply[]>; quit: () => Promise<void>; }
MikroTik API client interface
-
quit: () => Promise<void>
Close the connection gracefully
-
send: (command: Command) => Promise<Reply[]>
Execute a command and await all replies
T
ClientOptions = { readable: ReadableStream<Uint8Array>; writable: WritableStream<Uint8Array>; }
Client connection options
-
readable: ReadableStream<Uint8Array>
Input stream for receiving binary data from the router
-
writable: WritableStream<Uint8Array>
Output stream for sending binary data to the router
Usage
import * as mod from "mod.ts";