homebridge-config-ui-x 5.0.0-beta.1 → 5.0.0-beta.100

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 (287) hide show
  1. package/CHANGELOG.md +439 -18
  2. package/CONTRIBUTING.md +5 -4
  3. package/LICENSE +1 -1
  4. package/README.md +6 -8
  5. package/config.schema.json +55 -252
  6. package/dist/bin/fork.js +17 -7
  7. package/dist/bin/fork.js.map +1 -1
  8. package/dist/bin/hb-service.d.ts +2 -2
  9. package/dist/bin/hb-service.js +69 -58
  10. package/dist/bin/hb-service.js.map +1 -1
  11. package/dist/bin/platforms/darwin.js +2 -2
  12. package/dist/bin/platforms/darwin.js.map +1 -1
  13. package/dist/bin/platforms/win32.js +4 -2
  14. package/dist/bin/platforms/win32.js.map +1 -1
  15. package/dist/bin/standalone.js +18 -7
  16. package/dist/bin/standalone.js.map +1 -1
  17. package/dist/core/auth/auth.controller.d.ts +31 -3
  18. package/dist/core/auth/auth.controller.js.map +1 -1
  19. package/dist/core/auth/auth.module.js +1 -1
  20. package/dist/core/auth/auth.module.js.map +1 -1
  21. package/dist/core/auth/auth.service.js +10 -10
  22. package/dist/core/auth/auth.service.js.map +1 -1
  23. package/dist/core/auth/jwt.strategy.d.ts +3 -1
  24. package/dist/core/config/config.service.d.ts +46 -11
  25. package/dist/core/config/config.service.js +57 -20
  26. package/dist/core/config/config.service.js.map +1 -1
  27. package/dist/core/config/config.startup.js +2 -2
  28. package/dist/core/config/config.startup.js.map +1 -1
  29. package/dist/core/homebridge-ipc/homebridge-ipc.service.js +3 -3
  30. package/dist/core/homebridge-ipc/homebridge-ipc.service.js.map +1 -1
  31. package/dist/index.js +6 -67
  32. package/dist/index.js.map +1 -1
  33. package/dist/main.js +2 -1
  34. package/dist/main.js.map +1 -1
  35. package/dist/modules/accessories/accessories.controller.js +5 -5
  36. package/dist/modules/accessories/accessories.controller.js.map +1 -1
  37. package/dist/modules/accessories/accessories.service.js +8 -7
  38. package/dist/modules/accessories/accessories.service.js.map +1 -1
  39. package/dist/modules/backup/backup.controller.js +7 -7
  40. package/dist/modules/backup/backup.controller.js.map +1 -1
  41. package/dist/modules/backup/backup.service.js +19 -79
  42. package/dist/modules/backup/backup.service.js.map +1 -1
  43. package/dist/modules/child-bridges/child-bridges.service.js +0 -7
  44. package/dist/modules/child-bridges/child-bridges.service.js.map +1 -1
  45. package/dist/modules/config-editor/config-editor.controller.d.ts +7 -1
  46. package/dist/modules/config-editor/config-editor.controller.js +36 -8
  47. package/dist/modules/config-editor/config-editor.controller.js.map +1 -1
  48. package/dist/modules/config-editor/config-editor.service.d.ts +5 -1
  49. package/dist/modules/config-editor/config-editor.service.js +132 -69
  50. package/dist/modules/config-editor/config-editor.service.js.map +1 -1
  51. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.d.ts +1 -1
  52. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js +13 -11
  53. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js.map +1 -1
  54. package/dist/modules/log/log.gateway.d.ts +2 -1
  55. package/dist/modules/log/log.gateway.js.map +1 -1
  56. package/dist/modules/log/log.service.js +3 -3
  57. package/dist/modules/log/log.service.js.map +1 -1
  58. package/dist/modules/platform-tools/docker/docker.controller.js +3 -3
  59. package/dist/modules/platform-tools/docker/docker.controller.js.map +1 -1
  60. package/dist/modules/platform-tools/docker/docker.service.js +1 -1
  61. package/dist/modules/platform-tools/docker/docker.service.js.map +1 -1
  62. package/dist/modules/platform-tools/hb-service/hb-service.controller.js +3 -3
  63. package/dist/modules/platform-tools/hb-service/hb-service.controller.js.map +1 -1
  64. package/dist/modules/platform-tools/hb-service/hb-service.service.js +6 -6
  65. package/dist/modules/platform-tools/hb-service/hb-service.service.js.map +1 -1
  66. package/dist/modules/platform-tools/linux/linux.controller.js +2 -2
  67. package/dist/modules/platform-tools/linux/linux.controller.js.map +1 -1
  68. package/dist/modules/platform-tools/linux/linux.service.js +2 -2
  69. package/dist/modules/platform-tools/linux/linux.service.js.map +1 -1
  70. package/dist/modules/platform-tools/terminal/terminal.gateway.d.ts +2 -1
  71. package/dist/modules/platform-tools/terminal/terminal.gateway.js.map +1 -1
  72. package/dist/modules/platform-tools/terminal/terminal.service.js +2 -2
  73. package/dist/modules/platform-tools/terminal/terminal.service.js.map +1 -1
  74. package/dist/modules/plugins/plugins.controller.js +4 -4
  75. package/dist/modules/plugins/plugins.controller.js.map +1 -1
  76. package/dist/modules/plugins/plugins.service.d.ts +7 -1
  77. package/dist/modules/plugins/plugins.service.js +215 -127
  78. package/dist/modules/plugins/plugins.service.js.map +1 -1
  79. package/dist/modules/server/server.controller.d.ts +33 -3
  80. package/dist/modules/server/server.controller.js +162 -20
  81. package/dist/modules/server/server.controller.js.map +1 -1
  82. package/dist/modules/server/server.service.d.ts +35 -6
  83. package/dist/modules/server/server.service.js +265 -66
  84. package/dist/modules/server/server.service.js.map +1 -1
  85. package/dist/modules/status/status.controller.d.ts +0 -1
  86. package/dist/modules/status/status.controller.js +3 -4
  87. package/dist/modules/status/status.controller.js.map +1 -1
  88. package/dist/modules/status/status.gateway.d.ts +1 -1
  89. package/dist/modules/status/status.service.d.ts +1 -1
  90. package/dist/modules/status/status.service.js +25 -41
  91. package/dist/modules/status/status.service.js.map +1 -1
  92. package/dist/modules/users/users.controller.js +7 -7
  93. package/dist/modules/users/users.controller.js.map +1 -1
  94. package/dist/self-check.js +6 -6
  95. package/dist/self-check.js.map +1 -1
  96. package/package.json +50 -44
  97. package/public/3rdpartylicenses.txt +573 -463
  98. package/public/assets/hap-icons/airpurifier.svg +49 -16
  99. package/public/assets/hap-icons/airquality.svg +24 -13
  100. package/public/assets/hap-icons/co-sensor.svg +72 -0
  101. package/public/assets/hap-icons/co2-sensor.svg +72 -0
  102. package/public/assets/hap-icons/contactsensor-closed.svg +35 -2
  103. package/public/assets/hap-icons/contactsensor-open.svg +80 -2
  104. package/public/assets/hap-icons/door-closed.svg +32 -2
  105. package/public/assets/hap-icons/door-open.svg +48 -2
  106. package/public/assets/hap-icons/fan-off.svg +24 -13
  107. package/public/assets/hap-icons/fan-on.svg +24 -13
  108. package/public/assets/hap-icons/garagedoor.svg +24 -13
  109. package/public/assets/hap-icons/humidity.svg +24 -13
  110. package/public/assets/hap-icons/irrigation-system.svg +47 -18
  111. package/public/assets/hap-icons/leaksensor.svg +52 -2
  112. package/public/assets/hap-icons/light.svg +47 -28
  113. package/public/assets/hap-icons/lightbulb.svg +24 -13
  114. package/public/assets/hap-icons/lock-locked.svg +24 -13
  115. package/public/assets/hap-icons/lock-unlocked.svg +24 -13
  116. package/public/assets/hap-icons/motionsensor.svg +100 -2
  117. package/public/assets/hap-icons/occupancysensor.svg +97 -2
  118. package/public/assets/hap-icons/outlet.svg +24 -13
  119. package/public/assets/hap-icons/securitysystem-active.svg +102 -2
  120. package/public/assets/hap-icons/securitysystem-off.svg +68 -2
  121. package/public/assets/hap-icons/smokesensor.svg +42 -9
  122. package/public/assets/hap-icons/speaker.svg +29 -13
  123. package/public/assets/hap-icons/statelessprogrammableswitch.svg +51 -2
  124. package/public/assets/hap-icons/switch.svg +24 -13
  125. package/public/assets/hap-icons/television.svg +15 -4
  126. package/public/assets/hap-icons/temperature.svg +24 -13
  127. package/public/assets/hap-icons/unknown.svg +24 -13
  128. package/public/assets/hap-icons/valve-generic.svg +27 -16
  129. package/public/assets/hap-icons/valve-irrigation.svg +37 -21
  130. package/public/assets/hap-icons/valve-showerhead.svg +52 -0
  131. package/public/assets/hap-icons/valve-waterfaucet.svg +21 -0
  132. package/public/assets/hap-icons/window-closed.svg +85 -2
  133. package/public/assets/hap-icons/window-open.svg +136 -2
  134. package/public/assets/hap-icons/windowcovering-closed.svg +45 -49
  135. package/public/assets/hap-icons/windowcovering-open.svg +40 -44
  136. package/public/assets/homebridge-color-round.svg +36 -1
  137. package/public/assets/homebridge-logo.svg +11 -1
  138. package/public/assets/mask-icon.svg +5 -1
  139. package/public/assets/plugin-ui-utils/ui.js +41 -19
  140. package/public/assets/plugin-ui-utils/ui.js.map +1 -1
  141. package/public/chunk-2E6EOZUJ.js +1 -0
  142. package/public/chunk-2EEZAGZA.js +1 -0
  143. package/public/chunk-2G7GNBIF.js +1 -0
  144. package/public/chunk-3GEFBFMQ.js +1 -0
  145. package/public/chunk-3VYIHHCL.js +1 -0
  146. package/public/chunk-45NQ4GBG.js +1 -0
  147. package/public/chunk-4G7RRMI2.js +1 -0
  148. package/public/chunk-4L2H4MMG.js +29 -0
  149. package/public/chunk-4LX4LX6P.js +1 -0
  150. package/public/chunk-4SLRCK6B.js +2 -0
  151. package/public/chunk-53ILAFUX.js +1 -0
  152. package/public/chunk-5FYL3TBQ.js +1 -0
  153. package/public/chunk-5PN6UJOB.js +1 -0
  154. package/public/chunk-6IOCCVAH.js +1 -0
  155. package/public/chunk-7REMZHOO.js +1 -0
  156. package/public/chunk-AH6LOD34.js +1 -0
  157. package/public/chunk-ALG7CIS3.js +5 -0
  158. package/public/chunk-AQNNOWXC.js +1 -0
  159. package/public/chunk-B4X7IOGK.js +1 -0
  160. package/public/chunk-BALPGJEG.js +1 -0
  161. package/public/chunk-BIRWL4X3.js +1 -0
  162. package/public/chunk-BMCQHGMB.js +1 -0
  163. package/public/chunk-BNYXD34L.js +1 -0
  164. package/public/chunk-BRW7C4BZ.js +1 -0
  165. package/public/chunk-C6HQUAQJ.js +1 -0
  166. package/public/chunk-C6LXQBT3.js +1 -0
  167. package/public/chunk-CG7LPZUJ.js +1 -0
  168. package/public/chunk-CMZBGXBL.js +1 -0
  169. package/public/chunk-CRIZPUI6.js +8 -0
  170. package/public/chunk-DDFZVHUO.js +1 -0
  171. package/public/chunk-DQUBVCJE.js +1 -0
  172. package/public/chunk-EULZTUQA.js +1 -0
  173. package/public/chunk-F6PRUGSN.js +1 -0
  174. package/public/chunk-FD3D3FMF.js +1 -0
  175. package/public/chunk-FJJNRLA7.js +1 -0
  176. package/public/chunk-FSQ4KA4X.js +1 -0
  177. package/public/chunk-FXS7MG4Z.js +1 -0
  178. package/public/chunk-GMY5QOXR.js +7 -0
  179. package/public/chunk-HE2YZMXJ.js +1 -0
  180. package/public/chunk-HOGBMPOF.js +1 -0
  181. package/public/chunk-HOI6GB6V.js +1 -0
  182. package/public/chunk-IOWBVW62.js +2 -0
  183. package/public/chunk-LCYRJQ4W.js +1 -0
  184. package/public/chunk-M2U64RPA.js +1 -0
  185. package/public/chunk-MAXJEMB2.js +1 -0
  186. package/public/chunk-MGEQZI52.js +1 -0
  187. package/public/chunk-MTSNBCD6.js +1 -0
  188. package/public/chunk-O752QW52.js +8 -0
  189. package/public/chunk-OHSRCO5R.js +1 -0
  190. package/public/chunk-OTJCSRHZ.js +1 -0
  191. package/public/chunk-PAQIQJ5I.js +1 -0
  192. package/public/chunk-PODF4FUD.js +1 -0
  193. package/public/chunk-PYWNQR2G.js +1 -0
  194. package/public/chunk-Q5OGHYTC.js +1 -0
  195. package/public/chunk-QIH36FRX.js +1 -0
  196. package/public/chunk-QMB5XE4Y.js +1 -0
  197. package/public/chunk-R3VPSO5X.js +7 -0
  198. package/public/chunk-RGUTUTJY.js +20 -0
  199. package/public/chunk-RJAFS3B2.js +1 -0
  200. package/public/chunk-RNHMRKPJ.js +8 -0
  201. package/public/chunk-SHP2ASKV.js +5 -0
  202. package/public/chunk-SMR5XBWZ.js +1 -0
  203. package/public/chunk-T5VLECCH.js +23 -0
  204. package/public/chunk-TFSUXAYX.js +1 -0
  205. package/public/chunk-UCO62FWN.js +1 -0
  206. package/public/chunk-UTAVUGTT.js +14 -0
  207. package/public/chunk-UVOJ3BF7.js +1 -0
  208. package/public/chunk-UVQC4EUO.js +6 -0
  209. package/public/chunk-VECPBVSQ.js +1 -0
  210. package/public/{chunk-GNQUXZMN.js → chunk-VHTQTL2S.js} +1 -1
  211. package/public/chunk-VJEUBTTK.js +1 -0
  212. package/public/chunk-VLX322GM.js +1 -0
  213. package/public/chunk-VUYAK52W.js +2 -0
  214. package/public/{chunk-6QEO3BTW.js → chunk-WAA5KWIN.js} +14 -14
  215. package/public/chunk-WGYMALW2.js +1 -0
  216. package/public/chunk-WU2EPT6Y.js +1 -0
  217. package/public/chunk-WUMR3VEV.js +1 -0
  218. package/public/chunk-WZZWFCHX.js +4 -0
  219. package/public/chunk-XB7KM2X2.js +1 -0
  220. package/public/chunk-YJ2ZKKJQ.js +1 -0
  221. package/public/index.html +2 -2
  222. package/public/main-BQGRDRA6.js +1 -0
  223. package/public/media/fa-brands-400-Q3XCMWHQ.woff2 +0 -0
  224. package/public/media/{fa-brands-400-CNBICIQT.ttf → fa-brands-400-R2XQZCET.ttf} +0 -0
  225. package/public/media/fa-regular-400-QSNYFYRT.woff2 +0 -0
  226. package/public/media/{fa-regular-400-2FI4ICQD.ttf → fa-regular-400-XUOPSR7E.ttf} +0 -0
  227. package/public/media/fa-solid-900-5ZUYHGA7.woff2 +0 -0
  228. package/public/media/{fa-solid-900-XVWCCN5V.ttf → fa-solid-900-PJNKLK6W.ttf} +0 -0
  229. package/public/polyfills-GCAZ7JAV.js +2 -0
  230. package/public/prerendered-routes.json +3 -0
  231. package/public/styles-PKR3EGHP.css +1 -0
  232. package/scripts/upgrade-install-plugin.sh +1 -1
  233. package/public/chunk-3KSUXL3K.js +0 -20
  234. package/public/chunk-422JXES4.js +0 -23
  235. package/public/chunk-4R6MSI5I.js +0 -14
  236. package/public/chunk-5UYN5OWH.js +0 -1
  237. package/public/chunk-7564WJJL.js +0 -1
  238. package/public/chunk-7R6JSPNH.js +0 -1
  239. package/public/chunk-B6C32ZRK.js +0 -1
  240. package/public/chunk-B6G7GTDI.js +0 -1
  241. package/public/chunk-BQLALGZ5.js +0 -4
  242. package/public/chunk-BROUJ7PT.js +0 -1
  243. package/public/chunk-C4OONTE3.js +0 -1
  244. package/public/chunk-DOLYKWZH.js +0 -1
  245. package/public/chunk-DRWF7R4E.js +0 -1
  246. package/public/chunk-F22FMU37.js +0 -1
  247. package/public/chunk-FBP5C7VG.js +0 -1
  248. package/public/chunk-FPOZAQLC.js +0 -5
  249. package/public/chunk-IGUSDGD6.js +0 -8
  250. package/public/chunk-JM7QCDMZ.js +0 -1
  251. package/public/chunk-K3YXRBTH.js +0 -1
  252. package/public/chunk-K6TZNXIW.js +0 -1
  253. package/public/chunk-LS7T2AVU.js +0 -8
  254. package/public/chunk-NZPTOWFC.js +0 -20
  255. package/public/chunk-RID7V4NP.js +0 -1
  256. package/public/chunk-RIWBPQF3.js +0 -1
  257. package/public/chunk-S4SOWUAW.js +0 -1
  258. package/public/chunk-SJTXTMYT.js +0 -2
  259. package/public/chunk-T5QVI4H2.js +0 -1
  260. package/public/chunk-TBJQ2Y3M.js +0 -1
  261. package/public/chunk-THFLPY67.js +0 -7
  262. package/public/chunk-TS27NWVA.js +0 -20
  263. package/public/chunk-VROGSJLF.js +0 -1
  264. package/public/chunk-VVILZWTF.js +0 -1
  265. package/public/chunk-WCDFKYP6.js +0 -5
  266. package/public/chunk-WCQIGCXO.js +0 -1
  267. package/public/chunk-Z47RP4BH.js +0 -1
  268. package/public/chunk-ZEONO5N6.js +0 -1
  269. package/public/main-VTRWQ63R.js +0 -6
  270. package/public/media/01-RQ3S2L53.png +0 -0
  271. package/public/media/02-VNCG2I2A.png +0 -0
  272. package/public/media/03-HI42L4ZG.png +0 -0
  273. package/public/media/04-FJLL55LZ.png +0 -0
  274. package/public/media/05-V3EO6SPT.png +0 -0
  275. package/public/media/06-EOJZCQZN.png +0 -0
  276. package/public/media/07-KMKB5PBD.png +0 -0
  277. package/public/media/08-UQJRF6B2.png +0 -0
  278. package/public/media/09-2DJQFRHH.png +0 -0
  279. package/public/media/arrow_left-CQT7FZM7.svg +0 -4
  280. package/public/media/arrow_right-SBUDRR2G.svg +0 -4
  281. package/public/media/fa-brands-400-MDS4TU4L.woff2 +0 -0
  282. package/public/media/fa-regular-400-N56QV3DR.woff2 +0 -0
  283. package/public/media/fa-solid-900-Z3HFQTXF.woff2 +0 -0
  284. package/public/polyfills-CE2SNIQF.js +0 -2
  285. package/public/scripts-6GVLYD7F.js +0 -62
  286. package/public/styles-7ETWN6DQ.css +0 -1
  287. /package/public/assets/{bootstrap-4 → bootstrap-5}/cssframework/assets.json +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.controller.js","sourceRoot":"","sources":["../../../src/modules/server/server.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.controller.js","sourceRoot":"","sources":["../../../src/modules/server/server.controller.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,16 @@
