@coffeerunhobby/mcp-ha-connect 2.4.6 → 2.4.8
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 +10 -0
- package/README.md +25 -8
- package/dist/config.d.ts +2 -0
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -1
- package/dist/net/adapters/omada.d.ts +96 -10
- package/dist/net/adapters/omada.js +909 -68
- 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 +141 -0
- package/dist/net/adapters/omadaRules.js +595 -0
- package/dist/net/adapters/omadaRules.js.map +1 -0
- package/dist/net/model.d.ts +38 -11
- package/dist/net/model.js.map +1 -1
- package/dist/omadaClient/accessControl.js +4 -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 +30 -0
- package/dist/omadaClient/networkConfig.js +69 -0
- package/dist/omadaClient/networkConfig.js.map +1 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/net/index.d.ts +148 -1
- package/dist/tools/net/index.js +246 -10
- 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 +1 -0
- package/dist/upstreams.js +2 -1
- package/dist/upstreams.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +6 -6
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* applied, refused if the controller changed meanwhile or if online devices would be
|
|
6
6
|
* cut off without allowLockout.
|
|
7
7
|
*
|
|
8
|
-
* 2.4.5: networks and Wi-Fi.
|
|
8
|
+
* 2.4.5: networks and Wi-Fi. 2.4.7: rules (and listing groups). 2.4.8: clients with their
|
|
9
|
+
* network, switch ports and port profiles, the mDNS repeater.
|
|
9
10
|
*/
|
|
10
11
|
import type { McpServer } from '@modelcontextprotocol/server';
|
|
11
12
|
import { z } from 'zod';
|
|
@@ -29,6 +30,7 @@ export declare const createNetworkSchema: z.ZodObject<{
|
|
|
29
30
|
ipv6: z.ZodOptional<z.ZodBoolean>;
|
|
30
31
|
isolated: z.ZodOptional<z.ZodBoolean>;
|
|
31
32
|
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
33
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
32
34
|
}, z.core.$strip>;
|
|
33
35
|
export declare const updateNetworkSchema: z.ZodObject<{
|
|
34
36
|
network: z.ZodString;
|
|
@@ -45,12 +47,14 @@ export declare const updateNetworkSchema: z.ZodObject<{
|
|
|
45
47
|
ipv6: z.ZodOptional<z.ZodBoolean>;
|
|
46
48
|
isolated: z.ZodOptional<z.ZodBoolean>;
|
|
47
49
|
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
50
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
48
51
|
allowLockout: z.ZodOptional<z.ZodBoolean>;
|
|
49
52
|
}, z.core.$strip>;
|
|
50
53
|
export declare const deleteNetworkSchema: z.ZodObject<{
|
|
51
54
|
network: z.ZodString;
|
|
52
55
|
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
53
56
|
allowLockout: z.ZodOptional<z.ZodBoolean>;
|
|
57
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
54
58
|
}, z.core.$strip>;
|
|
55
59
|
export declare const createWifiSchema: z.ZodObject<{
|
|
56
60
|
name: z.ZodString;
|
|
@@ -82,6 +86,7 @@ export declare const createWifiSchema: z.ZodObject<{
|
|
|
82
86
|
group: z.ZodString;
|
|
83
87
|
}, z.core.$strip>>;
|
|
84
88
|
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
89
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
85
90
|
}, z.core.$strip>;
|
|
86
91
|
export declare const updateWifiSchema: z.ZodObject<{
|
|
87
92
|
wifi: z.ZodString;
|
|
@@ -115,11 +120,153 @@ export declare const updateWifiSchema: z.ZodObject<{
|
|
|
115
120
|
}, z.core.$strip>>>;
|
|
116
121
|
newTemporaryPassword: z.ZodOptional<z.ZodBoolean>;
|
|
117
122
|
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
123
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
118
124
|
allowLockout: z.ZodOptional<z.ZodBoolean>;
|
|
119
125
|
}, z.core.$strip>;
|
|
120
126
|
export declare const deleteWifiSchema: z.ZodObject<{
|
|
121
127
|
wifi: z.ZodString;
|
|
122
128
|
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
123
129
|
allowLockout: z.ZodOptional<z.ZodBoolean>;
|
|
130
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
131
|
+
}, z.core.$strip>;
|
|
132
|
+
export declare const createRuleSchema: z.ZodObject<{
|
|
133
|
+
name: z.ZodString;
|
|
134
|
+
action: z.ZodEnum<{
|
|
135
|
+
block: "block";
|
|
136
|
+
allow: "allow";
|
|
137
|
+
}>;
|
|
138
|
+
from: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
139
|
+
network: z.ZodString;
|
|
140
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
141
|
+
group: z.ZodString;
|
|
142
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
143
|
+
addresses: z.ZodArray<z.ZodString>;
|
|
144
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
145
|
+
internet: z.ZodLiteral<true>;
|
|
146
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
147
|
+
gateway: z.ZodLiteral<true>;
|
|
148
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
149
|
+
device: z.ZodString;
|
|
150
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
151
|
+
wifi: z.ZodString;
|
|
152
|
+
}, z.core.$strict>]>>;
|
|
153
|
+
to: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
154
|
+
network: z.ZodString;
|
|
155
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
156
|
+
group: z.ZodString;
|
|
157
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
158
|
+
addresses: z.ZodArray<z.ZodString>;
|
|
159
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
160
|
+
internet: z.ZodLiteral<true>;
|
|
161
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
162
|
+
gateway: z.ZodLiteral<true>;
|
|
163
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
164
|
+
device: z.ZodString;
|
|
165
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
166
|
+
wifi: z.ZodString;
|
|
167
|
+
}, z.core.$strict>]>>;
|
|
168
|
+
protocol: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
|
|
169
|
+
any: "any";
|
|
170
|
+
tcp: "tcp";
|
|
171
|
+
udp: "udp";
|
|
172
|
+
icmp: "icmp";
|
|
173
|
+
}>, z.ZodObject<{
|
|
174
|
+
tcpUdpPorts: z.ZodString;
|
|
175
|
+
}, z.core.$strict>]>>;
|
|
176
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
177
|
+
position: z.ZodOptional<z.ZodNumber>;
|
|
178
|
+
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
179
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
180
|
+
}, z.core.$strip>;
|
|
181
|
+
export declare const updateRuleSchema: z.ZodObject<{
|
|
182
|
+
rule: z.ZodString;
|
|
183
|
+
name: z.ZodOptional<z.ZodString>;
|
|
184
|
+
action: z.ZodOptional<z.ZodEnum<{
|
|
185
|
+
block: "block";
|
|
186
|
+
allow: "allow";
|
|
187
|
+
}>>;
|
|
188
|
+
from: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
189
|
+
network: z.ZodString;
|
|
190
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
191
|
+
group: z.ZodString;
|
|
192
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
193
|
+
addresses: z.ZodArray<z.ZodString>;
|
|
194
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
195
|
+
internet: z.ZodLiteral<true>;
|
|
196
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
197
|
+
gateway: z.ZodLiteral<true>;
|
|
198
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
199
|
+
device: z.ZodString;
|
|
200
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
201
|
+
wifi: z.ZodString;
|
|
202
|
+
}, z.core.$strict>]>>>;
|
|
203
|
+
to: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
204
|
+
network: z.ZodString;
|
|
205
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
206
|
+
group: z.ZodString;
|
|
207
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
208
|
+
addresses: z.ZodArray<z.ZodString>;
|
|
209
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
210
|
+
internet: z.ZodLiteral<true>;
|
|
211
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
212
|
+
gateway: z.ZodLiteral<true>;
|
|
213
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
214
|
+
device: z.ZodString;
|
|
215
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
216
|
+
wifi: z.ZodString;
|
|
217
|
+
}, z.core.$strict>]>>>;
|
|
218
|
+
protocol: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
|
|
219
|
+
any: "any";
|
|
220
|
+
tcp: "tcp";
|
|
221
|
+
udp: "udp";
|
|
222
|
+
icmp: "icmp";
|
|
223
|
+
}>, z.ZodObject<{
|
|
224
|
+
tcpUdpPorts: z.ZodString;
|
|
225
|
+
}, z.core.$strict>]>>;
|
|
226
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
227
|
+
position: z.ZodOptional<z.ZodNumber>;
|
|
228
|
+
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
229
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
230
|
+
}, z.core.$strip>;
|
|
231
|
+
export declare const deleteRuleSchema: z.ZodObject<{
|
|
232
|
+
rule: z.ZodString;
|
|
233
|
+
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
234
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
235
|
+
}, z.core.$strip>;
|
|
236
|
+
export declare const moveRuleSchema: z.ZodObject<{
|
|
237
|
+
rule: z.ZodString;
|
|
238
|
+
position: z.ZodNumber;
|
|
239
|
+
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
240
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
241
|
+
}, z.core.$strip>;
|
|
242
|
+
export declare const listGroupsSchema: z.ZodObject<{
|
|
243
|
+
kind: z.ZodOptional<z.ZodEnum<{
|
|
244
|
+
mac: "mac";
|
|
245
|
+
address: "address";
|
|
246
|
+
}>>;
|
|
247
|
+
}, z.core.$strip>;
|
|
248
|
+
export declare const listClientsSchema: z.ZodObject<{
|
|
249
|
+
network: z.ZodOptional<z.ZodString>;
|
|
250
|
+
}, z.core.$strip>;
|
|
251
|
+
export declare const listPortsSchema: z.ZodObject<{
|
|
252
|
+
switch: z.ZodOptional<z.ZodString>;
|
|
253
|
+
}, z.core.$strip>;
|
|
254
|
+
export declare const assignPortSchema: z.ZodObject<{
|
|
255
|
+
switch: z.ZodString;
|
|
256
|
+
port: z.ZodNumber;
|
|
257
|
+
network: z.ZodString;
|
|
258
|
+
tagged: z.ZodDefault<z.ZodUnion<readonly [z.ZodEnum<{
|
|
259
|
+
none: "none";
|
|
260
|
+
all: "all";
|
|
261
|
+
}>, z.ZodArray<z.ZodString>]>>;
|
|
262
|
+
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
263
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
264
|
+
allowLockout: z.ZodOptional<z.ZodBoolean>;
|
|
265
|
+
}, z.core.$strip>;
|
|
266
|
+
export declare const setMdnsSchema: z.ZodObject<{
|
|
267
|
+
enabled: z.ZodBoolean;
|
|
268
|
+
networks: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
269
|
+
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
270
|
+
basis: z.ZodOptional<z.ZodString>;
|
|
124
271
|
}, z.core.$strip>;
|
|
125
272
|
export declare function registerNetTools(server: McpServer, controller: NetworkController): number;
|
package/dist/tools/net/index.js
CHANGED
|
@@ -5,13 +5,20 @@
|
|
|
5
5
|
* applied, refused if the controller changed meanwhile or if online devices would be
|
|
6
6
|
* cut off without allowLockout.
|
|
7
7
|
*
|
|
8
|
-
* 2.4.5: networks and Wi-Fi.
|
|
8
|
+
* 2.4.5: networks and Wi-Fi. 2.4.7: rules (and listing groups). 2.4.8: clients with their
|
|
9
|
+
* network, switch ports and port profiles, the mDNS repeater.
|
|
9
10
|
*/
|
|
10
11
|
import { z } from 'zod';
|
|
12
|
+
import { NetError } from '../../net/model.js';
|
|
11
13
|
import { Permission, toToolResult, wrapToolHandler } from '../common.js';
|
|
12
14
|
const ref = (what) => z.string().min(1).describe(`${what} name or id`);
|
|
13
15
|
const dryRun = z.boolean().optional().describe('Only show what would change (steps, effects, devices cut off); write nothing');
|
|
14
|
-
const allowLockout = z.boolean().optional().describe('Apply even if online devices would be disconnected');
|
|
16
|
+
const allowLockout = z.boolean().optional().describe('Apply even if online devices would be disconnected (needs the basis from the dry run)');
|
|
17
|
+
const basis = z
|
|
18
|
+
.string()
|
|
19
|
+
.min(1)
|
|
20
|
+
.optional()
|
|
21
|
+
.describe('The basis a dry run returned: applying is refused if the controller, or the devices the change cuts off, changed since. Required with allowLockout');
|
|
15
22
|
const band = z.enum(['2.4', '5', '6']);
|
|
16
23
|
const dhcp = z.object({
|
|
17
24
|
enabled: z.boolean(),
|
|
@@ -30,6 +37,7 @@ export const createNetworkSchema = z.object({
|
|
|
30
37
|
ipv6: z.boolean().optional().describe('Default off'),
|
|
31
38
|
isolated: z.boolean().optional().describe("Devices can't start connections to other networks"),
|
|
32
39
|
dryRun,
|
|
40
|
+
basis,
|
|
33
41
|
});
|
|
34
42
|
export const updateNetworkSchema = z.object({
|
|
35
43
|
network: ref('Network'),
|
|
@@ -40,9 +48,10 @@ export const updateNetworkSchema = z.object({
|
|
|
40
48
|
ipv6: z.boolean().optional(),
|
|
41
49
|
isolated: z.boolean().optional(),
|
|
42
50
|
dryRun,
|
|
51
|
+
basis,
|
|
43
52
|
allowLockout,
|
|
44
53
|
});
|
|
45
|
-
export const deleteNetworkSchema = z.object({ network: ref('Network'), dryRun, allowLockout });
|
|
54
|
+
export const deleteNetworkSchema = z.object({ network: ref('Network'), dryRun, allowLockout, basis });
|
|
46
55
|
export const createWifiSchema = z.object({
|
|
47
56
|
name: z.string().min(1).max(32),
|
|
48
57
|
network: ref('Network the Wi-Fi puts its devices on'),
|
|
@@ -54,6 +63,7 @@ export const createWifiSchema = z.object({
|
|
|
54
63
|
fastRoaming: z.boolean().optional().describe('802.11r, default off'),
|
|
55
64
|
macFilter: macFilter.optional().describe('Only (allow) or never (deny) the devices in a MAC group'),
|
|
56
65
|
dryRun,
|
|
66
|
+
basis,
|
|
57
67
|
});
|
|
58
68
|
export const updateWifiSchema = z.object({
|
|
59
69
|
wifi: ref('Wi-Fi network'),
|
|
@@ -68,18 +78,97 @@ export const updateWifiSchema = z.object({
|
|
|
68
78
|
macFilter: macFilter.nullable().optional().describe('null switches the MAC filter off'),
|
|
69
79
|
newTemporaryPassword: z.boolean().optional().describe('Replace the password with a random one nobody knows (set the real one in the controller web UI)'),
|
|
70
80
|
dryRun,
|
|
81
|
+
basis,
|
|
71
82
|
allowLockout,
|
|
72
83
|
});
|
|
73
|
-
export const deleteWifiSchema = z.object({ wifi: ref('Wi-Fi network'), dryRun, allowLockout });
|
|
84
|
+
export const deleteWifiSchema = z.object({ wifi: ref('Wi-Fi network'), dryRun, allowLockout, basis });
|
|
85
|
+
const selector = z.union([
|
|
86
|
+
z.object({ network: ref('Network') }).strict(),
|
|
87
|
+
z.object({ group: ref('IP group') }).strict(),
|
|
88
|
+
z.object({ addresses: z.array(z.string().min(1)).min(1).max(64).describe('IPv4 addresses or CIDRs, e.g. ["192.168.0.19"]') }).strict(),
|
|
89
|
+
z.object({ internet: z.literal(true) }).strict(),
|
|
90
|
+
z.object({ gateway: z.literal(true).describe('The router itself') }).strict(),
|
|
91
|
+
z.object({ device: z.string().min(1).describe('Device MAC') }).strict(),
|
|
92
|
+
z.object({ wifi: ref('Wi-Fi network') }).strict(),
|
|
93
|
+
]);
|
|
94
|
+
const selectors = (side) => z.array(selector).min(1).describe(`${side}: one kind per rule, e.g. [{ network: "IoT" }] or [{ addresses: ["192.168.0.19"] }] or [{ internet: true }]`);
|
|
95
|
+
const protocol = z
|
|
96
|
+
.union([z.enum(['any', 'tcp', 'udp', 'icmp']), z.object({ tcpUdpPorts: z.string().min(1).describe('Single ports, e.g. "1883, 8123"; needs addresses as the destination') }).strict()])
|
|
97
|
+
.describe('Default any');
|
|
98
|
+
const position = z.number().int().min(1).describe('1 = checked first; rules are checked in order and the first match decides');
|
|
99
|
+
export const createRuleSchema = z.object({
|
|
100
|
+
name: z.string().min(1).max(496),
|
|
101
|
+
action: z.enum(['allow', 'block']),
|
|
102
|
+
from: selectors('Where traffic starts'),
|
|
103
|
+
to: selectors('Where it goes'),
|
|
104
|
+
protocol: protocol.optional(),
|
|
105
|
+
enabled: z.boolean().optional().describe('Default true'),
|
|
106
|
+
position: position.optional().describe('Default: last'),
|
|
107
|
+
dryRun,
|
|
108
|
+
basis,
|
|
109
|
+
});
|
|
110
|
+
export const updateRuleSchema = z.object({
|
|
111
|
+
rule: ref('Rule'),
|
|
112
|
+
name: z.string().min(1).max(496).optional(),
|
|
113
|
+
action: z.enum(['allow', 'block']).optional(),
|
|
114
|
+
from: selectors('Where traffic starts').optional(),
|
|
115
|
+
to: selectors('Where it goes').optional(),
|
|
116
|
+
protocol: protocol.optional(),
|
|
117
|
+
enabled: z.boolean().optional(),
|
|
118
|
+
position: position.optional(),
|
|
119
|
+
dryRun,
|
|
120
|
+
basis,
|
|
121
|
+
});
|
|
122
|
+
export const deleteRuleSchema = z.object({ rule: ref('Rule'), dryRun, basis });
|
|
123
|
+
export const moveRuleSchema = z.object({ rule: ref('Rule'), position, dryRun, basis });
|
|
124
|
+
export const listGroupsSchema = z.object({ kind: z.enum(['address', 'mac']).optional() });
|
|
125
|
+
export const listClientsSchema = z.object({ network: ref('Only devices on this network').optional() });
|
|
126
|
+
const switchRef = z.string().min(1).describe('Switch name or MAC');
|
|
127
|
+
export const listPortsSchema = z.object({ switch: switchRef.optional().describe('Only this switch (name or MAC); default all') });
|
|
128
|
+
export const assignPortSchema = z.object({
|
|
129
|
+
switch: switchRef,
|
|
130
|
+
port: z.number().int().min(1).describe('Port number'),
|
|
131
|
+
network: ref('Untagged network: what a plain device on the port is on'),
|
|
132
|
+
tagged: z
|
|
133
|
+
.union([z.enum(['all', 'none']), z.array(ref('Network')).min(1)])
|
|
134
|
+
.default('none')
|
|
135
|
+
.describe('Networks the port also carries tagged (for an access point, a switch or a VLAN-aware device): "all", "none" (default) or a list'),
|
|
136
|
+
dryRun,
|
|
137
|
+
basis,
|
|
138
|
+
allowLockout,
|
|
139
|
+
});
|
|
140
|
+
export const setMdnsSchema = z.object({
|
|
141
|
+
enabled: z.boolean(),
|
|
142
|
+
networks: z.array(ref('Network')).min(1).optional().describe('Networks to repeat between (at least two when enabled); default: the current ones'),
|
|
143
|
+
dryRun,
|
|
144
|
+
basis,
|
|
145
|
+
});
|
|
74
146
|
const NO_PASSWORD = ' Passwords are never taken or shown: a new or reset Wi-Fi network gets a random temporary password, and the owner sets the real one in the controller web UI.';
|
|
75
147
|
const CONFIRM = ' Confirm with the user before applying (use dryRun first).';
|
|
76
|
-
/**
|
|
148
|
+
/**
|
|
149
|
+
* Plan, then apply unless dryRun. Dry run and apply are separate calls (the server keeps no
|
|
150
|
+
* state between them), so the dry run hands out its basis and the apply checks it: devices are
|
|
151
|
+
* cut off (allowLockout) only when they are the ones the dry run showed.
|
|
152
|
+
*/
|
|
77
153
|
async function run(controller, change, options) {
|
|
154
|
+
if (options.allowLockout && !options.dryRun && !options.basis) {
|
|
155
|
+
throw new NetError('INVALID', 'allowLockout needs the basis from a dry run of this change, so that only the devices it showed are cut off. Run it with dryRun first.');
|
|
156
|
+
}
|
|
78
157
|
const plan = await controller.plan(change);
|
|
79
158
|
if (options.dryRun)
|
|
80
159
|
return { dryRun: true, ...summary(plan) };
|
|
160
|
+
if (options.basis !== undefined && options.basis !== plan.basis) {
|
|
161
|
+
throw new NetError('CONFLICT', 'This is not the change the dry run was for, or the controller or the devices it cuts off changed since; nothing was written. Run the dry run of this change again.');
|
|
162
|
+
}
|
|
81
163
|
const result = await controller.apply(plan, { allowLockout: options.allowLockout });
|
|
82
|
-
return {
|
|
164
|
+
return {
|
|
165
|
+
applied: true,
|
|
166
|
+
controller: controller.id,
|
|
167
|
+
steps: plan.steps,
|
|
168
|
+
effects: plan.effects,
|
|
169
|
+
...(result.object ? { result: result.object } : {}),
|
|
170
|
+
...(result.warnings?.length ? { warnings: result.warnings } : {}),
|
|
171
|
+
};
|
|
83
172
|
}
|
|
84
173
|
function summary(plan) {
|
|
85
174
|
return {
|
|
@@ -87,7 +176,8 @@ function summary(plan) {
|
|
|
87
176
|
steps: plan.steps,
|
|
88
177
|
effects: plan.effects,
|
|
89
178
|
wouldLockOut: plan.wouldLockOut.map((c) => ({ mac: c.mac, name: c.name })),
|
|
90
|
-
|
|
179
|
+
basis: plan.basis,
|
|
180
|
+
...(plan.wouldLockOut.length ? { note: 'Applying needs allowLockout and this basis: these online devices would be disconnected.' } : {}),
|
|
91
181
|
};
|
|
92
182
|
}
|
|
93
183
|
export function registerNetTools(server, controller) {
|
|
@@ -112,7 +202,7 @@ export function registerNetTools(server, controller) {
|
|
|
112
202
|
},
|
|
113
203
|
}, a)), Permission.CONFIGURE));
|
|
114
204
|
server.registerTool('net_updateNetwork', {
|
|
115
|
-
description: "Change a network: name, VLAN, gateway, DHCP, IPv6 off. Never changes the VLAN or gateway of the
|
|
205
|
+
description: "Change a network: name, VLAN, gateway, DHCP, IPv6 off. Never changes the VLAN or gateway of the networks the controller and this server are on; changes that cut devices off need allowLockout." +
|
|
116
206
|
CONFIRM,
|
|
117
207
|
inputSchema: updateNetworkSchema,
|
|
118
208
|
}, wrapToolHandler('net_updateNetwork', async (a) => toToolResult(await run(controller, {
|
|
@@ -131,7 +221,7 @@ export function registerNetTools(server, controller) {
|
|
|
131
221
|
},
|
|
132
222
|
}, a)), Permission.CONFIGURE));
|
|
133
223
|
server.registerTool('net_deleteNetwork', {
|
|
134
|
-
description: 'Delete a network. Refused while a Wi-Fi network, port profile, DHCP reservation or rule uses it, and for the
|
|
224
|
+
description: 'Delete a network. Refused while a Wi-Fi network, port profile, switch port (untagged), DHCP reservation or rule uses it, and for the networks the controller and this server are on.' + CONFIRM,
|
|
135
225
|
inputSchema: deleteNetworkSchema,
|
|
136
226
|
}, wrapToolHandler('net_deleteNetwork', async (a) => toToolResult(await run(controller, { op: 'delete', kind: 'network', ref: { name: a.network } }, a)), Permission.CONFIGURE));
|
|
137
227
|
server.registerTool('net_createWifi', {
|
|
@@ -180,7 +270,153 @@ export function registerNetTools(server, controller) {
|
|
|
180
270
|
passphrase: a.newTemporaryPassword ? { kind: 'temporary' } : { kind: 'unchanged' },
|
|
181
271
|
}, a)), Permission.CONFIGURE));
|
|
182
272
|
server.registerTool('net_deleteWifi', { description: 'Delete a Wi-Fi network; its connected devices are disconnected (needs allowLockout then).' + CONFIRM, inputSchema: deleteWifiSchema }, wrapToolHandler('net_deleteWifi', async (a) => toToolResult(await run(controller, { op: 'delete', kind: 'wifi', ref: { name: a.wifi } }, a)), Permission.CONFIGURE));
|
|
183
|
-
|
|
273
|
+
registerRuleTools(server, controller);
|
|
274
|
+
registerPortTools(server, controller);
|
|
275
|
+
return 21;
|
|
276
|
+
}
|
|
277
|
+
const RULES = ' Rules are stateful: a block rule stops new connections, while replies to connections started from the other side still pass (so "block IoT → Home" lets Home still reach IoT).';
|
|
278
|
+
function registerRuleTools(server, controller) {
|
|
279
|
+
server.registerTool('net_listRules', { description: 'List the traffic rules in evaluation order (first match decides). Rules marked foreign are shown read-only.', inputSchema: z.object({}) }, wrapToolHandler('net_listRules', async () => toToolResult(await controller.listRules()), Permission.QUERY));
|
|
280
|
+
server.registerTool('net_listGroups', { description: 'List address groups (usable in rules) and MAC groups (Wi-Fi allow/deny lists).', inputSchema: listGroupsSchema }, wrapToolHandler('net_listGroups', async (a) => toToolResult(await controller.listGroups(a.kind)), Permission.QUERY));
|
|
281
|
+
server.registerTool('net_createRule', {
|
|
282
|
+
description: 'Create a traffic rule: allow or block traffic from networks, a group or addresses to networks, a group, addresses (optionally on ports) or the internet.' +
|
|
283
|
+
RULES +
|
|
284
|
+
' Addresses given here become a group the rule owns (removed with it). Refused with the reason: the router itself as a destination, one device by MAC, Wi-Fi as source, schedules, and any change that would cut the controller off the internet.' +
|
|
285
|
+
CONFIRM,
|
|
286
|
+
inputSchema: createRuleSchema,
|
|
287
|
+
}, wrapToolHandler('net_createRule', async (a) => toToolResult(await run(controller, {
|
|
288
|
+
op: 'create',
|
|
289
|
+
kind: 'rule',
|
|
290
|
+
value: {
|
|
291
|
+
name: a.name,
|
|
292
|
+
action: a.action,
|
|
293
|
+
from: toSelectors(a.from),
|
|
294
|
+
to: toSelectors(a.to),
|
|
295
|
+
protocol: (a.protocol ?? 'any'),
|
|
296
|
+
replies: 'allow',
|
|
297
|
+
schedule: { kind: 'always' },
|
|
298
|
+
enabled: a.enabled ?? true,
|
|
299
|
+
...(a.position !== undefined ? { position: a.position } : {}),
|
|
300
|
+
},
|
|
301
|
+
}, a)), Permission.CONFIGURE));
|
|
302
|
+
server.registerTool('net_updateRule', { description: 'Change a rule: name, action, source, destination, protocol/ports, on/off or position.' + RULES + CONFIRM, inputSchema: updateRuleSchema }, wrapToolHandler('net_updateRule', async (a) => toToolResult(await run(controller, {
|
|
303
|
+
op: 'update',
|
|
304
|
+
kind: 'rule',
|
|
305
|
+
value: {
|
|
306
|
+
ref: { name: a.rule },
|
|
307
|
+
set: {
|
|
308
|
+
...(a.name !== undefined ? { name: a.name } : {}),
|
|
309
|
+
...(a.action !== undefined ? { action: a.action } : {}),
|
|
310
|
+
...(a.from !== undefined ? { from: toSelectors(a.from) } : {}),
|
|
311
|
+
...(a.to !== undefined ? { to: toSelectors(a.to) } : {}),
|
|
312
|
+
...(a.protocol !== undefined ? { protocol: a.protocol } : {}),
|
|
313
|
+
...(a.enabled !== undefined ? { enabled: a.enabled } : {}),
|
|
314
|
+
...(a.position !== undefined ? { position: a.position } : {}),
|
|
315
|
+
},
|
|
316
|
+
},
|
|
317
|
+
}, a)), Permission.CONFIGURE));
|
|
318
|
+
server.registerTool('net_deleteRule', { description: 'Delete a rule (and the address group it owns).' + CONFIRM, inputSchema: deleteRuleSchema }, wrapToolHandler('net_deleteRule', async (a) => toToolResult(await run(controller, { op: 'delete', kind: 'rule', ref: { name: a.rule } }, a)), Permission.CONFIGURE));
|
|
319
|
+
server.registerTool('net_moveRule', { description: 'Move a rule to another position (1 = checked first; the first matching rule decides).' + CONFIRM, inputSchema: moveRuleSchema }, wrapToolHandler('net_moveRule', async (a) => toToolResult(await run(controller, { op: 'move', kind: 'rule', ref: { name: a.rule }, position: a.position }, a)), Permission.CONFIGURE));
|
|
320
|
+
}
|
|
321
|
+
function registerPortTools(server, controller) {
|
|
322
|
+
server.registerTool('net_listClients', {
|
|
323
|
+
description: 'List the online devices with the network (and VLAN) each is on, its Wi-Fi network or switch port. Answers "what is on VLAN 2?".',
|
|
324
|
+
inputSchema: listClientsSchema,
|
|
325
|
+
}, wrapToolHandler('net_listClients', async (a) => {
|
|
326
|
+
const networks = await controller.listNetworks();
|
|
327
|
+
const only = a.network === undefined ? undefined : findNetwork(networks, a.network);
|
|
328
|
+
const clients = (await controller.listClients()).filter((c) => !only || (c.network && 'id' in c.network && c.network.id === only.id));
|
|
329
|
+
return toToolResult(clients.map((c) => {
|
|
330
|
+
const network = c.network && 'id' in c.network ? networks.find((n) => n.id === c.network.id) : undefined;
|
|
331
|
+
return {
|
|
332
|
+
mac: c.mac,
|
|
333
|
+
...(c.name ? { name: c.name } : {}),
|
|
334
|
+
...(c.ip ? { ip: c.ip } : {}),
|
|
335
|
+
network: network ? network.name : 'unknown',
|
|
336
|
+
...(network ? { vlan: network.vlan } : {}),
|
|
337
|
+
...(c.wifi ? { wifi: 'name' in c.wifi ? c.wifi.name : c.wifi.id } : {}),
|
|
338
|
+
...(c.port ? { port: c.port } : {}),
|
|
339
|
+
online: c.online,
|
|
340
|
+
};
|
|
341
|
+
}));
|
|
342
|
+
}, Permission.QUERY));
|
|
343
|
+
server.registerTool('net_listPortProfiles', {
|
|
344
|
+
description: 'List switch port profiles and, when a profile sets them, the networks a port following it carries (without networks: ports keep their own, see net_listPorts). Profiles are created in the controller web UI.',
|
|
345
|
+
inputSchema: z.object({}),
|
|
346
|
+
}, wrapToolHandler('net_listPortProfiles', async () => {
|
|
347
|
+
const networks = await controller.listNetworks();
|
|
348
|
+
return toToolResult((await controller.listPortProfiles()).map((p) => ({ ...p, ...(p.networks ? { networks: namedNetworks(p.networks, networks) } : {}) })));
|
|
349
|
+
}, Permission.QUERY));
|
|
350
|
+
server.registerTool('net_listPorts', {
|
|
351
|
+
description: 'List switch ports: the networks each carries (untagged and tagged), its profile, the online devices on it, whether it is an uplink, and why it is protected when it is (uplinks and the ports the controller and this server are on are never changed).',
|
|
352
|
+
inputSchema: listPortsSchema,
|
|
353
|
+
}, wrapToolHandler('net_listPorts', async (a) => {
|
|
354
|
+
const profiles = await controller.listPortProfiles();
|
|
355
|
+
const networks = await controller.listNetworks();
|
|
356
|
+
const ports = await controller.listPorts(a.switch === undefined ? undefined : toSwitch(a.switch));
|
|
357
|
+
return toToolResult(ports.map((p) => ({
|
|
358
|
+
...p,
|
|
359
|
+
...(p.profile ? { profile: named(p.profile, profiles) } : {}),
|
|
360
|
+
...(p.networks ? { networks: namedNetworks(p.networks, networks) } : {}),
|
|
361
|
+
seen: p.seen.map((c) => ({ mac: c.mac, ...(c.name ? { name: c.name } : {}), ...(c.ip ? { ip: c.ip } : {}) })),
|
|
362
|
+
})));
|
|
363
|
+
}, Permission.QUERY));
|
|
364
|
+
server.registerTool('net_assignPort', {
|
|
365
|
+
description: 'Set the networks a switch port carries: its untagged network (e.g. a wired IoT device\'s port on "IoT") and optionally tagged ones; its other settings keep following its profile. Never for uplinks, the ports the controller and this server are on, link aggregation ports and ports with their own settings (net_listPorts says why a port is protected); devices that would lose their network need allowLockout.' +
|
|
366
|
+
CONFIRM,
|
|
367
|
+
inputSchema: assignPortSchema,
|
|
368
|
+
}, wrapToolHandler('net_assignPort', async (a) => toToolResult(await run(controller, { op: 'assign', kind: 'port', port: { device: toSwitch(a.switch), port: a.port }, networks: { native: { name: a.network }, tagged: Array.isArray(a.tagged) ? a.tagged.map((name) => ({ name })) : (a.tagged ?? 'none') } }, a)), Permission.CONFIGURE));
|
|
369
|
+
server.registerTool('net_getMdnsRepeater', { description: 'Whether mDNS (Bonjour) discovery is repeated between networks, and between which.', inputSchema: z.object({}) }, wrapToolHandler('net_getMdnsRepeater', async () => {
|
|
370
|
+
const networks = await controller.listNetworks();
|
|
371
|
+
const repeater = await controller.getMdnsRepeater();
|
|
372
|
+
return toToolResult({ ...repeater, networks: repeater.networks.map((r) => named(r, networks)) });
|
|
373
|
+
}, Permission.QUERY));
|
|
374
|
+
server.registerTool('net_setMdnsRepeater', {
|
|
375
|
+
description: 'Switch the mDNS repeater on or off, or change the networks it repeats between (e.g. Home and IoT, so Home Assistant and phones discover IoT devices). Discovery only: traffic still follows the rules.' +
|
|
376
|
+
CONFIRM,
|
|
377
|
+
inputSchema: setMdnsSchema,
|
|
378
|
+
}, wrapToolHandler('net_setMdnsRepeater', async (a) => toToolResult(await run(controller, { op: 'set', kind: 'mdnsRepeater', enabled: a.enabled, ...(a.networks ? { networks: a.networks.map((name) => ({ name })) } : {}) }, a)), Permission.CONFIGURE));
|
|
379
|
+
}
|
|
380
|
+
/** A network by id or name (case-insensitive). */
|
|
381
|
+
function findNetwork(networks, wanted) {
|
|
382
|
+
const found = networks.find((n) => n.id === wanted) ?? networks.find((n) => n.name.toLowerCase() === wanted.trim().toLowerCase());
|
|
383
|
+
if (!found)
|
|
384
|
+
throw new NetError('NOT_FOUND', `Network '${wanted}' not found. Available: ${networks.map((n) => n.name).join(', ') || '(none)'}`);
|
|
385
|
+
return found;
|
|
386
|
+
}
|
|
387
|
+
/** A reference with the name added, for reading. */
|
|
388
|
+
function named(r, items) {
|
|
389
|
+
const item = 'id' in r ? items.find((i) => i.id === r.id) : undefined;
|
|
390
|
+
return item ? { id: item.id, name: item.name } : r;
|
|
391
|
+
}
|
|
392
|
+
/** A port's or profile's networks with their names. */
|
|
393
|
+
function namedNetworks(carried, networks) {
|
|
394
|
+
return {
|
|
395
|
+
...(carried.native ? { native: named(carried.native, networks) } : {}),
|
|
396
|
+
...(carried.untagged ? { untagged: carried.untagged.map((r) => named(r, networks)) } : {}),
|
|
397
|
+
tagged: Array.isArray(carried.tagged) ? carried.tagged.map((r) => named(r, networks)) : carried.tagged,
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
/** A MAC (12 hex digits, with or without separators) picks the switch by MAC, anything else by name. */
|
|
401
|
+
function toSwitch(value) {
|
|
402
|
+
return /^([0-9a-f]{2}[:-]){5}[0-9a-f]{2}$|^[0-9a-f]{12}$/i.test(value.trim()) ? { mac: value.trim() } : { name: value };
|
|
403
|
+
}
|
|
404
|
+
function toSelectors(list) {
|
|
405
|
+
return list.map((s) => {
|
|
406
|
+
if ('network' in s)
|
|
407
|
+
return { network: { name: s.network } };
|
|
408
|
+
if ('group' in s)
|
|
409
|
+
return { group: { name: s.group } };
|
|
410
|
+
if ('addresses' in s)
|
|
411
|
+
return { addresses: s.addresses };
|
|
412
|
+
if ('internet' in s)
|
|
413
|
+
return { internet: true };
|
|
414
|
+
if ('gateway' in s)
|
|
415
|
+
return { gateway: true };
|
|
416
|
+
if ('device' in s)
|
|
417
|
+
return { device: s.device };
|
|
418
|
+
return { wifi: { name: s.wifi } };
|
|
419
|
+
});
|
|
184
420
|
}
|
|
185
421
|
function toDhcp(d) {
|
|
186
422
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/net/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/net/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { siteInputSchema, toToolResult, wrapToolHandler, Permission } from '../common.js';
|
|
2
2
|
export function registerListClientsTool(server, client) {
|
|
3
3
|
server.registerTool('omada_listClients', {
|
|
4
|
-
description: 'List all connected clients (devices/users) in a site',
|
|
4
|
+
description: 'List all connected clients (devices/users) in a site. Wireless clients report vid 0; net_listClients gives each client\'s network and VLAN.',
|
|
5
5
|
inputSchema: siteInputSchema,
|
|
6
6
|
}, wrapToolHandler('omada_listClients', async ({ siteId }) => toToolResult(await client.listClients(siteId)), Permission.QUERY));
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listClients.js","sourceRoot":"","sources":["../../../src/tools/omada/listClients.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1F,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,MAAmB;IAC1E,MAAM,CAAC,YAAY,CACf,mBAAmB,EACnB;QACI,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"listClients.js","sourceRoot":"","sources":["../../../src/tools/omada/listClients.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1F,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,MAAmB;IAC1E,MAAM,CAAC,YAAY,CACf,mBAAmB,EACnB;QACI,WAAW,EAAE,6IAA6I;QAC1J,WAAW,EAAE,eAAe;KAC/B,EACD,eAAe,CAAC,mBAAmB,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAC/H,CAAC;AACN,CAAC"}
|
package/dist/upstreams.d.ts
CHANGED
|
@@ -42,6 +42,7 @@ export interface UpstreamFactories {
|
|
|
42
42
|
omada(config: EnvironmentConfig): OmadaClient;
|
|
43
43
|
ai(config: EnvironmentConfig): LocalAIClient;
|
|
44
44
|
}
|
|
45
|
+
export declare const defaultFactories: UpstreamFactories;
|
|
45
46
|
/** What an Omada call says once a background check found OMADA_SITE_ID missing (details in the log). */
|
|
46
47
|
export declare const OMADA_SITE_DISABLED_MESSAGE = "Omada tools are disabled: OMADA_SITE_ID is not a site on the controller. The server log lists the valid sites.";
|
|
47
48
|
export declare function connectUpstreams(config: EnvironmentConfig, factories?: UpstreamFactories, backoff?: BackoffOptions): Promise<Upstreams>;
|