calix-c844g
v0.1.0
Published
TypeScript client for the Calix C844G web admin UI.
Maintainers
Readme
calix-c844g
TypeScript client for authenticating to and reading data from the Calix C844G router's web admin UI. Works in Node.js by reverse-engineering the router's proprietary HTTP interface—no public API required.
Install
npm install calix-c844gQuickstart
import { RouterClient } from "calix-c844g";
const client = new RouterClient({ baseUrl: "http://192.168.0.1" });
const login = await client.login("admin", "password");
if (!login.ok) throw new Error(login.message ?? "Login failed");
const dhcp = await client.fetchDhcpReservations();
console.log(dhcp.reservations);
const devices = await client.fetchDevices();
console.log(devices);
const modem = await client.fetchModemStatus();
console.log(modem.tables);RouterClient options
const client = new RouterClient({
baseUrl: "http://192.168.0.1", // router address
timeoutMs: 10_000, // request timeout (default: 10 000 ms)
allowInsecureTls: false, // allow self-signed certificates
});API
client.login(user, pass): Promise<LoginResult>
Authenticates with the router. Returns { ok: true } on success or { ok: false, message? } on failure.
client.fetchDhcpReservations(): Promise<DhcpReservationResponse>
Returns DHCP pool settings and static reservations.
client.fetchDevices(): Promise<DeviceTableRow[]>
Returns all connected/known devices.
client.fetchModemStatus(): Promise<ModemStatusResponse>
Returns modem/WAN status tables and raw HTML.
client.verifySession(): Promise<boolean>
Lightweight check that the current session is still authenticated.
client.exportCookies() / importCookies(cookies)
Export and restore session cookies to avoid re-authenticating.
Status
Working baseline for login and the core data fetchers (DHCP reservations, devices, modem status).
Note: This library is Node.js only. Cookie handling is basic; other Calix router models may vary.
Development
npm install
npm run build
npm testCLI helper (requires ROUTER_URL, ROUTER_USER, ROUTER_PASS env vars):
npm run calix -- show dhcp
npm run calix -- show devices
npm run calix -- show modem-status [--raw]Capture the browser flow with Playwright (for reverse-engineering new endpoints):
npm run captureContributing
See CONTRIBUTING.md.
License
MIT. See LICENSE.
