@coffeerunhobby/mcp-ha-connect 2.4.7 → 2.5.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/.env.example +25 -0
- package/README.md +42 -10
- package/dist/config.d.ts +7 -0
- package/dist/config.js +22 -0
- package/dist/config.js.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/net/adapters/omada.d.ts +46 -7
- package/dist/net/adapters/omada.js +432 -44
- package/dist/net/adapters/omada.js.map +1 -1
- package/dist/net/adapters/omadaPorts.d.ts +62 -0
- package/dist/net/adapters/omadaPorts.js +212 -0
- package/dist/net/adapters/omadaPorts.js.map +1 -0
- package/dist/net/adapters/omadaRules.d.ts +1 -1
- package/dist/net/adapters/omadaRules.js +2 -2
- package/dist/net/adapters/omadaRules.js.map +1 -1
- package/dist/net/adapters/ruijie.d.ts +59 -0
- package/dist/net/adapters/ruijie.js +363 -0
- package/dist/net/adapters/ruijie.js.map +1 -0
- package/dist/net/model.d.ts +37 -12
- package/dist/net/model.js.map +1 -1
- package/dist/omadaClient/accessControl.js +1 -1
- package/dist/omadaClient/accessControl.js.map +1 -1
- package/dist/omadaClient/index.d.ts +4 -0
- package/dist/omadaClient/index.js +3 -0
- package/dist/omadaClient/index.js.map +1 -1
- package/dist/omadaClient/networkConfig.d.ts +21 -0
- package/dist/omadaClient/networkConfig.js +41 -0
- package/dist/omadaClient/networkConfig.js.map +1 -1
- package/dist/ruijieClient/crypto.d.ts +20 -0
- package/dist/ruijieClient/crypto.js +57 -0
- package/dist/ruijieClient/crypto.js.map +1 -0
- package/dist/ruijieClient/index.d.ts +62 -0
- package/dist/ruijieClient/index.js +197 -0
- package/dist/ruijieClient/index.js.map +1 -0
- package/dist/server/common.d.ts +2 -0
- package/dist/server/common.js +2 -1
- package/dist/server/common.js.map +1 -1
- package/dist/server/http.d.ts +2 -0
- package/dist/server/http.js +2 -2
- package/dist/server/http.js.map +1 -1
- package/dist/server/stdio.d.ts +2 -0
- package/dist/server/stdio.js.map +1 -1
- package/dist/server/stream.d.ts +2 -0
- package/dist/server/stream.js +2 -1
- package/dist/server/stream.js.map +1 -1
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.js +9 -3
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/net/index.d.ts +43 -2
- package/dist/tools/net/index.js +197 -12
- package/dist/tools/net/index.js.map +1 -1
- package/dist/tools/omada/listClients.js +1 -1
- package/dist/tools/omada/listClients.js.map +1 -1
- package/dist/upstreams.d.ts +8 -2
- package/dist/upstreams.js +56 -3
- package/dist/upstreams.js.map +1 -1
- package/dist/utils/redact.js +1 -1
- package/dist/utils/redact.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +7 -7
package/.env.example
CHANGED
|
@@ -168,3 +168,28 @@ MCP_AUTH_SECRET=replace-with-a-random-secret-at-least-32-characters
|
|
|
168
168
|
# - Rotate your Home Assistant tokens periodically
|
|
169
169
|
# - Keep MCP_AUTH_METHOD=bearer in production; none is loopback-only
|
|
170
170
|
# - Issue a distinct JWT per client (with scoped RBAC permissions) for audit
|
|
171
|
+
|
|
172
|
+
# -----------------------------------------------------------------------------
|
|
173
|
+
# Network tools (net_, with the Omada and Ruijie plugins)
|
|
174
|
+
# -----------------------------------------------------------------------------
|
|
175
|
+
|
|
176
|
+
# LAN address(es) or host name(s) of the machine this server runs on, comma-separated
|
|
177
|
+
# (for Docker: the host's LAN address). The net_ tools protect it like the controller: never
|
|
178
|
+
# its switch port, its network's VLAN or gateway, or its internet access (rules). While this is
|
|
179
|
+
# unset, ports with devices on them are left alone.
|
|
180
|
+
# MCP_SERVER_ADDRESSES=192.168.0.18
|
|
181
|
+
|
|
182
|
+
# -----------------------------------------------------------------------------
|
|
183
|
+
# Ruijie / Reyee router (net_ tools with controller "ruijie"; read-only in 2.5.0)
|
|
184
|
+
# -----------------------------------------------------------------------------
|
|
185
|
+
|
|
186
|
+
# RUIJIE_PLUGIN_ENABLED=false
|
|
187
|
+
# The router's management address. Use https: the router's login page hides the password
|
|
188
|
+
# with a key shipped in the page, so over plain http anyone watching can read it.
|
|
189
|
+
# RUIJIE_BASE_URL=https://192.168.110.1
|
|
190
|
+
# The admin password (the username is always admin). A refused login is never retried:
|
|
191
|
+
# wrong passwords lock the router's login.
|
|
192
|
+
# RUIJIE_PASSWORD=
|
|
193
|
+
# false accepts the router's self-signed certificate (for this client only).
|
|
194
|
+
# RUIJIE_STRICT_SSL=false
|
|
195
|
+
# RUIJIE_TIMEOUT=15000
|
package/README.md
CHANGED
|
@@ -77,7 +77,7 @@ high-value questions an LLM can actually answer about your network:
|
|
|
77
77
|
> above through two tools — `omada_browse` + `omada_read` — keeping the tool-schema budget
|
|
78
78
|
> small for low-context models. See the Omada tool tables below for the full eager surface.
|
|
79
79
|
|
|
80
|
-
## Available Tools (
|
|
80
|
+
## Available Tools (81 Total)
|
|
81
81
|
|
|
82
82
|
### Home Assistant Tools (38)
|
|
83
83
|
|
|
@@ -251,13 +251,16 @@ Lets the controller enforce a schedule itself (e.g. a curfew) instead of a daily
|
|
|
251
251
|
| `omada_getSiteNtpStatus` | Get the site's NTP server configuration and status |
|
|
252
252
|
| `omada_setSiteNtpServers` | Replace the site's NTP server list (needs `CONFIGURE`; `dryRun` previews the change) |
|
|
253
253
|
|
|
254
|
-
### Vendor-neutral Network Tools (
|
|
254
|
+
### Vendor-neutral Network Tools (21)
|
|
255
255
|
|
|
256
256
|
The `net_` tools describe networks the same way for every controller vendor: one shared model, with an adapter per
|
|
257
|
-
vendor (TP-Link Omada
|
|
258
|
-
built from several objects, or unsupported (`net_capabilities`), and refuses what
|
|
259
|
-
|
|
260
|
-
|
|
257
|
+
vendor (TP-Link Omada, and Ruijie / Reyee routers read-only since 2.5.0; UniFi and MikroTik are planned). Each adapter
|
|
258
|
+
says per feature whether it is native, built from several objects, or unsupported (`net_capabilities`), and refuses what
|
|
259
|
+
it can't do instead of dropping it. With several controllers configured, every `net_` tool takes an optional
|
|
260
|
+
`controller` (`omada` or `ruijie`); without it Omada answers.
|
|
261
|
+
Every change is planned first: `dryRun` shows the steps, what they mean, which online devices would be cut off, and a
|
|
262
|
+
`basis` (a fingerprint of the change and what it read). Passing that `basis` when applying refuses the change if it
|
|
263
|
+
is another change, or the controller or those devices changed since; `allowLockout` (cutting devices off) requires it.
|
|
261
264
|
Wi-Fi passwords are never taken or shown: a new or reset Wi-Fi network gets a random temporary password, and the real
|
|
262
265
|
one is set in the controller's web UI. Reads need `QUERY`, changes `CONFIGURE`.
|
|
263
266
|
|
|
@@ -265,19 +268,37 @@ one is set in the controller's web UI. Reads need `QUERY`, changes `CONFIGURE`.
|
|
|
265
268
|
|------|-------------|
|
|
266
269
|
| `net_capabilities` | What the controller can do, per feature |
|
|
267
270
|
| `net_listNetworks` | Networks (VLANs): VLAN, gateway, DHCP, IPv6, protected |
|
|
268
|
-
| `net_createNetwork` / `net_updateNetwork` / `net_deleteNetwork` | Create or change a VLAN with its gateway and DHCP range. The
|
|
271
|
+
| `net_createNetwork` / `net_updateNetwork` / `net_deleteNetwork` | Create or change a VLAN with its gateway and DHCP range. The networks the controller and this server are on are protected; delete is refused while a Wi-Fi network, port profile, switch port (untagged), reservation or rule uses it |
|
|
269
272
|
| `net_listWifi` | Wi-Fi networks: network, bands, security, isolation, MAC filter |
|
|
270
273
|
| `net_createWifi` / `net_updateWifi` / `net_deleteWifi` | Create or change an SSID on a given network (bands, WPA2/WPA3, PMF, isolation, hidden, 802.11r, MAC filter), or reset its password to a random one |
|
|
271
274
|
| `net_listRules` | Traffic rules in evaluation order (the first match decides); rules the model can't express are shown read-only (`foreign`, with the reason) |
|
|
272
|
-
| `net_createRule` / `net_updateRule` / `net_deleteRule` / `net_moveRule` | Allow or block traffic from networks, a group or addresses to networks, a group, addresses (optionally on ports) or the internet, at a chosen position. **Stateful:** a block stops new connections, replies to connections started from the other side still pass ("block IoT → Home" lets Home still reach IoT). Addresses given in a rule become a group the rule owns and removes with it. A change after which the controller
|
|
275
|
+
| `net_createRule` / `net_updateRule` / `net_deleteRule` / `net_moveRule` | Allow or block traffic from networks, a group or addresses to networks, a group, addresses (optionally on ports) or the internet, at a chosen position. **Stateful:** a block stops new connections, replies to connections started from the other side still pass ("block IoT → Home" lets Home still reach IoT). Addresses given in a rule become a group the rule owns and removes with it. A change after which the controller or this server (`MCP_SERVER_ADDRESSES`) could no longer reach the internet, in its end state or on the way there, is refused |
|
|
273
276
|
| `net_listGroups` | Address groups (usable in rules) and MAC groups (Wi-Fi allow/deny lists) |
|
|
277
|
+
| `net_listClients` | Online devices with the network and VLAN each is on (wireless ones too), their Wi-Fi network or switch port; optionally only one network ("what is on VLAN 2?") |
|
|
278
|
+
| `net_listPortProfiles` | Switch port profiles and, when a profile sets them, the networks a port following it carries |
|
|
279
|
+
| `net_listPorts` | Switch ports: the networks each carries (untagged and tagged), its profile, the online devices on it, uplinks, and why a port is protected |
|
|
280
|
+
| `net_assignPort` | Set the networks a switch port carries: its untagged network (e.g. a wired IoT device's port on "IoT") and optionally tagged ones (`all`, `none` or a list); its other settings keep following its profile. Uplinks (from the controller's topology: the switch's own uplink and every network device below it), the ports the controller and this server are on (`MCP_SERVER_ADDRESSES`), link aggregation ports and ports with their own settings are refused, whatever `allowLockout` says. While where the controller or this server is can't be told, ports with devices on them are left alone. Devices that would lose their network need `allowLockout` |
|
|
281
|
+
| `net_getMdnsRepeater` / `net_setMdnsRepeater` | Whether mDNS (Bonjour) discovery is repeated between networks; switch it on or off, or change the networks (e.g. so Home Assistant discovers IoT devices). Discovery only: traffic still follows the rules |
|
|
274
282
|
|
|
275
283
|
On Omada, a network isolation flag (use a block rule instead), a "guest" network type, switching IPv6 on, and WPA2/WPA3
|
|
276
284
|
mixed mode are not available through the API and are refused. Rules are gateway ACLs (the gateway routes between the
|
|
277
285
|
VLANs): LAN to LAN between your networks, LAN to WAN towards the internet. Refused with the reason: the gateway itself as
|
|
278
286
|
a destination (no API option for its own addresses), one device by MAC (give its address), a Wi-Fi network as the
|
|
279
|
-
source, rules that also match replies, schedules (the `omada_` time-range tools do those) and port ranges.
|
|
280
|
-
|
|
287
|
+
source, rules that also match replies, schedules (the `omada_` time-range tools do those) and port ranges. Port
|
|
288
|
+
profiles are created in the controller web UI; `net_assignPort` sets a port's own networks (on controller 6.3 profiles
|
|
289
|
+
usually set none, and a port can't be put back on its profile's). The mDNS repeater is the controller's
|
|
290
|
+
one gateway mDNS rule: create it once in the web UI (with the services to repeat), then change it here; access point
|
|
291
|
+
mDNS rules, several rules or a one-way rule are shown as `foreign` and left to the web UI.
|
|
292
|
+
|
|
293
|
+
On a Ruijie / Reyee router (2.5.0, read-only, mapped on a RG-EG105G-V3 with ReyeeOS 2.324) the `net_` list tools show
|
|
294
|
+
its LAN networks, the devices it sees on its LAN right now (named by their address lease), DHCP reservations, its
|
|
295
|
+
ports (the WAN port as the protected uplink) and its access-control rules; rules the model can't say faithfully (a
|
|
296
|
+
source "anywhere", source ports, IPv6, user groups, schedules, only some connection states, an interface restriction the
|
|
297
|
+
model can't carry, ports for TCP or UDP only) are shown as `foreign`.
|
|
298
|
+
Every change is refused for now: reservations and rules come next, then networks. It talks to the router's local web
|
|
299
|
+
API with its admin password; use `https://` (the router's own login page hides the password with a key that is
|
|
300
|
+
shipped in the page, so only HTTPS really protects it). A refused login is never retried, because wrong passwords lock
|
|
301
|
+
the router's login: the Ruijie tools then refuse until the setting is fixed and the server restarted.
|
|
281
302
|
|
|
282
303
|
### AI Tools (1)
|
|
283
304
|
|
|
@@ -474,6 +495,17 @@ Clients only see the tools they may use: `tools/list` is filtered by the caller'
|
|
|
474
495
|
| `OMADA_SITE_ID` | - | Default site ID for operations |
|
|
475
496
|
| `OMADA_STRICT_SSL` | `true` | Validate SSL certificates |
|
|
476
497
|
| `OMADA_TIMEOUT` | `30000` | API request timeout (ms) |
|
|
498
|
+
| `MCP_SERVER_ADDRESSES` | - | LAN address(es) or host name(s) of the machine this server runs on, comma-separated (for Docker: the host's LAN address). The `net_` tools protect it like the controller: never its switch port, its network's VLAN or gateway, or its internet access (rules). While unset, ports with devices on them are left alone |
|
|
499
|
+
|
|
500
|
+
### Optional - Ruijie / Reyee Router
|
|
501
|
+
|
|
502
|
+
| Variable | Default | Description |
|
|
503
|
+
|----------|---------|-------------|
|
|
504
|
+
| `RUIJIE_PLUGIN_ENABLED` | `false` | Enable the Ruijie router (its `net_` tools take `controller: "ruijie"`) |
|
|
505
|
+
| `RUIJIE_BASE_URL` | - | The router's management address, e.g. `https://192.168.110.1` (use https: over plain http its password can be read on the wire) |
|
|
506
|
+
| `RUIJIE_PASSWORD` | - | The router's admin password (the username is always `admin`). Never retried when refused: wrong passwords lock the router's login |
|
|
507
|
+
| `RUIJIE_STRICT_SSL` | `true` | Validate the router's certificate; `false` accepts its self-signed one (this client only) |
|
|
508
|
+
| `RUIJIE_TIMEOUT` | `15000` | Request timeout (ms) |
|
|
477
509
|
|
|
478
510
|
## Advanced Configuration Examples
|
|
479
511
|
|
package/dist/config.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export interface EnvironmentConfig {
|
|
|
6
6
|
haPluginEnabled: boolean;
|
|
7
7
|
aiPluginEnabled: boolean;
|
|
8
8
|
omadaPluginEnabled: boolean;
|
|
9
|
+
ruijiePluginEnabled: boolean;
|
|
9
10
|
baseUrl?: string;
|
|
10
11
|
token?: string;
|
|
11
12
|
strictSsl: boolean;
|
|
@@ -17,6 +18,12 @@ export interface EnvironmentConfig {
|
|
|
17
18
|
siteId?: string;
|
|
18
19
|
omadaStrictSsl: boolean;
|
|
19
20
|
requestTimeout?: number;
|
|
21
|
+
/** LAN addresses or host names of the machine this server runs on (MCP_SERVER_ADDRESSES); empty when not set. */
|
|
22
|
+
serverAddresses: string[];
|
|
23
|
+
ruijieBaseUrl?: string;
|
|
24
|
+
ruijiePassword?: string;
|
|
25
|
+
ruijieStrictSsl: boolean;
|
|
26
|
+
ruijieTimeout?: number;
|
|
20
27
|
aiProvider: AIProviderType;
|
|
21
28
|
aiUrl: string;
|
|
22
29
|
aiModel: string;
|
package/dist/config.js
CHANGED
|
@@ -23,6 +23,7 @@ const envSchema = z
|
|
|
23
23
|
haPluginEnabled: createBooleanStringSchema(false),
|
|
24
24
|
aiPluginEnabled: createBooleanStringSchema(false),
|
|
25
25
|
omadaPluginEnabled: createBooleanStringSchema(false),
|
|
26
|
+
ruijiePluginEnabled: createBooleanStringSchema(false),
|
|
26
27
|
// Home Assistant Client Configuration (optional if using Omada only)
|
|
27
28
|
haUrl: z.string().url({ message: 'HA_URL must be a valid URL' }).optional(),
|
|
28
29
|
haToken: z.string().min(1).optional(),
|
|
@@ -36,6 +37,13 @@ const envSchema = z
|
|
|
36
37
|
omadaSiteId: z.string().min(1).optional(),
|
|
37
38
|
omadaStrictSsl: createBooleanStringSchema(true),
|
|
38
39
|
omadaTimeout: numericStringSchema,
|
|
40
|
+
// LAN address(es) of the machine this server runs on, comma-separated (its switch port is never reassigned)
|
|
41
|
+
serverAddresses: z.string().optional(),
|
|
42
|
+
// Ruijie / Reyee router (local eWeb API; optional)
|
|
43
|
+
ruijieBaseUrl: z.string().url({ message: 'RUIJIE_BASE_URL must be a valid URL' }).optional(),
|
|
44
|
+
ruijiePassword: z.string().min(1).optional(),
|
|
45
|
+
ruijieStrictSsl: createBooleanStringSchema(true),
|
|
46
|
+
ruijieTimeout: numericStringSchema,
|
|
39
47
|
// Pre-registered REST actions for the invokeAction tool (optional; raw JSON,
|
|
40
48
|
// parsed + validated by parseRestActions after the env parse)
|
|
41
49
|
restActions: z.string().optional(),
|
|
@@ -150,6 +158,7 @@ export function loadConfig(env = process.env) {
|
|
|
150
158
|
haPluginEnabled: env.HA_PLUGIN_ENABLED,
|
|
151
159
|
aiPluginEnabled: env.AI_PLUGIN_ENABLED,
|
|
152
160
|
omadaPluginEnabled: env.OMADA_PLUGIN_ENABLED,
|
|
161
|
+
ruijiePluginEnabled: env.RUIJIE_PLUGIN_ENABLED,
|
|
153
162
|
// Home Assistant Client Configuration
|
|
154
163
|
haUrl: env.HA_URL,
|
|
155
164
|
haToken: env.HA_TOKEN,
|
|
@@ -163,6 +172,12 @@ export function loadConfig(env = process.env) {
|
|
|
163
172
|
omadaSiteId: env.OMADA_SITE_ID,
|
|
164
173
|
omadaStrictSsl: env.OMADA_STRICT_SSL,
|
|
165
174
|
omadaTimeout: env.OMADA_TIMEOUT,
|
|
175
|
+
serverAddresses: env.MCP_SERVER_ADDRESSES,
|
|
176
|
+
// Ruijie / Reyee router
|
|
177
|
+
ruijieBaseUrl: env.RUIJIE_BASE_URL,
|
|
178
|
+
ruijiePassword: env.RUIJIE_PASSWORD,
|
|
179
|
+
ruijieStrictSsl: env.RUIJIE_STRICT_SSL,
|
|
180
|
+
ruijieTimeout: env.RUIJIE_TIMEOUT,
|
|
166
181
|
// Pre-registered REST actions
|
|
167
182
|
restActions: env.MCP_REST_ACTIONS,
|
|
168
183
|
// Chat-face tool slice
|
|
@@ -233,6 +248,7 @@ export function loadConfig(env = process.env) {
|
|
|
233
248
|
haPluginEnabled: parsed.data.haPluginEnabled,
|
|
234
249
|
aiPluginEnabled: parsed.data.aiPluginEnabled,
|
|
235
250
|
omadaPluginEnabled: parsed.data.omadaPluginEnabled,
|
|
251
|
+
ruijiePluginEnabled: parsed.data.ruijiePluginEnabled,
|
|
236
252
|
// Home Assistant Client Configuration (optional)
|
|
237
253
|
baseUrl: parsed.data.haUrl?.replace(/\/$/, ''),
|
|
238
254
|
token: parsed.data.haToken,
|
|
@@ -246,6 +262,12 @@ export function loadConfig(env = process.env) {
|
|
|
246
262
|
siteId: parsed.data.omadaSiteId,
|
|
247
263
|
omadaStrictSsl: parsed.data.omadaStrictSsl,
|
|
248
264
|
requestTimeout: parsed.data.omadaTimeout,
|
|
265
|
+
serverAddresses: (parsed.data.serverAddresses ?? '').split(',').map((a) => a.trim()).filter((a) => a !== ''),
|
|
266
|
+
// Ruijie / Reyee router (optional)
|
|
267
|
+
ruijieBaseUrl: parsed.data.ruijieBaseUrl?.replace(/\/$/, ''),
|
|
268
|
+
ruijiePassword: parsed.data.ruijiePassword,
|
|
269
|
+
ruijieStrictSsl: parsed.data.ruijieStrictSsl,
|
|
270
|
+
ruijieTimeout: parsed.data.ruijieTimeout,
|
|
249
271
|
// Pre-registered REST actions (throws on malformed JSON — config typos fail loudly)
|
|
250
272
|
restActions: parseRestActions(parsed.data.restActions),
|
|
251
273
|
// Chat-face tool slice (throws on unknown category/access — typos fail loudly)
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -27,15 +27,16 @@ async function main() {
|
|
|
27
27
|
});
|
|
28
28
|
// Connect the upstreams. One that doesn't answer yet doesn't stop the server:
|
|
29
29
|
// it is retried in the background (see upstreams.ts).
|
|
30
|
-
const { haClient, omadaClient, aiClient } = await connectUpstreams(config);
|
|
30
|
+
const { haClient, omadaClient, ruijieClient, aiClient } = await connectUpstreams(config);
|
|
31
31
|
// Start server in appropriate mode
|
|
32
32
|
if (config.useHttp) {
|
|
33
|
-
await startHttpServer({ haClient, omadaClient, aiClient, config });
|
|
33
|
+
await startHttpServer({ haClient, omadaClient, ruijieClient, aiClient, config });
|
|
34
34
|
}
|
|
35
35
|
else {
|
|
36
36
|
await startStdioServer({
|
|
37
37
|
haClient,
|
|
38
38
|
omadaClient,
|
|
39
|
+
ruijieClient,
|
|
39
40
|
aiClient,
|
|
40
41
|
restActions: config.restActions,
|
|
41
42
|
toolRegistrationMode: config.toolRegistrationMode,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,kCAAkC;QAClC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,sGAAsG;QACtG,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;QAElC,qEAAqE;QACrE,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAEzD,MAAM,CAAC,IAAI,CAAC,mBAAmB,OAAO,WAAW,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAClC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;YAC7C,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QAEH,8EAA8E;QAC9E,sDAAsD;QACtD,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* Omada adapter for the vendor-neutral network model (src/net/model.ts).
|
|
3
3
|
*
|
|
4
4
|
* 2.4.5 covers networks (LAN networks / VLANs) and Wi-Fi (SSIDs); 2.4.7 rules (gateway
|
|
5
|
-
* ACLs, see omadaRules.ts) and listing groups.
|
|
6
|
-
*
|
|
5
|
+
* ACLs, see omadaRules.ts) and listing groups; 2.4.8 switch ports (the networks a port
|
|
6
|
+
* carries), listing port profiles and the mDNS repeater (see omadaPorts.ts). Creating
|
|
7
|
+
* port profiles, groups and reservations is refused with NetError UNSUPPORTED.
|
|
7
8
|
*
|
|
8
9
|
* Omada specifics handled here:
|
|
9
10
|
* - networks have no "guest" purpose and no isolation flag in the API (guest is per
|
|
@@ -14,11 +15,13 @@
|
|
|
14
15
|
* - Omada lists every SSID again under a pseudo WLAN group "gateway" without detail.
|
|
15
16
|
*/
|
|
16
17
|
import type { OmadaClient } from '../../omadaClient/index.js';
|
|
17
|
-
import { type ApplyResult, type Capabilities, type Change, type Client, type Group, type Network, type NetworkController, type Plan, type ProtectedResources, type Reservation, type Rule, type Wifi } from '../model.js';
|
|
18
|
+
import { type ApplyResult, type Capabilities, type Change, type Client, type Group, type MdnsRepeater, type Network, type NetworkController, type Plan, type Port, type PortProfile, type PortRef, type ProtectedResources, type Reservation, type Rule, type Wifi } from '../model.js';
|
|
18
19
|
export interface OmadaAdapterOptions {
|
|
19
20
|
siteId?: string;
|
|
20
21
|
/** The controller's host name or address (host of OMADA_BASE_URL): its network is protected. */
|
|
21
22
|
controllerHost?: string;
|
|
23
|
+
/** Where this server runs (MCP_SERVER_ADDRESSES): the switch port it is on is never reassigned. */
|
|
24
|
+
serverHosts?: string[];
|
|
22
25
|
/** Resolves a host name to IPv4 addresses (default: the system resolver). */
|
|
23
26
|
resolveHost?: (host: string) => Promise<string[]>;
|
|
24
27
|
}
|
|
@@ -30,9 +33,19 @@ export declare class OmadaNetworkController implements NetworkController {
|
|
|
30
33
|
private readonly executors;
|
|
31
34
|
/** The controller's IPv4 addresses; 'unknown' when its host name can't be resolved (then every routed network is protected). */
|
|
32
35
|
private controllerAddresses;
|
|
36
|
+
/** This server's IPv4 addresses; 'unset' when not configured, 'unknown' when one can't be resolved. */
|
|
37
|
+
private serverAddresses;
|
|
38
|
+
/**
|
|
39
|
+
* The controller's and this server's addresses together: their networks are protected and rules
|
|
40
|
+
* must not cut them off the internet. 'unknown' when either can't be resolved (then every routed
|
|
41
|
+
* network is protected); this server's are left out while not configured.
|
|
42
|
+
*/
|
|
43
|
+
private hostAddresses;
|
|
33
44
|
constructor(client: OmadaClient, options?: OmadaAdapterOptions);
|
|
34
45
|
capabilities(): Promise<Capabilities>;
|
|
35
46
|
private resolveController;
|
|
47
|
+
/** IPv4 addresses of hosts given by address or name; 'unknown' if any can't be resolved. */
|
|
48
|
+
private addressesOf;
|
|
36
49
|
private snapshot;
|
|
37
50
|
private toNetwork;
|
|
38
51
|
private isProtected;
|
|
@@ -47,11 +60,30 @@ export declare class OmadaNetworkController implements NetworkController {
|
|
|
47
60
|
listWifi(): Promise<Wifi[]>;
|
|
48
61
|
listClients(): Promise<Client[]>;
|
|
49
62
|
listReservations(): Promise<Reservation[]>;
|
|
50
|
-
listPortProfiles(): Promise<
|
|
51
|
-
listPorts(): Promise<
|
|
63
|
+
listPortProfiles(): Promise<PortProfile[]>;
|
|
64
|
+
listPorts(device?: PortRef['device']): Promise<Port[]>;
|
|
52
65
|
listRules(): Promise<Rule[]>;
|
|
53
66
|
listGroups(kind?: Group['kind']): Promise<Group[]>;
|
|
54
|
-
getMdnsRepeater(): Promise<
|
|
67
|
+
getMdnsRepeater(): Promise<MdnsRepeater>;
|
|
68
|
+
private portWorld;
|
|
69
|
+
/** For each network, the devices whose ports carry it. */
|
|
70
|
+
private carrying;
|
|
71
|
+
/** A switch by name, or by MAC (as { mac } or as its id). */
|
|
72
|
+
private resolveSwitch;
|
|
73
|
+
/**
|
|
74
|
+
* Why a port can't be reassigned, or undefined. Never: an uplink, the port the controller
|
|
75
|
+
* or this server is on (allowLockout doesn't change that). When where they are can't be
|
|
76
|
+
* told (address unknown or not configured, or inside the site but not seen on it), ports
|
|
77
|
+
* with online devices are left alone; empty ports can still be assigned.
|
|
78
|
+
*/
|
|
79
|
+
private portProtection;
|
|
80
|
+
private toPort;
|
|
81
|
+
/**
|
|
82
|
+
* Gives a port its own networks (untagged + tagged); its other settings keep following its
|
|
83
|
+
* profile. What it carries before and after comes from each network's list of ports.
|
|
84
|
+
*/
|
|
85
|
+
private buildPortAssign;
|
|
86
|
+
private buildMdnsSet;
|
|
55
87
|
plan(change: Change): Promise<Plan>;
|
|
56
88
|
apply(plan: Plan, options?: {
|
|
57
89
|
allowLockout?: boolean;
|
|
@@ -115,9 +147,16 @@ export declare class OmadaNetworkController implements NetworkController {
|
|
|
115
147
|
private buildNetworkCreate;
|
|
116
148
|
private buildNetworkUpdate;
|
|
117
149
|
private buildNetworkDelete;
|
|
118
|
-
/** Everything that still references a network: SSIDs, port profiles, DHCP reservations, ACL rules. */
|
|
150
|
+
/** Everything that still references a network: SSIDs, port profiles, switch ports carrying it untagged, DHCP reservations, ACL rules. */
|
|
119
151
|
private networkUsers;
|
|
120
152
|
private buildWifiCreate;
|
|
153
|
+
/**
|
|
154
|
+
* Which devices broadcast a new SSID (bit 0 = access points, bit 1 = the gateway): the access
|
|
155
|
+
* points when the site has any, the gateway only when it reports a radio (wirelessRouter).
|
|
156
|
+
* Never copied from another SSID: an SSID put on a gateway without Wi-Fi can't be saved in the
|
|
157
|
+
* web UI (live, ER605, 2026-10-21). The gateway's details come with a network's port list.
|
|
158
|
+
*/
|
|
159
|
+
private wifiDeviceType;
|
|
121
160
|
private buildWifiUpdate;
|
|
122
161
|
private buildWifiDelete;
|
|
123
162
|
private macFilterBody;
|