@fastybird/smart-panel-backend 1.1.0-alpha.3 → 1.1.0-alpha.30

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 (412) hide show
  1. package/dist/app.module.js +8 -0
  2. package/dist/app.module.js.map +1 -1
  3. package/dist/common/filters/conflict-exception.filter.d.ts +6 -0
  4. package/dist/common/filters/conflict-exception.filter.js +59 -0
  5. package/dist/common/filters/conflict-exception.filter.js.map +1 -0
  6. package/dist/common/filters/global-error.filter.js +1 -4
  7. package/dist/common/filters/global-error.filter.js.map +1 -1
  8. package/dist/common/filters/global-filters.d.ts +3 -0
  9. package/dist/common/filters/global-filters.js +22 -0
  10. package/dist/common/filters/global-filters.js.map +1 -0
  11. package/dist/common/filters/unprocessable-entity-exception.filter.d.ts +1 -0
  12. package/dist/common/filters/unprocessable-entity-exception.filter.js +15 -3
  13. package/dist/common/filters/unprocessable-entity-exception.filter.js.map +1 -1
  14. package/dist/dataSource.js +1 -0
  15. package/dist/dataSource.js.map +1 -1
  16. package/dist/main.js +2 -7
  17. package/dist/main.js.map +1 -1
  18. package/dist/migrations/1000000000026-AddHardwareInputCategories.d.ts +7 -0
  19. package/dist/migrations/1000000000026-AddHardwareInputCategories.js +364 -0
  20. package/dist/migrations/1000000000026-AddHardwareInputCategories.js.map +1 -0
  21. package/dist/modules/devices/controllers/channels.controller.d.ts +5 -1
  22. package/dist/modules/devices/controllers/channels.controller.js +34 -2
  23. package/dist/modules/devices/controllers/channels.controller.js.map +1 -1
  24. package/dist/modules/devices/controllers/channels.properties.controller.js +21 -4
  25. package/dist/modules/devices/controllers/channels.properties.controller.js.map +1 -1
  26. package/dist/modules/devices/controllers/devices.channels.controller.d.ts +5 -1
  27. package/dist/modules/devices/controllers/devices.channels.controller.js +38 -2
  28. package/dist/modules/devices/controllers/devices.channels.controller.js.map +1 -1
  29. package/dist/modules/devices/controllers/devices.channels.properties.controller.js +21 -4
  30. package/dist/modules/devices/controllers/devices.channels.properties.controller.js.map +1 -1
  31. package/dist/modules/devices/devices.constants.d.ts +6 -0
  32. package/dist/modules/devices/devices.constants.js +6 -0
  33. package/dist/modules/devices/devices.constants.js.map +1 -1
  34. package/dist/modules/devices/devices.module.js +20 -0
  35. package/dist/modules/devices/devices.module.js.map +1 -1
  36. package/dist/modules/devices/devices.openapi.d.ts +3 -1
  37. package/dist/modules/devices/devices.openapi.js +7 -0
  38. package/dist/modules/devices/devices.openapi.js.map +1 -1
  39. package/dist/modules/devices/dto/channel-input-occurrence.dto.d.ts +10 -0
  40. package/dist/modules/devices/dto/channel-input-occurrence.dto.js +99 -0
  41. package/dist/modules/devices/dto/channel-input-occurrence.dto.js.map +1 -0
  42. package/dist/modules/devices/models/channel-input-capabilities.model.d.ts +20 -0
  43. package/dist/modules/devices/models/channel-input-capabilities.model.js +111 -0
  44. package/dist/modules/devices/models/channel-input-capabilities.model.js.map +1 -0
  45. package/dist/modules/devices/models/channel-input-occurrence.model.d.ts +22 -0
  46. package/dist/modules/devices/models/channel-input-occurrence.model.js +154 -0
  47. package/dist/modules/devices/models/channel-input-occurrence.model.js.map +1 -0
  48. package/dist/modules/devices/services/channel-input-deduplication.service.d.ts +17 -0
  49. package/dist/modules/devices/services/channel-input-deduplication.service.js +88 -0
  50. package/dist/modules/devices/services/channel-input-deduplication.service.js.map +1 -0
  51. package/dist/modules/devices/services/channel-input-occurrences.service.d.ts +21 -0
  52. package/dist/modules/devices/services/channel-input-occurrences.service.js +163 -0
  53. package/dist/modules/devices/services/channel-input-occurrences.service.js.map +1 -0
  54. package/dist/modules/devices/services/channels.properties.service.d.ts +31 -3
  55. package/dist/modules/devices/services/channels.properties.service.js +346 -51
  56. package/dist/modules/devices/services/channels.properties.service.js.map +1 -1
  57. package/dist/modules/devices/services/channels.service.js +42 -38
  58. package/dist/modules/devices/services/channels.service.js.map +1 -1
  59. package/dist/modules/devices/services/command-latency-trace-collector.service.d.ts +101 -0
  60. package/dist/modules/devices/services/command-latency-trace-collector.service.js +451 -0
  61. package/dist/modules/devices/services/command-latency-trace-collector.service.js.map +1 -0
  62. package/dist/modules/devices/services/device-structure-lock.service.d.ts +10 -2
  63. package/dist/modules/devices/services/device-structure-lock.service.js +86 -7
  64. package/dist/modules/devices/services/device-structure-lock.service.js.map +1 -1
  65. package/dist/modules/devices/services/devices.service.js +37 -33
  66. package/dist/modules/devices/services/devices.service.js.map +1 -1
  67. package/dist/modules/devices/services/module-reset.service.d.ts +3 -1
  68. package/dist/modules/devices/services/module-reset.service.js +21 -16
  69. package/dist/modules/devices/services/module-reset.service.js.map +1 -1
  70. package/dist/modules/devices/services/property-command-dispatch.service.d.ts +45 -0
  71. package/dist/modules/devices/services/property-command-dispatch.service.js +227 -0
  72. package/dist/modules/devices/services/property-command-dispatch.service.js.map +1 -0
  73. package/dist/modules/devices/services/property-command-window.service.d.ts +71 -0
  74. package/dist/modules/devices/services/property-command-window.service.js +206 -0
  75. package/dist/modules/devices/services/property-command-window.service.js.map +1 -0
  76. package/dist/modules/devices/services/property-command.service.d.ts +20 -3
  77. package/dist/modules/devices/services/property-command.service.js +56 -10
  78. package/dist/modules/devices/services/property-command.service.js.map +1 -1
  79. package/dist/modules/devices/services/property-metadata.service.d.ts +31 -0
  80. package/dist/modules/devices/services/property-metadata.service.js +160 -0
  81. package/dist/modules/devices/services/property-metadata.service.js.map +1 -0
  82. package/dist/modules/devices/services/property-state-coordinator.service.d.ts +4 -0
  83. package/dist/modules/devices/services/property-state-coordinator.service.js +35 -0
  84. package/dist/modules/devices/services/property-state-coordinator.service.js.map +1 -0
  85. package/dist/modules/devices/services/property-value-lock.service.d.ts +3 -1
  86. package/dist/modules/devices/services/property-value-lock.service.js +13 -2
  87. package/dist/modules/devices/services/property-value-lock.service.js.map +1 -1
  88. package/dist/modules/devices/services/property-value.service.d.ts +1 -0
  89. package/dist/modules/devices/services/property-value.service.js +4 -0
  90. package/dist/modules/devices/services/property-value.service.js.map +1 -1
  91. package/dist/modules/devices/utils/schema.utils.js +1 -1
  92. package/dist/modules/devices/utils/schema.utils.js.map +1 -1
  93. package/dist/modules/platform/platforms/raspberry.platform.js +5 -10
  94. package/dist/modules/platform/platforms/raspberry.platform.js.map +1 -1
  95. package/dist/modules/platform/services/platform.service.d.ts +13 -4
  96. package/dist/modules/platform/services/platform.service.js +57 -35
  97. package/dist/modules/platform/services/platform.service.js.map +1 -1
  98. package/dist/modules/remote-access/dto/update-config.dto.js +5 -0
  99. package/dist/modules/remote-access/dto/update-config.dto.js.map +1 -1
  100. package/dist/modules/remote-access/validators/is-remote-access-url.validator.js +5 -2
  101. package/dist/modules/remote-access/validators/is-remote-access-url.validator.js.map +1 -1
  102. package/dist/modules/system/scripts/update-worker.sh +1168 -61
  103. package/dist/modules/system/services/privileged-worker.service.d.ts +13 -0
  104. package/dist/modules/system/services/privileged-worker.service.js +192 -31
  105. package/dist/modules/system/services/privileged-worker.service.js.map +1 -1
  106. package/dist/modules/system/services/system.service.d.ts +2 -0
  107. package/dist/modules/system/services/system.service.js +22 -1
  108. package/dist/modules/system/services/system.service.js.map +1 -1
  109. package/dist/modules/system/services/update-executor.service.d.ts +20 -2
  110. package/dist/modules/system/services/update-executor.service.js +272 -26
  111. package/dist/modules/system/services/update-executor.service.js.map +1 -1
  112. package/dist/modules/websocket/gateway/websocket.gateway.d.ts +4 -1
  113. package/dist/modules/websocket/gateway/websocket.gateway.js +28 -5
  114. package/dist/modules/websocket/gateway/websocket.gateway.js.map +1 -1
  115. package/dist/modules/websocket/services/command-acknowledgement-trace.service.d.ts +143 -0
  116. package/dist/modules/websocket/services/command-acknowledgement-trace.service.js +523 -0
  117. package/dist/modules/websocket/services/command-acknowledgement-trace.service.js.map +1 -0
  118. package/dist/modules/websocket/websocket.module.js +9 -1
  119. package/dist/modules/websocket/websocket.module.js.map +1 -1
  120. package/dist/plugins/devices-home-assistant/devices-home-assistant.openapi.d.ts +2 -2
  121. package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.d.ts +6 -1
  122. package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.js +16 -1
  123. package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.js.map +1 -1
  124. package/dist/plugins/devices-home-assistant/dto/mapping-preview.dto.d.ts +1 -0
  125. package/dist/plugins/devices-home-assistant/dto/mapping-preview.dto.js +11 -0
  126. package/dist/plugins/devices-home-assistant/dto/mapping-preview.dto.js.map +1 -1
  127. package/dist/plugins/devices-home-assistant/mappers/button.entity.mapper.service.d.ts +19 -0
  128. package/dist/plugins/devices-home-assistant/mappers/button.entity.mapper.service.js +51 -0
  129. package/dist/plugins/devices-home-assistant/mappers/button.entity.mapper.service.js.map +1 -0
  130. package/dist/plugins/devices-home-assistant/mappings/definitions/entity-mappings.yaml +56 -7
  131. package/dist/plugins/devices-home-assistant/models/mapping-preview.model.d.ts +1 -0
  132. package/dist/plugins/devices-home-assistant/models/mapping-preview.model.js +11 -0
  133. package/dist/plugins/devices-home-assistant/models/mapping-preview.model.js.map +1 -1
  134. package/dist/plugins/devices-home-assistant/services/device-adoption.service.js +17 -0
  135. package/dist/plugins/devices-home-assistant/services/device-adoption.service.js.map +1 -1
  136. package/dist/plugins/devices-home-assistant/services/home-assistant-raw-event.service.d.ts +27 -0
  137. package/dist/plugins/devices-home-assistant/services/home-assistant-raw-event.service.js +271 -0
  138. package/dist/plugins/devices-home-assistant/services/home-assistant-raw-event.service.js.map +1 -0
  139. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.d.ts +2 -2
  140. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js +33 -14
  141. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js.map +1 -1
  142. package/dist/plugins/devices-home-assistant/services/mapping-preview.service.js +24 -4
  143. package/dist/plugins/devices-home-assistant/services/mapping-preview.service.js.map +1 -1
  144. package/dist/plugins/devices-home-assistant/services/state-changed.event.service.d.ts +4 -1
  145. package/dist/plugins/devices-home-assistant/services/state-changed.event.service.js +84 -5
  146. package/dist/plugins/devices-home-assistant/services/state-changed.event.service.js.map +1 -1
  147. package/dist/plugins/devices-home-assistant/services/wizard.service.js +1 -0
  148. package/dist/plugins/devices-home-assistant/services/wizard.service.js.map +1 -1
  149. package/dist/plugins/devices-home-assistant/utils/ha-event.utils.d.ts +2 -0
  150. package/dist/plugins/devices-home-assistant/utils/ha-event.utils.js +50 -0
  151. package/dist/plugins/devices-home-assistant/utils/ha-event.utils.js.map +1 -0
  152. package/dist/plugins/devices-homekit/listeners/homekit-event.listener.d.ts +4 -1
  153. package/dist/plugins/devices-homekit/listeners/homekit-event.listener.js +39 -4
  154. package/dist/plugins/devices-homekit/listeners/homekit-event.listener.js.map +1 -1
  155. package/dist/plugins/devices-homekit/mappers/base.mapper.js +30 -6
  156. package/dist/plugins/devices-homekit/mappers/base.mapper.js.map +1 -1
  157. package/dist/plugins/devices-homekit/mappers/button.mapper.d.ts +15 -0
  158. package/dist/plugins/devices-homekit/mappers/button.mapper.js +143 -0
  159. package/dist/plugins/devices-homekit/mappers/button.mapper.js.map +1 -0
  160. package/dist/plugins/devices-homekit/mappers/characteristic-write.d.ts +2 -0
  161. package/dist/plugins/devices-homekit/mappers/characteristic-write.js +17 -0
  162. package/dist/plugins/devices-homekit/mappers/characteristic-write.js.map +1 -0
  163. package/dist/plugins/devices-homekit/mappers/homekit-mapper.interface.d.ts +17 -1
  164. package/dist/plugins/devices-homekit/mappers/thermostat-coordinator.d.ts +7 -0
  165. package/dist/plugins/devices-homekit/mappers/thermostat-coordinator.js +96 -84
  166. package/dist/plugins/devices-homekit/mappers/thermostat-coordinator.js.map +1 -1
  167. package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.d.ts +5 -1
  168. package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.js +42 -0
  169. package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.js.map +1 -1
  170. package/dist/plugins/devices-homey/mappings/definitions/channels.yaml +50 -0
  171. package/dist/plugins/devices-homey/mappings/definitions/devices.yaml +18 -0
  172. package/dist/plugins/devices-homey/mappings/definitions/properties.yaml +55 -0
  173. package/dist/plugins/devices-homey/mappings/device-support.js +10 -0
  174. package/dist/plugins/devices-homey/mappings/device-support.js.map +1 -1
  175. package/dist/plugins/devices-homey/mappings/mapping-loader.service.d.ts +1 -0
  176. package/dist/plugins/devices-homey/mappings/mapping-loader.service.js +66 -8
  177. package/dist/plugins/devices-homey/mappings/mapping-loader.service.js.map +1 -1
  178. package/dist/plugins/devices-homey/models/inventory.model.d.ts +2 -1
  179. package/dist/plugins/devices-homey/models/inventory.model.js +1 -0
  180. package/dist/plugins/devices-homey/models/inventory.model.js.map +1 -1
  181. package/dist/plugins/devices-homey/models/mapping-preview.model.d.ts +1 -0
  182. package/dist/plugins/devices-homey/models/mapping-preview.model.js +1 -0
  183. package/dist/plugins/devices-homey/models/mapping-preview.model.js.map +1 -1
  184. package/dist/plugins/devices-homey/services/homey-mapping-preview.service.js +7 -0
  185. package/dist/plugins/devices-homey/services/homey-mapping-preview.service.js.map +1 -1
  186. package/dist/plugins/devices-homey/services/homey-synchronizer.service.d.ts +3 -1
  187. package/dist/plugins/devices-homey/services/homey-synchronizer.service.js +37 -6
  188. package/dist/plugins/devices-homey/services/homey-synchronizer.service.js.map +1 -1
  189. package/dist/plugins/devices-reterminal/services/reterminal-button.service.d.ts +7 -3
  190. package/dist/plugins/devices-reterminal/services/reterminal-button.service.js +63 -17
  191. package/dist/plugins/devices-reterminal/services/reterminal-button.service.js.map +1 -1
  192. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.d.ts +36 -3
  193. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.js +707 -42
  194. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.js.map +1 -1
  195. package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.d.ts +11 -1
  196. package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.js +100 -10
  197. package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.js.map +1 -1
  198. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.constants.js +9 -11
  199. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.constants.js.map +1 -1
  200. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.js +2 -0
  201. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.js.map +1 -1
  202. package/dist/plugins/devices-shelly-ng/mappings/definitions/inputs.yaml +80 -0
  203. package/dist/plugins/devices-shelly-ng/mappings/mapping-loader.service.js +7 -1
  204. package/dist/plugins/devices-shelly-ng/mappings/mapping-loader.service.js.map +1 -1
  205. package/dist/plugins/devices-shelly-ng/mappings/mapping.types.d.ts +6 -3
  206. package/dist/plugins/devices-shelly-ng/mappings/schema/mapping-schema.json +5 -0
  207. package/dist/plugins/devices-shelly-ng/services/device-manager.service.js +153 -8
  208. package/dist/plugins/devices-shelly-ng/services/device-manager.service.js.map +1 -1
  209. package/dist/plugins/devices-shelly-ng/services/poll-placement-diagnostics.service.d.ts +51 -0
  210. package/dist/plugins/devices-shelly-ng/services/poll-placement-diagnostics.service.js +549 -0
  211. package/dist/plugins/devices-shelly-ng/services/poll-placement-diagnostics.service.js.map +1 -0
  212. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.d.ts +14 -2
  213. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.js +134 -35
  214. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.js.map +1 -1
  215. package/dist/plugins/devices-shelly-ng/services/shelly-rpc-client.service.js +3 -0
  216. package/dist/plugins/devices-shelly-ng/services/shelly-rpc-client.service.js.map +1 -1
  217. package/dist/plugins/devices-shelly-ng/services/shelly-ws-server.service.d.ts +1 -0
  218. package/dist/plugins/devices-shelly-ng/services/shelly-ws-server.service.js +14 -4
  219. package/dist/plugins/devices-shelly-ng/services/shelly-ws-server.service.js.map +1 -1
  220. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.constants.d.ts +2 -0
  221. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.constants.js +66 -4
  222. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.constants.js.map +1 -1
  223. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.plugin.js +2 -0
  224. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.plugin.js.map +1 -1
  225. package/dist/plugins/devices-shelly-v1/platforms/shelly-v1.device.platform.js +7 -0
  226. package/dist/plugins/devices-shelly-v1/platforms/shelly-v1.device.platform.js.map +1 -1
  227. package/dist/plugins/devices-shelly-v1/services/device-mapper.service.d.ts +3 -1
  228. package/dist/plugins/devices-shelly-v1/services/device-mapper.service.js +20 -2
  229. package/dist/plugins/devices-shelly-v1/services/device-mapper.service.js.map +1 -1
  230. package/dist/plugins/devices-shelly-v1/services/shelly-v1-input-tracker.service.d.ts +16 -0
  231. package/dist/plugins/devices-shelly-v1/services/shelly-v1-input-tracker.service.js +107 -0
  232. package/dist/plugins/devices-shelly-v1/services/shelly-v1-input-tracker.service.js.map +1 -0
  233. package/dist/plugins/devices-shelly-v1/services/shelly-v1.service.d.ts +7 -1
  234. package/dist/plugins/devices-shelly-v1/services/shelly-v1.service.js +98 -3
  235. package/dist/plugins/devices-shelly-v1/services/shelly-v1.service.js.map +1 -1
  236. package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.d.ts +17 -0
  237. package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.js +205 -0
  238. package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.js.map +1 -0
  239. package/dist/plugins/devices-third-party/devices-third-party.openapi.d.ts +1 -1
  240. package/dist/plugins/devices-third-party/devices-third-party.plugin.js +2 -1
  241. package/dist/plugins/devices-third-party/devices-third-party.plugin.js.map +1 -1
  242. package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.d.ts +5 -0
  243. package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.js +50 -0
  244. package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.js.map +1 -0
  245. package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.d.ts +8 -0
  246. package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.js +81 -0
  247. package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.js.map +1 -0
  248. package/dist/plugins/devices-third-party/platforms/third-party-device.platform.js +19 -4
  249. package/dist/plugins/devices-third-party/platforms/third-party-device.platform.js.map +1 -1
  250. package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.d.ts +2 -0
  251. package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.js +57 -0
  252. package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.js.map +1 -1
  253. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.constants.d.ts +3 -0
  254. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.constants.js +41 -5
  255. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.constants.js.map +1 -1
  256. package/dist/plugins/devices-zigbee2mqtt/interfaces/zigbee2mqtt.interface.d.ts +7 -1
  257. package/dist/plugins/devices-zigbee2mqtt/mappings/config-driven.converter.js +16 -15
  258. package/dist/plugins/devices-zigbee2mqtt/mappings/config-driven.converter.js.map +1 -1
  259. package/dist/plugins/devices-zigbee2mqtt/mappings/definitions/remotes.yaml +505 -74
  260. package/dist/plugins/devices-zigbee2mqtt/mappings/schema/mapping-schema.json +3 -3
  261. package/dist/plugins/devices-zigbee2mqtt/mappings/transformers/transformer.types.d.ts +1 -1
  262. package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.d.ts +8 -2
  263. package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.js +6 -5
  264. package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.js.map +1 -1
  265. package/dist/plugins/devices-zigbee2mqtt/services/device-adoption.service.js +18 -11
  266. package/dist/plugins/devices-zigbee2mqtt/services/device-adoption.service.js.map +1 -1
  267. package/dist/plugins/devices-zigbee2mqtt/services/device-mapper.service.d.ts +9 -3
  268. package/dist/plugins/devices-zigbee2mqtt/services/device-mapper.service.js +166 -3
  269. package/dist/plugins/devices-zigbee2mqtt/services/device-mapper.service.js.map +1 -1
  270. package/dist/plugins/devices-zigbee2mqtt/services/mqtt-client-adapter.service.js +5 -2
  271. package/dist/plugins/devices-zigbee2mqtt/services/mqtt-client-adapter.service.js.map +1 -1
  272. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.d.ts +1 -0
  273. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.js +44 -4
  274. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.js.map +1 -1
  275. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/setup.controller.d.ts +17 -0
  276. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/setup.controller.js +147 -0
  277. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/setup.controller.js.map +1 -0
  278. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/status.controller.d.ts +15 -0
  279. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/status.controller.js +98 -0
  280. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/status.controller.js.map +1 -0
  281. package/dist/plugins/remote-access-cloudflare-tunnel/dto/update-config.dto.d.ts +9 -0
  282. package/dist/plugins/remote-access-cloudflare-tunnel/dto/update-config.dto.js +94 -0
  283. package/dist/plugins/remote-access-cloudflare-tunnel/dto/update-config.dto.js.map +1 -0
  284. package/dist/plugins/remote-access-cloudflare-tunnel/models/config.model.d.ts +9 -0
  285. package/dist/plugins/remote-access-cloudflare-tunnel/models/config.model.js +92 -0
  286. package/dist/plugins/remote-access-cloudflare-tunnel/models/config.model.js.map +1 -0
  287. package/dist/plugins/remote-access-cloudflare-tunnel/models/install.model.d.ts +7 -0
  288. package/dist/plugins/remote-access-cloudflare-tunnel/models/install.model.js +48 -0
  289. package/dist/plugins/remote-access-cloudflare-tunnel/models/install.model.js.map +1 -0
  290. package/dist/plugins/remote-access-cloudflare-tunnel/models/status.model.d.ts +42 -0
  291. package/dist/plugins/remote-access-cloudflare-tunnel/models/status.model.js +352 -0
  292. package/dist/plugins/remote-access-cloudflare-tunnel/models/status.model.js.map +1 -0
  293. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.constants.d.ts +24 -0
  294. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.constants.js +27 -0
  295. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.constants.js.map +1 -0
  296. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.exceptions.d.ts +8 -0
  297. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.exceptions.js +19 -0
  298. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.exceptions.js.map +1 -0
  299. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.openapi.d.ts +4 -0
  300. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.openapi.js +20 -0
  301. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.openapi.js.map +1 -0
  302. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.plugin.d.ts +21 -0
  303. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.plugin.js +135 -0
  304. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.plugin.js.map +1 -0
  305. package/dist/plugins/remote-access-cloudflare-tunnel/scripts/cloudflared-setup.sh +185 -0
  306. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-managed.service.d.ts +82 -0
  307. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-managed.service.js +507 -0
  308. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-managed.service.js.map +1 -0
  309. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-provider.service.d.ts +10 -0
  310. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-provider.service.js +37 -0
  311. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-provider.service.js.map +1 -0
  312. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-setup.service.d.ts +38 -0
  313. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-setup.service.js +147 -0
  314. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-setup.service.js.map +1 -0
  315. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-cli.service.d.ts +15 -0
  316. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-cli.service.js +67 -0
  317. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-cli.service.js.map +1 -0
  318. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-metrics.service.d.ts +8 -0
  319. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-metrics.service.js +46 -0
  320. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-metrics.service.js.map +1 -0
  321. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-process.service.d.ts +27 -0
  322. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-process.service.js +139 -0
  323. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-process.service.js.map +1 -0
  324. package/dist/plugins/remote-access-tailscale/controllers/setup.controller.d.ts +1 -0
  325. package/dist/plugins/remote-access-tailscale/controllers/setup.controller.js +26 -10
  326. package/dist/plugins/remote-access-tailscale/controllers/setup.controller.js.map +1 -1
  327. package/dist/plugins/remote-access-tailscale/controllers/status.controller.d.ts +6 -1
  328. package/dist/plugins/remote-access-tailscale/controllers/status.controller.js +28 -3
  329. package/dist/plugins/remote-access-tailscale/controllers/status.controller.js.map +1 -1
  330. package/dist/plugins/remote-access-tailscale/models/status.model.d.ts +19 -0
  331. package/dist/plugins/remote-access-tailscale/models/status.model.js +158 -1
  332. package/dist/plugins/remote-access-tailscale/models/status.model.js.map +1 -1
  333. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.d.ts +3 -0
  334. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.js +4 -1
  335. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.js.map +1 -1
  336. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.d.ts +13 -0
  337. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.js +27 -0
  338. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.js.map +1 -0
  339. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.d.ts +2 -2
  340. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.js +2 -0
  341. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.js.map +1 -1
  342. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.plugin.js +1 -1
  343. package/dist/plugins/remote-access-tailscale/scripts/tailscale-setup.sh +61 -0
  344. package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.d.ts +9 -0
  345. package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.js +12 -0
  346. package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.js.map +1 -1
  347. package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.d.ts +1 -0
  348. package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.js +27 -2
  349. package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.js.map +1 -1
  350. package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.d.ts +31 -1
  351. package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.js +316 -30
  352. package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.js.map +1 -1
  353. package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.d.ts +8 -3
  354. package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.js +39 -12
  355. package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.js.map +1 -1
  356. package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.d.ts +14 -5
  357. package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.js +51 -16
  358. package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.js.map +1 -1
  359. package/dist/plugins/scenes-local/platforms/local-scene.platform.d.ts +3 -1
  360. package/dist/plugins/scenes-local/platforms/local-scene.platform.js +12 -7
  361. package/dist/plugins/scenes-local/platforms/local-scene.platform.js.map +1 -1
  362. package/dist/plugins/simulator/controllers/simulator.controller.d.ts +8 -2
  363. package/dist/plugins/simulator/controllers/simulator.controller.js +102 -2
  364. package/dist/plugins/simulator/controllers/simulator.controller.js.map +1 -1
  365. package/dist/plugins/simulator/dto/simulate-occurrence.dto.d.ts +12 -0
  366. package/dist/plugins/simulator/dto/simulate-occurrence.dto.js +122 -0
  367. package/dist/plugins/simulator/dto/simulate-occurrence.dto.js.map +1 -0
  368. package/dist/plugins/simulator/models/simulator-response.model.d.ts +12 -0
  369. package/dist/plugins/simulator/models/simulator-response.model.js +84 -1
  370. package/dist/plugins/simulator/models/simulator-response.model.js.map +1 -1
  371. package/dist/plugins/simulator/scenarios/definitions/small-apartment.yaml +78 -0
  372. package/dist/plugins/simulator/services/scenario-executor.service.js +3 -1
  373. package/dist/plugins/simulator/services/scenario-executor.service.js.map +1 -1
  374. package/dist/plugins/simulator/services/simulation.service.js +10 -1
  375. package/dist/plugins/simulator/services/simulation.service.js.map +1 -1
  376. package/dist/plugins/simulator/simulator.openapi.d.ts +3 -2
  377. package/dist/plugins/simulator/simulator.openapi.js +5 -0
  378. package/dist/plugins/simulator/simulator.openapi.js.map +1 -1
  379. package/dist/plugins/simulator/simulators/device-simulator.interface.d.ts +2 -0
  380. package/dist/plugins/simulator/simulators/device-simulator.interface.js +83 -0
  381. package/dist/plugins/simulator/simulators/device-simulator.interface.js.map +1 -1
  382. package/dist/plugins/simulator/simulators/index.d.ts +1 -0
  383. package/dist/plugins/simulator/simulators/index.js +1 -0
  384. package/dist/plugins/simulator/simulators/index.js.map +1 -1
  385. package/dist/plugins/simulator/simulators/input-controller.simulator.d.ts +10 -0
  386. package/dist/plugins/simulator/simulators/input-controller.simulator.js +57 -0
  387. package/dist/plugins/simulator/simulators/input-controller.simulator.js.map +1 -0
  388. package/dist/plugins/simulator/simulators/lighting.simulator.js +1 -0
  389. package/dist/plugins/simulator/simulators/lighting.simulator.js.map +1 -1
  390. package/dist/plugins/spaces-home-control/services/climate-intent.service.d.ts +3 -1
  391. package/dist/plugins/spaces-home-control/services/climate-intent.service.js +6 -3
  392. package/dist/plugins/spaces-home-control/services/climate-intent.service.js.map +1 -1
  393. package/dist/plugins/spaces-home-control/services/covers-intent.service.d.ts +3 -1
  394. package/dist/plugins/spaces-home-control/services/covers-intent.service.js +6 -3
  395. package/dist/plugins/spaces-home-control/services/covers-intent.service.js.map +1 -1
  396. package/dist/plugins/spaces-home-control/services/lighting-intent.service.d.ts +3 -1
  397. package/dist/plugins/spaces-home-control/services/lighting-intent.service.js +7 -4
  398. package/dist/plugins/spaces-home-control/services/lighting-intent.service.js.map +1 -1
  399. package/dist/plugins/spaces-home-control/services/space-media-activity.service.d.ts +3 -1
  400. package/dist/plugins/spaces-home-control/services/space-media-activity.service.js +11 -5
  401. package/dist/plugins/spaces-home-control/services/space-media-activity.service.js.map +1 -1
  402. package/dist/plugins/spaces-home-control/services/space-undo-history.service.d.ts +3 -1
  403. package/dist/plugins/spaces-home-control/services/space-undo-history.service.js +8 -5
  404. package/dist/plugins/spaces-home-control/services/space-undo-history.service.js.map +1 -1
  405. package/dist/spec/channels.d.ts +51 -1
  406. package/dist/spec/channels.js +64 -1
  407. package/dist/spec/channels.js.map +1 -1
  408. package/dist/spec/devices.d.ts +155 -2
  409. package/dist/spec/devices.js +161 -2
  410. package/dist/spec/devices.js.map +1 -1
  411. package/dist/tsconfig.build.tsbuildinfo +1 -1
  412. package/package.json +3 -3
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RemoteAccessCloudflareTunnelPlugin = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const config_1 = require("@nestjs/config");
15
+ const plugins_type_mapper_service_1 = require("../../modules/config/services/plugins-type-mapper.service");
16
+ const extensions_service_1 = require("../../modules/extensions/services/extensions.service");
17
+ const managed_service_manager_service_1 = require("../../modules/extensions/services/managed-service-manager.service");
18
+ const platform_module_1 = require("../../modules/platform/platform.module");
19
+ const remote_access_module_1 = require("../../modules/remote-access/remote-access.module");
20
+ const remote_access_provider_registry_service_1 = require("../../modules/remote-access/services/remote-access-provider-registry.service");
21
+ const api_tag_decorator_1 = require("../../modules/swagger/decorators/api-tag.decorator");
22
+ const swagger_models_registry_service_1 = require("../../modules/swagger/services/swagger-models-registry.service");
23
+ const factory_reset_registry_service_1 = require("../../modules/system/services/factory-reset-registry.service");
24
+ const setup_controller_1 = require("./controllers/setup.controller");
25
+ const status_controller_1 = require("./controllers/status.controller");
26
+ const update_config_dto_1 = require("./dto/update-config.dto");
27
+ const config_model_1 = require("./models/config.model");
28
+ const remote_access_cloudflare_tunnel_constants_1 = require("./remote-access-cloudflare-tunnel.constants");
29
+ const remote_access_cloudflare_tunnel_openapi_1 = require("./remote-access-cloudflare-tunnel.openapi");
30
+ const cloudflare_tunnel_managed_service_1 = require("./services/cloudflare-tunnel-managed.service");
31
+ const cloudflare_tunnel_provider_service_1 = require("./services/cloudflare-tunnel-provider.service");
32
+ const cloudflare_tunnel_setup_service_1 = require("./services/cloudflare-tunnel-setup.service");
33
+ const cloudflared_cli_service_1 = require("./services/cloudflared-cli.service");
34
+ const cloudflared_metrics_service_1 = require("./services/cloudflared-metrics.service");
35
+ const cloudflared_process_service_1 = require("./services/cloudflared-process.service");
36
+ let RemoteAccessCloudflareTunnelPlugin = class RemoteAccessCloudflareTunnelPlugin {
37
+ constructor(pluginsMapperService, swaggerRegistry, extensionsService, managedServiceManager, providerRegistry, factoryResetRegistry, tunnelManagedService, providerService) {
38
+ this.pluginsMapperService = pluginsMapperService;
39
+ this.swaggerRegistry = swaggerRegistry;
40
+ this.extensionsService = extensionsService;
41
+ this.managedServiceManager = managedServiceManager;
42
+ this.providerRegistry = providerRegistry;
43
+ this.factoryResetRegistry = factoryResetRegistry;
44
+ this.tunnelManagedService = tunnelManagedService;
45
+ this.providerService = providerService;
46
+ }
47
+ onModuleInit() {
48
+ this.pluginsMapperService.registerMapping({
49
+ type: remote_access_cloudflare_tunnel_constants_1.REMOTE_ACCESS_CLOUDFLARE_TUNNEL_PLUGIN_NAME,
50
+ class: config_model_1.RemoteAccessCloudflareTunnelPluginConfigModel,
51
+ configDto: update_config_dto_1.UpdateRemoteAccessCloudflareTunnelPluginConfigDto,
52
+ secretFields: [
53
+ {
54
+ path: 'tunnel_token',
55
+ configuredPath: 'tunnel_token_configured',
56
+ inputPaths: ['tunnelToken'],
57
+ },
58
+ ],
59
+ });
60
+ for (const model of remote_access_cloudflare_tunnel_openapi_1.REMOTE_ACCESS_CLOUDFLARE_TUNNEL_PLUGIN_SWAGGER_EXTRA_MODELS) {
61
+ this.swaggerRegistry.register(model);
62
+ }
63
+ this.extensionsService.registerPluginMetadata({
64
+ type: remote_access_cloudflare_tunnel_constants_1.REMOTE_ACCESS_CLOUDFLARE_TUNNEL_PLUGIN_NAME,
65
+ name: 'Cloudflare Tunnel',
66
+ description: 'Publish this installation to the internet through a Cloudflare Tunnel, without opening a port.',
67
+ author: 'FastyBird',
68
+ defaultEnabled: false,
69
+ readme: `# Cloudflare Tunnel
70
+
71
+ > Plugin · by FastyBird · platform: remote-access
72
+
73
+ Publishes this installation to the public internet through a Cloudflare Tunnel: an outbound-only, encrypted connection from this device to the Cloudflare edge. Once a tunnel token is configured, the admin UI is reachable at your own hostname over HTTPS — no port forwarding, no public IP address, and no inbound firewall rule required.
74
+
75
+ ## What you get
76
+
77
+ - A public HTTPS hostname of your choosing (e.g. \`panel.example.com\`), backed by Cloudflare's own TLS certificate
78
+ - The tunnel connector managed entirely from the Smart Panel admin UI — install, connect, disconnect and remove, all without a terminal
79
+ - The option to protect the published hostname further with Cloudflare Access, layering an identity check in front of the Smart Panel login
80
+
81
+ ## Requirements
82
+
83
+ - \`raspberry\` or \`generic\` platform with systemd and the existing sudoers allowlist (Docker and the Home Assistant add-on are not supported — see the docs for alternatives)
84
+ - A tunnel already created in the Cloudflare Zero Trust dashboard, and its token pasted into the setup wizard here
85
+
86
+ ## Security
87
+
88
+ Once connected, this installation is reachable from the public internet through the published hostname; only the Smart Panel login protects it unless you also configure Cloudflare Access. Review who else has access to the account before publishing sensitive installations.
89
+
90
+ ## Configuration
91
+
92
+ | Option | Description | Default |
93
+ |--------|-------------|---------|
94
+ | \`public_hostname\` | Public hostname the tunnel publishes, e.g. \`panel.example.com\` | — |
95
+ | \`protocol\` | Protocol cloudflared uses to connect to the Cloudflare edge | \`auto\` |
96
+ | \`tunnel_token\` | Tunnel token from the Cloudflare Zero Trust dashboard | — |`,
97
+ links: {
98
+ documentation: 'https://smart-panel.fastybird.com/docs',
99
+ repository: 'https://github.com/FastyBird/smart-panel',
100
+ },
101
+ });
102
+ this.providerRegistry.register(this.providerService);
103
+ this.managedServiceManager.register(this.tunnelManagedService);
104
+ this.factoryResetRegistry.register(remote_access_cloudflare_tunnel_constants_1.REMOTE_ACCESS_CLOUDFLARE_TUNNEL_PLUGIN_NAME, () => this.tunnelManagedService.factoryReset(), 90);
105
+ }
106
+ };
107
+ exports.RemoteAccessCloudflareTunnelPlugin = RemoteAccessCloudflareTunnelPlugin;
108
+ exports.RemoteAccessCloudflareTunnelPlugin = RemoteAccessCloudflareTunnelPlugin = __decorate([
109
+ (0, api_tag_decorator_1.ApiTag)({
110
+ tagName: remote_access_cloudflare_tunnel_constants_1.REMOTE_ACCESS_CLOUDFLARE_TUNNEL_PLUGIN_NAME,
111
+ displayName: remote_access_cloudflare_tunnel_constants_1.REMOTE_ACCESS_CLOUDFLARE_TUNNEL_PLUGIN_API_TAG_NAME,
112
+ description: remote_access_cloudflare_tunnel_constants_1.REMOTE_ACCESS_CLOUDFLARE_TUNNEL_PLUGIN_API_TAG_DESCRIPTION,
113
+ }),
114
+ (0, common_1.Module)({
115
+ imports: [remote_access_module_1.RemoteAccessModule, platform_module_1.PlatformModule, config_1.ConfigModule],
116
+ controllers: [status_controller_1.StatusController, setup_controller_1.SetupController],
117
+ providers: [
118
+ cloudflared_cli_service_1.CloudflaredCliService,
119
+ cloudflared_process_service_1.CloudflaredProcessService,
120
+ cloudflared_metrics_service_1.CloudflaredMetricsService,
121
+ cloudflare_tunnel_managed_service_1.CloudflareTunnelManagedService,
122
+ cloudflare_tunnel_provider_service_1.CloudflareTunnelProviderService,
123
+ cloudflare_tunnel_setup_service_1.CloudflareTunnelSetupService,
124
+ ],
125
+ }),
126
+ __metadata("design:paramtypes", [plugins_type_mapper_service_1.PluginsTypeMapperService,
127
+ swagger_models_registry_service_1.SwaggerModelsRegistryService,
128
+ extensions_service_1.ExtensionsService,
129
+ managed_service_manager_service_1.ManagedServiceManagerService,
130
+ remote_access_provider_registry_service_1.RemoteAccessProviderRegistryService,
131
+ factory_reset_registry_service_1.FactoryResetRegistryService,
132
+ cloudflare_tunnel_managed_service_1.CloudflareTunnelManagedService,
133
+ cloudflare_tunnel_provider_service_1.CloudflareTunnelProviderService])
134
+ ], RemoteAccessCloudflareTunnelPlugin);
135
+ //# sourceMappingURL=remote-access-cloudflare-tunnel.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-access-cloudflare-tunnel.plugin.js","sourceRoot":"","sources":["../../../src/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAsD;AACtD,2CAAkE;AAElE,2GAAqG;AACrG,6FAAyF;AACzF,uHAAiH;AACjH,4EAAwE;AACxE,2FAAsF;AACtF,0IAAmI;AACnI,0FAA4E;AAC5E,oHAA8G;AAC9G,iHAA2G;AAE3G,qEAAiE;AACjE,uEAAmE;AACnE,+DAA4F;AAC5F,wDAAsF;AACtF,2GAIqD;AACrD,uGAAwH;AACxH,oGAA8F;AAC9F,sGAAgG;AAChG,gGAA0F;AAC1F,gFAA2E;AAC3E,wFAAmF;AACnF,wFAAmF;AAmB5E,IAAM,kCAAkC,GAAxC,MAAM,kCAAkC;IAC9C,YACkB,oBAA8C,EAC9C,eAA6C,EAC7C,iBAAoC,EACpC,qBAAmD,EACnD,gBAAqD,EACrD,oBAAiD,EACjD,oBAAoD,EACpD,eAAgD;QAPhD,yBAAoB,GAApB,oBAAoB,CAA0B;QAC9C,oBAAe,GAAf,eAAe,CAA8B;QAC7C,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,0BAAqB,GAArB,qBAAqB,CAA8B;QACnD,qBAAgB,GAAhB,gBAAgB,CAAqC;QACrD,yBAAoB,GAApB,oBAAoB,CAA6B;QACjD,yBAAoB,GAApB,oBAAoB,CAAgC;QACpD,oBAAe,GAAf,eAAe,CAAiC;IAC/D,CAAC;IAEJ,YAAY;QACX,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAGvC;YACD,IAAI,EAAE,uFAA2C;YACjD,KAAK,EAAE,4DAA6C;YACpD,SAAS,EAAE,qEAAiD;YAC5D,YAAY,EAAE;gBACb;oBACC,IAAI,EAAE,cAAc;oBACpB,cAAc,EAAE,yBAAyB;oBACzC,UAAU,EAAE,CAAC,aAAa,CAAC;iBAC3B;aACD;SACD,CAAC,CAAC;QAEH,KAAK,MAAM,KAAK,IAAI,qGAA2D,EAAE,CAAC;YACjF,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC;YAC7C,IAAI,EAAE,uFAA2C;YACjD,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,gGAAgG;YAC7G,MAAM,EAAE,WAAW;YACnB,cAAc,EAAE,KAAK;YACrB,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;iFA2BsE;YAC9E,KAAK,EAAE;gBACN,aAAa,EAAE,wCAAwC;gBACvD,UAAU,EAAE,0CAA0C;aACtD;SACD,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAErD,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAE/D,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CACjC,uFAA2C,EAC3C,GAAmD,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,EAC9F,EAAE,CACF,CAAC;IACH,CAAC;CACD,CAAA;AAnFY,gFAAkC;6CAAlC,kCAAkC;IAjB9C,IAAA,0BAAM,EAAC;QACP,OAAO,EAAE,uFAA2C;QACpD,WAAW,EAAE,+FAAmD;QAChE,WAAW,EAAE,sGAA0D;KACvE,CAAC;IACD,IAAA,eAAM,EAAC;QACP,OAAO,EAAE,CAAC,yCAAkB,EAAE,gCAAc,EAAE,qBAAgB,CAAC;QAC/D,WAAW,EAAE,CAAC,oCAAgB,EAAE,kCAAe,CAAC;QAChD,SAAS,EAAE;YACV,+CAAqB;YACrB,uDAAyB;YACzB,uDAAyB;YACzB,kEAA8B;YAC9B,oEAA+B;YAC/B,8DAA4B;SAC5B;KACD,CAAC;qCAGuC,sDAAwB;QAC7B,8DAA4B;QAC1B,sCAAiB;QACb,8DAA4B;QACjC,6EAAmC;QAC/B,4DAA2B;QAC3B,kEAA8B;QACnC,oEAA+B;GATtD,kCAAkC,CAmF9C"}
@@ -0,0 +1,185 @@
1
+ #!/bin/bash
2
+ # Privileged Cloudflare Tunnel setup job, run by PrivilegedWorkerService as
3
+ # `sudo -n systemd-run --scope --unit=smart-panel-remote-access-cloudflare
4
+ # bash cloudflared-setup.sh` (see CloudflareTunnelSetupService.install()).
5
+ # Idempotent: re-running is harmless once the package is already installed.
6
+ #
7
+ # Unlike tailscale-setup.sh, this script has exactly one step: install the
8
+ # `cloudflared` package from the signed vendor apt repository — never a
9
+ # downloaded script piped into a shell. Enabling a daemon and granting an
10
+ # operator are Tailscale-specific: the Cloudflare Tunnel connector itself
11
+ # runs unprivileged as a child process of the backend (D9), never through
12
+ # systemd, so there is nothing else for this privileged job to do.
13
+ #
14
+ # --dry-run prints the commands each step would run instead of running them
15
+ # and always finishes at "complete" with exit 0, regardless of the host OS —
16
+ # it previews the real branching logic without requiring root, apt or a
17
+ # Debian-family host, so it can run from a Jest spec on any platform.
18
+ #
19
+ # --print-plan is a separate, read-only mode for CloudflareTunnelManagedService's
20
+ # D12 remedy builder: it prints one command per line for the detected
21
+ # ID/VERSION_CODENAME from /etc/os-release and executes nothing at all — no
22
+ # status file, no trap. This is what keeps the admin-facing "run this
23
+ # yourself" remedy list from ever drifting out of sync with what the
24
+ # privileged install step above actually runs. An unsupported (non-Debian-family)
25
+ # distribution prints nothing on stdout — the caller's own signal to fall
26
+ # back to a vendor link instead of a command list.
27
+ set -e
28
+ # Without this, `curl ... | tee ...` reports tee's exit status, not curl's —
29
+ # a failed download would be silently treated as success by the `|| { ... }`
30
+ # guards below.
31
+ set -o pipefail
32
+
33
+ STATUS_FILE="${STATUS_FILE:-/var/lib/smart-panel/remote-access-cloudflare-tunnel/cloudflare-tunnel-setup-status.json}"
34
+
35
+ KEYRING_URL="https://pkg.cloudflare.com/cloudflare-main.gpg"
36
+ KEYRING_PATH="/usr/share/keyrings/cloudflare-main.gpg"
37
+ LIST_PATH="/etc/apt/sources.list.d/cloudflared.list"
38
+ LIST_LINE="deb [signed-by=${KEYRING_PATH}] https://pkg.cloudflare.com/cloudflared any main"
39
+
40
+ DRY_RUN=0
41
+ PRINT_PLAN=0
42
+ for arg in "$@"; do
43
+ case "$arg" in
44
+ --dry-run) DRY_RUN=1 ;;
45
+ --print-plan) PRINT_PLAN=1 ;;
46
+ esac
47
+ done
48
+
49
+ # Read-only, side-effect-free: print the plan and exit before this script
50
+ # ever touches STATUS_FILE or registers the cleanup trap below.
51
+ if [ "$PRINT_PLAN" -eq 1 ]; then
52
+ OS_ID=""
53
+
54
+ if [ -f /etc/os-release ]; then
55
+ # shellcheck source=/dev/null
56
+ . /etc/os-release
57
+ OS_ID="${ID:-}"
58
+ fi
59
+
60
+ case "$OS_ID" in
61
+ raspbian | debian | ubuntu)
62
+ # `sudo` sits on the `tee` side, not the whole pipeline - prefixing the
63
+ # entire line would only elevate `curl`/`echo` and leave `tee` unable to
64
+ # write these root-owned paths. The caller (CloudflareTunnelManagedService)
65
+ # only blind-prefixes `sudo` onto lines that do not already contain a pipe.
66
+ echo "curl -fsSL ${KEYRING_URL} | sudo tee ${KEYRING_PATH} >/dev/null"
67
+ echo "echo '${LIST_LINE}' | sudo tee ${LIST_PATH} >/dev/null"
68
+ echo "apt-get update -qq"
69
+ echo "apt-get install -y -qq --no-install-recommends cloudflared"
70
+ ;;
71
+ *)
72
+ # Unsupported distribution: intentionally prints nothing on stdout — the
73
+ # caller's signal to fall back to a vendor link instead of a command
74
+ # list. A note on stderr only, for a human running this script directly.
75
+ echo "unsupported distribution (ID=${OS_ID:-unknown}); install manually: https://pkg.cloudflare.com/index.html" >&2
76
+ ;;
77
+ esac
78
+
79
+ exit 0
80
+ fi
81
+
82
+ # Writes the canonical `{ state, step, message }` status PrivilegedWorkerService
83
+ # expects, via a temp file + rename so a concurrent read never sees a
84
+ # half-written file. printf %s (never direct interpolation into the format
85
+ # string) and the sed escape below keep an unexpected value out of the JSON
86
+ # structure.
87
+ write_status() {
88
+ local state="$1"
89
+ local step="$2"
90
+ local message="${3:-}"
91
+ local tmp_file="${STATUS_FILE}.tmp"
92
+ local safe_message=""
93
+
94
+ if [ -n "$message" ]; then
95
+ safe_message=$(printf '%s' "$message" | tr -d '\000-\037' | sed 's/\\/\\\\/g; s/"/\\"/g')
96
+ fi
97
+
98
+ mkdir -p "$(dirname "$STATUS_FILE")"
99
+
100
+ printf '{\n\t"state": "%s",\n\t"step": "%s",\n\t"message": "%s"\n}\n' \
101
+ "$state" "$step" "$safe_message" >"$tmp_file"
102
+
103
+ mv "$tmp_file" "$STATUS_FILE"
104
+ }
105
+
106
+ # Only fires on an exit this script did not already report itself (a crash,
107
+ # an unset-variable error, an unhandled command failure) — a step that
108
+ # already wrote "failed" leaves that status alone.
109
+ cleanup() {
110
+ local exit_code=$?
111
+
112
+ if [ "$exit_code" -ne 0 ]; then
113
+ if [ -f "$STATUS_FILE" ] && grep -q '"state": "failed"' "$STATUS_FILE" 2>/dev/null; then
114
+ return
115
+ fi
116
+
117
+ write_status "failed" "unknown" "Setup exited unexpectedly with code $exit_code"
118
+ fi
119
+ }
120
+
121
+ trap cleanup EXIT
122
+
123
+ # ──────────────────────────────────────────────────────────────
124
+ # Install the cloudflared package if missing
125
+ # ──────────────────────────────────────────────────────────────
126
+ if command -v cloudflared >/dev/null 2>&1; then
127
+ write_status "running" "install" "cloudflared is already installed"
128
+ else
129
+ write_status "running" "install" "Installing the cloudflared package"
130
+
131
+ OS_ID=""
132
+
133
+ if [ -f /etc/os-release ]; then
134
+ # shellcheck source=/dev/null
135
+ . /etc/os-release
136
+ OS_ID="${ID:-}"
137
+ fi
138
+
139
+ case "$OS_ID" in
140
+ raspbian | debian | ubuntu)
141
+ if [ "$DRY_RUN" -eq 1 ]; then
142
+ echo "[dry-run] curl -fsSL $KEYRING_URL | tee $KEYRING_PATH"
143
+ echo "[dry-run] echo '$LIST_LINE' | tee $LIST_PATH"
144
+ echo "[dry-run] apt-get update -qq"
145
+ echo "[dry-run] apt-get install -y -qq --no-install-recommends cloudflared"
146
+ else
147
+ # Only the signed keyring and the apt source list are downloaded —
148
+ # never a script. apt-get itself verifies every package against
149
+ # this keyring before installing it.
150
+ curl -fsSL "$KEYRING_URL" | tee "$KEYRING_PATH" >/dev/null || {
151
+ write_status "failed" "install" "Failed to download the Cloudflare apt keyring"
152
+ exit 1
153
+ }
154
+ echo "$LIST_LINE" | tee "$LIST_PATH" >/dev/null || {
155
+ write_status "failed" "install" "Failed to write the Cloudflare apt source list"
156
+ exit 1
157
+ }
158
+ apt-get update -qq || {
159
+ write_status "failed" "install" "apt-get update failed"
160
+ exit 1
161
+ }
162
+ apt-get install -y -qq --no-install-recommends cloudflared || {
163
+ write_status "failed" "install" "apt-get install cloudflared failed"
164
+ exit 1
165
+ }
166
+ fi
167
+ ;;
168
+ *)
169
+ if [ "$DRY_RUN" -eq 1 ]; then
170
+ echo "[dry-run] unsupported OS (ID=${OS_ID:-unknown}) — a real run would stop here and report failed/install"
171
+ else
172
+ write_status "failed" "install" "cloudflared must be installed manually: https://pkg.cloudflare.com/index.html"
173
+ exit 1
174
+ fi
175
+ ;;
176
+ esac
177
+ fi
178
+
179
+ # ──────────────────────────────────────────────────────────────
180
+ # Done
181
+ # ──────────────────────────────────────────────────────────────
182
+ write_status "complete" "complete" "Cloudflare Tunnel setup completed"
183
+
184
+ trap - EXIT
185
+ exit 0
@@ -0,0 +1,82 @@
1
+ import { ConfigService as NestConfigService } from '@nestjs/config';
2
+ import { EventEmitter2 } from '@nestjs/event-emitter';
3
+ import { ConfigService } from '../../../modules/config/services/config.service';
4
+ import { BaseManagedExtensionService } from '../../../modules/extensions/services/base-managed-extension.service';
5
+ import { ConfigChangeResult } from '../../../modules/extensions/services/managed-extension-service.interface';
6
+ import { PlatformService } from '../../../modules/platform/services/platform.service';
7
+ import { RemoteAccessProviderStatus } from '../../../modules/remote-access/platforms/remote-access-provider.platform';
8
+ import { RemoteAccessCloudflareTunnelPluginConfigModel } from '../models/config.model';
9
+ import { CloudflaredCliService } from './cloudflared-cli.service';
10
+ import { CloudflaredMetricsService } from './cloudflared-metrics.service';
11
+ import { CloudflaredProcessService } from './cloudflared-process.service';
12
+ export type CloudflareTunnelRequirementCode = 'platform-supported' | 'binary-installed' | 'version-supported' | 'token-configured';
13
+ export interface CloudflareTunnelRequirementRemedy {
14
+ commands: string[];
15
+ note: string | null;
16
+ }
17
+ export interface CloudflareTunnelRequirement {
18
+ code: CloudflareTunnelRequirementCode;
19
+ satisfied: boolean;
20
+ message: string;
21
+ remedy: CloudflareTunnelRequirementRemedy | null;
22
+ }
23
+ export declare function compareCloudflaredVersions(a: string, b: string): number;
24
+ export declare class CloudflareTunnelManagedService extends BaseManagedExtensionService {
25
+ private readonly cliService;
26
+ private readonly processService;
27
+ private readonly metricsService;
28
+ private readonly configService;
29
+ private readonly nestConfigService;
30
+ private readonly platformService;
31
+ private readonly eventEmitter;
32
+ private readonly logger;
33
+ readonly owner: {
34
+ readonly kind: "plugin";
35
+ readonly type: "remote-access-cloudflare-tunnel-plugin";
36
+ };
37
+ readonly serviceId = "tunnel";
38
+ readonly activationPolicy: "owner-enabled";
39
+ private pollTimer;
40
+ private lastStatus;
41
+ private lastError;
42
+ private pluginConfig;
43
+ private requirementsCache;
44
+ private lastKnownVersion;
45
+ constructor(cliService: CloudflaredCliService, processService: CloudflaredProcessService, metricsService: CloudflaredMetricsService, configService: ConfigService, nestConfigService: NestConfigService, platformService: PlatformService, eventEmitter: EventEmitter2);
46
+ start(): Promise<void>;
47
+ stop(): Promise<void>;
48
+ private emitStatus;
49
+ onConfigChanged(): Promise<ConfigChangeResult>;
50
+ isHealthy(): Promise<boolean>;
51
+ factoryReset(): Promise<{
52
+ success: boolean;
53
+ reason?: string;
54
+ }>;
55
+ getRequirements(): CloudflareTunnelRequirement[];
56
+ refreshRequirements(): Promise<CloudflareTunnelRequirement[]>;
57
+ private requirementsSatisfied;
58
+ private evaluateRequirementsLive;
59
+ private unevaluatedRequirement;
60
+ private attachRemedies;
61
+ private finalizeRequirement;
62
+ private buildFixedRemedy;
63
+ private buildInstallRemedy;
64
+ private runSetupScriptPrintPlan;
65
+ private evaluatePlatformSupported;
66
+ private evaluateBinaryAndVersion;
67
+ private evaluateTokenConfigured;
68
+ private firstBlockingRequirement;
69
+ private stateForRequirementCode;
70
+ computeStatus(): Promise<RemoteAccessProviderStatus>;
71
+ private isPollable;
72
+ private schedulePoll;
73
+ private clearPoll;
74
+ private pollTick;
75
+ private hasStatusChanged;
76
+ private buildStatus;
77
+ private buildEndpoints;
78
+ private buildDetails;
79
+ private buildAdvisories;
80
+ private getMetricsAddress;
81
+ getPluginConfig(): RemoteAccessCloudflareTunnelPluginConfigModel;
82
+ }