matterbridge 3.3.0-dev-20251003-626ea2f → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.d.ts +26 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +91 -2
- package/dist/cli.js.map +1 -0
- package/dist/cliEmitter.d.ts +34 -0
- package/dist/cliEmitter.d.ts.map +1 -0
- package/dist/cliEmitter.js +30 -0
- package/dist/cliEmitter.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/defaultConfigSchema.d.ts +28 -0
- package/dist/defaultConfigSchema.d.ts.map +1 -0
- package/dist/defaultConfigSchema.js +24 -0
- package/dist/defaultConfigSchema.js.map +1 -0
- package/dist/deviceManager.d.ts +112 -0
- package/dist/deviceManager.d.ts.map +1 -0
- package/dist/deviceManager.js +94 -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 +60 -0
- package/dist/devices/cooktop.d.ts.map +1 -0
- package/dist/devices/cooktop.js +55 -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 +75 -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 +42 -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 +25 -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 +141 -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 +80 -15
- package/dist/dgram/mb_mdns.js.map +1 -0
- package/dist/dgram/mdns.d.ts +290 -0
- package/dist/dgram/mdns.d.ts.map +1 -0
- package/dist/dgram/mdns.js +299 -137
- package/dist/dgram/mdns.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 +56 -0
- package/dist/dgram/unicast.d.ts.map +1 -0
- package/dist/dgram/unicast.js +54 -0
- package/dist/dgram/unicast.js.map +1 -0
- package/dist/frontend.d.ts +232 -0
- package/dist/frontend.d.ts.map +1 -0
- package/dist/frontend.js +454 -61
- package/dist/frontend.js.map +1 -0
- package/dist/frontendTypes.d.ts +514 -0
- package/dist/frontendTypes.d.ts.map +1 -0
- package/dist/frontendTypes.js +45 -0
- package/dist/frontendTypes.js.map +1 -0
- package/dist/globalMatterbridge.d.ts +59 -0
- package/dist/globalMatterbridge.d.ts.map +1 -0
- package/dist/globalMatterbridge.js +47 -0
- package/dist/globalMatterbridge.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 +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -1
- package/dist/index.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/matterbridge.d.ts +430 -0
- package/dist/matterbridge.d.ts.map +1 -0
- package/dist/matterbridge.js +788 -68
- package/dist/matterbridge.js.map +1 -0
- package/dist/matterbridgeAccessoryPlatform.d.ts +42 -0
- package/dist/matterbridgeAccessoryPlatform.d.ts.map +1 -0
- package/dist/matterbridgeAccessoryPlatform.js +36 -0
- package/dist/matterbridgeAccessoryPlatform.js.map +1 -0
- package/dist/matterbridgeBehaviors.d.ts +1747 -0
- package/dist/matterbridgeBehaviors.d.ts.map +1 -0
- package/dist/matterbridgeBehaviors.js +65 -5
- package/dist/matterbridgeBehaviors.js.map +1 -0
- package/dist/matterbridgeDeviceTypes.d.ts +761 -0
- package/dist/matterbridgeDeviceTypes.d.ts.map +1 -0
- package/dist/matterbridgeDeviceTypes.js +630 -17
- package/dist/matterbridgeDeviceTypes.js.map +1 -0
- package/dist/matterbridgeDynamicPlatform.d.ts +42 -0
- package/dist/matterbridgeDynamicPlatform.d.ts.map +1 -0
- package/dist/matterbridgeDynamicPlatform.js +36 -0
- package/dist/matterbridgeDynamicPlatform.js.map +1 -0
- package/dist/matterbridgeEndpoint.d.ts +1534 -0
- package/dist/matterbridgeEndpoint.d.ts.map +1 -0
- package/dist/matterbridgeEndpoint.js +1398 -58
- package/dist/matterbridgeEndpoint.js.map +1 -0
- package/dist/matterbridgeEndpointHelpers.d.ts +407 -0
- package/dist/matterbridgeEndpointHelpers.d.ts.map +1 -0
- package/dist/matterbridgeEndpointHelpers.js +345 -12
- package/dist/matterbridgeEndpointHelpers.js.map +1 -0
- package/dist/matterbridgePlatform.d.ts +402 -0
- package/dist/matterbridgePlatform.d.ts.map +1 -0
- package/dist/matterbridgePlatform.js +340 -1
- package/dist/matterbridgePlatform.js.map +1 -0
- package/dist/matterbridgeTypes.d.ts +201 -0
- package/dist/matterbridgeTypes.d.ts.map +1 -0
- package/dist/matterbridgeTypes.js +30 -0
- package/dist/matterbridgeTypes.js.map +1 -0
- package/dist/pluginManager.d.ts +270 -0
- package/dist/pluginManager.d.ts.map +1 -0
- package/dist/pluginManager.js +249 -3
- package/dist/pluginManager.js.map +1 -0
- package/dist/shelly.d.ts +174 -0
- package/dist/shelly.d.ts.map +1 -0
- package/dist/shelly.js +168 -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 +75 -0
- package/dist/update.d.ts.map +1 -0
- package/dist/update.js +69 -0
- package/dist/update.js.map +1 -0
- package/dist/utils/colorUtils.d.ts +99 -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 +59 -0
- package/dist/utils/commandLine.d.ts.map +1 -0
- package/dist/utils/commandLine.js +54 -0
- package/dist/utils/commandLine.js.map +1 -0
- package/dist/utils/copyDirectory.d.ts +33 -0
- package/dist/utils/copyDirectory.d.ts.map +1 -0
- package/dist/utils/copyDirectory.js +38 -1
- 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 +44 -0
- package/dist/utils/error.d.ts.map +1 -0
- package/dist/utils/error.js +41 -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/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/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/jestHelpers.d.ts +137 -0
- package/dist/utils/jestHelpers.d.ts.map +1 -0
- package/dist/utils/jestHelpers.js +153 -3
- package/dist/utils/jestHelpers.js.map +1 -0
- package/dist/utils/network.d.ts +84 -0
- package/dist/utils/network.d.ts.map +1 -0
- package/dist/utils/network.js +91 -5
- package/dist/utils/network.js.map +1 -0
- package/dist/utils/spawn.d.ts +34 -0
- package/dist/utils/spawn.d.ts.map +1 -0
- package/dist/utils/spawn.js +69 -0
- package/dist/utils/spawn.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/npm-shrinkwrap.json +2 -2
- package/package.json +2 -1
package/dist/dgram/mb_mdns.js
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description This file contains the bin mb_mdns for the class Mdns.
|
|
3
|
+
* @file src/dgram/mb_mdns.ts
|
|
4
|
+
* @author Luca Liguori
|
|
5
|
+
* @created 2025-07-22
|
|
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
|
+
// Matterbridge
|
|
1
24
|
import { getParameter, getStringArrayParameter, hasParameter } from '../utils/commandLine.js';
|
|
25
|
+
// Net imports
|
|
2
26
|
import { MDNS_MULTICAST_IPV4_ADDRESS, MDNS_MULTICAST_IPV6_ADDRESS, MDNS_MULTICAST_PORT } from './multicast.js';
|
|
3
27
|
import { Mdns } from './mdns.js';
|
|
28
|
+
// istanbul ignore next
|
|
4
29
|
{
|
|
5
30
|
if (hasParameter('h') || hasParameter('help')) {
|
|
31
|
+
// eslint-disable-next-line no-console
|
|
6
32
|
console.log(`Usage: mb_mdns [options]
|
|
7
33
|
|
|
8
34
|
Options:
|
|
@@ -30,17 +56,18 @@ Examples:
|
|
|
30
56
|
# Query for mDNS devices every 10s on a specific interface
|
|
31
57
|
mb_mdns --interfaceName eth0 --query
|
|
32
58
|
`);
|
|
59
|
+
// eslint-disable-next-line n/no-process-exit
|
|
33
60
|
process.exit(0);
|
|
34
61
|
}
|
|
35
62
|
const mdnsIpv4 = new Mdns('mDNS Server udp4', MDNS_MULTICAST_IPV4_ADDRESS, MDNS_MULTICAST_PORT, 'udp4', true, getParameter('interfaceName'), getParameter('ipv4InterfaceAddress') || '0.0.0.0', getParameter('outgoingIpv4InterfaceAddress'));
|
|
36
63
|
const mdnsIpv6 = new Mdns('mDNS Server udp6', MDNS_MULTICAST_IPV6_ADDRESS, MDNS_MULTICAST_PORT, 'udp6', true, getParameter('interfaceName'), getParameter('ipv6InterfaceAddress') || '::', getParameter('outgoingIpv6InterfaceAddress'));
|
|
37
64
|
if (hasParameter('v') || hasParameter('verbose')) {
|
|
38
|
-
mdnsIpv4.log.logLevel = "debug"
|
|
39
|
-
mdnsIpv6.log.logLevel = "debug"
|
|
65
|
+
mdnsIpv4.log.logLevel = "debug" /* LogLevel.DEBUG */;
|
|
66
|
+
mdnsIpv6.log.logLevel = "debug" /* LogLevel.DEBUG */;
|
|
40
67
|
}
|
|
41
68
|
else {
|
|
42
|
-
mdnsIpv4.log.logLevel = "info"
|
|
43
|
-
mdnsIpv6.log.logLevel = "info"
|
|
69
|
+
mdnsIpv4.log.logLevel = "info" /* LogLevel.INFO */;
|
|
70
|
+
mdnsIpv6.log.logLevel = "info" /* LogLevel.INFO */;
|
|
44
71
|
}
|
|
45
72
|
mdnsIpv4.listNetworkInterfaces();
|
|
46
73
|
const filters = getStringArrayParameter('filter');
|
|
@@ -48,37 +75,56 @@ Examples:
|
|
|
48
75
|
mdnsIpv4.filters.push(...filters);
|
|
49
76
|
mdnsIpv6.filters.push(...filters);
|
|
50
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Cleanup and log device information before exiting.
|
|
80
|
+
*/
|
|
51
81
|
function cleanupAndLogAndExit() {
|
|
52
82
|
mdnsIpv4.stop();
|
|
53
83
|
mdnsIpv6.stop();
|
|
54
84
|
mdnsIpv4.logDevices();
|
|
55
85
|
mdnsIpv6.logDevices();
|
|
86
|
+
// eslint-disable-next-line n/no-process-exit
|
|
56
87
|
process.exit(0);
|
|
57
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Queries mDNS services over UDP IPv4 and sends a response for a specific service instance.
|
|
91
|
+
* This function sends a query for Shelly, HTTP, and services, and responds with the appropriate PTR records.
|
|
92
|
+
*/
|
|
58
93
|
const queryUdp4 = () => {
|
|
59
94
|
mdnsIpv4.sendQuery([
|
|
60
|
-
{ name: '_matter._tcp.local', type: 12
|
|
61
|
-
{ name: '_shelly._tcp.local', type: 12
|
|
62
|
-
{ name: '_http._tcp.local', type: 12
|
|
63
|
-
{ name: '_services._dns-sd._udp.local', type: 12
|
|
95
|
+
{ name: '_matter._tcp.local', type: 12 /* DnsRecordType.PTR */, class: 1 /* DnsClass.IN */, unicastResponse: false },
|
|
96
|
+
{ name: '_shelly._tcp.local', type: 12 /* DnsRecordType.PTR */, class: 1 /* DnsClass.IN */, unicastResponse: false },
|
|
97
|
+
{ name: '_http._tcp.local', type: 12 /* DnsRecordType.PTR */, class: 1 /* DnsClass.IN */, unicastResponse: false },
|
|
98
|
+
{ name: '_services._dns-sd._udp.local', type: 12 /* DnsRecordType.PTR */, class: 1 /* DnsClass.IN */, unicastResponse: false },
|
|
64
99
|
]);
|
|
65
100
|
};
|
|
101
|
+
/**
|
|
102
|
+
* Sends an mDNS advertisement for the HTTP service over UDP IPv4.
|
|
103
|
+
*/
|
|
66
104
|
const advertiseUdp4 = () => {
|
|
67
105
|
const ptrRdata = mdnsIpv4.encodeDnsName('matterbridge._http._tcp.local');
|
|
68
|
-
mdnsIpv4.sendResponse('_http._tcp.local', 12
|
|
106
|
+
mdnsIpv4.sendResponse('_http._tcp.local', 12 /* DnsRecordType.PTR */, 1 /* DnsClass.IN */, 120, ptrRdata);
|
|
69
107
|
};
|
|
108
|
+
/**
|
|
109
|
+
* Queries mDNS services over UDP IPv6 and sends a response for a specific service instance.
|
|
110
|
+
* This function sends a query for Shelly, HTTP, and services, and responds with the appropriate PTR records.
|
|
111
|
+
*/
|
|
70
112
|
const queryUdp6 = () => {
|
|
71
113
|
mdnsIpv6.sendQuery([
|
|
72
|
-
{ name: '_matter._tcp.local', type: 12
|
|
73
|
-
{ name: '_shelly._tcp.local', type: 12
|
|
74
|
-
{ name: '_http._tcp.local', type: 12
|
|
75
|
-
{ name: '_services._dns-sd._udp.local', type: 12
|
|
114
|
+
{ name: '_matter._tcp.local', type: 12 /* DnsRecordType.PTR */, class: 1 /* DnsClass.IN */, unicastResponse: true },
|
|
115
|
+
{ name: '_shelly._tcp.local', type: 12 /* DnsRecordType.PTR */, class: 1 /* DnsClass.IN */, unicastResponse: true },
|
|
116
|
+
{ name: '_http._tcp.local', type: 12 /* DnsRecordType.PTR */, class: 1 /* DnsClass.IN */, unicastResponse: true },
|
|
117
|
+
{ name: '_services._dns-sd._udp.local', type: 12 /* DnsRecordType.PTR */, class: 1 /* DnsClass.IN */, unicastResponse: true },
|
|
76
118
|
]);
|
|
77
119
|
};
|
|
120
|
+
/**
|
|
121
|
+
* Sends an mDNS advertisement for the HTTP service over UDP IPv6.
|
|
122
|
+
*/
|
|
78
123
|
const advertiseUdp6 = () => {
|
|
79
124
|
const ptrRdata = mdnsIpv6.encodeDnsName('matterbridge._http._tcp.local');
|
|
80
|
-
mdnsIpv6.sendResponse('_http._tcp.local', 12
|
|
125
|
+
mdnsIpv6.sendResponse('_http._tcp.local', 12 /* DnsRecordType.PTR */, 1 /* DnsClass.IN */, 120, ptrRdata);
|
|
81
126
|
};
|
|
127
|
+
// Handle Ctrl+C (SIGINT) to stop and log devices
|
|
82
128
|
process.on('SIGINT', () => {
|
|
83
129
|
cleanupAndLogAndExit();
|
|
84
130
|
});
|
|
@@ -116,5 +162,24 @@ Examples:
|
|
|
116
162
|
});
|
|
117
163
|
setTimeout(() => {
|
|
118
164
|
cleanupAndLogAndExit();
|
|
119
|
-
}, 600000);
|
|
165
|
+
}, 600000); // 10 minutes timeout to exit if no activity
|
|
120
166
|
}
|
|
167
|
+
/*
|
|
168
|
+
avahi-browse -pr _matterc._udp for advertise
|
|
169
|
+
avahi-browse -pr _matter._tcp for query
|
|
170
|
+
|
|
171
|
+
avahi-browse -pr _matterc._udp | sed 's/^/[commissioner] /' &
|
|
172
|
+
avahi-browse -pr _matter._tcp | sed 's/^/[device] /' &
|
|
173
|
+
wait
|
|
174
|
+
|
|
175
|
+
for advertise
|
|
176
|
+
sudo tcpdump -i eth0 -nn -s0 udp port 5353 | grep _matterc._udp
|
|
177
|
+
for query
|
|
178
|
+
sudo tcpdump -i eth0 -nn -s0 udp port 5353 | grep _matter._tcp
|
|
179
|
+
for matterbridge
|
|
180
|
+
sudo tcpdump -i eth0 -nn -s0 udp port 5353 | grep matterbridge._http._tcp.local
|
|
181
|
+
|
|
182
|
+
Example (filter commissioner service on specific Wi-Fi interface):
|
|
183
|
+
mb_mdns --interfaceName "Wi-Fi" --filter _matterc._udp
|
|
184
|
+
*/
|
|
185
|
+
//# sourceMappingURL=mb_mdns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mb_mdns.js","sourceRoot":"","sources":["../../src/dgram/mb_mdns.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description This file contains the class Mdns.
|
|
3
|
+
* @file mdns.ts
|
|
4
|
+
* @author Luca Liguori
|
|
5
|
+
* @created 2025-03-22
|
|
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 dgram from 'node:dgram';
|
|
24
|
+
import { Multicast } from './multicast.js';
|
|
25
|
+
export declare const enum DnsRecordType {
|
|
26
|
+
A = 1,
|
|
27
|
+
NS = 2,
|
|
28
|
+
MD = 3,
|
|
29
|
+
MF = 4,
|
|
30
|
+
CNAME = 5,
|
|
31
|
+
SOA = 6,
|
|
32
|
+
MB = 7,
|
|
33
|
+
MG = 8,
|
|
34
|
+
MR = 9,
|
|
35
|
+
NULL = 10,
|
|
36
|
+
WKS = 11,
|
|
37
|
+
PTR = 12,
|
|
38
|
+
HINFO = 13,
|
|
39
|
+
MINFO = 14,
|
|
40
|
+
MX = 15,
|
|
41
|
+
TXT = 16,
|
|
42
|
+
RP = 17,
|
|
43
|
+
AFSDB = 18,
|
|
44
|
+
X25 = 19,
|
|
45
|
+
ISDN = 20,
|
|
46
|
+
RT = 21,
|
|
47
|
+
NSAP = 22,
|
|
48
|
+
NSAP_PTR = 23,
|
|
49
|
+
SIG = 24,
|
|
50
|
+
KEY = 25,
|
|
51
|
+
PX = 26,
|
|
52
|
+
GPOS = 27,
|
|
53
|
+
AAAA = 28,
|
|
54
|
+
LOC = 29,
|
|
55
|
+
NXT = 30,
|
|
56
|
+
EID = 31,
|
|
57
|
+
NIMLOC = 32,
|
|
58
|
+
SRV = 33,
|
|
59
|
+
ATMA = 34,
|
|
60
|
+
NAPTR = 35,
|
|
61
|
+
KX = 36,
|
|
62
|
+
CERT = 37,
|
|
63
|
+
A6 = 38,
|
|
64
|
+
DNAME = 39,
|
|
65
|
+
SINK = 40,
|
|
66
|
+
OPT = 41,
|
|
67
|
+
APL = 42,
|
|
68
|
+
DS = 43,
|
|
69
|
+
SSHFP = 44,
|
|
70
|
+
IPSECKEY = 45,
|
|
71
|
+
RRSIG = 46,
|
|
72
|
+
NSEC = 47,
|
|
73
|
+
DNSKEY = 48,
|
|
74
|
+
DHCID = 49,
|
|
75
|
+
NSEC3 = 50,
|
|
76
|
+
NSEC3PARAM = 51,
|
|
77
|
+
TLSA = 52,
|
|
78
|
+
SMIMEA = 53,
|
|
79
|
+
HIP = 55,
|
|
80
|
+
NINFO = 56,
|
|
81
|
+
RKEY = 57,
|
|
82
|
+
TALINK = 58,
|
|
83
|
+
CDS = 59,
|
|
84
|
+
CDNSKEY = 60,
|
|
85
|
+
OPENPGPKEY = 61,
|
|
86
|
+
CSYNC = 62,
|
|
87
|
+
ZONEMD = 63,
|
|
88
|
+
SVCB = 64,
|
|
89
|
+
HTTPS = 65,
|
|
90
|
+
SPF = 99,
|
|
91
|
+
UINFO = 100,
|
|
92
|
+
UID = 101,
|
|
93
|
+
GID = 102,
|
|
94
|
+
UNSPEC = 103,
|
|
95
|
+
NID = 104,
|
|
96
|
+
L32 = 105,
|
|
97
|
+
L64 = 106,
|
|
98
|
+
LP = 107,
|
|
99
|
+
EUI48 = 108,
|
|
100
|
+
EUI64 = 109,
|
|
101
|
+
TKEY = 249,
|
|
102
|
+
TSIG = 250,
|
|
103
|
+
IXFR = 251,
|
|
104
|
+
AXFR = 252,
|
|
105
|
+
MAILB = 253,
|
|
106
|
+
MAILA = 254,
|
|
107
|
+
ANY = 255,
|
|
108
|
+
URI = 256,
|
|
109
|
+
CAA = 257,
|
|
110
|
+
AVC = 258,
|
|
111
|
+
DOA = 259,
|
|
112
|
+
AMTRELAY = 260,
|
|
113
|
+
ZONEVERSION = 261,
|
|
114
|
+
TA = 32768,
|
|
115
|
+
DLV = 32769
|
|
116
|
+
}
|
|
117
|
+
export declare const enum DnsClass {
|
|
118
|
+
IN = 1,// Internet
|
|
119
|
+
CH = 3,// Chaos
|
|
120
|
+
HS = 4,// Hesiod
|
|
121
|
+
ANY = 255
|
|
122
|
+
}
|
|
123
|
+
export declare const enum DnsClassFlag {
|
|
124
|
+
FLUSH = 32768,// For answers (resource records)
|
|
125
|
+
QU = 32768
|
|
126
|
+
}
|
|
127
|
+
export interface MdnsMessage {
|
|
128
|
+
id: number;
|
|
129
|
+
qr: number;
|
|
130
|
+
opcode: number;
|
|
131
|
+
aa: boolean;
|
|
132
|
+
tc: boolean;
|
|
133
|
+
rd: boolean;
|
|
134
|
+
ra: boolean;
|
|
135
|
+
z: number;
|
|
136
|
+
rcode: number;
|
|
137
|
+
qdCount: number;
|
|
138
|
+
anCount: number;
|
|
139
|
+
nsCount: number;
|
|
140
|
+
arCount: number;
|
|
141
|
+
questions?: DnsQuestion[];
|
|
142
|
+
answers?: MdnsRecord[];
|
|
143
|
+
authorities?: MdnsRecord[];
|
|
144
|
+
additionals?: MdnsRecord[];
|
|
145
|
+
}
|
|
146
|
+
interface DnsQuestion {
|
|
147
|
+
name: string;
|
|
148
|
+
type: number;
|
|
149
|
+
class: number;
|
|
150
|
+
}
|
|
151
|
+
interface MdnsRecord {
|
|
152
|
+
name: string;
|
|
153
|
+
type: number;
|
|
154
|
+
class: number;
|
|
155
|
+
ttl: number;
|
|
156
|
+
data: string;
|
|
157
|
+
}
|
|
158
|
+
export declare class Mdns extends Multicast {
|
|
159
|
+
deviceQueries: Map<string, {
|
|
160
|
+
rinfo: dgram.RemoteInfo;
|
|
161
|
+
query: MdnsMessage;
|
|
162
|
+
}>;
|
|
163
|
+
deviceResponses: Map<string, {
|
|
164
|
+
rinfo: dgram.RemoteInfo;
|
|
165
|
+
response: MdnsMessage;
|
|
166
|
+
dataPTR?: string;
|
|
167
|
+
}>;
|
|
168
|
+
filters: string[];
|
|
169
|
+
/**
|
|
170
|
+
* Creates an instance of the Mdns class.
|
|
171
|
+
*
|
|
172
|
+
* @param {string} name - The internal name of the mDNS server for the logs.
|
|
173
|
+
* @param {string} multicastAddress - The multicast address for mDNS (i.e. 224.0.0.251 for udp4 or ff02::fb for udp6).
|
|
174
|
+
* @param {number} multicastPort - The port for mDNS (i.e. 5353).
|
|
175
|
+
* @param {('udp4' | 'udp6')} socketType - The type of socket to create (either 'udp4' or 'udp6').
|
|
176
|
+
* @param {boolean} [reuseAddr] - Whether to reuse the address. Defaults to true.
|
|
177
|
+
* @param {string} [interfaceName] - The optional name of the network interface to use.
|
|
178
|
+
* @param {string} [interfaceAddress] - The optional IP address of the network interface to use.
|
|
179
|
+
* @param {string} [outgoingInterfaceAddress] - The address of the outgoing network interface.
|
|
180
|
+
*/
|
|
181
|
+
constructor(name: string, multicastAddress: string, multicastPort: number, socketType: 'udp4' | 'udp6', reuseAddr?: boolean | undefined, interfaceName?: string, interfaceAddress?: string, outgoingInterfaceAddress?: string);
|
|
182
|
+
onQuery(rinfo: dgram.RemoteInfo, _query: MdnsMessage): void;
|
|
183
|
+
onResponse(rinfo: dgram.RemoteInfo, _response: MdnsMessage): void;
|
|
184
|
+
onMessage(msg: Buffer, rinfo: dgram.RemoteInfo): void;
|
|
185
|
+
/**
|
|
186
|
+
* Decodes an mDNS message, including the header, question section, answer section,
|
|
187
|
+
* authority section, and additional section.
|
|
188
|
+
*
|
|
189
|
+
* @param {Buffer} msg - The raw mDNS message buffer.
|
|
190
|
+
* @returns {MdnsMessage} An object representing the decoded mDNS message.
|
|
191
|
+
* @throws {Error} if the message is too short.
|
|
192
|
+
*/
|
|
193
|
+
decodeMdnsMessage(msg: Buffer): MdnsMessage;
|
|
194
|
+
/**
|
|
195
|
+
* Decodes a DNS name from a buffer, handling compression.
|
|
196
|
+
*
|
|
197
|
+
* @param {Buffer} msg - The full mDNS message buffer.
|
|
198
|
+
* @param {number} offset - The offset at which the DNS name starts.
|
|
199
|
+
* @returns {{ name: string; newOffset: number }} An object with the decoded name and the new offset.
|
|
200
|
+
* @throws {Error} if the offset exceeds the buffer length or too many iterations are performed.
|
|
201
|
+
*/
|
|
202
|
+
decodeDnsName(msg: Buffer, offset: number): {
|
|
203
|
+
name: string;
|
|
204
|
+
newOffset: number;
|
|
205
|
+
};
|
|
206
|
+
/**
|
|
207
|
+
* Encodes a domain name into the DNS label format.
|
|
208
|
+
*
|
|
209
|
+
* For example, "example.local" becomes:
|
|
210
|
+
* [7] "example" [5] "local" [0]
|
|
211
|
+
*
|
|
212
|
+
* @param {string} name - The domain name to encode.
|
|
213
|
+
* @returns {Buffer} The encoded domain name as a Buffer.
|
|
214
|
+
*/
|
|
215
|
+
encodeDnsName(name: string): Buffer;
|
|
216
|
+
/**
|
|
217
|
+
* Decodes a DNS resource record.
|
|
218
|
+
*
|
|
219
|
+
* @param {Buffer} msg - The full mDNS message buffer.
|
|
220
|
+
* @param {number} offset - The offset at which the resource record starts.
|
|
221
|
+
* @returns {{ record: MdnsRecord; newOffset: number }} An object containing the decoded record and the new offset.
|
|
222
|
+
*/
|
|
223
|
+
decodeResourceRecord(msg: Buffer, offset: number): {
|
|
224
|
+
record: MdnsRecord;
|
|
225
|
+
newOffset: number;
|
|
226
|
+
};
|
|
227
|
+
/**
|
|
228
|
+
* Sends a DNS query with multiple questions.
|
|
229
|
+
*
|
|
230
|
+
* @param {Array<{ name: string; type: number; class: number; unicastResponse?: boolean }>} questions - Array of questions
|
|
231
|
+
*
|
|
232
|
+
* @remarks
|
|
233
|
+
* Each question should have a name (e.g., "_http._tcp.local"), type (e.g., DnsRecordType.PTR), class (e.g., DnsClass.IN),
|
|
234
|
+
* and an optional unicastResponse flag (this will add the DnsClassFlag.QU flag to the query).
|
|
235
|
+
*/
|
|
236
|
+
sendQuery(questions: {
|
|
237
|
+
name: string;
|
|
238
|
+
type: number;
|
|
239
|
+
class: number;
|
|
240
|
+
unicastResponse?: boolean;
|
|
241
|
+
}[]): void;
|
|
242
|
+
/**
|
|
243
|
+
* Constructs an mDNS response packet and sends it to the multicast address and port.
|
|
244
|
+
*
|
|
245
|
+
* @param {string} name - The domain name being responded to (e.g., "example.local").
|
|
246
|
+
* @param {number} rtype - The response type (e.g., 1 for A, 28 for AAAA, etc.).
|
|
247
|
+
* @param {number} rclass - The response class (typically 1 for IN).
|
|
248
|
+
* @param {number} ttl - The time-to-live for the answer record.
|
|
249
|
+
* @param {Buffer} rdata - The resource data for the response (e.g., 4 bytes for an A record IPv4 address).
|
|
250
|
+
*
|
|
251
|
+
* @example
|
|
252
|
+
* const ptrRdata = mdnsIpv4.encodeDnsName('matterbridge._http._tcp.local');
|
|
253
|
+
* mdnsIpv4.sendResponse('_http._tcp.local', DnsRecordType.PTR, DnsClass.IN, 120, ptrRdata);
|
|
254
|
+
*/
|
|
255
|
+
sendResponse(name: string, rtype: number, rclass: number, ttl: number, rdata: Buffer): void;
|
|
256
|
+
/**
|
|
257
|
+
* Converts a DNS record type numeric value to its string representation.
|
|
258
|
+
*
|
|
259
|
+
* @param {number} type - The numeric DNS record type.
|
|
260
|
+
* @returns {string} The string representation of the record type.
|
|
261
|
+
*/
|
|
262
|
+
dnsTypeToString(type: number): string;
|
|
263
|
+
/**
|
|
264
|
+
* Converts a DNS response class numeric value to its string representation.
|
|
265
|
+
*
|
|
266
|
+
* @param {number} cls - The numeric DNS class.
|
|
267
|
+
* @returns {string} The string representation of the DNS class.
|
|
268
|
+
*/
|
|
269
|
+
dnsResponseClassToString(cls: number): string;
|
|
270
|
+
/**
|
|
271
|
+
* Converts a DNS question class to a human-readable string.
|
|
272
|
+
* Adds support for mDNS QU (unicast-response) bit.
|
|
273
|
+
*
|
|
274
|
+
* @param {number} cls - The numeric question class.
|
|
275
|
+
* @returns {string} The string representation, e.g. "IN|QU"
|
|
276
|
+
*/
|
|
277
|
+
dnsQuestionClassToString(cls: number): string;
|
|
278
|
+
/**
|
|
279
|
+
* Logs the decoded mDNS message header.
|
|
280
|
+
*
|
|
281
|
+
* @param {MdnsMessage} msg - The mDNS message header object.
|
|
282
|
+
*/
|
|
283
|
+
logMdnsMessage(msg: MdnsMessage): void;
|
|
284
|
+
/**
|
|
285
|
+
* Logs the discovered devices from the mDNS queries and responses.
|
|
286
|
+
*/
|
|
287
|
+
logDevices(): void;
|
|
288
|
+
}
|
|
289
|
+
export {};
|
|
290
|
+
//# sourceMappingURL=mdns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mdns.d.ts","sourceRoot":"","sources":["../../src/dgram/mdns.ts"],"names":[],"mappings":"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"}
|