@coffeerunhobby/mcp-ha-connect 2.4.4 → 2.4.6

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.
Files changed (40) hide show
  1. package/README.md +22 -1
  2. package/dist/index.js +4 -96
  3. package/dist/index.js.map +1 -1
  4. package/dist/net/adapters/omada.d.ts +71 -0
  5. package/dist/net/adapters/omada.js +865 -0
  6. package/dist/net/adapters/omada.js.map +1 -0
  7. package/dist/net/model.d.ts +415 -0
  8. package/dist/net/model.js +26 -0
  9. package/dist/net/model.js.map +1 -0
  10. package/dist/net/validate.d.ts +22 -0
  11. package/dist/net/validate.js +87 -0
  12. package/dist/net/validate.js.map +1 -0
  13. package/dist/omadaClient/accessControl.d.ts +7 -0
  14. package/dist/omadaClient/accessControl.js +43 -17
  15. package/dist/omadaClient/accessControl.js.map +1 -1
  16. package/dist/omadaClient/index.d.ts +9 -0
  17. package/dist/omadaClient/index.js +15 -0
  18. package/dist/omadaClient/index.js.map +1 -1
  19. package/dist/omadaClient/networkConfig.d.ts +54 -0
  20. package/dist/omadaClient/networkConfig.js +79 -0
  21. package/dist/omadaClient/networkConfig.js.map +1 -0
  22. package/dist/omadaClient/request.d.ts +6 -1
  23. package/dist/omadaClient/request.js +16 -6
  24. package/dist/omadaClient/request.js.map +1 -1
  25. package/dist/tools/index.js +4 -0
  26. package/dist/tools/index.js.map +1 -1
  27. package/dist/tools/net/index.d.ts +125 -0
  28. package/dist/tools/net/index.js +193 -0
  29. package/dist/tools/net/index.js.map +1 -0
  30. package/dist/tools/omada/accessControl.js +1 -0
  31. package/dist/tools/omada/accessControl.js.map +1 -1
  32. package/dist/upstreams.d.ts +47 -0
  33. package/dist/upstreams.js +194 -0
  34. package/dist/upstreams.js.map +1 -0
  35. package/dist/utils/ipv4.d.ts +14 -0
  36. package/dist/utils/ipv4.js +37 -0
  37. package/dist/utils/ipv4.js.map +1 -0
  38. package/dist/version.d.ts +1 -1
  39. package/dist/version.js +1 -1
  40. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omada.js","sourceRoot":"","sources":["../../../src/net/adapters/omada.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,415 @@
