matterbridge 3.4.5-dev-20251225-742588e → 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.
Files changed (336) hide show
  1. package/CHANGELOG.md +5 -8
  2. package/dist/broadcastServer.d.ts +144 -0
  3. package/dist/broadcastServer.d.ts.map +1 -0
  4. package/dist/broadcastServer.js +117 -0
  5. package/dist/broadcastServer.js.map +1 -0
  6. package/dist/broadcastServerTypes.d.ts +841 -0
  7. package/dist/broadcastServerTypes.d.ts.map +1 -0
  8. package/dist/broadcastServerTypes.js +24 -0
  9. package/dist/broadcastServerTypes.js.map +1 -0
  10. package/dist/cli.d.ts +30 -0
  11. package/dist/cli.d.ts.map +1 -0
  12. package/dist/cli.js +97 -1
  13. package/dist/cli.js.map +1 -0
  14. package/dist/cliEmitter.d.ts +50 -0
  15. package/dist/cliEmitter.d.ts.map +1 -0
  16. package/dist/cliEmitter.js +37 -0
  17. package/dist/cliEmitter.js.map +1 -0
  18. package/dist/cliHistory.d.ts +48 -0
  19. package/dist/cliHistory.d.ts.map +1 -0
  20. package/dist/cliHistory.js +38 -0
  21. package/dist/cliHistory.js.map +1 -0
  22. package/dist/clusters/export.d.ts +2 -0
  23. package/dist/clusters/export.d.ts.map +1 -0
  24. package/dist/clusters/export.js +2 -0
  25. package/dist/clusters/export.js.map +1 -0
  26. package/dist/deviceManager.d.ts +135 -0
  27. package/dist/deviceManager.d.ts.map +1 -0
  28. package/dist/deviceManager.js +113 -1
  29. package/dist/deviceManager.js.map +1 -0
  30. package/dist/devices/airConditioner.d.ts +98 -0
  31. package/dist/devices/airConditioner.d.ts.map +1 -0
  32. package/dist/devices/airConditioner.js +57 -0
  33. package/dist/devices/airConditioner.js.map +1 -0
  34. package/dist/devices/batteryStorage.d.ts +48 -0
  35. package/dist/devices/batteryStorage.d.ts.map +1 -0
  36. package/dist/devices/batteryStorage.js +48 -1
  37. package/dist/devices/batteryStorage.js.map +1 -0
  38. package/dist/devices/cooktop.d.ts +61 -0
  39. package/dist/devices/cooktop.d.ts.map +1 -0
  40. package/dist/devices/cooktop.js +56 -0
  41. package/dist/devices/cooktop.js.map +1 -0
  42. package/dist/devices/dishwasher.d.ts +71 -0
  43. package/dist/devices/dishwasher.d.ts.map +1 -0
  44. package/dist/devices/dishwasher.js +57 -0
  45. package/dist/devices/dishwasher.js.map +1 -0
  46. package/dist/devices/evse.d.ts +76 -0
  47. package/dist/devices/evse.d.ts.map +1 -0
  48. package/dist/devices/evse.js +74 -10
  49. package/dist/devices/evse.js.map +1 -0
  50. package/dist/devices/export.d.ts +17 -0
  51. package/dist/devices/export.d.ts.map +1 -0
  52. package/dist/devices/export.js +5 -0
  53. package/dist/devices/export.js.map +1 -0
  54. package/dist/devices/extractorHood.d.ts +46 -0
  55. package/dist/devices/extractorHood.d.ts.map +1 -0
  56. package/dist/devices/extractorHood.js +43 -0
  57. package/dist/devices/extractorHood.js.map +1 -0
  58. package/dist/devices/heatPump.d.ts +47 -0
  59. package/dist/devices/heatPump.d.ts.map +1 -0
  60. package/dist/devices/heatPump.js +50 -2
  61. package/dist/devices/heatPump.js.map +1 -0
  62. package/dist/devices/laundryDryer.d.ts +67 -0
  63. package/dist/devices/laundryDryer.d.ts.map +1 -0
  64. package/dist/devices/laundryDryer.js +62 -3
  65. package/dist/devices/laundryDryer.js.map +1 -0
  66. package/dist/devices/laundryWasher.d.ts +81 -0
  67. package/dist/devices/laundryWasher.d.ts.map +1 -0
  68. package/dist/devices/laundryWasher.js +70 -4
  69. package/dist/devices/laundryWasher.js.map +1 -0
  70. package/dist/devices/microwaveOven.d.ts +168 -0
  71. package/dist/devices/microwaveOven.d.ts.map +1 -0
  72. package/dist/devices/microwaveOven.js +88 -5
  73. package/dist/devices/microwaveOven.js.map +1 -0
  74. package/dist/devices/oven.d.ts +105 -0
  75. package/dist/devices/oven.d.ts.map +1 -0
  76. package/dist/devices/oven.js +85 -0
  77. package/dist/devices/oven.js.map +1 -0
  78. package/dist/devices/refrigerator.d.ts +118 -0
  79. package/dist/devices/refrigerator.d.ts.map +1 -0
  80. package/dist/devices/refrigerator.js +102 -0
  81. package/dist/devices/refrigerator.js.map +1 -0
  82. package/dist/devices/roboticVacuumCleaner.d.ts +112 -0
  83. package/dist/devices/roboticVacuumCleaner.d.ts.map +1 -0
  84. package/dist/devices/roboticVacuumCleaner.js +100 -9
  85. package/dist/devices/roboticVacuumCleaner.js.map +1 -0
  86. package/dist/devices/solarPower.d.ts +40 -0
  87. package/dist/devices/solarPower.d.ts.map +1 -0
  88. package/dist/devices/solarPower.js +38 -0
  89. package/dist/devices/solarPower.js.map +1 -0
  90. package/dist/devices/speaker.d.ts +87 -0
  91. package/dist/devices/speaker.d.ts.map +1 -0
  92. package/dist/devices/speaker.js +84 -0
  93. package/dist/devices/speaker.js.map +1 -0
  94. package/dist/devices/temperatureControl.d.ts +166 -0
  95. package/dist/devices/temperatureControl.d.ts.map +1 -0
  96. package/dist/devices/temperatureControl.js +24 -3
  97. package/dist/devices/temperatureControl.js.map +1 -0
  98. package/dist/devices/waterHeater.d.ts +111 -0
  99. package/dist/devices/waterHeater.d.ts.map +1 -0
  100. package/dist/devices/waterHeater.js +82 -2
  101. package/dist/devices/waterHeater.js.map +1 -0
  102. package/dist/dgram/coap.d.ts +205 -0
  103. package/dist/dgram/coap.d.ts.map +1 -0
  104. package/dist/dgram/coap.js +126 -13
  105. package/dist/dgram/coap.js.map +1 -0
  106. package/dist/dgram/dgram.d.ts +143 -0
  107. package/dist/dgram/dgram.d.ts.map +1 -0
  108. package/dist/dgram/dgram.js +118 -2
  109. package/dist/dgram/dgram.js.map +1 -0
  110. package/dist/dgram/mb_coap.d.ts +24 -0
  111. package/dist/dgram/mb_coap.d.ts.map +1 -0
  112. package/dist/dgram/mb_coap.js +41 -3
  113. package/dist/dgram/mb_coap.js.map +1 -0
  114. package/dist/dgram/mb_mdns.d.ts +24 -0
  115. package/dist/dgram/mb_mdns.d.ts.map +1 -0
  116. package/dist/dgram/mb_mdns.js +171 -175
  117. package/dist/dgram/mb_mdns.js.map +1 -0
  118. package/dist/dgram/mdns.d.ts +350 -0
  119. package/dist/dgram/mdns.d.ts.map +1 -0
  120. package/dist/dgram/mdns.js +358 -144
  121. package/dist/dgram/mdns.js.map +1 -0
  122. package/dist/dgram/mdnsReflectorClient.d.ts +39 -0
  123. package/dist/dgram/mdnsReflectorClient.d.ts.map +1 -0
  124. package/dist/dgram/mdnsReflectorClient.js +132 -0
  125. package/dist/dgram/mdnsReflectorClient.js.map +1 -0
  126. package/dist/dgram/mdnsReflectorServer.d.ts +54 -0
  127. package/dist/dgram/mdnsReflectorServer.d.ts.map +1 -0
  128. package/dist/dgram/mdnsReflectorServer.js +294 -0
  129. package/dist/dgram/mdnsReflectorServer.js.map +1 -0
  130. package/dist/dgram/mdnsReflectorTypes.d.ts +28 -0
  131. package/dist/dgram/mdnsReflectorTypes.d.ts.map +1 -0
  132. package/dist/dgram/mdnsReflectorTypes.js +28 -0
  133. package/dist/dgram/mdnsReflectorTypes.js.map +1 -0
  134. package/dist/dgram/multicast.d.ts +67 -0
  135. package/dist/dgram/multicast.d.ts.map +1 -0
  136. package/dist/dgram/multicast.js +62 -1
  137. package/dist/dgram/multicast.js.map +1 -0
  138. package/dist/dgram/unicast.d.ts +64 -0
  139. package/dist/dgram/unicast.d.ts.map +1 -0
  140. package/dist/dgram/unicast.js +60 -0
  141. package/dist/dgram/unicast.js.map +1 -0
  142. package/dist/frontend.d.ts +245 -0
  143. package/dist/frontend.d.ts.map +1 -0
  144. package/dist/frontend.js +485 -38
  145. package/dist/frontend.js.map +1 -0
  146. package/dist/frontendTypes.d.ts +529 -0
  147. package/dist/frontendTypes.d.ts.map +1 -0
  148. package/dist/frontendTypes.js +45 -0
  149. package/dist/frontendTypes.js.map +1 -0
  150. package/dist/helpers.d.ts +48 -0
  151. package/dist/helpers.d.ts.map +1 -0
  152. package/dist/helpers.js +53 -0
  153. package/dist/helpers.js.map +1 -0
  154. package/dist/index.d.ts +34 -0
  155. package/dist/index.d.ts.map +1 -0
  156. package/dist/index.js +25 -0
  157. package/dist/index.js.map +1 -0
  158. package/dist/jestutils/export.d.ts +2 -0
  159. package/dist/jestutils/export.d.ts.map +1 -0
  160. package/dist/jestutils/export.js +1 -0
  161. package/dist/jestutils/export.js.map +1 -0
  162. package/dist/jestutils/jestHelpers.d.ts +345 -0
  163. package/dist/jestutils/jestHelpers.d.ts.map +1 -0
  164. package/dist/jestutils/jestHelpers.js +371 -14
  165. package/dist/jestutils/jestHelpers.js.map +1 -0
  166. package/dist/logger/export.d.ts +2 -0
  167. package/dist/logger/export.d.ts.map +1 -0
  168. package/dist/logger/export.js +1 -0
  169. package/dist/logger/export.js.map +1 -0
  170. package/dist/matter/behaviors.d.ts +2 -0
  171. package/dist/matter/behaviors.d.ts.map +1 -0
  172. package/dist/matter/behaviors.js +2 -0
  173. package/dist/matter/behaviors.js.map +1 -0
  174. package/dist/matter/clusters.d.ts +2 -0
  175. package/dist/matter/clusters.d.ts.map +1 -0
  176. package/dist/matter/clusters.js +2 -0
  177. package/dist/matter/clusters.js.map +1 -0
  178. package/dist/matter/devices.d.ts +2 -0
  179. package/dist/matter/devices.d.ts.map +1 -0
  180. package/dist/matter/devices.js +2 -0
  181. package/dist/matter/devices.js.map +1 -0
  182. package/dist/matter/endpoints.d.ts +2 -0
  183. package/dist/matter/endpoints.d.ts.map +1 -0
  184. package/dist/matter/endpoints.js +2 -0
  185. package/dist/matter/endpoints.js.map +1 -0
  186. package/dist/matter/export.d.ts +5 -0
  187. package/dist/matter/export.d.ts.map +1 -0
  188. package/dist/matter/export.js +3 -0
  189. package/dist/matter/export.js.map +1 -0
  190. package/dist/matter/types.d.ts +3 -0
  191. package/dist/matter/types.d.ts.map +1 -0
  192. package/dist/matter/types.js +3 -0
  193. package/dist/matter/types.js.map +1 -0
  194. package/dist/matterNode.d.ts +342 -0
  195. package/dist/matterNode.d.ts.map +1 -0
  196. package/dist/matterNode.js +369 -8
  197. package/dist/matterNode.js.map +1 -0
  198. package/dist/matterbridge.d.ts +505 -0
  199. package/dist/matterbridge.d.ts.map +1 -0
  200. package/dist/matterbridge.js +824 -46
  201. package/dist/matterbridge.js.map +1 -0
  202. package/dist/matterbridgeAccessoryPlatform.d.ts +41 -0
  203. package/dist/matterbridgeAccessoryPlatform.d.ts.map +1 -0
  204. package/dist/matterbridgeAccessoryPlatform.js +38 -0
  205. package/dist/matterbridgeAccessoryPlatform.js.map +1 -0
  206. package/dist/matterbridgeBehaviors.d.ts +2404 -0
  207. package/dist/matterbridgeBehaviors.d.ts.map +1 -0
  208. package/dist/matterbridgeBehaviors.js +68 -5
  209. package/dist/matterbridgeBehaviors.js.map +1 -0
  210. package/dist/matterbridgeDeviceTypes.d.ts +698 -0
  211. package/dist/matterbridgeDeviceTypes.d.ts.map +1 -0
  212. package/dist/matterbridgeDeviceTypes.js +635 -14
  213. package/dist/matterbridgeDeviceTypes.js.map +1 -0
  214. package/dist/matterbridgeDynamicPlatform.d.ts +41 -0
  215. package/dist/matterbridgeDynamicPlatform.d.ts.map +1 -0
  216. package/dist/matterbridgeDynamicPlatform.js +38 -0
  217. package/dist/matterbridgeDynamicPlatform.js.map +1 -0
  218. package/dist/matterbridgeEndpoint.d.ts +1507 -0
  219. package/dist/matterbridgeEndpoint.d.ts.map +1 -0
  220. package/dist/matterbridgeEndpoint.js +1457 -53
  221. package/dist/matterbridgeEndpoint.js.map +1 -0
  222. package/dist/matterbridgeEndpointHelpers.d.ts +787 -0
  223. package/dist/matterbridgeEndpointHelpers.d.ts.map +1 -0
  224. package/dist/matterbridgeEndpointHelpers.js +483 -20
  225. package/dist/matterbridgeEndpointHelpers.js.map +1 -0
  226. package/dist/matterbridgeEndpointTypes.d.ts +166 -0
  227. package/dist/matterbridgeEndpointTypes.d.ts.map +1 -0
  228. package/dist/matterbridgeEndpointTypes.js +25 -0
  229. package/dist/matterbridgeEndpointTypes.js.map +1 -0
  230. package/dist/matterbridgePlatform.d.ts +539 -0
  231. package/dist/matterbridgePlatform.d.ts.map +1 -0
  232. package/dist/matterbridgePlatform.js +451 -1
  233. package/dist/matterbridgePlatform.js.map +1 -0
  234. package/dist/matterbridgeTypes.d.ts +252 -0
  235. package/dist/matterbridgeTypes.d.ts.map +1 -0
  236. package/dist/matterbridgeTypes.js +26 -0
  237. package/dist/matterbridgeTypes.js.map +1 -0
  238. package/dist/pluginManager.d.ts +372 -0
  239. package/dist/pluginManager.d.ts.map +1 -0
  240. package/dist/pluginManager.js +341 -5
  241. package/dist/pluginManager.js.map +1 -0
  242. package/dist/shelly.d.ts +181 -0
  243. package/dist/shelly.d.ts.map +1 -0
  244. package/dist/shelly.js +178 -7
  245. package/dist/shelly.js.map +1 -0
  246. package/dist/storage/export.d.ts +2 -0
  247. package/dist/storage/export.d.ts.map +1 -0
  248. package/dist/storage/export.js +1 -0
  249. package/dist/storage/export.js.map +1 -0
  250. package/dist/update.d.ts +84 -0
  251. package/dist/update.d.ts.map +1 -0
  252. package/dist/update.js +93 -1
  253. package/dist/update.js.map +1 -0
  254. package/dist/utils/colorUtils.d.ts +101 -0
  255. package/dist/utils/colorUtils.d.ts.map +1 -0
  256. package/dist/utils/colorUtils.js +97 -2
  257. package/dist/utils/colorUtils.js.map +1 -0
  258. package/dist/utils/commandLine.d.ts +66 -0
  259. package/dist/utils/commandLine.d.ts.map +1 -0
  260. package/dist/utils/commandLine.js +61 -1
  261. package/dist/utils/commandLine.js.map +1 -0
  262. package/dist/utils/copyDirectory.d.ts +35 -0
  263. package/dist/utils/copyDirectory.d.ts.map +1 -0
  264. package/dist/utils/copyDirectory.js +37 -0
  265. package/dist/utils/copyDirectory.js.map +1 -0
  266. package/dist/utils/createDirectory.d.ts +34 -0
  267. package/dist/utils/createDirectory.d.ts.map +1 -0
  268. package/dist/utils/createDirectory.js +33 -0
  269. package/dist/utils/createDirectory.js.map +1 -0
  270. package/dist/utils/createZip.d.ts +39 -0
  271. package/dist/utils/createZip.d.ts.map +1 -0
  272. package/dist/utils/createZip.js +47 -2
  273. package/dist/utils/createZip.js.map +1 -0
  274. package/dist/utils/deepCopy.d.ts +32 -0
  275. package/dist/utils/deepCopy.d.ts.map +1 -0
  276. package/dist/utils/deepCopy.js +39 -0
  277. package/dist/utils/deepCopy.js.map +1 -0
  278. package/dist/utils/deepEqual.d.ts +54 -0
  279. package/dist/utils/deepEqual.d.ts.map +1 -0
  280. package/dist/utils/deepEqual.js +72 -1
  281. package/dist/utils/deepEqual.js.map +1 -0
  282. package/dist/utils/error.d.ts +45 -0
  283. package/dist/utils/error.d.ts.map +1 -0
  284. package/dist/utils/error.js +42 -0
  285. package/dist/utils/error.js.map +1 -0
  286. package/dist/utils/export.d.ts +13 -0
  287. package/dist/utils/export.d.ts.map +1 -0
  288. package/dist/utils/export.js +1 -0
  289. package/dist/utils/export.js.map +1 -0
  290. package/dist/utils/format.d.ts +53 -0
  291. package/dist/utils/format.d.ts.map +1 -0
  292. package/dist/utils/format.js +49 -0
  293. package/dist/utils/format.js.map +1 -0
  294. package/dist/utils/hex.d.ts +89 -0
  295. package/dist/utils/hex.d.ts.map +1 -0
  296. package/dist/utils/hex.js +124 -0
  297. package/dist/utils/hex.js.map +1 -0
  298. package/dist/utils/inspector.d.ts +87 -0
  299. package/dist/utils/inspector.d.ts.map +1 -0
  300. package/dist/utils/inspector.js +69 -1
  301. package/dist/utils/inspector.js.map +1 -0
  302. package/dist/utils/isvalid.d.ts +103 -0
  303. package/dist/utils/isvalid.d.ts.map +1 -0
  304. package/dist/utils/isvalid.js +101 -0
  305. package/dist/utils/isvalid.js.map +1 -0
  306. package/dist/utils/network.d.ts +117 -0
  307. package/dist/utils/network.d.ts.map +1 -0
  308. package/dist/utils/network.js +103 -5
  309. package/dist/utils/network.js.map +1 -0
  310. package/dist/utils/spawn.d.ts +33 -0
  311. package/dist/utils/spawn.d.ts.map +1 -0
  312. package/dist/utils/spawn.js +71 -1
  313. package/dist/utils/spawn.js.map +1 -0
  314. package/dist/utils/tracker.d.ts +108 -0
  315. package/dist/utils/tracker.d.ts.map +1 -0
  316. package/dist/utils/tracker.js +64 -1
  317. package/dist/utils/tracker.js.map +1 -0
  318. package/dist/utils/wait.d.ts +54 -0
  319. package/dist/utils/wait.d.ts.map +1 -0
  320. package/dist/utils/wait.js +60 -8
  321. package/dist/utils/wait.js.map +1 -0
  322. package/dist/workerGlobalPrefix.d.ts +25 -0
  323. package/dist/workerGlobalPrefix.d.ts.map +1 -0
  324. package/dist/workerGlobalPrefix.js +37 -5
  325. package/dist/workerGlobalPrefix.js.map +1 -0
  326. package/dist/workerTypes.d.ts +52 -0
  327. package/dist/workerTypes.d.ts.map +1 -0
  328. package/dist/workerTypes.js +24 -0
  329. package/dist/workerTypes.js.map +1 -0
  330. package/dist/workers.d.ts +69 -0
  331. package/dist/workers.d.ts.map +1 -0
  332. package/dist/workers.js +68 -4
  333. package/dist/workers.js.map +1 -0
  334. package/npm-shrinkwrap.json +2 -2
  335. package/package.json +2 -1
  336. package/dist/dgram/mMdnsReflector.js +0 -2
@@ -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":"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"}
@@ -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