matterbridge 3.4.6-dev-20260102-b04c53d → 3.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.
- package/CHANGELOG.md +1 -1
- package/dist/broadcastServer.d.ts +144 -0
- package/dist/broadcastServer.d.ts.map +1 -0
- package/dist/broadcastServer.js +117 -0
- package/dist/broadcastServer.js.map +1 -0
- package/dist/broadcastServerTypes.d.ts +841 -0
- package/dist/broadcastServerTypes.d.ts.map +1 -0
- package/dist/broadcastServerTypes.js +24 -0
- package/dist/broadcastServerTypes.js.map +1 -0
- package/dist/cli.d.ts +30 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +97 -1
- package/dist/cli.js.map +1 -0
- package/dist/cliEmitter.d.ts +50 -0
- package/dist/cliEmitter.d.ts.map +1 -0
- package/dist/cliEmitter.js +37 -0
- package/dist/cliEmitter.js.map +1 -0
- package/dist/cliHistory.d.ts +48 -0
- package/dist/cliHistory.d.ts.map +1 -0
- package/dist/cliHistory.js +38 -0
- package/dist/cliHistory.js.map +1 -0
- package/dist/clusters/export.d.ts +2 -0
- package/dist/clusters/export.d.ts.map +1 -0
- package/dist/clusters/export.js +2 -0
- package/dist/clusters/export.js.map +1 -0
- package/dist/deviceManager.d.ts +135 -0
- package/dist/deviceManager.d.ts.map +1 -0
- package/dist/deviceManager.js +113 -1
- package/dist/deviceManager.js.map +1 -0
- package/dist/devices/airConditioner.d.ts +98 -0
- package/dist/devices/airConditioner.d.ts.map +1 -0
- package/dist/devices/airConditioner.js +57 -0
- package/dist/devices/airConditioner.js.map +1 -0
- package/dist/devices/batteryStorage.d.ts +48 -0
- package/dist/devices/batteryStorage.d.ts.map +1 -0
- package/dist/devices/batteryStorage.js +48 -1
- package/dist/devices/batteryStorage.js.map +1 -0
- package/dist/devices/cooktop.d.ts +61 -0
- package/dist/devices/cooktop.d.ts.map +1 -0
- package/dist/devices/cooktop.js +56 -0
- package/dist/devices/cooktop.js.map +1 -0
- package/dist/devices/dishwasher.d.ts +71 -0
- package/dist/devices/dishwasher.d.ts.map +1 -0
- package/dist/devices/dishwasher.js +57 -0
- package/dist/devices/dishwasher.js.map +1 -0
- package/dist/devices/evse.d.ts +76 -0
- package/dist/devices/evse.d.ts.map +1 -0
- package/dist/devices/evse.js +74 -10
- package/dist/devices/evse.js.map +1 -0
- package/dist/devices/export.d.ts +17 -0
- package/dist/devices/export.d.ts.map +1 -0
- package/dist/devices/export.js +5 -0
- package/dist/devices/export.js.map +1 -0
- package/dist/devices/extractorHood.d.ts +46 -0
- package/dist/devices/extractorHood.d.ts.map +1 -0
- package/dist/devices/extractorHood.js +43 -0
- package/dist/devices/extractorHood.js.map +1 -0
- package/dist/devices/heatPump.d.ts +47 -0
- package/dist/devices/heatPump.d.ts.map +1 -0
- package/dist/devices/heatPump.js +50 -2
- package/dist/devices/heatPump.js.map +1 -0
- package/dist/devices/laundryDryer.d.ts +67 -0
- package/dist/devices/laundryDryer.d.ts.map +1 -0
- package/dist/devices/laundryDryer.js +62 -3
- package/dist/devices/laundryDryer.js.map +1 -0
- package/dist/devices/laundryWasher.d.ts +81 -0
- package/dist/devices/laundryWasher.d.ts.map +1 -0
- package/dist/devices/laundryWasher.js +70 -4
- package/dist/devices/laundryWasher.js.map +1 -0
- package/dist/devices/microwaveOven.d.ts +168 -0
- package/dist/devices/microwaveOven.d.ts.map +1 -0
- package/dist/devices/microwaveOven.js +88 -5
- package/dist/devices/microwaveOven.js.map +1 -0
- package/dist/devices/oven.d.ts +105 -0
- package/dist/devices/oven.d.ts.map +1 -0
- package/dist/devices/oven.js +85 -0
- package/dist/devices/oven.js.map +1 -0
- package/dist/devices/refrigerator.d.ts +118 -0
- package/dist/devices/refrigerator.d.ts.map +1 -0
- package/dist/devices/refrigerator.js +102 -0
- package/dist/devices/refrigerator.js.map +1 -0
- package/dist/devices/roboticVacuumCleaner.d.ts +112 -0
- package/dist/devices/roboticVacuumCleaner.d.ts.map +1 -0
- package/dist/devices/roboticVacuumCleaner.js +100 -9
- package/dist/devices/roboticVacuumCleaner.js.map +1 -0
- package/dist/devices/solarPower.d.ts +40 -0
- package/dist/devices/solarPower.d.ts.map +1 -0
- package/dist/devices/solarPower.js +38 -0
- package/dist/devices/solarPower.js.map +1 -0
- package/dist/devices/speaker.d.ts +87 -0
- package/dist/devices/speaker.d.ts.map +1 -0
- package/dist/devices/speaker.js +84 -0
- package/dist/devices/speaker.js.map +1 -0
- package/dist/devices/temperatureControl.d.ts +166 -0
- package/dist/devices/temperatureControl.d.ts.map +1 -0
- package/dist/devices/temperatureControl.js +24 -3
- package/dist/devices/temperatureControl.js.map +1 -0
- package/dist/devices/waterHeater.d.ts +111 -0
- package/dist/devices/waterHeater.d.ts.map +1 -0
- package/dist/devices/waterHeater.js +82 -2
- package/dist/devices/waterHeater.js.map +1 -0
- package/dist/dgram/coap.d.ts +205 -0
- package/dist/dgram/coap.d.ts.map +1 -0
- package/dist/dgram/coap.js +126 -13
- package/dist/dgram/coap.js.map +1 -0
- package/dist/dgram/dgram.d.ts +143 -0
- package/dist/dgram/dgram.d.ts.map +1 -0
- package/dist/dgram/dgram.js +114 -2
- package/dist/dgram/dgram.js.map +1 -0
- package/dist/dgram/mb_coap.d.ts +24 -0
- package/dist/dgram/mb_coap.d.ts.map +1 -0
- package/dist/dgram/mb_coap.js +41 -3
- package/dist/dgram/mb_coap.js.map +1 -0
- package/dist/dgram/mb_mdns.d.ts +24 -0
- package/dist/dgram/mb_mdns.d.ts.map +1 -0
- package/dist/dgram/mb_mdns.js +77 -23
- package/dist/dgram/mb_mdns.js.map +1 -0
- package/dist/dgram/mdns.d.ts +371 -0
- package/dist/dgram/mdns.d.ts.map +1 -0
- package/dist/dgram/mdns.js +371 -139
- package/dist/dgram/mdns.js.map +1 -0
- package/dist/dgram/mdnsReflectorClient.d.ts +88 -0
- package/dist/dgram/mdnsReflectorClient.d.ts.map +1 -0
- package/dist/dgram/mdnsReflectorClient.js +71 -5
- package/dist/dgram/mdnsReflectorClient.js.map +1 -0
- package/dist/dgram/mdnsReflectorServer.d.ts +78 -0
- package/dist/dgram/mdnsReflectorServer.d.ts.map +1 -0
- package/dist/dgram/mdnsReflectorServer.js +73 -8
- package/dist/dgram/mdnsReflectorServer.js.map +1 -0
- package/dist/dgram/mdnsReflectorTypes.d.ts +28 -0
- package/dist/dgram/mdnsReflectorTypes.d.ts.map +1 -0
- package/dist/dgram/mdnsReflectorTypes.js +24 -1
- package/dist/dgram/mdnsReflectorTypes.js.map +1 -0
- package/dist/dgram/multicast.d.ts +67 -0
- package/dist/dgram/multicast.d.ts.map +1 -0
- package/dist/dgram/multicast.js +62 -1
- package/dist/dgram/multicast.js.map +1 -0
- package/dist/dgram/unicast.d.ts +64 -0
- package/dist/dgram/unicast.d.ts.map +1 -0
- package/dist/dgram/unicast.js +60 -0
- package/dist/dgram/unicast.js.map +1 -0
- package/dist/frontend.d.ts +245 -0
- package/dist/frontend.d.ts.map +1 -0
- package/dist/frontend.js +485 -38
- package/dist/frontend.js.map +1 -0
- package/dist/frontendTypes.d.ts +529 -0
- package/dist/frontendTypes.d.ts.map +1 -0
- package/dist/frontendTypes.js +45 -0
- package/dist/frontendTypes.js.map +1 -0
- package/dist/helpers.d.ts +48 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +53 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/jestutils/export.d.ts +2 -0
- package/dist/jestutils/export.d.ts.map +1 -0
- package/dist/jestutils/export.js +1 -0
- package/dist/jestutils/export.js.map +1 -0
- package/dist/jestutils/jestHelpers.d.ts +345 -0
- package/dist/jestutils/jestHelpers.d.ts.map +1 -0
- package/dist/jestutils/jestHelpers.js +371 -14
- package/dist/jestutils/jestHelpers.js.map +1 -0
- package/dist/logger/export.d.ts +2 -0
- package/dist/logger/export.d.ts.map +1 -0
- package/dist/logger/export.js +1 -0
- package/dist/logger/export.js.map +1 -0
- package/dist/matter/behaviors.d.ts +2 -0
- package/dist/matter/behaviors.d.ts.map +1 -0
- package/dist/matter/behaviors.js +2 -0
- package/dist/matter/behaviors.js.map +1 -0
- package/dist/matter/clusters.d.ts +2 -0
- package/dist/matter/clusters.d.ts.map +1 -0
- package/dist/matter/clusters.js +2 -0
- package/dist/matter/clusters.js.map +1 -0
- package/dist/matter/devices.d.ts +2 -0
- package/dist/matter/devices.d.ts.map +1 -0
- package/dist/matter/devices.js +2 -0
- package/dist/matter/devices.js.map +1 -0
- package/dist/matter/endpoints.d.ts +2 -0
- package/dist/matter/endpoints.d.ts.map +1 -0
- package/dist/matter/endpoints.js +2 -0
- package/dist/matter/endpoints.js.map +1 -0
- package/dist/matter/export.d.ts +5 -0
- package/dist/matter/export.d.ts.map +1 -0
- package/dist/matter/export.js +3 -0
- package/dist/matter/export.js.map +1 -0
- package/dist/matter/types.d.ts +3 -0
- package/dist/matter/types.d.ts.map +1 -0
- package/dist/matter/types.js +3 -0
- package/dist/matter/types.js.map +1 -0
- package/dist/matterNode.d.ts +342 -0
- package/dist/matterNode.d.ts.map +1 -0
- package/dist/matterNode.js +369 -8
- package/dist/matterNode.js.map +1 -0
- package/dist/matterbridge.d.ts +505 -0
- package/dist/matterbridge.d.ts.map +1 -0
- package/dist/matterbridge.js +824 -46
- package/dist/matterbridge.js.map +1 -0
- package/dist/matterbridgeAccessoryPlatform.d.ts +41 -0
- package/dist/matterbridgeAccessoryPlatform.d.ts.map +1 -0
- package/dist/matterbridgeAccessoryPlatform.js +38 -0
- package/dist/matterbridgeAccessoryPlatform.js.map +1 -0
- package/dist/matterbridgeBehaviors.d.ts +2404 -0
- package/dist/matterbridgeBehaviors.d.ts.map +1 -0
- package/dist/matterbridgeBehaviors.js +68 -5
- package/dist/matterbridgeBehaviors.js.map +1 -0
- package/dist/matterbridgeDeviceTypes.d.ts +698 -0
- package/dist/matterbridgeDeviceTypes.d.ts.map +1 -0
- package/dist/matterbridgeDeviceTypes.js +635 -14
- package/dist/matterbridgeDeviceTypes.js.map +1 -0
- package/dist/matterbridgeDynamicPlatform.d.ts +41 -0
- package/dist/matterbridgeDynamicPlatform.d.ts.map +1 -0
- package/dist/matterbridgeDynamicPlatform.js +38 -0
- package/dist/matterbridgeDynamicPlatform.js.map +1 -0
- package/dist/matterbridgeEndpoint.d.ts +1507 -0
- package/dist/matterbridgeEndpoint.d.ts.map +1 -0
- package/dist/matterbridgeEndpoint.js +1457 -53
- package/dist/matterbridgeEndpoint.js.map +1 -0
- package/dist/matterbridgeEndpointHelpers.d.ts +787 -0
- package/dist/matterbridgeEndpointHelpers.d.ts.map +1 -0
- package/dist/matterbridgeEndpointHelpers.js +483 -20
- package/dist/matterbridgeEndpointHelpers.js.map +1 -0
- package/dist/matterbridgeEndpointTypes.d.ts +166 -0
- package/dist/matterbridgeEndpointTypes.d.ts.map +1 -0
- package/dist/matterbridgeEndpointTypes.js +25 -0
- package/dist/matterbridgeEndpointTypes.js.map +1 -0
- package/dist/matterbridgePlatform.d.ts +539 -0
- package/dist/matterbridgePlatform.d.ts.map +1 -0
- package/dist/matterbridgePlatform.js +451 -1
- package/dist/matterbridgePlatform.js.map +1 -0
- package/dist/matterbridgeTypes.d.ts +252 -0
- package/dist/matterbridgeTypes.d.ts.map +1 -0
- package/dist/matterbridgeTypes.js +26 -0
- package/dist/matterbridgeTypes.js.map +1 -0
- package/dist/pluginManager.d.ts +372 -0
- package/dist/pluginManager.d.ts.map +1 -0
- package/dist/pluginManager.js +341 -5
- package/dist/pluginManager.js.map +1 -0
- package/dist/shelly.d.ts +181 -0
- package/dist/shelly.d.ts.map +1 -0
- package/dist/shelly.js +178 -7
- package/dist/shelly.js.map +1 -0
- package/dist/storage/export.d.ts +2 -0
- package/dist/storage/export.d.ts.map +1 -0
- package/dist/storage/export.js +1 -0
- package/dist/storage/export.js.map +1 -0
- package/dist/update.d.ts +84 -0
- package/dist/update.d.ts.map +1 -0
- package/dist/update.js +93 -1
- package/dist/update.js.map +1 -0
- package/dist/utils/colorUtils.d.ts +101 -0
- package/dist/utils/colorUtils.d.ts.map +1 -0
- package/dist/utils/colorUtils.js +97 -2
- package/dist/utils/colorUtils.js.map +1 -0
- package/dist/utils/commandLine.d.ts +66 -0
- package/dist/utils/commandLine.d.ts.map +1 -0
- package/dist/utils/commandLine.js +60 -0
- package/dist/utils/commandLine.js.map +1 -0
- package/dist/utils/copyDirectory.d.ts +35 -0
- package/dist/utils/copyDirectory.d.ts.map +1 -0
- package/dist/utils/copyDirectory.js +37 -0
- package/dist/utils/copyDirectory.js.map +1 -0
- package/dist/utils/createDirectory.d.ts +34 -0
- package/dist/utils/createDirectory.d.ts.map +1 -0
- package/dist/utils/createDirectory.js +33 -0
- package/dist/utils/createDirectory.js.map +1 -0
- package/dist/utils/createZip.d.ts +39 -0
- package/dist/utils/createZip.d.ts.map +1 -0
- package/dist/utils/createZip.js +47 -2
- package/dist/utils/createZip.js.map +1 -0
- package/dist/utils/deepCopy.d.ts +32 -0
- package/dist/utils/deepCopy.d.ts.map +1 -0
- package/dist/utils/deepCopy.js +39 -0
- package/dist/utils/deepCopy.js.map +1 -0
- package/dist/utils/deepEqual.d.ts +54 -0
- package/dist/utils/deepEqual.d.ts.map +1 -0
- package/dist/utils/deepEqual.js +72 -1
- package/dist/utils/deepEqual.js.map +1 -0
- package/dist/utils/error.d.ts +45 -0
- package/dist/utils/error.d.ts.map +1 -0
- package/dist/utils/error.js +42 -0
- package/dist/utils/error.js.map +1 -0
- package/dist/utils/export.d.ts +13 -0
- package/dist/utils/export.d.ts.map +1 -0
- package/dist/utils/export.js +1 -0
- package/dist/utils/export.js.map +1 -0
- package/dist/utils/format.d.ts +53 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +49 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/hex.d.ts +89 -0
- package/dist/utils/hex.d.ts.map +1 -0
- package/dist/utils/hex.js +124 -0
- package/dist/utils/hex.js.map +1 -0
- package/dist/utils/inspector.d.ts +87 -0
- package/dist/utils/inspector.d.ts.map +1 -0
- package/dist/utils/inspector.js +69 -1
- package/dist/utils/inspector.js.map +1 -0
- package/dist/utils/isValid.d.ts +103 -0
- package/dist/utils/isValid.d.ts.map +1 -0
- package/dist/utils/isValid.js +93 -0
- package/dist/utils/isValid.js.map +1 -0
- package/dist/utils/network.d.ts +140 -0
- package/dist/utils/network.d.ts.map +1 -0
- package/dist/utils/network.js +126 -6
- package/dist/utils/network.js.map +1 -0
- package/dist/utils/spawn.d.ts +33 -0
- package/dist/utils/spawn.d.ts.map +1 -0
- package/dist/utils/spawn.js +71 -1
- package/dist/utils/spawn.js.map +1 -0
- package/dist/utils/tracker.d.ts +108 -0
- package/dist/utils/tracker.d.ts.map +1 -0
- package/dist/utils/tracker.js +64 -1
- package/dist/utils/tracker.js.map +1 -0
- package/dist/utils/wait.d.ts +54 -0
- package/dist/utils/wait.d.ts.map +1 -0
- package/dist/utils/wait.js +60 -8
- package/dist/utils/wait.js.map +1 -0
- package/dist/workerGlobalPrefix.d.ts +25 -0
- package/dist/workerGlobalPrefix.d.ts.map +1 -0
- package/dist/workerGlobalPrefix.js +37 -5
- package/dist/workerGlobalPrefix.js.map +1 -0
- package/dist/workerTypes.d.ts +52 -0
- package/dist/workerTypes.d.ts.map +1 -0
- package/dist/workerTypes.js +24 -0
- package/dist/workerTypes.js.map +1 -0
- package/dist/workers.d.ts +69 -0
- package/dist/workers.d.ts.map +1 -0
- package/dist/workers.js +68 -4
- package/dist/workers.js.map +1 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mdns.js","sourceRoot":"","sources":["../../src/dgram/mdns.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description This file contains the class MdnsReflectorClient.
|
|
3
|
+
* @file src/dgram/mdnsReflectorClient.ts
|
|
4
|
+
* @author Luca Liguori
|
|
5
|
+
* @created 2025-12-25
|
|
6
|
+
* @version 1.1.0
|
|
7
|
+
* @license Apache-2.0
|
|
8
|
+
*
|
|
9
|
+
* Copyright 2025, 2026, 2027 Luca Liguori.
|
|
10
|
+
*
|
|
11
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
+
* you may not use this file except in compliance with the License.
|
|
13
|
+
* You may obtain a copy of the License at
|
|
14
|
+
*
|
|
15
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
+
*
|
|
17
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
+
* See the License for the specific language governing permissions and
|
|
21
|
+
* limitations under the License.
|
|
22
|
+
*/
|
|
23
|
+
import { AnsiLogger } from 'node-ansi-logger';
|
|
24
|
+
import { Mdns } from './mdns.js';
|
|
25
|
+
import { Unicast } from './unicast.js';
|
|
26
|
+
type RecentCache = Map<string, number>;
|
|
27
|
+
export declare class MdnsReflectorClient {
|
|
28
|
+
verbose: boolean;
|
|
29
|
+
debug: boolean;
|
|
30
|
+
silent: boolean;
|
|
31
|
+
log: AnsiLogger;
|
|
32
|
+
mdnsIpv4: Mdns;
|
|
33
|
+
mdnsIpv6: Mdns;
|
|
34
|
+
unicastIpv4: Unicast;
|
|
35
|
+
unicastIpv6: Unicast;
|
|
36
|
+
reflectedIpv4: RecentCache;
|
|
37
|
+
reflectedIpv6: RecentCache;
|
|
38
|
+
TTL_MS: number;
|
|
39
|
+
/**
|
|
40
|
+
* Creates an instance of MdnsReflectorClient.
|
|
41
|
+
* The MdnsReflectorClient must run inside a Docker container.
|
|
42
|
+
* The MdnsReflectorClient sends mDNS messages from the container to the MdnsReflectorServer running on the host machine.
|
|
43
|
+
* The MdnsReflectorClient also reflects mDNS messages from the MdnsReflectorServer to the container.
|
|
44
|
+
* Parameters:
|
|
45
|
+
* --filter <string[]> - filters to apply to incoming mDNS messages.
|
|
46
|
+
* --localhost - use localhost addresses to send messages to the container.
|
|
47
|
+
*/
|
|
48
|
+
constructor();
|
|
49
|
+
/**
|
|
50
|
+
* Generates a fingerprint for a given buffer using SHA1 hash.
|
|
51
|
+
*
|
|
52
|
+
* @param {Buffer} buf - The buffer to generate the fingerprint for.
|
|
53
|
+
* @returns {string} The SHA1 hash of the buffer as a hexadecimal string.
|
|
54
|
+
*/
|
|
55
|
+
fingerprint(buf: Buffer): string;
|
|
56
|
+
/**
|
|
57
|
+
* Remembers a key in the cache with a time-to-live (TTL).
|
|
58
|
+
*
|
|
59
|
+
* @param {RecentCache} cache - The cache to store the key in.
|
|
60
|
+
* @param {string} key - The key to remember.
|
|
61
|
+
* @param {number} ttlMs - The time-to-live in milliseconds.
|
|
62
|
+
*/
|
|
63
|
+
remember(cache: RecentCache, key: string, ttlMs: number): void;
|
|
64
|
+
/**
|
|
65
|
+
* Checks if a key has been seen recently in the cache.
|
|
66
|
+
*
|
|
67
|
+
* @param {RecentCache} cache - The cache to check.
|
|
68
|
+
* @param {string} key - The key to check.
|
|
69
|
+
* @returns {boolean} True if the key has been seen recently, false otherwise.
|
|
70
|
+
*/
|
|
71
|
+
seenRecently(cache: RecentCache, key: string): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Prunes expired entries from the cache and limits its size.
|
|
74
|
+
*
|
|
75
|
+
* @param {RecentCache} cache - The cache to prune.
|
|
76
|
+
*/
|
|
77
|
+
prune(cache: RecentCache): void;
|
|
78
|
+
/**
|
|
79
|
+
* Starts the mDNS Reflector Client.
|
|
80
|
+
*/
|
|
81
|
+
start(): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* Stops the mDNS Reflector Client.
|
|
84
|
+
*/
|
|
85
|
+
stop(): Promise<void>;
|
|
86
|
+
}
|
|
87
|
+
export {};
|
|
88
|
+
//# sourceMappingURL=mdnsReflectorClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mdnsReflectorClient.d.ts","sourceRoot":"","sources":["../../src/dgram/mdnsReflectorClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,EAAE,UAAU,EAA2C,MAAM,kBAAkB,CAAC;AAIvF,OAAO,EAAuB,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,KAAK,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEvC,qBAAa,mBAAmB;IAC9B,OAAO,UAAgD;IACvD,KAAK,UAA8F;IACnG,MAAM,UAA+C;IACrD,GAAG,aAA8L;IAEjM,QAAQ,OAA6I;IACrJ,QAAQ,OAA6I;IAErJ,WAAW,UAAyG;IACpH,WAAW,UAAyG;IAEpH,aAAa,EAAE,WAAW,CAAa;IACvC,aAAa,EAAE,WAAW,CAAa;IACvC,MAAM,SAAQ;IAEd;;;;;;;;OAQG;;IAiBH;;;;;OAKG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIhC;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9D;;;;;;OAMG;IACH,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAUtD;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAK/B;;OAEG;IACG,KAAK;IAoGX;;OAEG;IACG,IAAI;CA6BX"}
|
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description This file contains the class MdnsReflectorClient.
|
|
3
|
+
* @file src/dgram/mdnsReflectorClient.ts
|
|
4
|
+
* @author Luca Liguori
|
|
5
|
+
* @created 2025-12-25
|
|
6
|
+
* @version 1.1.0
|
|
7
|
+
* @license Apache-2.0
|
|
8
|
+
*
|
|
9
|
+
* Copyright 2025, 2026, 2027 Luca Liguori.
|
|
10
|
+
*
|
|
11
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
+
* you may not use this file except in compliance with the License.
|
|
13
|
+
* You may obtain a copy of the License at
|
|
14
|
+
*
|
|
15
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
+
*
|
|
17
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
+
* See the License for the specific language governing permissions and
|
|
21
|
+
* limitations under the License.
|
|
22
|
+
*/
|
|
1
23
|
import crypto from 'node:crypto';
|
|
2
24
|
import { AnsiLogger, BLUE, nt, nf } from 'node-ansi-logger';
|
|
3
25
|
import { getStringArrayParameter, hasParameter } from '../utils/commandLine.js';
|
|
@@ -9,7 +31,7 @@ export class MdnsReflectorClient {
|
|
|
9
31
|
verbose = hasParameter('v') || hasParameter('verbose');
|
|
10
32
|
debug = hasParameter('d') || hasParameter('debug') || hasParameter('v') || hasParameter('verbose');
|
|
11
33
|
silent = hasParameter('s') || hasParameter('silent');
|
|
12
|
-
log = new AnsiLogger({ logName: 'MdnsReflectorClient', logTimestampFormat: 4
|
|
34
|
+
log = new AnsiLogger({ logName: 'MdnsReflectorClient', logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */, logLevel: this.debug ? "debug" /* LogLevel.DEBUG */ : this.silent ? "notice" /* LogLevel.NOTICE */ : "info" /* LogLevel.INFO */ });
|
|
13
35
|
mdnsIpv4 = new Mdns('mDNS udp4 Server', MDNS_MULTICAST_IPV4_ADDRESS, MDNS_MULTICAST_PORT, 'udp4', true, undefined, MDNS_REFLECTOR_BIND_ADDRESS_IPV4);
|
|
14
36
|
mdnsIpv6 = new Mdns('mDNS udp6 Server', MDNS_MULTICAST_IPV6_ADDRESS, MDNS_MULTICAST_PORT, 'udp6', true, undefined, MDNS_REFLECTOR_BIND_ADDRESS_IPV6);
|
|
15
37
|
unicastIpv4 = new Unicast('mDNS udp4 Reflector Client', 'udp4', false, undefined, MDNS_REFLECTOR_BIND_ADDRESS_IPV4);
|
|
@@ -17,32 +39,62 @@ export class MdnsReflectorClient {
|
|
|
17
39
|
reflectedIpv4 = new Map();
|
|
18
40
|
reflectedIpv6 = new Map();
|
|
19
41
|
TTL_MS = 1500;
|
|
42
|
+
/**
|
|
43
|
+
* Creates an instance of MdnsReflectorClient.
|
|
44
|
+
* The MdnsReflectorClient must run inside a Docker container.
|
|
45
|
+
* The MdnsReflectorClient sends mDNS messages from the container to the MdnsReflectorServer running on the host machine.
|
|
46
|
+
* The MdnsReflectorClient also reflects mDNS messages from the MdnsReflectorServer to the container.
|
|
47
|
+
* Parameters:
|
|
48
|
+
* --filter <string[]> - filters to apply to incoming mDNS messages.
|
|
49
|
+
* --localhost - use localhost addresses to send messages to the container.
|
|
50
|
+
*/
|
|
20
51
|
constructor() {
|
|
21
52
|
this.log.logNameColor = '\x1b[38;5;97m';
|
|
22
53
|
this.mdnsIpv4.log.logNameColor = '\x1b[38;5;97m';
|
|
23
54
|
if (!this.debug && !this.verbose && !this.silent)
|
|
24
|
-
this.mdnsIpv4.log.logLevel = "warn"
|
|
55
|
+
this.mdnsIpv4.log.logLevel = "warn" /* LogLevel.WARN */;
|
|
25
56
|
this.mdnsIpv6.log.logNameColor = '\x1b[38;5;97m';
|
|
26
57
|
if (!this.debug && !this.verbose && !this.silent)
|
|
27
|
-
this.mdnsIpv6.log.logLevel = "warn"
|
|
58
|
+
this.mdnsIpv6.log.logLevel = "warn" /* LogLevel.WARN */;
|
|
28
59
|
this.unicastIpv4.log.logNameColor = '\x1b[38;5;97m';
|
|
29
60
|
if (!this.debug && !this.verbose && !this.silent)
|
|
30
|
-
this.unicastIpv4.log.logLevel = "warn"
|
|
61
|
+
this.unicastIpv4.log.logLevel = "warn" /* LogLevel.WARN */;
|
|
31
62
|
this.unicastIpv6.log.logNameColor = '\x1b[38;5;97m';
|
|
32
63
|
if (!this.debug && !this.verbose && !this.silent)
|
|
33
|
-
this.unicastIpv6.log.logLevel = "warn"
|
|
64
|
+
this.unicastIpv6.log.logLevel = "warn" /* LogLevel.WARN */;
|
|
65
|
+
// Apply filters if any
|
|
34
66
|
const filters = getStringArrayParameter('filter');
|
|
35
67
|
if (filters)
|
|
36
68
|
this.mdnsIpv4.filters.push(...filters);
|
|
37
69
|
if (filters)
|
|
38
70
|
this.mdnsIpv6.filters.push(...filters);
|
|
39
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Generates a fingerprint for a given buffer using SHA1 hash.
|
|
74
|
+
*
|
|
75
|
+
* @param {Buffer} buf - The buffer to generate the fingerprint for.
|
|
76
|
+
* @returns {string} The SHA1 hash of the buffer as a hexadecimal string.
|
|
77
|
+
*/
|
|
40
78
|
fingerprint(buf) {
|
|
41
79
|
return crypto.createHash('sha1').update(buf).digest('hex');
|
|
42
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Remembers a key in the cache with a time-to-live (TTL).
|
|
83
|
+
*
|
|
84
|
+
* @param {RecentCache} cache - The cache to store the key in.
|
|
85
|
+
* @param {string} key - The key to remember.
|
|
86
|
+
* @param {number} ttlMs - The time-to-live in milliseconds.
|
|
87
|
+
*/
|
|
43
88
|
remember(cache, key, ttlMs) {
|
|
44
89
|
cache.set(key, Date.now() + ttlMs);
|
|
45
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Checks if a key has been seen recently in the cache.
|
|
93
|
+
*
|
|
94
|
+
* @param {RecentCache} cache - The cache to check.
|
|
95
|
+
* @param {string} key - The key to check.
|
|
96
|
+
* @returns {boolean} True if the key has been seen recently, false otherwise.
|
|
97
|
+
*/
|
|
46
98
|
seenRecently(cache, key) {
|
|
47
99
|
const exp = cache.get(key);
|
|
48
100
|
if (!exp)
|
|
@@ -53,12 +105,20 @@ export class MdnsReflectorClient {
|
|
|
53
105
|
}
|
|
54
106
|
return true;
|
|
55
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Prunes expired entries from the cache and limits its size.
|
|
110
|
+
*
|
|
111
|
+
* @param {RecentCache} cache - The cache to prune.
|
|
112
|
+
*/
|
|
56
113
|
prune(cache) {
|
|
57
114
|
const now = Date.now();
|
|
58
115
|
for (const [k, exp] of cache)
|
|
59
116
|
if (exp < now)
|
|
60
117
|
cache.delete(k);
|
|
61
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* Starts the mDNS Reflector Client.
|
|
121
|
+
*/
|
|
62
122
|
async start() {
|
|
63
123
|
this.log.notice('mDNS Reflector Client starting...');
|
|
64
124
|
this.mdnsIpv4.on('error', (err) => {
|
|
@@ -98,6 +158,7 @@ export class MdnsReflectorClient {
|
|
|
98
158
|
this.log.info(`Ignoring recently reflected ${isMdnsQuery(msg) ? 'query' : 'response'} message from mDNS ipv4 multicast ${BLUE}${rinfo.address}${nf}:${BLUE}${rinfo.port}${nf}`);
|
|
99
159
|
return;
|
|
100
160
|
}
|
|
161
|
+
// if (rinfo.address === '127.0.0.1') return; // Ignore messages coming from the reflector itself
|
|
101
162
|
this.log.notice(`Sending ${isMdnsQuery(msg) ? 'query' : 'response'} message from mDNS ipv4 multicast ${BLUE}${rinfo.address}${nt}:${BLUE}${rinfo.port}${nt} to ipv4 reflector server`);
|
|
102
163
|
this.unicastIpv4.send(msg, MDNS_REFLECTOR_HOST_DOCKER, MDNS_REFLECTOR_PORT);
|
|
103
164
|
this.unicastIpv4.send(msg, MDNS_REFLECTOR_ADDRESS, MDNS_REFLECTOR_PORT);
|
|
@@ -107,6 +168,7 @@ export class MdnsReflectorClient {
|
|
|
107
168
|
this.log.info(`Ignoring recently reflected ${isMdnsQuery(msg) ? 'query' : 'response'} message from mDNS ipv6 multicast ${BLUE}${rinfo.address}${nf}:${BLUE}${rinfo.port}${nf}`);
|
|
108
169
|
return;
|
|
109
170
|
}
|
|
171
|
+
// if (rinfo.address === '::1') return; // Ignore messages coming from the reflector itself
|
|
110
172
|
this.log.notice(`Sending ${isMdnsQuery(msg) ? 'query' : 'response'} message from mDNS ipv6 multicast ${BLUE}${rinfo.address}${nt}:${BLUE}${rinfo.port}${nt} to ipv6 reflector server`);
|
|
111
173
|
this.unicastIpv6.send(msg, MDNS_REFLECTOR_HOST_DOCKER, MDNS_REFLECTOR_PORT);
|
|
112
174
|
this.unicastIpv6.send(msg, MDNS_REFLECTOR_ADDRESS, MDNS_REFLECTOR_PORT);
|
|
@@ -147,6 +209,9 @@ export class MdnsReflectorClient {
|
|
|
147
209
|
this.unicastIpv6.send(Buffer.from('Ipv6 reflector client started'), MDNS_REFLECTOR_ADDRESS, MDNS_REFLECTOR_PORT);
|
|
148
210
|
this.log.notice('mDNS Reflector Client started.');
|
|
149
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* Stops the mDNS Reflector Client.
|
|
214
|
+
*/
|
|
150
215
|
async stop() {
|
|
151
216
|
this.log.notice('mDNS Reflector Client stopping...');
|
|
152
217
|
const promises = [];
|
|
@@ -174,3 +239,4 @@ export class MdnsReflectorClient {
|
|
|
174
239
|
this.log.notice('mDNS Reflector Client stopped.');
|
|
175
240
|
}
|
|
176
241
|
}
|
|
242
|
+
//# sourceMappingURL=mdnsReflectorClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mdnsReflectorClient.js","sourceRoot":"","sources":["../../src/dgram/mdnsReflectorClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description This file contains the class MdnsReflectorServer.
|
|
3
|
+
* @file src/dgram/mdnsReflectorServer.ts
|
|
4
|
+
* @author Luca Liguori
|
|
5
|
+
* @created 2025-12-25
|
|
6
|
+
* @version 1.1.0
|
|
7
|
+
* @license Apache-2.0
|
|
8
|
+
*
|
|
9
|
+
* Copyright 2025, 2026, 2027 Luca Liguori.
|
|
10
|
+
*
|
|
11
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
+
* you may not use this file except in compliance with the License.
|
|
13
|
+
* You may obtain a copy of the License at
|
|
14
|
+
*
|
|
15
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
+
*
|
|
17
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
+
* See the License for the specific language governing permissions and
|
|
21
|
+
* limitations under the License.
|
|
22
|
+
*/
|
|
23
|
+
import { RemoteInfo } from 'node:dgram';
|
|
24
|
+
import { AnsiLogger } from 'node-ansi-logger';
|
|
25
|
+
import { Mdns } from './mdns.js';
|
|
26
|
+
import { Unicast } from './unicast.js';
|
|
27
|
+
export declare class MdnsReflectorServer {
|
|
28
|
+
verbose: boolean;
|
|
29
|
+
debug: boolean;
|
|
30
|
+
silent: boolean;
|
|
31
|
+
log: AnsiLogger;
|
|
32
|
+
mdnsIpv4: Mdns;
|
|
33
|
+
mdnsIpv6: Mdns;
|
|
34
|
+
unicastIpv4: Unicast;
|
|
35
|
+
unicastIpv6: Unicast;
|
|
36
|
+
ipv4Clients: Map<string, RemoteInfo>;
|
|
37
|
+
ipv6Clients: Map<string, RemoteInfo>;
|
|
38
|
+
/**
|
|
39
|
+
* Creates an instance of MdnsReflectorServer.
|
|
40
|
+
* The MdnsReflectorServer must run on the host machine.
|
|
41
|
+
* The MdnsReflectorServer reflects mDNS messages from the lan to the Ipv4 and IPv6 reflector clients running inside Docker containers.
|
|
42
|
+
* The MdnsReflectorServer also reflects mDNS messages from the Ipv4 and IPv6 reflector clients to the lan.
|
|
43
|
+
* The MdnsReflectorServer also upgrades the A and AAAA records from the Docker environment to point to the host machine IP addresses.
|
|
44
|
+
* Parameters:
|
|
45
|
+
* --filter <string[]> - filters to apply to incoming mDNS messages.
|
|
46
|
+
* --broadcast - use broadcast addresses to reflect messages to the lan.
|
|
47
|
+
* --localhost - use localhost addresses to reflect messages to the lan.
|
|
48
|
+
* --share-with-clients - share messages between reflector clients.
|
|
49
|
+
*/
|
|
50
|
+
constructor();
|
|
51
|
+
/**
|
|
52
|
+
* Get the broadcast address for the given Mdns instance.
|
|
53
|
+
*
|
|
54
|
+
* @param {Mdns} mdns - The Mdns instance.
|
|
55
|
+
* @returns {string | undefined} The broadcast address or undefined if not found.
|
|
56
|
+
*/
|
|
57
|
+
getBroadcastAddress(mdns: Mdns): string | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Decode and upgrade the A and AAAA records from Docker environment to point the host machine.
|
|
60
|
+
* Matterbridge running inside Docker Desktop containers register mDNS records with the container's IP address,
|
|
61
|
+
* which is not reachable from outside the Docker network.
|
|
62
|
+
* To make these services reachable, we need to upgrade the A and AAAA records using the host machine IP addresses.
|
|
63
|
+
* The reflector server runs on the host, while mDNS advertisements come from containers.
|
|
64
|
+
*
|
|
65
|
+
* @param {Buffer<ArrayBufferLike>} msg - The mDNS message buffer.
|
|
66
|
+
* @returns {Buffer<ArrayBufferLike>} The upgraded mDNS message buffer.
|
|
67
|
+
*/
|
|
68
|
+
upgradeAddress(msg: Buffer<ArrayBufferLike>): Buffer<ArrayBufferLike>;
|
|
69
|
+
/**
|
|
70
|
+
* Starts the mDNS Reflector Server.
|
|
71
|
+
*/
|
|
72
|
+
start(): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Stops the mDNS Reflector Server.
|
|
75
|
+
*/
|
|
76
|
+
stop(): Promise<void>;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=mdnsReflectorServer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mdnsReflectorServer.d.ts","sourceRoot":"","sources":["../../src/dgram/mdnsReflectorServer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,UAAU,EAA2C,MAAM,kBAAkB,CAAC;AAIvF,OAAO,EAAsD,IAAI,EAAE,MAAM,WAAW,CAAC;AAErF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,qBAAa,mBAAmB;IAC9B,OAAO,UAAgD;IACvD,KAAK,UAA8F;IACnG,MAAM,UAA+C;IACrD,GAAG,aAA8L;IAEjM,QAAQ,OAA6I;IACrJ,QAAQ,OAA6I;IAErJ,WAAW,UAA6H;IACxI,WAAW,UAA6H;IAExI,WAAW,0BAAiC;IAC5C,WAAW,0BAAiC;IAE5C;;;;;;;;;;;OAWG;;IAiBH;;;;;OAKG;IACH,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS;IAWnD;;;;;;;;;OASG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC;IAoHrE;;OAEG;IACG,KAAK;IA0HX;;OAEG;IACG,IAAI;CAuCX"}
|
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description This file contains the class MdnsReflectorServer.
|
|
3
|
+
* @file src/dgram/mdnsReflectorServer.ts
|
|
4
|
+
* @author Luca Liguori
|
|
5
|
+
* @created 2025-12-25
|
|
6
|
+
* @version 1.1.0
|
|
7
|
+
* @license Apache-2.0
|
|
8
|
+
*
|
|
9
|
+
* Copyright 2025, 2026, 2027 Luca Liguori.
|
|
10
|
+
*
|
|
11
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
+
* you may not use this file except in compliance with the License.
|
|
13
|
+
* You may obtain a copy of the License at
|
|
14
|
+
*
|
|
15
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
+
*
|
|
17
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
+
* See the License for the specific language governing permissions and
|
|
21
|
+
* limitations under the License.
|
|
22
|
+
*/
|
|
1
23
|
import os from 'node:os';
|
|
2
24
|
import { AnsiLogger, BLUE, nt, nf } from 'node-ansi-logger';
|
|
3
25
|
import { hasParameter, getStringArrayParameter } from '../utils/commandLine.js';
|
|
@@ -9,33 +31,52 @@ export class MdnsReflectorServer {
|
|
|
9
31
|
verbose = hasParameter('v') || hasParameter('verbose');
|
|
10
32
|
debug = hasParameter('d') || hasParameter('debug') || hasParameter('v') || hasParameter('verbose');
|
|
11
33
|
silent = hasParameter('s') || hasParameter('silent');
|
|
12
|
-
log = new AnsiLogger({ logName: 'MdnsReflectorServer', logTimestampFormat: 4
|
|
34
|
+
log = new AnsiLogger({ logName: 'MdnsReflectorServer', logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */, logLevel: this.debug ? "debug" /* LogLevel.DEBUG */ : this.silent ? "notice" /* LogLevel.NOTICE */ : "info" /* LogLevel.INFO */ });
|
|
13
35
|
mdnsIpv4 = new Mdns('mDNS udp4 Server', MDNS_MULTICAST_IPV4_ADDRESS, MDNS_MULTICAST_PORT, 'udp4', true, undefined, MDNS_REFLECTOR_BIND_ADDRESS_IPV4);
|
|
14
36
|
mdnsIpv6 = new Mdns('mDNS udp6 Server', MDNS_MULTICAST_IPV6_ADDRESS, MDNS_MULTICAST_PORT, 'udp6', true, undefined, MDNS_REFLECTOR_BIND_ADDRESS_IPV6);
|
|
15
37
|
unicastIpv4 = new Unicast('mDNS udp4 Reflector Server', 'udp4', true, undefined, MDNS_REFLECTOR_BIND_ADDRESS_IPV4, MDNS_REFLECTOR_PORT);
|
|
16
38
|
unicastIpv6 = new Unicast('mDNS udp6 Reflector Server', 'udp6', true, undefined, MDNS_REFLECTOR_BIND_ADDRESS_IPV6, MDNS_REFLECTOR_PORT);
|
|
17
39
|
ipv4Clients = new Map();
|
|
18
40
|
ipv6Clients = new Map();
|
|
41
|
+
/**
|
|
42
|
+
* Creates an instance of MdnsReflectorServer.
|
|
43
|
+
* The MdnsReflectorServer must run on the host machine.
|
|
44
|
+
* The MdnsReflectorServer reflects mDNS messages from the lan to the Ipv4 and IPv6 reflector clients running inside Docker containers.
|
|
45
|
+
* The MdnsReflectorServer also reflects mDNS messages from the Ipv4 and IPv6 reflector clients to the lan.
|
|
46
|
+
* The MdnsReflectorServer also upgrades the A and AAAA records from the Docker environment to point to the host machine IP addresses.
|
|
47
|
+
* Parameters:
|
|
48
|
+
* --filter <string[]> - filters to apply to incoming mDNS messages.
|
|
49
|
+
* --broadcast - use broadcast addresses to reflect messages to the lan.
|
|
50
|
+
* --localhost - use localhost addresses to reflect messages to the lan.
|
|
51
|
+
* --share-with-clients - share messages between reflector clients.
|
|
52
|
+
*/
|
|
19
53
|
constructor() {
|
|
20
54
|
this.log.logNameColor = '\x1b[38;5;115m';
|
|
21
55
|
this.mdnsIpv4.log.logNameColor = '\x1b[38;5;115m';
|
|
22
56
|
if (!this.debug && !this.verbose && !this.silent)
|
|
23
|
-
this.mdnsIpv4.log.logLevel = "warn"
|
|
57
|
+
this.mdnsIpv4.log.logLevel = "warn" /* LogLevel.WARN */;
|
|
24
58
|
this.mdnsIpv6.log.logNameColor = '\x1b[38;5;115m';
|
|
25
59
|
if (!this.debug && !this.verbose && !this.silent)
|
|
26
|
-
this.mdnsIpv6.log.logLevel = "warn"
|
|
60
|
+
this.mdnsIpv6.log.logLevel = "warn" /* LogLevel.WARN */;
|
|
27
61
|
this.unicastIpv4.log.logNameColor = '\x1b[38;5;115m';
|
|
28
62
|
if (!this.debug && !this.verbose && !this.silent)
|
|
29
|
-
this.unicastIpv4.log.logLevel = "warn"
|
|
63
|
+
this.unicastIpv4.log.logLevel = "warn" /* LogLevel.WARN */;
|
|
30
64
|
this.unicastIpv6.log.logNameColor = '\x1b[38;5;115m';
|
|
31
65
|
if (!this.debug && !this.verbose && !this.silent)
|
|
32
|
-
this.unicastIpv6.log.logLevel = "warn"
|
|
66
|
+
this.unicastIpv6.log.logLevel = "warn" /* LogLevel.WARN */;
|
|
67
|
+
// Apply filters if any
|
|
33
68
|
const filters = getStringArrayParameter('filter');
|
|
34
69
|
if (filters)
|
|
35
70
|
this.mdnsIpv4.filters.push(...filters);
|
|
36
71
|
if (filters)
|
|
37
72
|
this.mdnsIpv6.filters.push(...filters);
|
|
38
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Get the broadcast address for the given Mdns instance.
|
|
76
|
+
*
|
|
77
|
+
* @param {Mdns} mdns - The Mdns instance.
|
|
78
|
+
* @returns {string | undefined} The broadcast address or undefined if not found.
|
|
79
|
+
*/
|
|
39
80
|
getBroadcastAddress(mdns) {
|
|
40
81
|
try {
|
|
41
82
|
const address = mdns.socketType === 'udp4' ? mdns.getIpv4InterfaceAddress(mdns.interfaceName) : mdns.getIpv6InterfaceAddress(mdns.interfaceName);
|
|
@@ -47,7 +88,18 @@ export class MdnsReflectorServer {
|
|
|
47
88
|
mdns.log.error(`Error getting broadcast address: ${error.message}`);
|
|
48
89
|
}
|
|
49
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Decode and upgrade the A and AAAA records from Docker environment to point the host machine.
|
|
93
|
+
* Matterbridge running inside Docker Desktop containers register mDNS records with the container's IP address,
|
|
94
|
+
* which is not reachable from outside the Docker network.
|
|
95
|
+
* To make these services reachable, we need to upgrade the A and AAAA records using the host machine IP addresses.
|
|
96
|
+
* The reflector server runs on the host, while mDNS advertisements come from containers.
|
|
97
|
+
*
|
|
98
|
+
* @param {Buffer<ArrayBufferLike>} msg - The mDNS message buffer.
|
|
99
|
+
* @returns {Buffer<ArrayBufferLike>} The upgraded mDNS message buffer.
|
|
100
|
+
*/
|
|
50
101
|
upgradeAddress(msg) {
|
|
102
|
+
// Safety: if it's not even a DNS header, do nothing.
|
|
51
103
|
if (!msg || msg.length < 12)
|
|
52
104
|
return msg;
|
|
53
105
|
const preferredInterfaceName = this.mdnsIpv4.interfaceName ?? this.mdnsIpv6.interfaceName;
|
|
@@ -83,6 +135,7 @@ export class MdnsReflectorServer {
|
|
|
83
135
|
this.log.debug(`UpgradeAddress Host IPv6 for address upgrade: ${hostIpv6List.length > 0 ? hostIpv6List.join(', ') : 'N/A'}`);
|
|
84
136
|
if (!hostIpv4 && hostIpv6List.length === 0)
|
|
85
137
|
return msg;
|
|
138
|
+
// Copy the message so callers can safely re-use the original buffer.
|
|
86
139
|
const upgradedMsg = Buffer.from(msg);
|
|
87
140
|
const qdCount = upgradedMsg.readUInt16BE(4);
|
|
88
141
|
const anCount = upgradedMsg.readUInt16BE(6);
|
|
@@ -90,9 +143,11 @@ export class MdnsReflectorServer {
|
|
|
90
143
|
const arCount = upgradedMsg.readUInt16BE(10);
|
|
91
144
|
let offset = 12;
|
|
92
145
|
try {
|
|
146
|
+
// Skip questions
|
|
93
147
|
for (let i = 0; i < qdCount; i++) {
|
|
94
148
|
const qnameResult = this.mdnsIpv4.decodeDnsName(upgradedMsg, offset);
|
|
95
149
|
offset = qnameResult.newOffset;
|
|
150
|
+
// QTYPE + QCLASS
|
|
96
151
|
offset += 4;
|
|
97
152
|
if (offset > upgradedMsg.length)
|
|
98
153
|
return msg;
|
|
@@ -108,7 +163,9 @@ export class MdnsReflectorServer {
|
|
|
108
163
|
return;
|
|
109
164
|
const type = upgradedMsg.readUInt16BE(offset);
|
|
110
165
|
offset += 2;
|
|
166
|
+
// class (unused)
|
|
111
167
|
offset += 2;
|
|
168
|
+
// ttl (unused)
|
|
112
169
|
offset += 4;
|
|
113
170
|
const rdlength = upgradedMsg.readUInt16BE(offset);
|
|
114
171
|
offset += 2;
|
|
@@ -116,10 +173,10 @@ export class MdnsReflectorServer {
|
|
|
116
173
|
const endOfRdata = rdataOffset + rdlength;
|
|
117
174
|
if (endOfRdata > upgradedMsg.length)
|
|
118
175
|
return;
|
|
119
|
-
if (type === 1 && rdlength === 4 && hostA) {
|
|
176
|
+
if (type === 1 /* DnsRecordType.A */ && rdlength === 4 && hostA) {
|
|
120
177
|
hostA.copy(upgradedMsg, rdataOffset);
|
|
121
178
|
}
|
|
122
|
-
else if (type === 28 && rdlength === 16 && hostAAAAs.length > 0) {
|
|
179
|
+
else if (type === 28 /* DnsRecordType.AAAA */ && rdlength === 16 && hostAAAAs.length > 0) {
|
|
123
180
|
const hostAAAA = hostAAAAs[Math.min(hostAAAAIndex, hostAAAAs.length - 1)];
|
|
124
181
|
hostAAAA.copy(upgradedMsg, rdataOffset);
|
|
125
182
|
hostAAAAIndex++;
|
|
@@ -127,6 +184,7 @@ export class MdnsReflectorServer {
|
|
|
127
184
|
offset = endOfRdata;
|
|
128
185
|
}
|
|
129
186
|
};
|
|
187
|
+
// Walk RR sections and patch A/AAAA in-place.
|
|
130
188
|
upgradeResourceRecords(anCount);
|
|
131
189
|
upgradeResourceRecords(nsCount);
|
|
132
190
|
upgradeResourceRecords(arCount);
|
|
@@ -149,6 +207,9 @@ export class MdnsReflectorServer {
|
|
|
149
207
|
}
|
|
150
208
|
return upgradedMsg;
|
|
151
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* Starts the mDNS Reflector Server.
|
|
212
|
+
*/
|
|
152
213
|
async start() {
|
|
153
214
|
this.log.notice('mDNS Reflector Server starting...');
|
|
154
215
|
this.mdnsIpv4.on('error', (err) => {
|
|
@@ -263,6 +324,9 @@ export class MdnsReflectorServer {
|
|
|
263
324
|
});
|
|
264
325
|
this.log.notice('mDNS Reflector Server started.');
|
|
265
326
|
}
|
|
327
|
+
/**
|
|
328
|
+
* Stops the mDNS Reflector Server.
|
|
329
|
+
*/
|
|
266
330
|
async stop() {
|
|
267
331
|
this.log.notice('mDNS Reflector Server stopping...');
|
|
268
332
|
for (const client of this.ipv4Clients.values()) {
|
|
@@ -273,7 +337,7 @@ export class MdnsReflectorServer {
|
|
|
273
337
|
this.log.debug(`Notifying ipv6 client ${client.address}:${client.port} about server stopping`);
|
|
274
338
|
this.unicastIpv6.send(Buffer.from('mDNS Reflector Server is stopping'), client.address, client.port);
|
|
275
339
|
}
|
|
276
|
-
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
340
|
+
await new Promise((resolve) => setTimeout(resolve, 100)); // Wait a bit to allow messages to be sent
|
|
277
341
|
const promises = [];
|
|
278
342
|
promises[0] = new Promise((resolve) => {
|
|
279
343
|
this.mdnsIpv4.once('close', () => resolve());
|
|
@@ -299,3 +363,4 @@ export class MdnsReflectorServer {
|
|
|
299
363
|
this.log.notice('mDNS Reflector Server stopped.');
|
|
300
364
|
}
|
|
301
365
|
}
|
|
366
|
+
//# sourceMappingURL=mdnsReflectorServer.js.map
|