matterbridge 3.4.5-dev-20251225-2f72161 → 3.4.5
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 +5 -8
- 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 +121 -4
- 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 +172 -172
- package/dist/dgram/mb_mdns.js.map +1 -0
- package/dist/dgram/mdns.d.ts +350 -0
- package/dist/dgram/mdns.d.ts.map +1 -0
- package/dist/dgram/mdns.js +358 -144
- package/dist/dgram/mdns.js.map +1 -0
- package/dist/dgram/mdnsReflectorClient.d.ts +39 -0
- package/dist/dgram/mdnsReflectorClient.d.ts.map +1 -0
- package/dist/dgram/mdnsReflectorClient.js +132 -0
- package/dist/dgram/mdnsReflectorClient.js.map +1 -0
- package/dist/dgram/mdnsReflectorServer.d.ts +54 -0
- package/dist/dgram/mdnsReflectorServer.d.ts.map +1 -0
- package/dist/dgram/mdnsReflectorServer.js +294 -0
- 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 +28 -0
- 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 +64 -1
- 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 +61 -1
- 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 +101 -0
- package/dist/utils/isvalid.js.map +1 -0
- package/dist/utils/network.d.ts +117 -0
- package/dist/utils/network.d.ts.map +1 -0
- package/dist/utils/network.js +103 -5
- 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,39 @@
|
|
|
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.0.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
|
+
export declare class MdnsReflectorClient {
|
|
27
|
+
verbose: boolean;
|
|
28
|
+
debug: boolean;
|
|
29
|
+
silent: boolean;
|
|
30
|
+
log: AnsiLogger;
|
|
31
|
+
mdnsIpv4: Mdns;
|
|
32
|
+
mdnsIpv6: Mdns;
|
|
33
|
+
unicastIpv4: Unicast;
|
|
34
|
+
unicastIpv6: Unicast;
|
|
35
|
+
constructor();
|
|
36
|
+
start(): Promise<void>;
|
|
37
|
+
stop(): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
//# 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;AAEH,OAAO,EAAE,UAAU,EAAuC,MAAM,kBAAkB,CAAC;AAInF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,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,UAAyG;IACpH,WAAW,UAAyG;;IAkB9G,KAAK;IA6DL,IAAI;CA6BX"}
|
|
@@ -0,0 +1,132 @@
|
|
|
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.0.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, BLUE, nt } from 'node-ansi-logger';
|
|
24
|
+
import { getStringArrayParameter, hasParameter } from '../utils/commandLine.js';
|
|
25
|
+
import { Mdns } from './mdns.js';
|
|
26
|
+
import { MDNS_MULTICAST_IPV4_ADDRESS, MDNS_MULTICAST_IPV6_ADDRESS, MDNS_MULTICAST_PORT } from './multicast.js';
|
|
27
|
+
import { Unicast } from './unicast.js';
|
|
28
|
+
import { MDNS_REFLECTOR_ADDRESS, MDNS_REFLECTOR_BIND_ADDRESS_IPV4, MDNS_REFLECTOR_BIND_ADDRESS_IPV6, MDNS_REFLECTOR_HOST_DOCKER, MDNS_REFLECTOR_PORT } from './mdnsReflectorTypes.js';
|
|
29
|
+
export class MdnsReflectorClient {
|
|
30
|
+
verbose = hasParameter('v') || hasParameter('verbose');
|
|
31
|
+
debug = hasParameter('d') || hasParameter('debug') || hasParameter('v') || hasParameter('verbose');
|
|
32
|
+
silent = hasParameter('s') || hasParameter('silent');
|
|
33
|
+
log = new AnsiLogger({ logName: 'MdnsReflectorClient', logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */, logLevel: this.debug ? "debug" /* LogLevel.DEBUG */ : this.silent ? "notice" /* LogLevel.NOTICE */ : "info" /* LogLevel.INFO */ });
|
|
34
|
+
mdnsIpv4 = new Mdns('mDNS udp4 Server', MDNS_MULTICAST_IPV4_ADDRESS, MDNS_MULTICAST_PORT, 'udp4', true, undefined, MDNS_REFLECTOR_BIND_ADDRESS_IPV4);
|
|
35
|
+
mdnsIpv6 = new Mdns('mDNS udp6 Server', MDNS_MULTICAST_IPV6_ADDRESS, MDNS_MULTICAST_PORT, 'udp6', true, undefined, MDNS_REFLECTOR_BIND_ADDRESS_IPV6);
|
|
36
|
+
unicastIpv4 = new Unicast('mDNS udp4 Reflector Client', 'udp4', false, undefined, MDNS_REFLECTOR_BIND_ADDRESS_IPV4);
|
|
37
|
+
unicastIpv6 = new Unicast('mDNS udp6 Reflector Client', 'udp6', false, undefined, MDNS_REFLECTOR_BIND_ADDRESS_IPV6);
|
|
38
|
+
constructor() {
|
|
39
|
+
this.log.logNameColor = '\x1b[38;5;97m';
|
|
40
|
+
this.mdnsIpv4.log.logNameColor = '\x1b[38;5;97m';
|
|
41
|
+
this.mdnsIpv4.log.logLevel = "warn" /* LogLevel.WARN */;
|
|
42
|
+
this.mdnsIpv6.log.logNameColor = '\x1b[38;5;97m';
|
|
43
|
+
this.mdnsIpv6.log.logLevel = "warn" /* LogLevel.WARN */;
|
|
44
|
+
this.unicastIpv4.log.logNameColor = '\x1b[38;5;97m';
|
|
45
|
+
this.unicastIpv4.log.logLevel = "warn" /* LogLevel.WARN */;
|
|
46
|
+
this.unicastIpv6.log.logNameColor = '\x1b[38;5;97m';
|
|
47
|
+
this.unicastIpv6.log.logLevel = "warn" /* LogLevel.WARN */;
|
|
48
|
+
// Apply filters if any
|
|
49
|
+
const filters = getStringArrayParameter('filter');
|
|
50
|
+
if (filters)
|
|
51
|
+
this.mdnsIpv4.filters.push(...filters);
|
|
52
|
+
if (filters)
|
|
53
|
+
this.mdnsIpv6.filters.push(...filters);
|
|
54
|
+
}
|
|
55
|
+
async start() {
|
|
56
|
+
this.log.notice('mDNS Reflector Client starting...');
|
|
57
|
+
this.mdnsIpv4.on('error', (err) => {
|
|
58
|
+
this.log.error(`mDNS udp4 Server error:\n${err.stack}`);
|
|
59
|
+
});
|
|
60
|
+
this.mdnsIpv6.on('error', (err) => {
|
|
61
|
+
this.log.error(`mDNS udp6 Server error:\n${err.stack}`);
|
|
62
|
+
});
|
|
63
|
+
this.unicastIpv4.on('error', (err) => {
|
|
64
|
+
this.log.error(`mDNS udp4 Reflector Client error:\n${err.stack}`);
|
|
65
|
+
});
|
|
66
|
+
this.unicastIpv6.on('error', (err) => {
|
|
67
|
+
this.log.error(`mDNS udp6 Reflector Client error:\n${err.stack}`);
|
|
68
|
+
});
|
|
69
|
+
const promises = [];
|
|
70
|
+
promises[0] = new Promise((resolve) => {
|
|
71
|
+
this.mdnsIpv4.once('bound', () => resolve());
|
|
72
|
+
this.mdnsIpv4.start();
|
|
73
|
+
});
|
|
74
|
+
promises[1] = new Promise((resolve) => {
|
|
75
|
+
this.mdnsIpv6.once('bound', () => resolve());
|
|
76
|
+
this.mdnsIpv6.start();
|
|
77
|
+
});
|
|
78
|
+
promises[2] = new Promise((resolve) => {
|
|
79
|
+
this.unicastIpv4.once('bound', () => resolve());
|
|
80
|
+
this.unicastIpv4.start();
|
|
81
|
+
});
|
|
82
|
+
promises[3] = new Promise((resolve) => {
|
|
83
|
+
this.unicastIpv6.once('bound', () => resolve());
|
|
84
|
+
this.unicastIpv6.start();
|
|
85
|
+
});
|
|
86
|
+
await Promise.all(promises);
|
|
87
|
+
this.mdnsIpv4.on('message', (msg, rinfo) => {
|
|
88
|
+
this.log.notice(`Sending message from mDNS ipv4 multicast ${BLUE}${rinfo.address}${nt}:${BLUE}${rinfo.port}${nt} to unicast ipv4 reflector`);
|
|
89
|
+
this.unicastIpv4.send(msg, MDNS_REFLECTOR_HOST_DOCKER, MDNS_REFLECTOR_PORT);
|
|
90
|
+
this.unicastIpv4.send(msg, MDNS_REFLECTOR_ADDRESS, MDNS_REFLECTOR_PORT);
|
|
91
|
+
});
|
|
92
|
+
this.mdnsIpv6.on('message', (msg, rinfo) => {
|
|
93
|
+
this.log.notice(`Sending message from mDNS ipv6 multicast ${BLUE}${rinfo.address}${nt}:${BLUE}${rinfo.port}${nt} to unicast ipv6 reflector`);
|
|
94
|
+
this.unicastIpv6.send(msg, MDNS_REFLECTOR_HOST_DOCKER, MDNS_REFLECTOR_PORT);
|
|
95
|
+
this.unicastIpv6.send(msg, MDNS_REFLECTOR_ADDRESS, MDNS_REFLECTOR_PORT);
|
|
96
|
+
});
|
|
97
|
+
this.unicastIpv4.on('message', (msg, rinfo) => {
|
|
98
|
+
this.log.notice(`Received message from unicast reflector on ipv4 ${BLUE}${rinfo.address}${nt}:${BLUE}${rinfo.port}${nt}: ${msg.toString()}`);
|
|
99
|
+
});
|
|
100
|
+
this.unicastIpv6.on('message', (msg, rinfo) => {
|
|
101
|
+
this.log.notice(`Received message from unicast reflector on ipv6 ${BLUE}${rinfo.address}${nt}:${BLUE}${rinfo.port}${nt}: ${msg.toString()}`);
|
|
102
|
+
});
|
|
103
|
+
this.log.notice('mDNS Reflector Client started.');
|
|
104
|
+
}
|
|
105
|
+
async stop() {
|
|
106
|
+
this.log.notice('mDNS Reflector Client stopping...');
|
|
107
|
+
const promises = [];
|
|
108
|
+
promises[0] = new Promise((resolve) => {
|
|
109
|
+
this.mdnsIpv4.once('closed', () => resolve());
|
|
110
|
+
this.mdnsIpv4.stop();
|
|
111
|
+
});
|
|
112
|
+
promises[1] = new Promise((resolve) => {
|
|
113
|
+
this.mdnsIpv6.once('closed', () => resolve());
|
|
114
|
+
this.mdnsIpv6.stop();
|
|
115
|
+
});
|
|
116
|
+
promises[2] = new Promise((resolve) => {
|
|
117
|
+
this.unicastIpv4.once('closed', () => resolve());
|
|
118
|
+
this.unicastIpv4.stop();
|
|
119
|
+
});
|
|
120
|
+
promises[3] = new Promise((resolve) => {
|
|
121
|
+
this.unicastIpv6.once('closed', () => resolve());
|
|
122
|
+
this.unicastIpv6.stop();
|
|
123
|
+
});
|
|
124
|
+
await Promise.all(promises);
|
|
125
|
+
this.mdnsIpv4.removeAllListeners();
|
|
126
|
+
this.mdnsIpv6.removeAllListeners();
|
|
127
|
+
this.unicastIpv4.removeAllListeners();
|
|
128
|
+
this.unicastIpv6.removeAllListeners();
|
|
129
|
+
this.log.notice('mDNS Reflector Client stopped.');
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=mdnsReflectorClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mdnsReflectorClient.js","sourceRoot":"","sources":["../../src/dgram/mdnsReflectorClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,UAAU,EAA6B,IAAI,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEnF,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEhF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC/G,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEtL,MAAM,OAAO,mBAAmB;IAC9B,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;IACvD,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;IACnG,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IACrD,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,qCAA6B,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,8BAAgB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,gCAAiB,CAAC,2BAAc,EAAE,CAAC,CAAC;IAEjM,QAAQ,GAAG,IAAI,IAAI,CAAC,kBAAkB,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,gCAAgC,CAAC,CAAC;IACrJ,QAAQ,GAAG,IAAI,IAAI,CAAC,kBAAkB,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,gCAAgC,CAAC,CAAC;IAErJ,WAAW,GAAG,IAAI,OAAO,CAAC,4BAA4B,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,gCAAgC,CAAC,CAAC;IACpH,WAAW,GAAG,IAAI,OAAO,CAAC,4BAA4B,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,gCAAgC,CAAC,CAAC;IAEpH;QACE,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,GAAG,eAAe,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,6BAAgB,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,GAAG,eAAe,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,6BAAgB,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,GAAG,eAAe,CAAC;QACpD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,6BAAgB,CAAC;QAC9C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,GAAG,eAAe,CAAC;QACpD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,6BAAgB,CAAC;QAC9C,uBAAuB;QACvB,MAAM,OAAO,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,OAAO;YAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QACpD,IAAI,OAAO;YAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;QAErD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAChC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAChC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACnC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sCAAsC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACnC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sCAAsC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE5B,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACzC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,4CAA4C,IAAI,GAAG,KAAK,CAAC,OAAO,GAAG,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,EAAE,4BAA4B,CAAC,CAAC;YAC7I,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,0BAA0B,EAAE,mBAAmB,CAAC,CAAC;YAC5E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,sBAAsB,EAAE,mBAAmB,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACzC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,4CAA4C,IAAI,GAAG,KAAK,CAAC,OAAO,GAAG,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,EAAE,4BAA4B,CAAC,CAAC;YAC7I,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,0BAA0B,EAAE,mBAAmB,CAAC,CAAC;YAC5E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,sBAAsB,EAAE,mBAAmB,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC5C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,mDAAmD,IAAI,GAAG,KAAK,CAAC,OAAO,GAAG,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,EAAE,KAAK,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC/I,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC5C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,mDAAmD,IAAI,GAAG,KAAK,CAAC,OAAO,GAAG,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,EAAE,KAAK,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC/I,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;QAErD,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE5B,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QACnC,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;QACtC,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;QAEtC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;CACF"}
|
|
@@ -0,0 +1,54 @@
|
|
|
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.0.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
|
+
constructor();
|
|
39
|
+
getBroadcastAddress(mdns: Mdns): string | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Decode and upgrade the A and AAAA records from Docker environment to point the host machine.
|
|
42
|
+
* Matterbridge running inside Docker Desktop containers register mDNS records with the container's IP address,
|
|
43
|
+
* which is not reachable from outside the Docker network.
|
|
44
|
+
* To make these services reachable, we need to upgrade the A and AAAA records using the host machine IP addresses.
|
|
45
|
+
* The reflector server runs on the host, while mDNS advertisements come from containers.
|
|
46
|
+
*
|
|
47
|
+
* @param {Buffer<ArrayBufferLike>} msg - The mDNS message buffer.
|
|
48
|
+
* @returns {Buffer<ArrayBufferLike>} The upgraded mDNS message buffer.
|
|
49
|
+
*/
|
|
50
|
+
upgradeAddress(msg: Buffer<ArrayBufferLike>): Buffer<ArrayBufferLike>;
|
|
51
|
+
start(): Promise<void>;
|
|
52
|
+
stop(): Promise<void>;
|
|
53
|
+
}
|
|
54
|
+
//# 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,EAAuC,MAAM,kBAAkB,CAAC;AAInF,OAAO,EAAiB,IAAI,EAAE,MAAM,WAAW,CAAC;AAEhD,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;;IAkB5C,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;IAoH/D,KAAK;IA+EL,IAAI;CAuCX"}
|
|
@@ -0,0 +1,294 @@
|
|
|
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.0.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 os from 'node:os';
|
|
24
|
+
import { AnsiLogger, BLUE, nt } from 'node-ansi-logger';
|
|
25
|
+
import { hasParameter, getStringArrayParameter } from '../utils/commandLine.js';
|
|
26
|
+
import { Mdns } from './mdns.js';
|
|
27
|
+
import { MDNS_MULTICAST_IPV4_ADDRESS, MDNS_MULTICAST_IPV6_ADDRESS, MDNS_MULTICAST_PORT } from './multicast.js';
|
|
28
|
+
import { Unicast } from './unicast.js';
|
|
29
|
+
import { MDNS_REFLECTOR_BIND_ADDRESS_IPV4, MDNS_REFLECTOR_BIND_ADDRESS_IPV6, MDNS_REFLECTOR_PORT } from './mdnsReflectorTypes.js';
|
|
30
|
+
export class MdnsReflectorServer {
|
|
31
|
+
verbose = hasParameter('v') || hasParameter('verbose');
|
|
32
|
+
debug = hasParameter('d') || hasParameter('debug') || hasParameter('v') || hasParameter('verbose');
|
|
33
|
+
silent = hasParameter('s') || hasParameter('silent');
|
|
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 */ });
|
|
35
|
+
mdnsIpv4 = new Mdns('mDNS udp4 Server', MDNS_MULTICAST_IPV4_ADDRESS, MDNS_MULTICAST_PORT, 'udp4', true, undefined, MDNS_REFLECTOR_BIND_ADDRESS_IPV4);
|
|
36
|
+
mdnsIpv6 = new Mdns('mDNS udp6 Server', MDNS_MULTICAST_IPV6_ADDRESS, MDNS_MULTICAST_PORT, 'udp6', true, undefined, MDNS_REFLECTOR_BIND_ADDRESS_IPV6);
|
|
37
|
+
unicastIpv4 = new Unicast('mDNS udp4 Reflector Server', 'udp4', true, undefined, MDNS_REFLECTOR_BIND_ADDRESS_IPV4, MDNS_REFLECTOR_PORT);
|
|
38
|
+
unicastIpv6 = new Unicast('mDNS udp6 Reflector Server', 'udp6', true, undefined, MDNS_REFLECTOR_BIND_ADDRESS_IPV6, MDNS_REFLECTOR_PORT);
|
|
39
|
+
ipv4Clients = new Map();
|
|
40
|
+
ipv6Clients = new Map();
|
|
41
|
+
constructor() {
|
|
42
|
+
this.log.logNameColor = '\x1b[38;5;115m';
|
|
43
|
+
this.mdnsIpv4.log.logNameColor = '\x1b[38;5;115m';
|
|
44
|
+
this.mdnsIpv4.log.logLevel = "warn" /* LogLevel.WARN */;
|
|
45
|
+
this.mdnsIpv6.log.logNameColor = '\x1b[38;5;115m';
|
|
46
|
+
this.mdnsIpv6.log.logLevel = "warn" /* LogLevel.WARN */;
|
|
47
|
+
this.unicastIpv4.log.logNameColor = '\x1b[38;5;115m';
|
|
48
|
+
this.unicastIpv4.log.logLevel = "warn" /* LogLevel.WARN */;
|
|
49
|
+
this.unicastIpv6.log.logNameColor = '\x1b[38;5;115m';
|
|
50
|
+
this.unicastIpv6.log.logLevel = "warn" /* LogLevel.WARN */;
|
|
51
|
+
// Apply filters if any
|
|
52
|
+
const filters = getStringArrayParameter('filter');
|
|
53
|
+
if (filters)
|
|
54
|
+
this.mdnsIpv4.filters.push(...filters);
|
|
55
|
+
if (filters)
|
|
56
|
+
this.mdnsIpv6.filters.push(...filters);
|
|
57
|
+
}
|
|
58
|
+
getBroadcastAddress(mdns) {
|
|
59
|
+
try {
|
|
60
|
+
const address = mdns.socketType === 'udp4' ? mdns.getIpv4InterfaceAddress(mdns.interfaceName) : mdns.getIpv6InterfaceAddress(mdns.interfaceName);
|
|
61
|
+
const mask = mdns.socketType === 'udp4' ? mdns.getNetmask(address) : undefined;
|
|
62
|
+
const broadcastAddress = mdns.socketType === 'udp4' ? mdns.getIpv4BroadcastAddress(address, mask) : mdns.getIpv6BroadcastAddress();
|
|
63
|
+
return broadcastAddress;
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
mdns.log.error(`Error getting broadcast address: ${error.message}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Decode and upgrade the A and AAAA records from Docker environment to point the host machine.
|
|
71
|
+
* Matterbridge running inside Docker Desktop containers register mDNS records with the container's IP address,
|
|
72
|
+
* which is not reachable from outside the Docker network.
|
|
73
|
+
* To make these services reachable, we need to upgrade the A and AAAA records using the host machine IP addresses.
|
|
74
|
+
* The reflector server runs on the host, while mDNS advertisements come from containers.
|
|
75
|
+
*
|
|
76
|
+
* @param {Buffer<ArrayBufferLike>} msg - The mDNS message buffer.
|
|
77
|
+
* @returns {Buffer<ArrayBufferLike>} The upgraded mDNS message buffer.
|
|
78
|
+
*/
|
|
79
|
+
upgradeAddress(msg) {
|
|
80
|
+
// Safety: if it's not even a DNS header, do nothing.
|
|
81
|
+
if (!msg || msg.length < 12)
|
|
82
|
+
return msg;
|
|
83
|
+
const preferredInterfaceName = this.mdnsIpv4.interfaceName ?? this.mdnsIpv6.interfaceName;
|
|
84
|
+
const interfaces = os.networkInterfaces();
|
|
85
|
+
const pickInterface = () => {
|
|
86
|
+
if (preferredInterfaceName) {
|
|
87
|
+
const preferred = interfaces[preferredInterfaceName];
|
|
88
|
+
if (preferred?.some((info) => info && !info.internal))
|
|
89
|
+
return preferredInterfaceName;
|
|
90
|
+
}
|
|
91
|
+
for (const [name, infos] of Object.entries(interfaces)) {
|
|
92
|
+
if (infos?.some((info) => info && !info.internal))
|
|
93
|
+
return name;
|
|
94
|
+
}
|
|
95
|
+
return undefined;
|
|
96
|
+
};
|
|
97
|
+
const selectedInterfaceName = pickInterface();
|
|
98
|
+
this.log.info(`**UpgradeAddress selected interface for address upgrade: ${selectedInterfaceName || 'N/A'}`);
|
|
99
|
+
const selectedInfos = selectedInterfaceName ? (interfaces[selectedInterfaceName] ?? []) : [];
|
|
100
|
+
const hostIpv4 = selectedInfos.find((info) => info && !info.internal && info.family === 'IPv4')?.address;
|
|
101
|
+
const hostIpv6List = (() => {
|
|
102
|
+
const set = new Set();
|
|
103
|
+
for (const info of selectedInfos) {
|
|
104
|
+
if (!info || info.internal || info.family !== 'IPv6')
|
|
105
|
+
continue;
|
|
106
|
+
const normalized = info.address.split('%')[0].toLowerCase();
|
|
107
|
+
if (normalized)
|
|
108
|
+
set.add(normalized);
|
|
109
|
+
}
|
|
110
|
+
return [...set];
|
|
111
|
+
})();
|
|
112
|
+
this.log.info(`**UpgradeAddress Host IPv4 for address upgrade: ${hostIpv4 || 'N/A'}`);
|
|
113
|
+
this.log.info(`**UpgradeAddress Host IPv6 for address upgrade: ${hostIpv6List.length > 0 ? hostIpv6List.join(', ') : 'N/A'}`);
|
|
114
|
+
if (!hostIpv4 && hostIpv6List.length === 0)
|
|
115
|
+
return msg;
|
|
116
|
+
// Copy the message so callers can safely re-use the original buffer.
|
|
117
|
+
const upgradedMsg = Buffer.from(msg);
|
|
118
|
+
const qdCount = upgradedMsg.readUInt16BE(4);
|
|
119
|
+
const anCount = upgradedMsg.readUInt16BE(6);
|
|
120
|
+
const nsCount = upgradedMsg.readUInt16BE(8);
|
|
121
|
+
const arCount = upgradedMsg.readUInt16BE(10);
|
|
122
|
+
let offset = 12;
|
|
123
|
+
try {
|
|
124
|
+
// Skip questions
|
|
125
|
+
for (let i = 0; i < qdCount; i++) {
|
|
126
|
+
const qnameResult = this.mdnsIpv4.decodeDnsName(upgradedMsg, offset);
|
|
127
|
+
offset = qnameResult.newOffset;
|
|
128
|
+
// QTYPE + QCLASS
|
|
129
|
+
offset += 4;
|
|
130
|
+
if (offset > upgradedMsg.length)
|
|
131
|
+
return msg;
|
|
132
|
+
}
|
|
133
|
+
const hostA = hostIpv4 ? this.mdnsIpv4.encodeA(hostIpv4) : undefined;
|
|
134
|
+
const hostAAAAs = hostIpv6List.map((ipv6) => this.mdnsIpv6.encodeAAAA(ipv6));
|
|
135
|
+
let hostAAAAIndex = 0;
|
|
136
|
+
const upgradeResourceRecords = (count) => {
|
|
137
|
+
for (let i = 0; i < count; i++) {
|
|
138
|
+
const nameResult = this.mdnsIpv4.decodeDnsName(upgradedMsg, offset);
|
|
139
|
+
offset = nameResult.newOffset;
|
|
140
|
+
if (offset + 10 > upgradedMsg.length)
|
|
141
|
+
return;
|
|
142
|
+
const type = upgradedMsg.readUInt16BE(offset);
|
|
143
|
+
offset += 2;
|
|
144
|
+
// class (unused)
|
|
145
|
+
offset += 2;
|
|
146
|
+
// ttl (unused)
|
|
147
|
+
offset += 4;
|
|
148
|
+
const rdlength = upgradedMsg.readUInt16BE(offset);
|
|
149
|
+
offset += 2;
|
|
150
|
+
const rdataOffset = offset;
|
|
151
|
+
const endOfRdata = rdataOffset + rdlength;
|
|
152
|
+
if (endOfRdata > upgradedMsg.length)
|
|
153
|
+
return;
|
|
154
|
+
if (type === 1 /* DnsRecordType.A */ && rdlength === 4 && hostA) {
|
|
155
|
+
hostA.copy(upgradedMsg, rdataOffset);
|
|
156
|
+
}
|
|
157
|
+
else if (type === 28 /* DnsRecordType.AAAA */ && rdlength === 16 && hostAAAAs.length > 0) {
|
|
158
|
+
const hostAAAA = hostAAAAs[Math.min(hostAAAAIndex, hostAAAAs.length - 1)];
|
|
159
|
+
hostAAAA.copy(upgradedMsg, rdataOffset);
|
|
160
|
+
hostAAAAIndex++;
|
|
161
|
+
}
|
|
162
|
+
offset = endOfRdata;
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
// Walk RR sections and patch A/AAAA in-place.
|
|
166
|
+
upgradeResourceRecords(anCount);
|
|
167
|
+
upgradeResourceRecords(nsCount);
|
|
168
|
+
upgradeResourceRecords(arCount);
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
this.log.error(`**UpgradeAddress failed to parse message: ${error.message}`);
|
|
172
|
+
return msg;
|
|
173
|
+
}
|
|
174
|
+
this.log.info(`**UpgradeAddress message completed. Interface: ${selectedInterfaceName || 'N/A'}, Host IPv4: ${hostIpv4 || 'N/A'}, Host IPv6: ${hostIpv6List.length > 0 ? hostIpv6List.join(', ') : 'N/A'}`);
|
|
175
|
+
if (hasParameter('log-reflector-messages')) {
|
|
176
|
+
try {
|
|
177
|
+
let decodedMessage = this.mdnsIpv4.decodeMdnsMessage(msg);
|
|
178
|
+
this.mdnsIpv4.logMdnsMessage(decodedMessage, this.log, '**Original mDNS message');
|
|
179
|
+
decodedMessage = this.mdnsIpv4.decodeMdnsMessage(upgradedMsg);
|
|
180
|
+
this.mdnsIpv4.logMdnsMessage(decodedMessage, this.log, '**Upgraded mDNS message');
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
this.log.error(`**UpgradeAddress failed to decode message: ${error.message}`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return upgradedMsg;
|
|
187
|
+
}
|
|
188
|
+
async start() {
|
|
189
|
+
this.log.notice('mDNS Reflector Server starting...');
|
|
190
|
+
this.mdnsIpv4.on('error', (err) => {
|
|
191
|
+
this.log.error(`mDNS udp4 Server error:\n${err.stack}`);
|
|
192
|
+
});
|
|
193
|
+
this.mdnsIpv6.on('error', (err) => {
|
|
194
|
+
this.log.error(`mDNS udp6 Server error:\n${err.stack}`);
|
|
195
|
+
});
|
|
196
|
+
this.unicastIpv4.on('error', (err) => {
|
|
197
|
+
this.log.error(`mDNS udp4 Reflector Server error:\n${err.stack}`);
|
|
198
|
+
});
|
|
199
|
+
this.unicastIpv6.on('error', (err) => {
|
|
200
|
+
this.log.error(`mDNS udp6 Reflector Server error:\n${err.stack}`);
|
|
201
|
+
});
|
|
202
|
+
const promises = [];
|
|
203
|
+
promises[0] = new Promise((resolve) => {
|
|
204
|
+
this.mdnsIpv4.once('bound', () => resolve());
|
|
205
|
+
this.mdnsIpv4.start();
|
|
206
|
+
});
|
|
207
|
+
promises[1] = new Promise((resolve) => {
|
|
208
|
+
this.mdnsIpv6.once('bound', () => resolve());
|
|
209
|
+
this.mdnsIpv6.start();
|
|
210
|
+
});
|
|
211
|
+
promises[2] = new Promise((resolve) => {
|
|
212
|
+
this.unicastIpv4.once('bound', () => resolve());
|
|
213
|
+
this.unicastIpv4.start();
|
|
214
|
+
});
|
|
215
|
+
promises[3] = new Promise((resolve) => {
|
|
216
|
+
this.unicastIpv6.once('bound', () => resolve());
|
|
217
|
+
this.unicastIpv6.start();
|
|
218
|
+
});
|
|
219
|
+
await Promise.all(promises);
|
|
220
|
+
this.unicastIpv4.on('message', (msg, rinfo) => {
|
|
221
|
+
this.ipv4Clients.set(`${rinfo.address}:${rinfo.port}`, rinfo);
|
|
222
|
+
this.log.notice(`Reflecting message from unicast client ipv4 ${BLUE}${rinfo.address}${nt}:${BLUE}${rinfo.port}${nt} to mDNS ipv4 multicast`);
|
|
223
|
+
const upgradedMsg = this.upgradeAddress(msg);
|
|
224
|
+
this.mdnsIpv4.send(upgradedMsg, MDNS_MULTICAST_IPV4_ADDRESS, MDNS_MULTICAST_PORT);
|
|
225
|
+
if (hasParameter('broadcast')) {
|
|
226
|
+
const broadcastAddress = this.getBroadcastAddress(this.mdnsIpv4);
|
|
227
|
+
if (broadcastAddress) {
|
|
228
|
+
this.log.notice(`Reflecting message from unicast client ipv4 ${BLUE}${rinfo.address}${nt}:${BLUE}${rinfo.port}${nt} to ipv4 broadcast address ${BLUE}${broadcastAddress}${nt}:${BLUE}${MDNS_MULTICAST_PORT}${nt}`);
|
|
229
|
+
this.mdnsIpv4.send(upgradedMsg, broadcastAddress, MDNS_MULTICAST_PORT);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
if (hasParameter('localhost')) {
|
|
233
|
+
this.log.notice(`Reflecting message from unicast client ipv4 ${BLUE}${rinfo.address}${nt}:${BLUE}${rinfo.port}${nt} to ipv4 localhost address ${BLUE}localhost${nt}:${BLUE}${MDNS_MULTICAST_PORT}${nt}`);
|
|
234
|
+
this.mdnsIpv4.send(upgradedMsg, 'localhost', MDNS_MULTICAST_PORT);
|
|
235
|
+
}
|
|
236
|
+
this.unicastIpv4.send(Buffer.from('mDNS Reflector Server reflected your message'), rinfo.address, rinfo.port);
|
|
237
|
+
});
|
|
238
|
+
this.unicastIpv6.on('message', (msg, rinfo) => {
|
|
239
|
+
this.ipv6Clients.set(`${rinfo.address}:${rinfo.port}`, rinfo);
|
|
240
|
+
this.log.notice(`Reflecting message from unicast client ipv6 ${BLUE}${rinfo.address}${nt}:${BLUE}${rinfo.port}${nt} to mDNS ipv6 multicast`);
|
|
241
|
+
const upgradedMsg = this.upgradeAddress(msg);
|
|
242
|
+
this.mdnsIpv6.send(upgradedMsg, MDNS_MULTICAST_IPV6_ADDRESS, MDNS_MULTICAST_PORT);
|
|
243
|
+
if (hasParameter('broadcast')) {
|
|
244
|
+
const broadcastAddress = this.getBroadcastAddress(this.mdnsIpv6);
|
|
245
|
+
if (broadcastAddress) {
|
|
246
|
+
this.log.notice(`Reflecting message from unicast client ipv6 ${BLUE}${rinfo.address}${nt}:${BLUE}${rinfo.port}${nt} to ipv6 broadcast address ${BLUE}${broadcastAddress}${nt}:${BLUE}${MDNS_MULTICAST_PORT}${nt}`);
|
|
247
|
+
this.mdnsIpv6.send(upgradedMsg, broadcastAddress, MDNS_MULTICAST_PORT);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
if (hasParameter('localhost')) {
|
|
251
|
+
this.log.notice(`Reflecting message from unicast client ipv6 ${BLUE}${rinfo.address}${nt}:${BLUE}${rinfo.port}${nt} to ipv6 localhost address ${BLUE}localhost${nt}:${BLUE}${MDNS_MULTICAST_PORT}${nt}`);
|
|
252
|
+
this.mdnsIpv6.send(upgradedMsg, 'localhost', MDNS_MULTICAST_PORT);
|
|
253
|
+
}
|
|
254
|
+
this.unicastIpv6.send(Buffer.from('mDNS Reflector Server reflected your message'), rinfo.address, rinfo.port);
|
|
255
|
+
});
|
|
256
|
+
this.log.notice('mDNS Reflector Server started.');
|
|
257
|
+
}
|
|
258
|
+
async stop() {
|
|
259
|
+
this.log.notice('mDNS Reflector Server stopping...');
|
|
260
|
+
for (const client of this.ipv4Clients.values()) {
|
|
261
|
+
this.log.debug(`Notifying ipv4 client ${client.address}:${client.port} about server stopping`);
|
|
262
|
+
this.unicastIpv4.send(Buffer.from('mDNS Reflector Server is stopping'), client.address, client.port);
|
|
263
|
+
}
|
|
264
|
+
for (const client of this.ipv6Clients.values()) {
|
|
265
|
+
this.log.debug(`Notifying ipv6 client ${client.address}:${client.port} about server stopping`);
|
|
266
|
+
this.unicastIpv6.send(Buffer.from('mDNS Reflector Server is stopping'), client.address, client.port);
|
|
267
|
+
}
|
|
268
|
+
await new Promise((resolve) => setTimeout(resolve, 100)); // Wait a bit to allow messages to be sent
|
|
269
|
+
const promises = [];
|
|
270
|
+
promises[0] = new Promise((resolve) => {
|
|
271
|
+
this.mdnsIpv4.once('closed', () => resolve());
|
|
272
|
+
this.mdnsIpv4.stop();
|
|
273
|
+
});
|
|
274
|
+
promises[1] = new Promise((resolve) => {
|
|
275
|
+
this.mdnsIpv6.once('closed', () => resolve());
|
|
276
|
+
this.mdnsIpv6.stop();
|
|
277
|
+
});
|
|
278
|
+
promises[2] = new Promise((resolve) => {
|
|
279
|
+
this.unicastIpv4.once('closed', () => resolve());
|
|
280
|
+
this.unicastIpv4.stop();
|
|
281
|
+
});
|
|
282
|
+
promises[3] = new Promise((resolve) => {
|
|
283
|
+
this.unicastIpv6.once('closed', () => resolve());
|
|
284
|
+
this.unicastIpv6.stop();
|
|
285
|
+
});
|
|
286
|
+
await Promise.all(promises);
|
|
287
|
+
this.mdnsIpv4.removeAllListeners();
|
|
288
|
+
this.mdnsIpv6.removeAllListeners();
|
|
289
|
+
this.unicastIpv4.removeAllListeners();
|
|
290
|
+
this.unicastIpv6.removeAllListeners();
|
|
291
|
+
this.log.notice('mDNS Reflector Server stopped.');
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=mdnsReflectorServer.js.map
|