1
+ import type { MultipartFile } from '@fastify/multipart';
1
2
  import type { Systeminformation } from 'systeminformation';
2
3
  import { ServiceUnavailableException } from '@nestjs/common';
3
4
  import { ConfigService } from '../../core/config/config.service';
4
5
  import { HomebridgeIpcService } from '../../core/homebridge-ipc/homebridge-ipc.service';
5
6
  import { Logger } from '../../core/logger/logger.service';
6
7
  import { AccessoriesService } from '../accessories/accessories.service';
7
- import { ChildBridgesService } from '../child-bridges/child-bridges.service';
8
8
  import { ConfigEditorService } from '../config-editor/config-editor.service';
9
9
  import { HomebridgeMdnsSettingDto } from './server.dto';
10
10
  export declare class ServerService {
11
11
  private readonly configService;
12
12
  private readonly configEditorService;
13
13
  private readonly accessoriesService;
14
- private readonly childBridgesService;
15
14
  private readonly homebridgeIpcService;
16
15
  private readonly logger;
17
16
  private serverServiceCache;
@@ -19,7 +18,9 @@ export declare class ServerService {
19
18
  private readonly accessoryInfoPath;
20
19
  setupCode: string | null;
21
20
  paired: boolean;
22
- constructor(configService: ConfigService, configEditorService: ConfigEditorService, accessoriesService: AccessoriesService, childBridgesService: ChildBridgesService, homebridgeIpcService: HomebridgeIpcService, logger: Logger);
21
+ constructor(configService: ConfigService, configEditorService: ConfigEditorService, accessoriesService: AccessoriesService, homebridgeIpcService: HomebridgeIpcService, logger: Logger);
22
+ private deleteSingleDeviceAccessories;
23
+ private deleteSingleDevicePairing;
23
24
  restartServer(): Promise<{
24
25
  ok: boolean;
25
26
  command: string;
@@ -27,14 +28,31 @@ export declare class ServerService {
27
28
  }>;
28
29
  resetHomebridgeAccessory(): Promise<void>;
29
30
  getDevicePairings(): Promise<any[]>;
30
- getDevicePairingById(deviceId: string): Promise<any>;
31
- deleteDevicePairing(id: string): Promise<void>;
31
+ getDevicePairingById(deviceId: string, configFile?: any): Promise<any>;
32
+ deleteDevicePairing(id: string, resetPairingInfo: boolean): Promise<{
33
+ ok: boolean;
34
+ }>;
35
+ deleteDevicesPairing(bridges: {
36
+ id: string;
37
+ resetPairingInfo: boolean;
38
+ }[]): Promise<{
39
+ ok: boolean;
40
+ }>;
32
41
  deleteDeviceAccessories(id: string): Promise<void>;
42
+ deleteDevicesAccessories(bridges: {
43
+ id: string;
44
+ }[]): Promise<void>;
33
45
  getCachedAccessories(): Promise<any[]>;
34
46
  deleteCachedAccessory(uuid: string, cacheFile: string): Promise<{
35
47
  ok: boolean;
36
48
  }>;
37
- resetCachedAccessories(): Promise<{
49
+ deleteCachedAccessories(accessories: {
50
+ uuid: string;
51
+ cacheFile: string;
52
+ }[]): Promise<{
53
+ ok: boolean;
54
+ }>;
55
+ deleteAllCachedAccessories(): Promise<{
38
56
  ok: boolean;
39
57
  }>;
40
58
  getSetupCode(): Promise<string | null>;
@@ -56,6 +74,17 @@ export declare class ServerService {
56
74
  getHomebridgePort(): Promise<{
57
75
  port: number;
58
76
  }>;
77
+ getUsablePorts(): Promise<{
78
+ start?: number;
79
+ end?: number;
80
+ }>;
81
+ setHomebridgeName(name: string): Promise<void>;
59
82
  setHomebridgePort(port: number): Promise<void>;
83
+ setUsablePorts(value: {
84
+ start?: number;
85
+ end?: number;
86
+ }): Promise<void>;
60
87
  private nodeVersionChanged;
88
+ uploadWallpaper(data: MultipartFile): Promise<void>;
89
+ deleteWallpaper(): Promise<void>;
61
90
  }
@@ -13,12 +13,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.ServerService = void 0;
16
+ const node_buffer_1 = require("node:buffer");
16
17
  const node_child_process_1 = require("node:child_process");
17
18
  const node_path_1 = require("node:path");
18
19
  const node_process_1 = __importDefault(require("node:process"));
20
+ const node_stream_1 = require("node:stream");
21
+ const node_util_1 = require("node:util");
19
22
  const hap_types_1 = require("@homebridge/hap-client/dist/hap-types");
20
23
  const common_1 = require("@nestjs/common");
21
- const buffer_shims_1 = require("buffer-shims");
22
24
  const fs_extra_1 = require("fs-extra");
23
25
  const node_cache_1 = __importDefault(require("node-cache"));
24
26
  const systeminformation_1 = require("systeminformation");
@@ -27,14 +29,13 @@ const config_service_1 = require("../../core/config/config.service");
27
29
  const homebridge_ipc_service_1 = require("../../core/homebridge-ipc/homebridge-ipc.service");
28
30
  const logger_service_1 = require("../../core/logger/logger.service");
29
31
  const accessories_service_1 = require("../accessories/accessories.service");
30
- const child_bridges_service_1 = require("../child-bridges/child-bridges.service");
31
32
  const config_editor_service_1 = require("../config-editor/config-editor.service");
33
+ const pump = (0, node_util_1.promisify)(node_stream_1.pipeline);
32
34
  let ServerService = class ServerService {
33
- constructor(configService, configEditorService, accessoriesService, childBridgesService, homebridgeIpcService, logger) {
35
+ constructor(configService, configEditorService, accessoriesService, homebridgeIpcService, logger) {
34
36
  this.configService = configService;
35
37
  this.configEditorService = configEditorService;
36
38
  this.accessoriesService = accessoriesService;
37
- this.childBridgesService = childBridgesService;
38
39
  this.homebridgeIpcService = homebridgeIpcService;
39
40
  this.logger = logger;
40
41
  this.serverServiceCache = new node_cache_1.default({ stdTTL: 300 });
@@ -43,20 +44,73 @@ let ServerService = class ServerService {
43
44
  this.accessoryId = this.configService.homebridgeConfig.bridge.username.split(':').join('');
44
45
  this.accessoryInfoPath = (0, node_path_1.join)(this.configService.storagePath, 'persist', `AccessoryInfo.${this.accessoryId}.json`);
45
46
  }
47
+ async deleteSingleDeviceAccessories(id, cachedAccessoriesDir) {
48
+ const cachedAccessories = (0, node_path_1.join)(cachedAccessoriesDir, `cachedAccessories.${id}`);
49
+ const cachedAccessoriesBackup = (0, node_path_1.join)(cachedAccessoriesDir, `.cachedAccessories.${id}.bak`);
50
+ if (await (0, fs_extra_1.pathExists)(cachedAccessories)) {
51
+ await (0, fs_extra_1.unlink)(cachedAccessories);
52
+ this.logger.warn(`Bridge ${id} accessory removal: removed ${cachedAccessories}.`);
53
+ }
54
+ if (await (0, fs_extra_1.pathExists)(cachedAccessoriesBackup)) {
55
+ await (0, fs_extra_1.unlink)(cachedAccessoriesBackup);
56
+ this.logger.warn(`Bridge ${id} accessory removal: removed ${cachedAccessoriesBackup}.`);
57
+ }
58
+ }
59
+ async deleteSingleDevicePairing(id, resetPairingInfo) {
60
+ const persistPath = (0, node_path_1.join)(this.configService.storagePath, 'persist');
61
+ const accessoryInfo = (0, node_path_1.join)(persistPath, `AccessoryInfo.${id}.json`);
62
+ const identifierCache = (0, node_path_1.join)(persistPath, `IdentifierCache.${id}.json`);
63
+ if (resetPairingInfo) {
64
+ try {
65
+ const configFile = await this.configEditorService.getConfigFile();
66
+ const username = id.match(/.{1,2}/g).join(':');
67
+ const pluginBlocks = configFile.accessories
68
+ .concat(configFile.platforms)
69
+ .concat([{ _bridge: configFile.bridge }])
70
+ .filter((block) => block._bridge?.username?.toUpperCase() === username.toUpperCase());
71
+ const pluginBlock = pluginBlocks.find((block) => block._bridge?.port);
72
+ const otherBlocks = pluginBlocks.filter((block) => !block._bridge?.port);
73
+ if (pluginBlock) {
74
+ pluginBlock._bridge.username = this.configEditorService.generateUsername();
75
+ pluginBlock._bridge.pin = this.configEditorService.generatePin();
76
+ otherBlocks.forEach((block) => {
77
+ block._bridge.username = pluginBlock._bridge.username;
78
+ });
79
+ this.logger.warn(`Bridge ${id} reset: new username: ${pluginBlock._bridge.username} and new pin: ${pluginBlock._bridge.pin}.`);
80
+ await this.configEditorService.updateConfigFile(configFile);
81
+ }
82
+ else {
83
+ this.logger.error(`Failed to reset username and pin for child bridge ${id} as the plugin block could not be found.`);
84
+ }
85
+ }
86
+ catch (e) {
87
+ this.logger.error(`Failed to reset username and pin for child bridge ${id} as ${e.message}.`);
88
+ }
89
+ }
90
+ if (await (0, fs_extra_1.pathExists)(accessoryInfo)) {
91
+ await (0, fs_extra_1.unlink)(accessoryInfo);
92
+ this.logger.warn(`Bridge ${id} reset: removed ${accessoryInfo}.`);
93
+ }
94
+ if (await (0, fs_extra_1.pathExists)(identifierCache)) {
95
+ await (0, fs_extra_1.unlink)(identifierCache);
96
+ this.logger.warn(`Bridge ${id} reset: removed ${identifierCache}.`);
97
+ }
98
+ await this.deleteDeviceAccessories(id);
99
+ }
46
100
  async restartServer() {
47
- this.logger.log('Homebridge restart request received');
48
- if (this.configService.serviceMode && !(await this.configService.uiRestartRequired() || await this.nodeVersionChanged())) {
49
- this.logger.log('UI / Bridge settings have not changed; only restarting Homebridge process');
101
+ this.logger.log('Homebridge restart request received.');
102
+ if (!await this.configService.uiRestartRequired() && !await this.nodeVersionChanged()) {
103
+ this.logger.log('UI/Bridge settings have not changed - only restarting Homebridge process.');
50
104
  this.homebridgeIpcService.restartHomebridge();
51
105
  this.accessoriesService.resetInstancePool();
52
106
  return { ok: true, command: 'SIGTERM', restartingUI: false };
53
107
  }
54
108
  setTimeout(() => {
55
109
  if (this.configService.ui.restart) {
56
- this.logger.log(`Executing restart command: ${this.configService.ui.restart}`);
110
+ this.logger.log(`Executing restart command ${this.configService.ui.restart}.`);
57
111
  (0, node_child_process_1.exec)(this.configService.ui.restart, (err) => {
58
112
  if (err) {
59
- this.logger.log('Restart command exited with an error. Failed to restart Homebridge.');
113
+ this.logger.log('Restart command exited with an error, failed to restart Homebridge.');
60
114
  }
61
115
  });
62
116
  }
@@ -72,23 +126,22 @@ let ServerService = class ServerService {
72
126
  const configFile = await this.configEditorService.getConfigFile();
73
127
  configFile.bridge.pin = this.configEditorService.generatePin();
74
128
  configFile.bridge.username = this.configEditorService.generateUsername();
75
- this.logger.warn(`Homebridge Reset: New Username: ${configFile.bridge.username}`);
76
- this.logger.warn(`Homebridge Reset: New Pin: ${configFile.bridge.pin}`);
129
+ this.logger.warn(`Homebridge bridge reset: new username ${configFile.bridge.username} and new pin ${configFile.bridge.pin}.`);
77
130
  await this.configEditorService.updateConfigFile(configFile);
78
131
  await (0, fs_extra_1.remove)((0, node_path_1.resolve)(this.configService.storagePath, 'accessories'));
79
132
  await (0, fs_extra_1.remove)((0, node_path_1.resolve)(this.configService.storagePath, 'persist'));
80
- this.logger.log('Homebridge Reset: "persist" directory removed.');
81
- this.logger.log('Homebridge Reset: "accessories" directory removed.');
133
+ this.logger.log('Homebridge bridge reset: accessories and persist directories were removed.');
82
134
  }
83
135
  async getDevicePairings() {
84
136
  const persistPath = (0, node_path_1.join)(this.configService.storagePath, 'persist');
85
137
  const devices = (await (0, fs_extra_1.readdir)(persistPath))
86
138
  .filter(x => x.match(/AccessoryInfo\.([A-F,a-f0-9]+)\.json/));
139
+ const configFile = await this.configEditorService.getConfigFile();
87
140
  return Promise.all(devices.map(async (x) => {
88
- return await this.getDevicePairingById(x.split('.')[1]);
141
+ return await this.getDevicePairingById(x.split('.')[1], configFile);
89
142
  }));
90
143
  }
91
- async getDevicePairingById(deviceId) {
144
+ async getDevicePairingById(deviceId, configFile = null) {
92
145
  const persistPath = (0, node_path_1.join)(this.configService.storagePath, 'persist');
93
146
  let device;
94
147
  try {
@@ -97,53 +150,71 @@ let ServerService = class ServerService {
97
150
  catch (e) {
98
151
  throw new common_1.NotFoundException();
99
152
  }
153
+ if (!configFile) {
154
+ configFile = await this.configEditorService.getConfigFile();
155
+ }
156
+ const username = deviceId.match(/.{1,2}/g).join(':');
157
+ const isMain = this.configService.homebridgeConfig.bridge.username.toUpperCase() === username.toUpperCase();
158
+ const pluginBlock = configFile.accessories
159
+ .concat(configFile.platforms)
160
+ .concat([{ _bridge: configFile.bridge }])
161
+ .find((block) => block._bridge?.username?.toUpperCase() === username.toUpperCase());
162
+ try {
163
+ device._category = Object.entries(hap_types_1.Categories).find(([, value]) => value === device.category)[0].toLowerCase();
164
+ }
165
+ catch (e) {
166
+ device._category = 'Other';
167
+ }
168
+ device.name = pluginBlock?._bridge.name || pluginBlock?.name || device.displayName;
100
169
  device._id = deviceId;
101
- device._username = device._id.match(/.{1,2}/g).join(':');
102
- device._main = this.configService.homebridgeConfig.bridge.username.toUpperCase() === device._username.toUpperCase();
170
+ device._username = username;
171
+ device._main = isMain;
103
172
  device._isPaired = device.pairedClients && Object.keys(device.pairedClients).length > 0;
104
173
  device._setupCode = this.generateSetupCode(device);
174
+ device._couldBeStale = !device._main && device._category === 'bridge' && !pluginBlock;
105
175
  delete device.signSk;
106
176
  delete device.signPk;
107
177
  delete device.configHash;
108
178
  delete device.pairedClients;
109
179
  delete device.pairedClientsPermission;
110
- try {
111
- device._category = Object.entries(hap_types_1.Categories).find(([, value]) => value === device.category)[0].toLowerCase();
112
- }
113
- catch (e) {
114
- device._category = 'Other';
115
- }
116
180
  return device;
117
181
  }
118
- async deleteDevicePairing(id) {
119
- if (this.configService.serviceMode) {
120
- this.childBridgesService.stopStartRestartChildBridge('stopChildBridge', id);
121
- await new Promise(res => setTimeout(res, 3000));
122
- }
123
- const persistPath = (0, node_path_1.join)(this.configService.storagePath, 'persist');
124
- const accessoryInfo = (0, node_path_1.join)(persistPath, `AccessoryInfo.${id}.json`);
125
- const identifierCache = (0, node_path_1.join)(persistPath, `IdentifierCache.${id}.json`);
126
- if (await (0, fs_extra_1.pathExists)(accessoryInfo)) {
127
- await (0, fs_extra_1.unlink)(accessoryInfo);
128
- this.logger.warn(`Removed ${accessoryInfo}`);
129
- }
130
- if (await (0, fs_extra_1.pathExists)(identifierCache)) {
131
- await (0, fs_extra_1.unlink)(identifierCache);
132
- this.logger.warn(`Removed ${identifierCache}`);
182
+ async deleteDevicePairing(id, resetPairingInfo) {
183
+ this.logger.warn(`Shutting down Homebridge before resetting paired bridge ${id}...`);
184
+ await this.homebridgeIpcService.restartAndWaitForClose();
185
+ await this.deleteSingleDevicePairing(id, resetPairingInfo);
186
+ return { ok: true };
187
+ }
188
+ async deleteDevicesPairing(bridges) {
189
+ this.logger.warn(`Shutting down Homebridge before resetting paired bridges ${bridges.map(x => x.id).join(', ')}...`);
190
+ await this.homebridgeIpcService.restartAndWaitForClose();
191
+ for (const { id, resetPairingInfo } of bridges) {
192
+ try {
193
+ await this.deleteSingleDevicePairing(id, resetPairingInfo);
194
+ }
195
+ catch (e) {
196
+ this.logger.error(`Failed to reset paired bridge ${id} as ${e.message}.`);
197
+ }
133
198
  }
134
- await this.deleteDeviceAccessories(id);
199
+ return { ok: true };
135
200
  }
136
201
  async deleteDeviceAccessories(id) {
202
+ this.logger.warn(`Shutting down Homebridge before removing accessories for paired bridge ${id}...`);
203
+ await this.homebridgeIpcService.restartAndWaitForClose();
137
204
  const cachedAccessoriesDir = (0, node_path_1.join)(this.configService.storagePath, 'accessories');
138
- const cachedAccessories = (0, node_path_1.join)(cachedAccessoriesDir, `cachedAccessories.${id}`);
139
- const cachedAccessoriesBackup = (0, node_path_1.join)(cachedAccessoriesDir, `.cachedAccessories.${id}.bak`);
140
- if (await (0, fs_extra_1.pathExists)(cachedAccessories)) {
141
- await (0, fs_extra_1.unlink)(cachedAccessories);
142
- this.logger.warn(`Removed ${cachedAccessories}`);
143
- }
144
- if (await (0, fs_extra_1.pathExists)(cachedAccessoriesBackup)) {
145
- await (0, fs_extra_1.unlink)(cachedAccessoriesBackup);
146
- this.logger.warn(`Removed ${cachedAccessoriesBackup}`);
205
+ await this.deleteSingleDeviceAccessories(id, cachedAccessoriesDir);
206
+ }
207
+ async deleteDevicesAccessories(bridges) {
208
+ this.logger.warn(`Shutting down Homebridge before removing accessories for paired bridges ${bridges.map(x => x.id).join(', ')}...`);
209
+ await this.homebridgeIpcService.restartAndWaitForClose();
210
+ const cachedAccessoriesDir = (0, node_path_1.join)(this.configService.storagePath, 'accessories');
211
+ for (const { id } of bridges) {
212
+ try {
213
+ await this.deleteSingleDeviceAccessories(id, cachedAccessoriesDir);
214
+ }
215
+ catch (e) {
216
+ this.logger.error(`Failed to remove accessories for bridge ${id} as ${e.message}.`);
217
+ }
147
218
  }
148
219
  }
149
220
  async getCachedAccessories() {
@@ -162,31 +233,56 @@ let ServerService = class ServerService {
162
233
  }
163
234
  async deleteCachedAccessory(uuid, cacheFile) {
164
235
  cacheFile = cacheFile || 'cachedAccessories';
165
- if (!this.configService.serviceMode) {
166
- this.logger.error('The reset accessories cache command is only available in service mode');
167
- throw new common_1.BadRequestException('This command is only available in service mode');
168
- }
169
236
  const cachedAccessoriesPath = (0, node_path_1.resolve)(this.configService.storagePath, 'accessories', cacheFile);
170
- this.logger.warn(`Shutting down Homebridge before removing cached accessory: ${uuid}`);
237
+ this.logger.warn(`Shutting down Homebridge before removing cached accessory ${uuid}...`);
171
238
  await this.homebridgeIpcService.restartAndWaitForClose();
172
239
  const cachedAccessories = await (0, fs_extra_1.readJson)(cachedAccessoriesPath);
173
240
  const accessoryIndex = cachedAccessories.findIndex(x => x.UUID === uuid);
174
241
  if (accessoryIndex > -1) {
175
242
  cachedAccessories.splice(accessoryIndex, 1);
176
243
  await (0, fs_extra_1.writeJson)(cachedAccessoriesPath, cachedAccessories);
177
- this.logger.warn(`Removed cached accessory with UUID: ${uuid}`);
244
+ this.logger.warn(`Removed cached accessory with UUID ${uuid} from file ${cacheFile}.`);
178
245
  }
179
246
  else {
180
- this.logger.error(`Cannot find cached accessory with UUID: ${uuid}`);
247
+ this.logger.error(`Cannot find cached accessory with UUID ${uuid} from file ${cacheFile}.`);
181
248
  throw new common_1.NotFoundException();
182
249
  }
183
250
  return { ok: true };
184
251
  }
185
- async resetCachedAccessories() {
186
- if (!this.configService.serviceMode) {
187
- this.logger.error('The reset accessories cache command is only available in service mode');
188
- throw new common_1.BadRequestException('This command is only available in service mode');
252
+ async deleteCachedAccessories(accessories) {
253
+ this.logger.warn(`Shutting down Homebridge before removing cached accessories ${accessories.map(x => x.uuid).join(', ')}.`);
254
+ await this.homebridgeIpcService.restartAndWaitForClose();
255
+ const accessoriesByCacheFile = new Map();
256
+ for (const { cacheFile, uuid } of accessories) {
257
+ const accessoryCacheFile = cacheFile || 'cachedAccessories';
258
+ if (!accessoriesByCacheFile.has(accessoryCacheFile)) {
259
+ accessoriesByCacheFile.set(accessoryCacheFile, []);
260
+ }
261
+ accessoriesByCacheFile.get(accessoryCacheFile).push({ uuid });
189
262
  }
263
+ for (const [cacheFile, accessories] of accessoriesByCacheFile.entries()) {
264
+ const cachedAccessoriesPath = (0, node_path_1.resolve)(this.configService.storagePath, 'accessories', cacheFile);
265
+ const cachedAccessories = await (0, fs_extra_1.readJson)(cachedAccessoriesPath);
266
+ for (const { uuid } of accessories) {
267
+ try {
268
+ const accessoryIndex = cachedAccessories.findIndex(x => x.UUID === uuid);
269
+ if (accessoryIndex > -1) {
270
+ cachedAccessories.splice(accessoryIndex, 1);
271
+ this.logger.warn(`Removed cached accessory with UUID ${uuid} from file ${cacheFile}.`);
272
+ }
273
+ else {
274
+ this.logger.error(`Cannot find cached accessory with UUID ${uuid} from file ${cacheFile}.`);
275
+ }
276
+ }
277
+ catch (e) {
278
+ this.logger.error(`Failed to remove cached accessory with UUID ${uuid} from file ${cacheFile} as ${e.message}.`);
279
+ }
280
+ }
281
+ await (0, fs_extra_1.writeJson)(cachedAccessoriesPath, cachedAccessories);
282
+ }
283
+ return { ok: true };
284
+ }
285
+ async deleteAllCachedAccessories() {
190
286
  const cachedAccessoriesDir = (0, node_path_1.join)(this.configService.storagePath, 'accessories');
191
287
  const cachedAccessoryPaths = (await (0, fs_extra_1.readdir)(cachedAccessoriesDir))
192
288
  .filter(x => x.match(/cachedAccessories\.([A-F,0-9]+)/) || x === 'cachedAccessories' || x === '.cachedAccessories.bak')
@@ -195,16 +291,16 @@ let ServerService = class ServerService {
195
291
  await this.homebridgeIpcService.restartAndWaitForClose();
196
292
  this.logger.warn('Shutting down Homebridge before removing cached accessories');
197
293
  try {
198
- this.logger.log('Clearing Cached Homebridge Accessories...');
294
+ this.logger.log('Clearing all cached accessories...');
199
295
  for (const thisCachedAccessoriesPath of cachedAccessoryPaths) {
200
296
  if (await (0, fs_extra_1.pathExists)(thisCachedAccessoriesPath)) {
201
297
  await (0, fs_extra_1.unlink)(thisCachedAccessoriesPath);
202
- this.logger.warn(`Removed ${thisCachedAccessoriesPath}`);
298
+ this.logger.warn(`Removed ${thisCachedAccessoriesPath}.`);
203
299
  }
204
300
  }
205
301
  }
206
302
  catch (e) {
207
- this.logger.error(`Failed to clear Homebridge Accessories Cache at ${cachedAccessoriesPath}`);
303
+ this.logger.error(`Failed to clear all cached accessories at ${cachedAccessoriesPath} as ${e.message}.`);
208
304
  console.error(e);
209
305
  throw new common_1.InternalServerErrorException('Failed to clear Homebridge accessory cache - see logs.');
210
306
  }
@@ -224,7 +320,7 @@ let ServerService = class ServerService {
224
320
  }
225
321
  }
226
322
  generateSetupCode(accessoryInfo) {
227
- const buffer = (0, buffer_shims_1.alloc)(8);
323
+ const buffer = node_buffer_1.Buffer.allocUnsafe(8);
228
324
  let valueLow = Number.parseInt(accessoryInfo.pincode.replace(/-/g, ''), 10);
229
325
  const valueHigh = accessoryInfo.category >> 1;
230
326
  valueLow |= 1 << 28;
@@ -316,19 +412,79 @@ let ServerService = class ServerService {
316
412
  const config = await this.configEditorService.getConfigFile();
317
413
  return { port: config.bridge.port };
318
414
  }
415
+ async getUsablePorts() {
416
+ const config = await this.configEditorService.getConfigFile();
417
+ let start;
418
+ let end;
419
+ if (config.ports && typeof config.ports === 'object') {
420
+ if (config.ports.start) {
421
+ start = config.ports.start;
422
+ }
423
+ if (config.ports.end) {
424
+ end = config.ports.end;
425
+ }
426
+ }
427
+ return { start, end };
428
+ }
429
+ async setHomebridgeName(name) {
430
+ if (!name || !(/^[\p{L}\p{N}][\p{L}\p{N} ']*[\p{L}\p{N}]$/u).test(name)) {
431
+ throw new common_1.BadRequestException('Invalid name');
432
+ }
433
+ const config = await this.configEditorService.getConfigFile();
434
+ config.bridge.name = name;
435
+ await this.configEditorService.updateConfigFile(config);
436
+ }
319
437
  async setHomebridgePort(port) {
320
438
  if (!port || typeof port !== 'number' || !Number.isInteger(port) || port < 1025 || port > 65533) {
321
439
  throw new common_1.BadRequestException('Invalid port number');
322
440
  }
323
441
  const config = await this.configEditorService.getConfigFile();
324
442
  config.bridge.port = port;
325
- console.error('port', port);
443
+ await this.configEditorService.updateConfigFile(config);
444
+ }
445
+ async setUsablePorts(value) {
446
+ let config = await this.configEditorService.getConfigFile();
447
+ if (value.start === null) {
448
+ delete value.start;
449
+ }
450
+ if (value.end === null) {
451
+ delete value.end;
452
+ }
453
+ if ('start' in value && (typeof value.start !== 'number' || value.start < 1025 || value.start > 65533)) {
454
+ throw new common_1.BadRequestException('Port start must be a number between 1025 and 65533.');
455
+ }
456
+ if ('end' in value && (typeof value.end !== 'number' || value.end < 1025 || value.end > 65533)) {
457
+ throw new common_1.BadRequestException('Port end must be a number between 1025 and 65533.');
458
+ }
459
+ if ('start' in value && 'end' in value && value.start >= value.end) {
460
+ throw new common_1.BadRequestException('Ports start must be less than end.');
461
+ }
462
+ if ('start' in value && !('end' in value) && config.ports?.end && value.start >= config.ports.end) {
463
+ throw new common_1.BadRequestException('Ports start must be less than end.');
464
+ }
465
+ if ('end' in value && !('start' in value) && config.ports?.start && config.ports.start >= value.end) {
466
+ throw new common_1.BadRequestException('Ports start must be less than end.');
467
+ }
468
+ if (!value.start && !value.end) {
469
+ delete config.ports;
470
+ }
471
+ else {
472
+ config.ports = {};
473
+ if (value.start) {
474
+ config.ports.start = value.start;
475
+ }
476
+ if (value.end) {
477
+ config.ports.end = value.end;
478
+ }
479
+ }
480
+ const { bridge, ports, ...rest } = config;
481
+ config = ports ? { bridge, ports, ...rest } : { bridge, ...rest };
326
482
  await this.configEditorService.updateConfigFile(config);
327
483
  }
328
484
  async nodeVersionChanged() {
329
485
  return new Promise((res) => {
330
486
  let result = false;
331
- const child = (0, node_child_process_1.spawn)(node_process_1.default.execPath, ['-v']);
487
+ const child = (0, node_child_process_1.spawn)(node_process_1.default.execPath, ['-v'], { shell: true });
332
488
  child.stdout.once('data', (data) => {
333
489
  result = data.toString().trim() !== node_process_1.default.version;
334
490
  });
@@ -340,6 +496,50 @@ let ServerService = class ServerService {
340
496
  });
341
497
  });
342
498
  }
499
+ async uploadWallpaper(data) {
500
+ const configFile = await this.configEditorService.getConfigFile();
501
+ const uiConfigBlock = configFile.platforms.find(x => x.platform === 'config');
502
+ if (uiConfigBlock) {
503
+ if (uiConfigBlock.wallpaper) {
504
+ const oldPath = (0, node_path_1.join)(this.configService.storagePath, uiConfigBlock.wallpaper);
505
+ if (await (0, fs_extra_1.pathExists)(oldPath)) {
506
+ try {
507
+ await (0, fs_extra_1.unlink)(oldPath);
508
+ this.logger.log(`Old wallpaper file ${oldPath} deleted successfully.`);
509
+ }
510
+ catch (e) {
511
+ this.logger.error(`Failed to delete old wallpaper ${oldPath} as ${e.message}.`);
512
+ }
513
+ }
514
+ }
515
+ const fileExtension = (0, node_path_1.extname)(data.filename);
516
+ const newPath = (0, node_path_1.join)(this.configService.storagePath, `ui-wallpaper${fileExtension}`);
517
+ await pump(data.file, (0, fs_extra_1.createWriteStream)(newPath));
518
+ uiConfigBlock.wallpaper = `ui-wallpaper${fileExtension}`;
519
+ await this.configEditorService.updateConfigFile(configFile);
520
+ this.logger.log('Wallpaper uploaded and set in the config file.');
521
+ }
522
+ }
523
+ async deleteWallpaper() {
524
+ const configFile = await this.configEditorService.getConfigFile();
525
+ const uiConfigBlock = configFile.platforms.find(x => x.platform === 'config');
526
+ const fullPath = (0, node_path_1.join)(this.configService.storagePath, uiConfigBlock.wallpaper);
527
+ if (uiConfigBlock && uiConfigBlock.wallpaper) {
528
+ if (await (0, fs_extra_1.pathExists)(fullPath)) {
529
+ try {
530
+ await (0, fs_extra_1.unlink)(fullPath);
531
+ this.logger.log(`Wallpaper file ${uiConfigBlock.wallpaper} deleted successfully.`);
532
+ }
533
+ catch (e) {
534
+ this.logger.error(`Failed to delete wallpaper file (${uiConfigBlock.wallpaper}) as ${e.message}.`);
535
+ }
536
+ }
537
+ delete uiConfigBlock.wallpaper;
538
+ await this.configEditorService.updateConfigFile(configFile);
539
+ this.configService.removeWallpaperCache();
540
+ this.logger.log('Wallpaper reference removed from the config file.');
541
+ }
542
+ }
343
543
  };
344
544
  exports.ServerService = ServerService;
345
545
  exports.ServerService = ServerService = __decorate([
@@ -347,7 +547,6 @@ exports.ServerService = ServerService = __decorate([
347
547
  __metadata("design:paramtypes", [config_service_1.ConfigService,
348
548
  config_editor_service_1.ConfigEditorService,
349
549
  accessories_service_1.AccessoriesService,
350
- child_bridges_service_1.ChildBridgesService,
351
550
  homebridge_ipc_service_1.HomebridgeIpcService,
352
551
  logger_service_1.Logger])
353
552
  ], ServerService);