1
+ /**
2
+ * Vendor-neutral network model ("least common multiple" of Omada, UniFi and MikroTik).
3
+ *
4
+ * DESIGN ONLY: nothing imports this yet. It describes what the net_* tools speak and
5
+ * what every vendor adapter (src/net/adapters/<vendor>) must implement.
6
+ *
7
+ * Rules of the model:
8
+ * - It holds every concept any of the three vendors has, so none loses a feature.
9
+ * An adapter either maps a concept to a native object, builds it from several
10
+ * objects ("emulated"), or refuses with NetError UNSUPPORTED. It never silently
11
+ * drops part of a request.
12
+ * - Objects are referred to by Ref (id or name). Ids are opaque, adapter-owned strings.
13
+ * - Every write is a Change that is planned first (dry run), then applied.
14
+ */
15
+ /** An object by id, or by its unique name (case-insensitive). */
16
+ export type Ref = {
17
+ id: string;
18
+ } | {
19
+ name: string;
20
+ };
21
+ /** "AA-BB-CC-DD-EE-FF" (any separator accepted on input). */
22
+ export type Mac = string;
23
+ /** IPv4 address "192.0.2.10" or CIDR "192.0.2.0/24". */
24
+ export type Ipv4 = string;
25
+ /** "HH:MM" in quarter hours; "24:00" = end of day. Adapters may refuse finer steps. */
26
+ export type Clock = string;
27
+ export declare const DAYS: readonly ["mon", "tue", "wed", "thu", "fri", "sat", "sun"];
28
+ export type Day = (typeof DAYS)[number];
29
+ export type Vendor = 'omada' | 'unifi' | 'mikrotik';
30
+ export interface TimeWindow {
31
+ days: Day[];
32
+ from: Clock;
33
+ to: Clock;
34
+ }
35
+ /**
36
+ * When something applies, in the controller's local time zone.
37
+ * - always: no schedule.
38
+ * - during: the windows are the active times (e.g. "block 22:00-24:00").
39
+ * - outside: the windows are the FREE times; the thing applies at every other time
40
+ * (e.g. a curfew given as the allowed play hours).
41
+ * Adapters turn this into their own objects: Omada time-range profiles (at most 7
42
+ * windows each, split as needed), UniFi schedules inside the policy, MikroTik one rule
43
+ * per window (no ranges across midnight).
44
+ */
45
+ export type Schedule = {
46
+ kind: 'always';
47
+ } | {
48
+ kind: 'during';
49
+ windows: TimeWindow[];
50
+ } | {
51
+ kind: 'outside';
52
+ windows: TimeWindow[];
53
+ };
54
+ export interface Network {
55
+ id: string;
56
+ name: string;
57
+ /** normal = routed LAN; guest = vendor guest semantics; vlanOnly = no gateway interface. */
58
+ purpose: 'normal' | 'guest' | 'vlanOnly';
59
+ /** 1-4094; 1 = the untagged default network. */
60
+ vlan: number;
61
+ /** Gateway address with prefix, e.g. "192.0.2.1/24". Absent for vlanOnly. */
62
+ gateway?: Ipv4;
63
+ dhcp?: {
64
+ enabled: boolean;
65
+ range?: {
66
+ from: Ipv4;
67
+ to: Ipv4;
68
+ };
69
+ leaseMinutes?: number;
70
+ dns?: Ipv4[];
71
+ };
72
+ ipv6: boolean;
73
+ /** Devices on this network can't start connections to other networks. */
74
+ isolated: boolean;
75
+ /** The controller, this server or another management device lives here (see ProtectedResources). */
76
+ protected: boolean;
77
+ }
78
+ export interface Reservation {
79
+ mac: Mac;
80
+ ip: Ipv4;
81
+ network: Ref;
82
+ description?: string;
83
+ }
84
+ /** A device as seen right now; used for lock-out checks and "who is on this port/Wi-Fi". */
85
+ export interface Client {
86
+ mac: Mac;
87
+ name?: string;
88
+ ip?: Ipv4;
89
+ network?: Ref;
90
+ wifi?: Ref;
91
+ port?: PortRef;
92
+ online: boolean;
93
+ }
94
+ export type Band = '2.4' | '5' | '6';
95
+ /**
96
+ * Every security mode a controller may report. wpa1, wpa1wpa2 (legacy), enterprise
97
+ * (RADIUS) and ppsk (per-device keys) are read-only in the model: they can be listed and
98
+ * replaced by wpa2/wpa3/open, but not created through the tools.
99
+ */
100
+ export type WifiSecurity = 'open' | 'wpa1' | 'wpa1wpa2' | 'wpa2' | 'wpa3' | 'wpa2wpa3' | 'enterprise' | 'ppsk';
101
+ /**
102
+ * Wi-Fi passwords are never a tool argument and never returned (owner's decision,
103
+ * 2026-10-08: the real password is set in the controller's web UI):
104
+ * - temporary: the adapter sets a random throwaway password that nobody knows, and the
105
+ * plan's effects tell the owner to set the real one in the web UI;
106
+ * - unchanged: keep the current one (updates only).
107
+ */
108
+ export type PassphraseSource = {
109
+ kind: 'temporary';
110
+ } | {
111
+ kind: 'unchanged';
112
+ };
113
+ export interface Wifi {
114
+ id: string;
115
+ name: string;
116
+ network: Ref;
117
+ bands: Band[];
118
+ security: WifiSecurity;
119
+ /** Protected management frames. */
120
+ pmf: 'off' | 'optional' | 'required';
121
+ clientIsolation: boolean;
122
+ hidden: boolean;
123
+ /** 802.11r. */
124
+ fastRoaming: boolean;
125
+ macFilter?: {
126
+ policy: 'allow' | 'deny';
127
+ group: Ref;
128
+ } | null;
129
+ enabled: boolean;
130
+ }
131
+ export interface PortRef {
132
+ /** Switch by id, name or MAC. */
133
+ device: Ref | {
134
+ mac: Mac;
135
+ };
136
+ port: number;
137
+ }
138
+ export interface PortProfile {
139
+ id: string;
140
+ name: string;
141
+ /** Untagged network (the port's PVID). */
142
+ native: Ref;
143
+ tagged: Ref[] | 'all' | 'none';
144
+ isolation: boolean;
145
+ }
146
+ export interface Port extends PortRef {
147
+ profile?: Ref;
148
+ /** What the port carries right now (clients, an access point, the gateway uplink...). */
149
+ seen: Client[];
150
+ uplink: boolean;
151
+ }
152
+ export interface Group {
153
+ id: string;
154
+ name: string;
155
+ kind: 'address' | 'mac';
156
+ entries: Array<{
157
+ value: Ipv4 | Mac;
158
+ name?: string;
159
+ }>;
160
+ }
161
+ /**
162
+ * Who or what a rule matches. Adapters build what their vendor lacks: e.g. Omada has
163
+ * no per-device match, so { device } becomes a reservation + a one-address group.
164
+ */
165
+ export type Selector = {
166
+ network: Ref;
167
+ } | {
168
+ device: Mac;
169
+ } | {
170
+ group: Ref;
171
+ } | {
172
+ addresses: Ipv4[];
173
+ } | {
174
+ wifi: Ref;
175
+ } | {
176
+ internet: true;
177
+ } | {
178
+ gateway: true;
179
+ };
180
+ export interface Rule {
181
+ id: string;
182
+ name: string;
183
+ action: 'allow' | 'block';
184
+ from: Selector[];
185
+ to: Selector[];
186
+ /** Vendors number protocols differently, so the model names them. */
187
+ protocol: 'any' | 'tcp' | 'udp' | 'icmp' | {
188
+ tcpUdpPorts: string;
189
+ };
190
+ /** allow = replies to connections started on the other side still pass (stateful). */
191
+ replies: 'allow' | 'match';
192
+ schedule: Schedule;
193
+ enabled: boolean;
194
+ /** 1 = evaluated first. */
195
+ position: number;
196
+ /**
197
+ * Set on rules found on the controller that this model can't express faithfully
198
+ * (shown read-only, never changed through the model). Rules built by hand that it CAN
199
+ * express (e.g. the Omada curfew: IP-group source, LAN→WAN, time range) are read as
200
+ * ordinary rules, so they can be recreated on another vendor.
201
+ */
202
+ foreign?: {
203
+ reason: string;
204
+ };
205
+ }
206
+ /** native = one vendor object; emulated = the adapter builds and owns several; unsupported = refused. */
207
+ export type Support = 'native' | 'emulated' | 'unsupported';
208
+ export interface Capabilities {
209
+ vendor: Vendor;
210
+ networks: {
211
+ create: Support;
212
+ isolation: Support;
213
+ ipv6: Support;
214
+ guestPurpose: Support;
215
+ };
216
+ wifi: {
217
+ create: Support;
218
+ bands: Band[];
219
+ security: WifiSecurity[];
220
+ pmf: Support;
221
+ fastRoaming: Support;
222
+ bandSteering: 'perWifi' | 'site' | 'unsupported';
223
+ };
224
+ ports: {
225
+ profiles: Support;
226
+ assign: Support;
227
+ };
228
+ rules: {
229
+ between: Support;
230
+ toInternet: Support;
231
+ deviceMatch: Support;
232
+ wifiMatch: Support;
233
+ stateful: Support;
234
+ schedule: Support;
235
+ /** Most windows one vendor schedule object holds (Omada 7); the adapter splits above it. */
236
+ windowsPerObject?: number;
237
+ };
238
+ groups: {
239
+ address: Support;
240
+ mac: Support;
241
+ };
242
+ reservations: Support;
243
+ mdnsRepeater: Support;
244
+ }
245
+ /** Things no change may cut off: where the controller, this server and their uplinks live. */
246
+ export interface ProtectedResources {
247
+ networks: Ref[];
248
+ ports: PortRef[];
249
+ devices: Mac[];
250
+ }
251
+ type CreateOf<T> = Omit<T, 'id' | 'protected' | 'foreign' | 'position'> & {
252
+ position?: number;
253
+ };
254
+ type UpdateOf<T> = {
255
+ ref: Ref;
256
+ set: Partial<CreateOf<T>>;
257
+ };
258
+ export type Change = {
259
+ op: 'create';
260
+ kind: 'network';
261
+ value: CreateOf<Network>;
262
+ } | {
263
+ op: 'update';
264
+ kind: 'network';
265
+ value: UpdateOf<Network>;
266
+ } | {
267
+ op: 'delete';
268
+ kind: 'network';
269
+ ref: Ref;
270
+ } | {
271
+ op: 'create';
272
+ kind: 'wifi';
273
+ value: CreateOf<Wifi>;
274
+ passphrase: PassphraseSource;
275
+ } | {
276
+ op: 'update';
277
+ kind: 'wifi';
278
+ value: UpdateOf<Wifi>;
279
+ passphrase?: PassphraseSource;
280
+ } | {
281
+ op: 'delete';
282
+ kind: 'wifi';
283
+ ref: Ref;
284
+ } | {
285
+ op: 'create';
286
+ kind: 'portProfile';
287
+ value: CreateOf<PortProfile>;
288
+ } | {
289
+ op: 'delete';
290
+ kind: 'portProfile';
291
+ ref: Ref;
292
+ } | {
293
+ op: 'assign';
294
+ kind: 'port';
295
+ port: PortRef;
296
+ profile: Ref;
297
+ } | {
298
+ op: 'create';
299
+ kind: 'rule';
300
+ value: CreateOf<Rule>;
301
+ } | {
302
+ op: 'update';
303
+ kind: 'rule';
304
+ value: UpdateOf<Rule>;
305
+ } | {
306
+ op: 'delete';
307
+ kind: 'rule';
308
+ ref: Ref;
309
+ } | {
310
+ op: 'move';
311
+ kind: 'rule';
312
+ ref: Ref;
313
+ position: number;
314
+ } | {
315
+ op: 'create';
316
+ kind: 'group';
317
+ value: CreateOf<Group>;
318
+ } | {
319
+ op: 'delete';
320
+ kind: 'group';
321
+ ref: Ref;
322
+ } | {
323
+ op: 'set';
324
+ kind: 'reservation';
325
+ value: Reservation;
326
+ } | {
327
+ op: 'delete';
328
+ kind: 'reservation';
329
+ mac: Mac;
330
+ } | {
331
+ op: 'set';
332
+ kind: 'mdnsRepeater';
333
+ enabled: boolean;
334
+ networks: Ref[];
335
+ };
336
+ /** One vendor-level step of a plan, in the order it will run. Never contains secrets. */
337
+ export interface Step {
338
+ action: 'create' | 'update' | 'delete';
339
+ /** Vendor object type, e.g. "omada.timeRange", "unifi.firewallPolicy", "mikrotik.ip/firewall/filter". */
340
+ object: string;
341
+ name: string;
342
+ detail?: string;
343
+ }
344
+ export interface Plan {
345
+ change: Change;
346
+ vendor: Vendor;
347
+ steps: Step[];
348
+ /** Plain-language effects ("node-s55: devices not on KnownWiFi can no longer join"). */
349
+ effects: string[];
350
+ /** Online devices this change would disconnect or block. apply() refuses unless allowLockout. */
351
+ wouldLockOut: Client[];
352
+ /** Opaque fingerprint of everything the plan read; apply() refuses if it changed meanwhile. */
353
+ basis: string;
354
+ }
355
+ export interface ApplyResult {
356
+ applied: true;
357
+ /** The neutral object after the change (redacted), when there is one. */
358
+ object?: Network | Wifi | PortProfile | Rule | Group | Reservation;
359
+ /** Vendor objects created for this change; tagged so delete() removes them all again. */
360
+ owned: Array<{
361
+ object: string;
362
+ id: string;
363
+ }>;
364
+ }
365
+ export type NetErrorCode = 'NOT_FOUND' | 'AMBIGUOUS' | 'EXISTS' | 'IN_USE' | 'PROTECTED' | 'LOCKOUT' | 'UNSUPPORTED' | 'LIMIT' | 'CONFLICT' | 'INVALID';
366
+ export declare class NetError extends Error {
367
+ readonly code: NetErrorCode;
368
+ readonly details: {
369
+ users?: string[];
370
+ clients?: Client[];
371
+ capability?: string;
372
+ };
373
+ constructor(code: NetErrorCode, message: string, details?: {
374
+ users?: string[];
375
+ clients?: Client[];
376
+ capability?: string;
377
+ });
378
+ }
379
+ /**
380
+ * What every vendor adapter implements. The net_* tools are thin: each builds a Change,
381
+ * calls plan(), returns the plan for a dry run, otherwise apply(). Validation that is
382
+ * the same for every vendor (clock format, overlapping windows, VLAN range) lives in
383
+ * the shared model, not in adapters.
384
+ *
385
+ * Ownership: objects an adapter builds for one neutral object (Omada's reservation +
386
+ * IP group + time ranges + split rules for a device curfew) carry a tag in a free-text
387
+ * field (name, description or comment: "[net:<id>]"), so they are found, listed as one
388
+ * thing and removed together without a database.
389
+ */
390
+ export interface NetworkController {
391
+ readonly vendor: Vendor;
392
+ /** Which controller/site this adapter speaks to (several may be configured). */
393
+ readonly id: string;
394
+ capabilities(): Promise<Capabilities>;
395
+ protectedResources(): Promise<ProtectedResources>;
396
+ listNetworks(): Promise<Network[]>;
397
+ listWifi(): Promise<Wifi[]>;
398
+ listPortProfiles(): Promise<PortProfile[]>;
399
+ listPorts(device?: PortRef['device']): Promise<Port[]>;
400
+ listRules(): Promise<Rule[]>;
401
+ listGroups(kind?: Group['kind']): Promise<Group[]>;
402
+ listReservations(): Promise<Reservation[]>;
403
+ listClients(): Promise<Client[]>;
404
+ getMdnsRepeater(): Promise<{
405
+ enabled: boolean;
406
+ networks: Ref[];
407
+ }>;
408
+ /** Read-only: validates, resolves refs, checks protection, in-use and lock-out. Throws NetError. */
409
+ plan(change: Change): Promise<Plan>;
410
+ /** Runs a plan; re-checks `basis` first (CONFLICT) and lock-out (LOCKOUT unless allowLockout). */
411
+ apply(plan: Plan, options?: {
412
+ allowLockout?: boolean;
413
+ }): Promise<ApplyResult>;
414
+ }
415
+ export {};
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Vendor-neutral network model ("least common multiple" of Omada, UniFi and MikroTik).
3
+ *
4
+ * DESIGN ONLY: nothing imports this yet. It describes what the net_* tools speak and
5
+ * what every vendor adapter (src/net/adapters/<vendor>) must implement.
6
+ *
7
+ * Rules of the model:
8
+ * - It holds every concept any of the three vendors has, so none loses a feature.
9
+ * An adapter either maps a concept to a native object, builds it from several
10
+ * objects ("emulated"), or refuses with NetError UNSUPPORTED. It never silently
11
+ * drops part of a request.
12
+ * - Objects are referred to by Ref (id or name). Ids are opaque, adapter-owned strings.
13
+ * - Every write is a Change that is planned first (dry run), then applied.
14
+ */
15
+ export const DAYS = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'];
16
+ export class NetError extends Error {
17
+ code;
18
+ details;
19
+ constructor(code, message, details = {}) {
20
+ super(message);
21
+ this.code = code;
22
+ this.details = details;
23
+ this.name = 'NetError';
24
+ }
25
+ }
26
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/net/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAcH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAwQ/E,MAAM,OAAO,QAAS,SAAQ,KAAK;IAElB;IAEA;IAHb,YACa,IAAkB,EAC3B,OAAe,EACN,UAAyE,EAAE;QAEpF,KAAK,CAAC,OAAO,CAAC,CAAC;QAJN,SAAI,GAAJ,IAAI,CAAc;QAElB,YAAO,GAAP,OAAO,CAAoE;QAGpF,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IAC3B,CAAC;CACJ"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Checks that are the same for every vendor. Adapters call these before their own
3
+ * vendor-specific checks, so a bad request is refused identically on Omada, UniFi and
4
+ * MikroTik.
5
+ */
6
+ import { type Network, type Wifi } from './model.js';
7
+ export declare const MAX_NETWORK_NAME = 128;
8
+ export declare const MAX_WIFI_NAME = 32;
9
+ export declare function checkName(name: string, max: number, what: string): string;
10
+ /** VLAN for a new or changed network: 2-4090 (1 is the untagged default network). */
11
+ export declare function checkVlan(vlan: number): number;
12
+ /** A gateway address with prefix, e.g. "192.168.3.1/24": a host address inside a /8 to /30. */
13
+ export declare function checkGateway(gateway: string): string;
14
+ /** A DHCP range inside the gateway's subnet, not containing the gateway, network or broadcast address. */
15
+ export declare function checkDhcp(gateway: string, dhcp: NonNullable<Network['dhcp']>): NonNullable<Network['dhcp']>;
16
+ /** Refuses a VLAN, name or subnet another network already uses. */
17
+ export declare function checkNetworkUnique(candidate: {
18
+ name?: string;
19
+ vlan?: number;
20
+ gateway?: string;
21
+ }, others: Network[]): void;
22
+ export declare function checkBands(bands: Wifi['bands']): Wifi['bands'];
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Checks that are the same for every vendor. Adapters call these before their own
3
+ * vendor-specific checks, so a bad request is refused identically on Omada, UniFi and
4
+ * MikroTik.
5
+ */
6
+ import { inSubnet, ipToNumber, parseCidr, subnetsOverlap } from '../utils/ipv4.js';
7
+ import { NetError } from './model.js';
8
+ export const MAX_NETWORK_NAME = 128;
9
+ export const MAX_WIFI_NAME = 32;
10
+ export function checkName(name, max, what) {
11
+ const value = name.trim();
12
+ if (value.length < 1 || value.length > max)
13
+ throw new NetError('INVALID', `${what} name must be 1 to ${max} characters`);
14
+ return value;
15
+ }
16
+ /** VLAN for a new or changed network: 2-4090 (1 is the untagged default network). */
17
+ export function checkVlan(vlan) {
18
+ if (!Number.isInteger(vlan) || vlan < 2 || vlan > 4090)
19
+ throw new NetError('INVALID', `VLAN ${vlan} must be a whole number from 2 to 4090`);
20
+ return vlan;
21
+ }
22
+ /** A gateway address with prefix, e.g. "192.168.3.1/24": a host address inside a /8 to /30. */
23
+ export function checkGateway(gateway) {
24
+ let parsed;
25
+ try {
26
+ parsed = parseCidr(gateway);
27
+ }
28
+ catch (error) {
29
+ throw new NetError('INVALID', `Gateway '${gateway}': ${error.message}. Use the form 192.168.3.1/24`);
30
+ }
31
+ if (!gateway.includes('/'))
32
+ throw new NetError('INVALID', `Gateway '${gateway}' needs a prefix, e.g. 192.168.3.1/24`);
33
+ if (parsed.prefix < 8 || parsed.prefix > 30)
34
+ throw new NetError('INVALID', `Gateway '${gateway}': the prefix must be /8 to /30`);
35
+ const address = ipToNumber(parsed.ip);
36
+ if (address === parsed.network || address === parsed.broadcast) {
37
+ throw new NetError('INVALID', `Gateway '${gateway}' is the network or broadcast address; use a host address such as .1`);
38
+ }
39
+ return gateway.trim();
40
+ }
41
+ /** A DHCP range inside the gateway's subnet, not containing the gateway, network or broadcast address. */
42
+ export function checkDhcp(gateway, dhcp) {
43
+ if (!dhcp.enabled)
44
+ return { enabled: false };
45
+ if (!dhcp.range)
46
+ throw new NetError('INVALID', 'DHCP is on, so give a range: { from, to }');
47
+ const { network, broadcast, ip } = parseCidr(gateway);
48
+ const from = ipToNumber(dhcp.range.from);
49
+ const to = ipToNumber(dhcp.range.to);
50
+ if (from > to)
51
+ throw new NetError('INVALID', `DHCP range ${dhcp.range.from}-${dhcp.range.to} ends before it starts`);
52
+ if (!inSubnet(from, gateway) || !inSubnet(to, gateway))
53
+ throw new NetError('INVALID', `DHCP range ${dhcp.range.from}-${dhcp.range.to} is outside ${gateway}`);
54
+ if (from <= network || to >= broadcast)
55
+ throw new NetError('INVALID', 'The DHCP range must not include the network or broadcast address');
56
+ const gw = ipToNumber(ip);
57
+ if (gw >= from && gw <= to)
58
+ throw new NetError('INVALID', `The DHCP range must not include the gateway ${ip}`);
59
+ if (dhcp.leaseMinutes !== undefined && (!Number.isInteger(dhcp.leaseMinutes) || dhcp.leaseMinutes < 2 || dhcp.leaseMinutes > 10080)) {
60
+ throw new NetError('INVALID', 'The DHCP lease must be 2 to 10080 minutes');
61
+ }
62
+ for (const dns of dhcp.dns ?? [])
63
+ ipToNumber(dns);
64
+ if ((dhcp.dns ?? []).length > 2)
65
+ throw new NetError('INVALID', 'At most two DNS servers');
66
+ return dhcp;
67
+ }
68
+ /** Refuses a VLAN, name or subnet another network already uses. */
69
+ export function checkNetworkUnique(candidate, others) {
70
+ for (const other of others) {
71
+ if (candidate.name && other.name.toLowerCase() === candidate.name.toLowerCase()) {
72
+ throw new NetError('EXISTS', `A network named '${other.name}' already exists`);
73
+ }
74
+ if (candidate.vlan !== undefined && other.vlan === candidate.vlan) {
75
+ throw new NetError('EXISTS', `VLAN ${candidate.vlan} is already used by network '${other.name}'`);
76
+ }
77
+ if (candidate.gateway && other.gateway && subnetsOverlap(candidate.gateway, other.gateway)) {
78
+ throw new NetError('EXISTS', `${candidate.gateway} overlaps network '${other.name}' (${other.gateway})`);
79
+ }
80
+ }
81
+ }
82
+ export function checkBands(bands) {
83
+ if (bands.length === 0)
84
+ throw new NetError('INVALID', 'Give at least one band (2.4, 5 or 6)');
85
+ return [...new Set(bands)];
86
+ }
87
+ //# sourceMappingURL=validate.js.map