@coffeerunhobby/mcp-ha-connect 2.2.1 → 2.4.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 +1 -1
- package/README.md +24 -2
- package/dist/omadaClient/accessControl.d.ts +290 -0
- package/dist/omadaClient/accessControl.js +509 -0
- package/dist/omadaClient/accessControl.js.map +1 -0
- package/dist/omadaClient/client.d.ts +6 -1
- package/dist/omadaClient/client.js +12 -1
- package/dist/omadaClient/client.js.map +1 -1
- package/dist/omadaClient/diagnose.d.ts +68 -0
- package/dist/omadaClient/diagnose.js +164 -0
- package/dist/omadaClient/diagnose.js.map +1 -0
- package/dist/omadaClient/index.d.ts +9 -0
- package/dist/omadaClient/index.js +19 -0
- package/dist/omadaClient/index.js.map +1 -1
- package/dist/omadaClient/macGroups.d.ts +58 -0
- package/dist/omadaClient/macGroups.js +110 -0
- package/dist/omadaClient/macGroups.js.map +1 -0
- package/dist/omadaClient/serialize.d.ts +13 -0
- package/dist/omadaClient/serialize.js +29 -0
- package/dist/omadaClient/serialize.js.map +1 -0
- package/dist/omadaClient/timeRange.d.ts +41 -0
- package/dist/omadaClient/timeRange.js +109 -0
- package/dist/omadaClient/timeRange.js.map +1 -0
- package/dist/tools/infra/actions.d.ts +1 -1
- package/dist/tools/infra/actions.js +1 -1
- package/dist/tools/omada/accessControl.d.ts +151 -0
- package/dist/tools/omada/accessControl.js +158 -0
- package/dist/tools/omada/accessControl.js.map +1 -0
- package/dist/tools/omada/index.js +9 -0
- package/dist/tools/omada/index.js.map +1 -1
- package/dist/tools/omada/macGroups.d.ts +19 -0
- package/dist/tools/omada/macGroups.js +77 -0
- package/dist/tools/omada/macGroups.js.map +1 -0
- package/dist/tools/omada/namespace.js +16 -0
- package/dist/tools/omada/namespace.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +5 -1
- package/.codex/review-rules.md +0 -16
- package/.dockerignore +0 -8
- package/.gitattributes +0 -30
- package/.github/workflows/ci.yml +0 -193
- package/AGENTS.md +0 -389
- package/Dockerfile +0 -50
- package/docker-compose.yml +0 -23
- package/docs/CHANGELOG.md +0 -341
- package/docs/COVERAGE.md +0 -219
- package/docs/QUICK_START.md +0 -240
- package/eslint.config.js +0 -33
- package/n8n/ai-agent-safety-monitor.json +0 -355
- package/openapi.json +0 -1259
- package/scripts/check-version-sync.mjs +0 -69
- package/scripts/generate-jwt.ts +0 -121
- package/src/config.ts +0 -440
- package/src/haClient/automations.ts +0 -261
- package/src/haClient/calendars.ts +0 -94
- package/src/haClient/config.ts +0 -52
- package/src/haClient/devices.ts +0 -653
- package/src/haClient/entities.ts +0 -128
- package/src/haClient/events.ts +0 -689
- package/src/haClient/history.ts +0 -73
- package/src/haClient/index.ts +0 -336
- package/src/haClient/request.ts +0 -142
- package/src/haClient/services.ts +0 -45
- package/src/haClient/states.ts +0 -60
- package/src/haClient/updates.ts +0 -58
- package/src/haClient/wsCommand.ts +0 -44
- package/src/index.ts +0 -164
- package/src/localAI/index.ts +0 -88
- package/src/localAI/prompts.ts +0 -50
- package/src/localAI/providers/base.ts +0 -120
- package/src/localAI/providers/ollama.ts +0 -78
- package/src/localAI/providers/openai.ts +0 -86
- package/src/localAI/types.ts +0 -67
- package/src/omadaClient/auth.ts +0 -178
- package/src/omadaClient/client.ts +0 -337
- package/src/omadaClient/device.ts +0 -118
- package/src/omadaClient/index.ts +0 -310
- package/src/omadaClient/network.ts +0 -284
- package/src/omadaClient/request.ts +0 -365
- package/src/omadaClient/security.ts +0 -51
- package/src/omadaClient/site.ts +0 -344
- package/src/ownerQuestions/service.ts +0 -536
- package/src/permissions/index.ts +0 -143
- package/src/resources/index.ts +0 -213
- package/src/server/auth.ts +0 -175
- package/src/server/chatFace.ts +0 -789
- package/src/server/chatSlice.ts +0 -57
- package/src/server/common.ts +0 -170
- package/src/server/eventSubscription.ts +0 -343
- package/src/server/http.ts +0 -626
- package/src/server/instructions.ts +0 -97
- package/src/server/rateLimiter.ts +0 -227
- package/src/server/stdio.ts +0 -41
- package/src/server/stream.ts +0 -205
- package/src/tools/ai/analyzeSensors.ts +0 -33
- package/src/tools/ai/index.ts +0 -20
- package/src/tools/common.ts +0 -442
- package/src/tools/homeassistant/askOwner.ts +0 -133
- package/src/tools/homeassistant/automationControls.ts +0 -66
- package/src/tools/homeassistant/calendar.ts +0 -97
- package/src/tools/homeassistant/callService.ts +0 -25
- package/src/tools/homeassistant/controlClimate.ts +0 -68
- package/src/tools/homeassistant/controlCover.ts +0 -48
- package/src/tools/homeassistant/controlFan.ts +0 -44
- package/src/tools/homeassistant/controlLight.ts +0 -38
- package/src/tools/homeassistant/controlMediaPlayer.ts +0 -50
- package/src/tools/homeassistant/createAutomation.ts +0 -35
- package/src/tools/homeassistant/deleteAutomation.ts +0 -24
- package/src/tools/homeassistant/entityAction.ts +0 -35
- package/src/tools/homeassistant/entityGuard.ts +0 -28
- package/src/tools/homeassistant/getAllSensors.ts +0 -46
- package/src/tools/homeassistant/getAutomationTrace.ts +0 -30
- package/src/tools/homeassistant/getDomainSummary.ts +0 -29
- package/src/tools/homeassistant/getEntitiesByDomain.ts +0 -56
- package/src/tools/homeassistant/getHistory.ts +0 -24
- package/src/tools/homeassistant/getState.ts +0 -24
- package/src/tools/homeassistant/getStates.ts +0 -46
- package/src/tools/homeassistant/getVersion.ts +0 -21
- package/src/tools/homeassistant/index.ts +0 -121
- package/src/tools/homeassistant/listAutomations.ts +0 -35
- package/src/tools/homeassistant/listEntities.ts +0 -44
- package/src/tools/homeassistant/listPersons.ts +0 -46
- package/src/tools/homeassistant/sceneAndScript.ts +0 -53
- package/src/tools/homeassistant/searchEntities.ts +0 -58
- package/src/tools/homeassistant/sendNotification.ts +0 -179
- package/src/tools/homeassistant/systemTools.ts +0 -52
- package/src/tools/homeassistant/triggerAutomation.ts +0 -24
- package/src/tools/index.ts +0 -78
- package/src/tools/infra/actions.ts +0 -95
- package/src/tools/infra/index.ts +0 -138
- package/src/tools/omada/blockClient.ts +0 -28
- package/src/tools/omada/cyclePoePort.ts +0 -32
- package/src/tools/omada/deleteClient.ts +0 -27
- package/src/tools/omada/disableClientRateLimit.ts +0 -23
- package/src/tools/omada/getClient.ts +0 -14
- package/src/tools/omada/getDevice.ts +0 -14
- package/src/tools/omada/getFirewallSetting.ts +0 -14
- package/src/tools/omada/getInternetInfo.ts +0 -14
- package/src/tools/omada/getLanNetworkList.ts +0 -14
- package/src/tools/omada/getLanProfileList.ts +0 -14
- package/src/tools/omada/getPortForwardingStatus.ts +0 -26
- package/src/tools/omada/getRateLimitProfiles.ts +0 -14
- package/src/tools/omada/getSiteNtpStatus.ts +0 -14
- package/src/tools/omada/getSsidDetail.ts +0 -22
- package/src/tools/omada/getSsidList.ts +0 -21
- package/src/tools/omada/getSwitchStackDetail.ts +0 -14
- package/src/tools/omada/getThreatList.ts +0 -42
- package/src/tools/omada/getWlanGroupList.ts +0 -14
- package/src/tools/omada/graph.ts +0 -187
- package/src/tools/omada/index.ts +0 -153
- package/src/tools/omada/listBlockedClients.ts +0 -17
- package/src/tools/omada/listClients.ts +0 -14
- package/src/tools/omada/listClientsActivity.ts +0 -25
- package/src/tools/omada/listClientsPastConnections.ts +0 -44
- package/src/tools/omada/listDevices.ts +0 -14
- package/src/tools/omada/listDevicesStats.ts +0 -41
- package/src/tools/omada/listMostActiveClients.ts +0 -14
- package/src/tools/omada/listSites.ts +0 -18
- package/src/tools/omada/namespace.ts +0 -1164
- package/src/tools/omada/searchDevices.ts +0 -20
- package/src/tools/omada/setClientRateLimit.ts +0 -26
- package/src/tools/omada/setClientRateLimitProfile.ts +0 -25
- package/src/tools/omada/setSiteNtpServers.ts +0 -36
- package/src/tools/omada/setSsidEnabled.ts +0 -38
- package/src/tools/omada/unblockClient.ts +0 -26
- package/src/tools/types.ts +0 -11
- package/src/tools/utils/pagination-schema.ts +0 -27
- package/src/types/ai/index.ts +0 -11
- package/src/types/ai/types.ts +0 -67
- package/src/types/homeassistant/automations.ts +0 -43
- package/src/types/homeassistant/calendars.ts +0 -26
- package/src/types/homeassistant/config.ts +0 -14
- package/src/types/homeassistant/entities.ts +0 -14
- package/src/types/homeassistant/errors.ts +0 -33
- package/src/types/homeassistant/haConfig.ts +0 -7
- package/src/types/homeassistant/history.ts +0 -13
- package/src/types/homeassistant/index.ts +0 -46
- package/src/types/homeassistant/request.ts +0 -6
- package/src/types/homeassistant/serviceCall.ts +0 -18
- package/src/types/homeassistant/states.ts +0 -58
- package/src/types/homeassistant/updates.ts +0 -28
- package/src/types/index.ts +0 -12
- package/src/types/omada/activeClientInfo.ts +0 -17
- package/src/types/omada/clientActivity.ts +0 -32
- package/src/types/omada/clientBlockStatus.ts +0 -11
- package/src/types/omada/clientPastConnection.ts +0 -82
- package/src/types/omada/index.ts +0 -14
- package/src/types/omada/omadaApiResponse.ts +0 -5
- package/src/types/omada/omadaClientInfo.ts +0 -11
- package/src/types/omada/omadaDeviceInfo.ts +0 -11
- package/src/types/omada/omadaDeviceStats.ts +0 -31
- package/src/types/omada/omadaSiteSummary.ts +0 -5
- package/src/types/omada/oswStackDetail.ts +0 -11
- package/src/types/omada/paginatedResult.ts +0 -6
- package/src/types/omada/rateLimitProfile.ts +0 -58
- package/src/types/omada/threatInfo.ts +0 -38
- package/src/types/omada/tokenResult.ts +0 -6
- package/src/types.ts +0 -2
- package/src/utils/config-validations.ts +0 -68
- package/src/utils/jwt.ts +0 -112
- package/src/utils/logger.ts +0 -121
- package/src/utils/plainText.ts +0 -48
- package/src/utils/redact.ts +0 -59
- package/src/utils/sanitizeError.ts +0 -18
- package/src/utils/tlsDispatcher.ts +0 -69
- package/src/version.ts +0 -5
- package/tests/bdd/automation-creation.spec.ts +0 -214
- package/tests/bdd/automation-management.spec.ts +0 -267
- package/tests/bdd/calendar.spec.ts +0 -190
- package/tests/bdd/configuration.spec.ts +0 -283
- package/tests/bdd/device-control.spec.ts +0 -344
- package/tests/bdd/entity-listing.spec.ts +0 -208
- package/tests/bdd/entity-search.spec.ts +0 -183
- package/tests/bdd/history-retrieval.spec.ts +0 -195
- package/tests/bdd/notifications.spec.ts +0 -238
- package/tests/bdd/service-calls.spec.ts +0 -144
- package/tests/bdd/state-retrieval.spec.ts +0 -204
- package/tests/bench/hotpaths.bench.ts +0 -68
- package/tests/config.test.ts +0 -355
- package/tests/features/automation-creation.feature +0 -36
- package/tests/features/automation-management.feature +0 -54
- package/tests/features/calendar.feature +0 -37
- package/tests/features/configuration.feature +0 -70
- package/tests/features/device-control.feature +0 -100
- package/tests/features/entity-listing.feature +0 -51
- package/tests/features/entity-search.feature +0 -44
- package/tests/features/history-retrieval.feature +0 -38
- package/tests/features/notifications.feature +0 -37
- package/tests/features/service-calls.feature +0 -35
- package/tests/features/state-retrieval.feature +0 -37
- package/tests/fixtures/openapi-default-slice.json +0 -290
- package/tests/haClient/automationTrace.test.ts +0 -59
- package/tests/haClient/automations.test.ts +0 -149
- package/tests/haClient/config.test.ts +0 -117
- package/tests/haClient/entities.test.ts +0 -188
- package/tests/haClient/events.test.ts +0 -455
- package/tests/haClient/eventsTls.test.ts +0 -52
- package/tests/haClient/history.test.ts +0 -228
- package/tests/haClient/index.test.ts +0 -243
- package/tests/haClient/request.test.ts +0 -217
- package/tests/haClient/services.test.ts +0 -120
- package/tests/haClient/states.test.ts +0 -119
- package/tests/haClient/updates.test.ts +0 -193
- package/tests/index.test.ts +0 -160
- package/tests/integration/homeassistant.test.ts +0 -144
- package/tests/integration/omada.test.ts +0 -167
- package/tests/integration/server.test.ts +0 -151
- package/tests/localAI/index.test.ts +0 -177
- package/tests/localAI/ollama.test.ts +0 -187
- package/tests/localAI/openai.test.ts +0 -257
- package/tests/omadaClient/actions.test.ts +0 -161
- package/tests/omadaClient/clientBlocks.test.ts +0 -170
- package/tests/omadaClient/ntp.test.ts +0 -381
- package/tests/omadaClient/site.test.ts +0 -37
- package/tests/ownerQuestions/service.test.ts +0 -499
- package/tests/ownerQuestions/tools.test.ts +0 -186
- package/tests/permissions/index.test.ts +0 -217
- package/tests/resources/index.test.ts +0 -288
- package/tests/scripts/generateJwt.test.ts +0 -44
- package/tests/security/accessControl.test.ts +0 -223
- package/tests/security/authentication.test.ts +0 -117
- package/tests/security/configuration.test.ts +0 -170
- package/tests/security/cryptoTransport.test.ts +0 -172
- package/tests/security/dependencies.test.ts +0 -152
- package/tests/security/injection.test.ts +0 -117
- package/tests/security/insecureDesign.test.ts +0 -121
- package/tests/security/logging.test.ts +0 -131
- package/tests/security/resourceConsumption.test.ts +0 -142
- package/tests/server/auth.test.ts +0 -249
- package/tests/server/chatFace.test.ts +0 -320
- package/tests/server/common.test.ts +0 -84
- package/tests/server/http.test.ts +0 -561
- package/tests/server/instructions.test.ts +0 -152
- package/tests/server/memoizeJsonSchema.test.ts +0 -71
- package/tests/server/stdio.test.ts +0 -99
- package/tests/server/stream.test.ts +0 -285
- package/tests/server/toolVisibility.http.test.ts +0 -111
- package/tests/server/toolVisibility.test.ts +0 -129
- package/tests/tools/ai/analyzeSensors.test.ts +0 -227
- package/tests/tools/common.test.ts +0 -123
- package/tests/tools/homeassistant/handlers.test.ts +0 -872
- package/tests/tools/infra/invokeAction.test.ts +0 -280
- package/tests/tools/omada/graph.test.ts +0 -385
- package/tests/tools/omada/handlers.test.ts +0 -897
- package/tests/tools/omada/namespace.test.ts +0 -483
- package/tests/tools/registry.test.ts +0 -168
- package/tests/utils/config-validations.test.ts +0 -352
- package/tests/utils/jwt.test.ts +0 -115
- package/tests/utils/logger.test.ts +0 -327
- package/tests/utils/redact.test.ts +0 -105
- package/tsconfig.json +0 -24
- package/vitest.config.ts +0 -38
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/omadaClient/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/omadaClient/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One-call diagnosis of why a client (by MAC) cannot get onto the network,
|
|
3
|
+
* across everything Omada's Open API exposes: active and known clients, block
|
|
4
|
+
* state, MAC group membership and the SSID allow/deny lists using those groups,
|
|
5
|
+
* the site MAC filter, IP-MAC binding, DHCP reservations and (for ADMIN callers)
|
|
6
|
+
* the audit log. Read-only.
|
|
7
|
+
*
|
|
8
|
+
* One known blind spot motivates the audit check: a block can survive in a
|
|
9
|
+
* per-device config entry (site backup: clientSetting.clientConfigs, blockEnable
|
|
10
|
+
* true) after the client record is gone. No API endpoint shows it; the trace it
|
|
11
|
+
* leaves is "<MAC> failed to block/unblock/delete" in the audit log.
|
|
12
|
+
*/
|
|
13
|
+
import type { OmadaClient } from './index.js';
|
|
14
|
+
import type { MacGroup } from './macGroups.js';
|
|
15
|
+
export type FindingLevel = 'blocks' | 'warning' | 'info';
|
|
16
|
+
export interface Finding {
|
|
17
|
+
level: FindingLevel;
|
|
18
|
+
message: string;
|
|
19
|
+
}
|
|
20
|
+
export interface SsidFilterView {
|
|
21
|
+
ssid: string;
|
|
22
|
+
ssidId: string;
|
|
23
|
+
wlanId: string;
|
|
24
|
+
macFilterEnabled: boolean;
|
|
25
|
+
policy?: 'allow' | 'deny';
|
|
26
|
+
group?: string;
|
|
27
|
+
groupId?: string;
|
|
28
|
+
containsMac?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface ClientDiagnosis {
|
|
31
|
+
mac: string;
|
|
32
|
+
active?: {
|
|
33
|
+
name?: string;
|
|
34
|
+
ip?: string;
|
|
35
|
+
ssid?: string;
|
|
36
|
+
wireless?: boolean;
|
|
37
|
+
blocked?: boolean;
|
|
38
|
+
};
|
|
39
|
+
known?: {
|
|
40
|
+
name?: string;
|
|
41
|
+
block?: boolean;
|
|
42
|
+
lastSeen?: string;
|
|
43
|
+
};
|
|
44
|
+
macGroups: Array<{
|
|
45
|
+
group: string;
|
|
46
|
+
groupId: string;
|
|
47
|
+
entryName: string;
|
|
48
|
+
}>;
|
|
49
|
+
ssidFilters: SsidFilterView[];
|
|
50
|
+
siteMacFilter?: {
|
|
51
|
+
inAllowList: boolean;
|
|
52
|
+
inDenyList: boolean;
|
|
53
|
+
};
|
|
54
|
+
ipMacBinding: boolean;
|
|
55
|
+
dhcpReservation: boolean;
|
|
56
|
+
auditEntries?: string[];
|
|
57
|
+
unavailable: string[];
|
|
58
|
+
verdict: Finding[];
|
|
59
|
+
}
|
|
60
|
+
export declare function diagnoseClient(client: OmadaClient, clientMac: string, options?: {
|
|
61
|
+
siteId?: string;
|
|
62
|
+
includeAudit?: boolean;
|
|
63
|
+
}): Promise<ClientDiagnosis>;
|
|
64
|
+
/**
|
|
65
|
+
* Each SSID with its MAC filter setting (allow/deny list and the MAC group it
|
|
66
|
+
* uses). With `same`, also whether that group contains a given MAC.
|
|
67
|
+
*/
|
|
68
|
+
export declare function listSsidMacFilters(client: OmadaClient, groups: MacGroup[], siteId?: string, attempt?: <T>(what: string, read: () => Promise<T>) => Promise<T | undefined>, same?: (value: unknown) => boolean): Promise<SsidFilterView[]>;
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One-call diagnosis of why a client (by MAC) cannot get onto the network,
|
|
3
|
+
* across everything Omada's Open API exposes: active and known clients, block
|
|
4
|
+
* state, MAC group membership and the SSID allow/deny lists using those groups,
|
|
5
|
+
* the site MAC filter, IP-MAC binding, DHCP reservations and (for ADMIN callers)
|
|
6
|
+
* the audit log. Read-only.
|
|
7
|
+
*
|
|
8
|
+
* One known blind spot motivates the audit check: a block can survive in a
|
|
9
|
+
* per-device config entry (site backup: clientSetting.clientConfigs, blockEnable
|
|
10
|
+
* true) after the client record is gone. No API endpoint shows it; the trace it
|
|
11
|
+
* leaves is "<MAC> failed to block/unblock/delete" in the audit log.
|
|
12
|
+
*/
|
|
13
|
+
import { formatMac, normalizeMac } from './client.js';
|
|
14
|
+
import { OmadaApiError } from './request.js';
|
|
15
|
+
import { logger } from '../utils/logger.js';
|
|
16
|
+
const ORPHAN_AUDIT = /failed to (block|unblock|delete)/i;
|
|
17
|
+
export async function diagnoseClient(client, clientMac, options = {}) {
|
|
18
|
+
const mac = formatMac(clientMac);
|
|
19
|
+
const hex = normalizeMac(mac);
|
|
20
|
+
const same = (value) => typeof value === 'string' && normalizeMac(value) === hex;
|
|
21
|
+
const { siteId } = options;
|
|
22
|
+
const unavailable = [];
|
|
23
|
+
const attempt = async (what, read) => {
|
|
24
|
+
try {
|
|
25
|
+
return await read();
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
// Only the source and Omada's errorCode, in the response and in the log:
|
|
29
|
+
// the error text can carry internal hostnames, tokens or auth headers.
|
|
30
|
+
const errorCode = error instanceof OmadaApiError ? error.errorCode : undefined;
|
|
31
|
+
logger.warn('omada_diagnoseClient: source unavailable', { source: what, errorCode, errorType: error instanceof Error ? error.name : typeof error });
|
|
32
|
+
const code = errorCode !== undefined ? ` (Omada errorCode ${errorCode})` : '';
|
|
33
|
+
unavailable.push(`${what}: read failed${code}`);
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const rows = (value) => {
|
|
38
|
+
const list = Array.isArray(value) ? value : value?.data;
|
|
39
|
+
return Array.isArray(list) ? list : [];
|
|
40
|
+
};
|
|
41
|
+
const page = (pathTemplate, query) => client.readResource({ pathTemplate, siteId, paginated: true, page: 1, pageSize: 1000, query });
|
|
42
|
+
const result = { mac, macGroups: [], ssidFilters: [], ipMacBinding: false, dhcpReservation: false, unavailable, verdict: [] };
|
|
43
|
+
const active = (await attempt('active clients', () => client.listClients(siteId)))?.find((c) => same(c.mac));
|
|
44
|
+
if (active) {
|
|
45
|
+
result.active = {
|
|
46
|
+
name: active.name,
|
|
47
|
+
ip: active.ip,
|
|
48
|
+
ssid: active.ssid,
|
|
49
|
+
wireless: active.wireless,
|
|
50
|
+
blocked: (active.blocked ?? active.block),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const known = (await attempt('known clients', () => client.listKnownClients(siteId)))?.find((c) => same(c.mac));
|
|
54
|
+
if (known) {
|
|
55
|
+
result.known = {
|
|
56
|
+
name: known.name,
|
|
57
|
+
block: known.block,
|
|
58
|
+
lastSeen: typeof known.lastSeen === 'number' ? new Date(known.lastSeen).toISOString() : undefined,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const groups = (await attempt('MAC groups', () => client.listMacGroups(siteId))) ?? [];
|
|
62
|
+
for (const group of groups) {
|
|
63
|
+
const entry = (group.macAddressList ?? []).find((e) => same(e.macAddress));
|
|
64
|
+
if (entry)
|
|
65
|
+
result.macGroups.push({ group: group.name, groupId: group.groupId, entryName: entry.name });
|
|
66
|
+
}
|
|
67
|
+
result.ssidFilters = await listSsidMacFilters(client, groups, siteId, attempt, same);
|
|
68
|
+
const allow = rows(await attempt('site MAC filter (allow)', () => page('/sites/{siteId}/mac-filters/allow')));
|
|
69
|
+
const deny = rows(await attempt('site MAC filter (deny)', () => page('/sites/{siteId}/mac-filters/deny')));
|
|
70
|
+
const inList = (list) => list.some((r) => Object.values(r).some(same));
|
|
71
|
+
result.siteMacFilter = { inAllowList: inList(allow), inDenyList: inList(deny) };
|
|
72
|
+
result.ipMacBinding = inList(rows(await attempt('IP-MAC binding', () => page('/sites/{siteId}/ip-mac-binds'))));
|
|
73
|
+
result.dhcpReservation = inList(rows(await attempt('DHCP reservations', () => page('/sites/{siteId}/setting/service/dhcp'))));
|
|
74
|
+
if (options.includeAudit) {
|
|
75
|
+
const terms = [mac, ...(result.known?.name ? [result.known.name] : []), ...(result.active?.name ? [result.active.name] : [])];
|
|
76
|
+
const lines = new Map();
|
|
77
|
+
for (const searchKey of [...new Set(terms)]) {
|
|
78
|
+
for (const entry of rows(await attempt(`audit log (${searchKey})`, () => page('/sites/{siteId}/audit-logs', { searchKey })))) {
|
|
79
|
+
if (typeof entry.time === 'number' && typeof entry.content === 'string')
|
|
80
|
+
lines.set(entry.time, entry.content);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
result.auditEntries = [...lines.entries()]
|
|
84
|
+
.sort((a, b) => b[0] - a[0])
|
|
85
|
+
.slice(0, 20)
|
|
86
|
+
.map(([time, content]) => `${new Date(time).toISOString()} ${content}`);
|
|
87
|
+
}
|
|
88
|
+
result.verdict = verdict(result, options.includeAudit === true);
|
|
89
|
+
return result;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Each SSID with its MAC filter setting (allow/deny list and the MAC group it
|
|
93
|
+
* uses). With `same`, also whether that group contains a given MAC.
|
|
94
|
+
*/
|
|
95
|
+
export async function listSsidMacFilters(client, groups, siteId, attempt = async (_what, read) => await read(), same) {
|
|
96
|
+
const rows = (value) => {
|
|
97
|
+
const list = Array.isArray(value) ? value : value?.data;
|
|
98
|
+
return Array.isArray(list) ? list : [];
|
|
99
|
+
};
|
|
100
|
+
const views = [];
|
|
101
|
+
for (const wlan of rows(await attempt('WLAN groups', () => client.getWlanGroupList(siteId)))) {
|
|
102
|
+
const wlanId = String(wlan.wlanId ?? '');
|
|
103
|
+
if (!wlanId)
|
|
104
|
+
continue;
|
|
105
|
+
for (const ssid of rows(await attempt(`SSIDs of WLAN ${wlanId}`, () => client.getSsidList(wlanId, siteId)))) {
|
|
106
|
+
const ssidId = String(ssid.ssidId ?? ssid.id ?? '');
|
|
107
|
+
if (!ssidId)
|
|
108
|
+
continue;
|
|
109
|
+
const detail = (await attempt(`SSID ${String(ssid.name ?? ssidId)}`, () => client.getSsidDetail(wlanId, ssidId, siteId)));
|
|
110
|
+
const filter = detail?.macFilter;
|
|
111
|
+
const view = { ssid: String(detail?.name ?? ssid.name ?? ssidId), ssidId, wlanId, macFilterEnabled: filter?.macFilterEnable === true };
|
|
112
|
+
if (filter?.macFilterEnable) {
|
|
113
|
+
view.policy = filter.policy === 1 ? 'allow' : 'deny';
|
|
114
|
+
const group = groups.find((g) => g.groupId === filter.macFilterId);
|
|
115
|
+
view.group = group?.name ?? filter.macFilterId;
|
|
116
|
+
view.groupId = filter.macFilterId;
|
|
117
|
+
if (same)
|
|
118
|
+
view.containsMac = group ? (group.macAddressList ?? []).some((e) => same(e.macAddress)) : undefined;
|
|
119
|
+
}
|
|
120
|
+
views.push(view);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return views;
|
|
124
|
+
}
|
|
125
|
+
function verdict(d, auditChecked) {
|
|
126
|
+
const findings = [];
|
|
127
|
+
if (d.active?.blocked || d.known?.block) {
|
|
128
|
+
findings.push({ level: 'blocks', message: 'Blocked in Omada. Use omada_unblockClient.' });
|
|
129
|
+
}
|
|
130
|
+
for (const s of d.ssidFilters.filter((f) => f.macFilterEnabled)) {
|
|
131
|
+
if (s.policy === 'allow' && s.containsMac === false) {
|
|
132
|
+
findings.push({ level: 'blocks', message: `Not on the allow list '${s.group}' of SSID ${s.ssid}: it cannot join that SSID. Add it with omada_setMacGroupEntry.` });
|
|
133
|
+
}
|
|
134
|
+
else if (s.policy === 'deny' && s.containsMac === true) {
|
|
135
|
+
findings.push({ level: 'blocks', message: `On the deny list '${s.group}' of SSID ${s.ssid}. Remove it with omada_removeMacGroupEntry.` });
|
|
136
|
+
}
|
|
137
|
+
else if (s.containsMac === undefined) {
|
|
138
|
+
findings.push({ level: 'warning', message: `SSID ${s.ssid} filters by MAC group ${s.group}, which could not be read.` });
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (d.siteMacFilter?.inDenyList) {
|
|
142
|
+
findings.push({ level: 'warning', message: 'Listed in the site MAC filter deny list (applies if the site MAC filter is enabled).' });
|
|
143
|
+
}
|
|
144
|
+
const orphanTrace = (d.auditEntries ?? []).some((line) => ORPHAN_AUDIT.test(line) && line.toUpperCase().includes(d.mac));
|
|
145
|
+
if (!d.active && !d.known && orphanTrace) {
|
|
146
|
+
findings.push({
|
|
147
|
+
level: 'blocks',
|
|
148
|
+
message: 'Orphaned block suspected: Omada has no record of this client, but its audit log shows failed block/unblock/delete by MAC. ' +
|
|
149
|
+
'The block lives in a per-device config entry (site backup: clientSetting.clientConfigs with blockEnable true) that no API exposes. ' +
|
|
150
|
+
'Proven fix: Site Backup, remove that entry from the backup, Site Restore.',
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
if (!d.active && !d.known && !auditChecked) {
|
|
154
|
+
findings.push({ level: 'info', message: 'Omada has no record of this client. The audit log was not checked (needs ADMIN), so an orphaned block cannot be ruled out.' });
|
|
155
|
+
}
|
|
156
|
+
if (findings.length === 0) {
|
|
157
|
+
findings.push({ level: 'info', message: d.active ? 'Connected; nothing in Omada restricts it.' : 'Nothing that Omada exposes restricts this client.' });
|
|
158
|
+
}
|
|
159
|
+
if (d.unavailable.length > 0) {
|
|
160
|
+
findings.push({ level: 'info', message: `Some sources could not be read (${d.unavailable.length}); see "unavailable".` });
|
|
161
|
+
}
|
|
162
|
+
return findings;
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=diagnose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../../src/omadaClient/diagnose.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { ActiveClientInfo, ClientActivity, ClientBlockStatus, ClientPastConnection, ClientRateLimitSetting, GetClientActivityOptions, GetDeviceStatsOptions, GetThreatListOptions, ListClientsPastConnectionsOptions, OmadaClientInfo, OmadaDeviceInfo, OmadaDeviceStats, OmadaSiteSummary, OswStackDetail, PaginatedResult, RateLimitProfile, ThreatInfo } from '../types/index.js';
|
|
2
|
+
import { AccessControlOperations } from './accessControl.js';
|
|
2
3
|
import { type KnownClient } from './client.js';
|
|
3
4
|
import { type SsidEnableResult } from './network.js';
|
|
4
5
|
import { type RequestOptions } from './request.js';
|
|
6
|
+
import { type MacGroup, type MacGroupChange } from './macGroups.js';
|
|
5
7
|
import { type SiteNtpChangeResult } from './site.js';
|
|
6
8
|
export interface OmadaClientOptions {
|
|
7
9
|
baseUrl: string;
|
|
@@ -24,6 +26,9 @@ export declare class OmadaClient {
|
|
|
24
26
|
private readonly clientOps;
|
|
25
27
|
private readonly securityOps;
|
|
26
28
|
private readonly networkOps;
|
|
29
|
+
private readonly macGroupOps;
|
|
30
|
+
/** Time ranges, IP/MAC groups, DHCP reservations, gateway ACLs and the SSID MAC filter. */
|
|
31
|
+
readonly accessControl: AccessControlOperations;
|
|
27
32
|
private readonly omadacId;
|
|
28
33
|
constructor(options: OmadaClientOptions);
|
|
29
34
|
listSites(): Promise<OmadaSiteSummary[]>;
|
|
@@ -49,6 +54,10 @@ export declare class OmadaClient {
|
|
|
49
54
|
disableClientRateLimit(clientMac: string, siteId?: string): Promise<ClientRateLimitSetting>;
|
|
50
55
|
blockClient(clientMac: string, siteId?: string): Promise<ClientBlockStatus>;
|
|
51
56
|
unblockClient(clientMac: string, siteId?: string): Promise<ClientBlockStatus>;
|
|
57
|
+
listKnownClients(siteId?: string): Promise<KnownClient[]>;
|
|
58
|
+
listMacGroups(siteId?: string): Promise<MacGroup[]>;
|
|
59
|
+
setMacGroupEntry(group: string, clientMac: string, name: string, siteId?: string): Promise<MacGroupChange>;
|
|
60
|
+
removeMacGroupEntry(group: string, clientMac: string, siteId?: string): Promise<MacGroupChange>;
|
|
52
61
|
listBlockedClients(siteId?: string): Promise<KnownClient[]>;
|
|
53
62
|
deleteClient(clientMac: string, siteId?: string): Promise<{
|
|
54
63
|
mac: string;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { AccessControlOperations } from './accessControl.js';
|
|
1
2
|
import { AuthManager } from './auth.js';
|
|
2
3
|
import { ClientOperations } from './client.js';
|
|
3
4
|
import { DeviceOperations } from './device.js';
|
|
4
5
|
import { NetworkOperations } from './network.js';
|
|
5
6
|
import { RequestHandler } from './request.js';
|
|
6
7
|
import { SecurityOperations } from './security.js';
|
|
8
|
+
import { MacGroupOperations } from './macGroups.js';
|
|
7
9
|
import { SiteOperations } from './site.js';
|
|
8
10
|
/**
|
|
9
11
|
* Main client for interacting with the TP-Link Omada API.
|
|
@@ -17,6 +19,9 @@ export class OmadaClient {
|
|
|
17
19
|
clientOps;
|
|
18
20
|
securityOps;
|
|
19
21
|
networkOps;
|
|
22
|
+
macGroupOps;
|
|
23
|
+
/** Time ranges, IP/MAC groups, DHCP reservations, gateway ACLs and the SSID MAC filter. */
|
|
24
|
+
accessControl;
|
|
20
25
|
omadacId;
|
|
21
26
|
constructor(options) {
|
|
22
27
|
this.omadacId = options.omadacId;
|
|
@@ -40,6 +45,8 @@ export class OmadaClient {
|
|
|
40
45
|
this.clientOps = new ClientOperations(this.request, this.siteOps, this.buildOmadaPath.bind(this));
|
|
41
46
|
this.securityOps = new SecurityOperations(this.request, this.buildOmadaPath.bind(this));
|
|
42
47
|
this.networkOps = new NetworkOperations(this.request, this.siteOps, this.buildOmadaPath.bind(this));
|
|
48
|
+
this.macGroupOps = new MacGroupOperations(this.request, this.siteOps, this.buildOmadaPath.bind(this));
|
|
49
|
+
this.accessControl = new AccessControlOperations(this.request, this.siteOps, this.buildOmadaPath.bind(this), this.networkOps, this.macGroupOps, this.clientOps);
|
|
43
50
|
}
|
|
44
51
|
// Site operations
|
|
45
52
|
async listSites() {
|
|
@@ -103,6 +110,18 @@ export class OmadaClient {
|
|
|
103
110
|
async unblockClient(clientMac, siteId) {
|
|
104
111
|
return await this.clientOps.unblockClient(clientMac, siteId);
|
|
105
112
|
}
|
|
113
|
+
async listKnownClients(siteId) {
|
|
114
|
+
return await this.clientOps.listKnownClients(siteId);
|
|
115
|
+
}
|
|
116
|
+
async listMacGroups(siteId) {
|
|
117
|
+
return await this.macGroupOps.listMacGroups(siteId);
|
|
118
|
+
}
|
|
119
|
+
async setMacGroupEntry(group, clientMac, name, siteId) {
|
|
120
|
+
return await this.macGroupOps.setMacGroupEntry(group, clientMac, name, siteId);
|
|
121
|
+
}
|
|
122
|
+
async removeMacGroupEntry(group, clientMac, siteId) {
|
|
123
|
+
return await this.macGroupOps.removeMacGroupEntry(group, clientMac, siteId);
|
|
124
|
+
}
|
|
106
125
|
async listBlockedClients(siteId) {
|
|
107
126
|
return await this.clientOps.listBlockedClients(siteId);
|
|
108
127
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/omadaClient/index.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAoB,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAyB,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,cAAc,EAAuB,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,cAAc,EAA4B,MAAM,WAAW,CAAC;AAYrE;;;GAGG;AACH,MAAM,OAAO,WAAW;IACH,IAAI,CAAc;IAElB,OAAO,CAAiB;IAExB,OAAO,CAAiB;IAExB,SAAS,CAAmB;IAE5B,SAAS,CAAmB;IAE5B,WAAW,CAAqB;IAEhC,UAAU,CAAoB;IAE9B,QAAQ,CAAS;IAElC,YAAY,OAA2B;QACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAEjC,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,IAAI,KAAK,CAAC;QAEhD,+BAA+B;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO;YACP,SAAS,EAAE,OAAO,CAAC,SAAS;SAC/B,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAC7B;YACI,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO;YACP,SAAS,EAAE,OAAO,CAAC,SAAS;SAC/B,EACD,IAAI,CAAC,IAAI,CACZ,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAChG,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClG,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClG,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,UAAU,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/omadaClient/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { RequestHandler } from './request.js';
|
|
2
|
+
import type { SiteOperations } from './site.js';
|
|
3
|
+
/** Omada group profile type for MAC groups (0 IP, 1 IP-port, 2 MAC, 3 IPv6, 4 IPv6-port). */
|
|
4
|
+
export declare const MAC_GROUP_TYPE = 2;
|
|
5
|
+
export interface MacGroupEntry {
|
|
6
|
+
ruleId?: number;
|
|
7
|
+
name: string;
|
|
8
|
+
macAddress: string;
|
|
9
|
+
}
|
|
10
|
+
/** A MAC group profile (Settings > Profiles > Groups > MAC Group), usable as an SSID allow or deny list. */
|
|
11
|
+
export interface MacGroup {
|
|
12
|
+
groupId: string;
|
|
13
|
+
name: string;
|
|
14
|
+
type: number;
|
|
15
|
+
count?: number;
|
|
16
|
+
buildIn?: boolean;
|
|
17
|
+
macAddressList?: MacGroupEntry[];
|
|
18
|
+
[field: string]: unknown;
|
|
19
|
+
}
|
|
20
|
+
export interface MacGroupChange {
|
|
21
|
+
group: {
|
|
22
|
+
groupId: string;
|
|
23
|
+
name: string;
|
|
24
|
+
};
|
|
25
|
+
mac: string;
|
|
26
|
+
action: 'added' | 'renamed' | 'unchanged' | 'removed' | 'not-present';
|
|
27
|
+
entries: {
|
|
28
|
+
before: number;
|
|
29
|
+
after: number;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* MAC group profiles. Omada modifies a group as a whole (PATCH replaces the entry
|
|
34
|
+
* list), so adding, renaming or removing one entry is a read-modify-write. The
|
|
35
|
+
* group is re-read just before the write and the change is refused if anything
|
|
36
|
+
* else in it moved in the meantime (an outside writer, e.g. the web UI). Changes
|
|
37
|
+
* made through this server are serialized per site, so two concurrent
|
|
38
|
+
* calls cannot both pass that check and overwrite each other.
|
|
39
|
+
*
|
|
40
|
+
* Accepted limit: Omada offers no conditional update, so an outside edit to the
|
|
41
|
+
* same group landing between that last read and the PATCH is overwritten.
|
|
42
|
+
*/
|
|
43
|
+
export declare class MacGroupOperations {
|
|
44
|
+
private readonly request;
|
|
45
|
+
private readonly site;
|
|
46
|
+
private readonly buildPath;
|
|
47
|
+
constructor(request: RequestHandler, site: SiteOperations, buildPath: (path: string) => string);
|
|
48
|
+
/** OperationId: getGroupProfileListByType (type 2 = MAC group) */
|
|
49
|
+
listMacGroups(siteId?: string): Promise<MacGroup[]>;
|
|
50
|
+
/** Add an entry, or rename it if the MAC is already in the group. */
|
|
51
|
+
setMacGroupEntry(group: string, clientMac: string, name: string, siteId?: string): Promise<MacGroupChange>;
|
|
52
|
+
/** Remove the entry for a MAC from the group. */
|
|
53
|
+
removeMacGroupEntry(group: string, clientMac: string, siteId?: string): Promise<MacGroupChange>;
|
|
54
|
+
/** Find a MAC group by id or (case-insensitive) name. */
|
|
55
|
+
resolveGroup(groups: MacGroup[], group: string): MacGroup;
|
|
56
|
+
private modify;
|
|
57
|
+
private modifyLocked;
|
|
58
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { formatMac, normalizeMac } from './client.js';
|
|
2
|
+
import { accessControlLockKey, serialize } from './serialize.js';
|
|
3
|
+
/** Omada group profile type for MAC groups (0 IP, 1 IP-port, 2 MAC, 3 IPv6, 4 IPv6-port). */
|
|
4
|
+
export const MAC_GROUP_TYPE = 2;
|
|
5
|
+
/**
|
|
6
|
+
* MAC group profiles. Omada modifies a group as a whole (PATCH replaces the entry
|
|
7
|
+
* list), so adding, renaming or removing one entry is a read-modify-write. The
|
|
8
|
+
* group is re-read just before the write and the change is refused if anything
|
|
9
|
+
* else in it moved in the meantime (an outside writer, e.g. the web UI). Changes
|
|
10
|
+
* made through this server are serialized per site, so two concurrent
|
|
11
|
+
* calls cannot both pass that check and overwrite each other.
|
|
12
|
+
*
|
|
13
|
+
* Accepted limit: Omada offers no conditional update, so an outside edit to the
|
|
14
|
+
* same group landing between that last read and the PATCH is overwritten.
|
|
15
|
+
*/
|
|
16
|
+
export class MacGroupOperations {
|
|
17
|
+
request;
|
|
18
|
+
site;
|
|
19
|
+
buildPath;
|
|
20
|
+
constructor(request, site, buildPath) {
|
|
21
|
+
this.request = request;
|
|
22
|
+
this.site = site;
|
|
23
|
+
this.buildPath = buildPath;
|
|
24
|
+
}
|
|
25
|
+
/** OperationId: getGroupProfileListByType (type 2 = MAC group) */
|
|
26
|
+
async listMacGroups(siteId) {
|
|
27
|
+
const resolvedSiteId = this.site.resolveSiteId(siteId);
|
|
28
|
+
const response = await this.request.get(this.buildPath(`/sites/${encodeURIComponent(resolvedSiteId)}/profiles/groups/${MAC_GROUP_TYPE}`));
|
|
29
|
+
return this.request.ensureSuccess(response) ?? [];
|
|
30
|
+
}
|
|
31
|
+
/** Add an entry, or rename it if the MAC is already in the group. */
|
|
32
|
+
async setMacGroupEntry(group, clientMac, name, siteId) {
|
|
33
|
+
const mac = formatMac(clientMac);
|
|
34
|
+
const entryName = name.trim();
|
|
35
|
+
if (entryName.length < 1 || entryName.length > 128) {
|
|
36
|
+
throw new Error('Entry name must be 1 to 128 characters');
|
|
37
|
+
}
|
|
38
|
+
return await this.modify(group, siteId, mac, (entries) => {
|
|
39
|
+
const index = entries.findIndex((e) => normalizeMac(e.macAddress) === normalizeMac(mac));
|
|
40
|
+
if (index < 0)
|
|
41
|
+
return { entries: [...entries, { name: entryName, macAddress: mac }], action: 'added' };
|
|
42
|
+
if (entries[index].name === entryName)
|
|
43
|
+
return { entries, action: 'unchanged' };
|
|
44
|
+
const next = [...entries];
|
|
45
|
+
next[index] = { ...entries[index], name: entryName };
|
|
46
|
+
return { entries: next, action: 'renamed' };
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/** Remove the entry for a MAC from the group. */
|
|
50
|
+
async removeMacGroupEntry(group, clientMac, siteId) {
|
|
51
|
+
const mac = formatMac(clientMac);
|
|
52
|
+
return await this.modify(group, siteId, mac, (entries) => {
|
|
53
|
+
const next = entries.filter((e) => normalizeMac(e.macAddress) !== normalizeMac(mac));
|
|
54
|
+
return next.length === entries.length ? { entries, action: 'not-present' } : { entries: next, action: 'removed' };
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/** Find a MAC group by id or (case-insensitive) name. */
|
|
58
|
+
resolveGroup(groups, group) {
|
|
59
|
+
const byId = groups.find((g) => g.groupId === group);
|
|
60
|
+
if (byId)
|
|
61
|
+
return byId;
|
|
62
|
+
const wanted = group.trim().toLowerCase();
|
|
63
|
+
const byName = groups.filter((g) => g.name.toLowerCase() === wanted);
|
|
64
|
+
if (byName.length === 1)
|
|
65
|
+
return byName[0];
|
|
66
|
+
if (byName.length > 1)
|
|
67
|
+
throw new Error(`Several MAC groups are named '${group}'; use its groupId`);
|
|
68
|
+
throw new Error(`MAC group '${group}' not found. Available: ${groups.map((g) => `${g.name} (${g.groupId})`).join(', ') || '(none)'}`);
|
|
69
|
+
}
|
|
70
|
+
async modify(group, siteId, mac, change) {
|
|
71
|
+
const resolvedSiteId = this.site.resolveSiteId(siteId);
|
|
72
|
+
// Resolve once to find the lock key; everything after runs under the lock.
|
|
73
|
+
const groupId = this.resolveGroup(await this.listMacGroups(resolvedSiteId), group).groupId;
|
|
74
|
+
return await serialize(accessControlLockKey(resolvedSiteId), () => this.modifyLocked(resolvedSiteId, groupId, mac, change));
|
|
75
|
+
}
|
|
76
|
+
async modifyLocked(resolvedSiteId, groupId, mac, change) {
|
|
77
|
+
const target = this.resolveGroup(await this.listMacGroups(resolvedSiteId), groupId);
|
|
78
|
+
if (target.buildIn) {
|
|
79
|
+
throw new Error(`MAC group '${target.name}' is built in and cannot be modified`);
|
|
80
|
+
}
|
|
81
|
+
const before = target.macAddressList ?? [];
|
|
82
|
+
const { entries, action } = change(before);
|
|
83
|
+
const result = {
|
|
84
|
+
group: { groupId: target.groupId, name: target.name },
|
|
85
|
+
mac,
|
|
86
|
+
action,
|
|
87
|
+
entries: { before: before.length, after: entries.length },
|
|
88
|
+
};
|
|
89
|
+
if (action === 'unchanged' || action === 'not-present') {
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
92
|
+
// Re-read right before writing; refuse if the group changed in between.
|
|
93
|
+
const latest = this.resolveGroup(await this.listMacGroups(resolvedSiteId), target.groupId);
|
|
94
|
+
if (latest.name !== target.name || JSON.stringify(entryKey(latest.macAddressList ?? [])) !== JSON.stringify(entryKey(before))) {
|
|
95
|
+
throw new Error(`MAC group '${target.name}' changed while preparing the update; nothing was written. Try again.`);
|
|
96
|
+
}
|
|
97
|
+
const response = await this.request.patch(this.buildPath(`/sites/${encodeURIComponent(resolvedSiteId)}/profiles/groups/${MAC_GROUP_TYPE}/${encodeURIComponent(target.groupId)}`), {
|
|
98
|
+
name: target.name,
|
|
99
|
+
type: MAC_GROUP_TYPE,
|
|
100
|
+
macAddressList: entries.map((e) => ({ name: e.name, macAddress: formatMac(e.macAddress) })),
|
|
101
|
+
});
|
|
102
|
+
this.request.ensureSuccess(response);
|
|
103
|
+
return result;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/** Comparable form of an entry list (order, names and normalized MACs). */
|
|
107
|
+
function entryKey(entries) {
|
|
108
|
+
return entries.map((e) => [normalizeMac(e.macAddress), e.name]);
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=macGroups.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"macGroups.js","sourceRoot":"","sources":["../../src/omadaClient/macGroups.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-key serialization for read-modify-write changes on the controller. Omada
|
|
3
|
+
* replaces whole objects on update, so two changes to the same object made
|
|
4
|
+
* through this server must not interleave.
|
|
5
|
+
*/
|
|
6
|
+
/** Run `task` after every earlier task with the same key has settled. */
|
|
7
|
+
export declare function serialize<T>(key: string, task: () => Promise<T>): Promise<T>;
|
|
8
|
+
/**
|
|
9
|
+
* Lock key for every change to a site's access control objects: MAC group entries,
|
|
10
|
+
* groups, time ranges, DHCP reservations, gateway ACL rules and SSID MAC filters.
|
|
11
|
+
* They reference each other, so one lock per site keeps every check-then-write whole.
|
|
12
|
+
*/
|
|
13
|
+
export declare function accessControlLockKey(siteId: string): string;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-key serialization for read-modify-write changes on the controller. Omada
|
|
3
|
+
* replaces whole objects on update, so two changes to the same object made
|
|
4
|
+
* through this server must not interleave.
|
|
5
|
+
*/
|
|
6
|
+
const locks = new Map();
|
|
7
|
+
/** Run `task` after every earlier task with the same key has settled. */
|
|
8
|
+
export async function serialize(key, task) {
|
|
9
|
+
const previous = locks.get(key) ?? Promise.resolve();
|
|
10
|
+
const run = previous.then(task, task);
|
|
11
|
+
const settled = run.then(() => undefined, () => undefined);
|
|
12
|
+
locks.set(key, settled);
|
|
13
|
+
try {
|
|
14
|
+
return await run;
|
|
15
|
+
}
|
|
16
|
+
finally {
|
|
17
|
+
if (locks.get(key) === settled)
|
|
18
|
+
locks.delete(key);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Lock key for every change to a site's access control objects: MAC group entries,
|
|
23
|
+
* groups, time ranges, DHCP reservations, gateway ACL rules and SSID MAC filters.
|
|
24
|
+
* They reference each other, so one lock per site keeps every check-then-write whole.
|
|
25
|
+
*/
|
|
26
|
+
export function accessControlLockKey(siteId) {
|
|
27
|
+
return `${siteId}/access-control`;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=serialize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/omadaClient/serialize.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAC;AAElD,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,GAAW,EAAE,IAAsB;IAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACrD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CACpB,GAAG,EAAE,CAAC,SAAS,EACf,GAAG,EAAE,CAAC,SAAS,CAClB,CAAC;IACF,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxB,IAAI,CAAC;QACD,OAAO,MAAM,GAAG,CAAC;IACrB,CAAC;YAAS,CAAC;QACP,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,OAAO;YAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc;IAC/C,OAAO,GAAG,MAAM,iBAAiB,CAAC;AACtC,CAAC"}
|