@camera.ui/server 0.0.50-internal.0 → 0.0.50-internal.1

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 (387) hide show
  1. package/dist/interface/index.html +44 -44
  2. package/dist/interface/js/{@primevue.OhxoO3MD.0.0.50-internal.0.js → @primevue.CiB2EGly.0.0.50-internal.1.js} +1 -1
  3. package/dist/interface/js/{@tanstack.D1IL6eOv.0.0.50-internal.0.js → @tanstack.DxMw_rJn.0.0.50-internal.1.js} +1 -1
  4. package/dist/interface/js/{@vee-validate.BGPyWWTh.0.0.50-internal.0.js → @vee-validate.RxZ3hn6V.0.0.50-internal.1.js} +1 -1
  5. package/dist/interface/js/{@vueuse.BsKtqdiG.0.0.50-internal.0.js → @vueuse.C-k73ACm.0.0.50-internal.1.js} +1 -1
  6. package/dist/interface/js/{Adminpanel.D93Kvbwp.0.0.50-internal.0.js → Adminpanel.DumNu6GD.0.0.50-internal.1.js} +1 -1
  7. package/dist/interface/js/{Camera.DF2l3OMA.0.0.50-internal.0.js → Camera.BuosoqFl.0.0.50-internal.1.js} +1 -1
  8. package/dist/interface/js/{Cameras.YzvZccdv.0.0.50-internal.0.js → Cameras.A7NJflGG.0.0.50-internal.1.js} +2 -2
  9. package/dist/interface/js/Cammesh.Dv3C0UiR.0.0.50-internal.1.js +1 -0
  10. package/dist/interface/js/{Camview.CB7_HnoQ.0.0.50-internal.0.js → Camview.GgjJp7JR.0.0.50-internal.1.js} +1 -1
  11. package/dist/interface/js/{Config.BwflsWTm.0.0.50-internal.0.js → Config.BL3L-BFE.0.0.50-internal.1.js} +2 -2
  12. package/dist/interface/js/{Console.DZM8pN8Q.0.0.50-internal.0.js → Console.CxwRmUVF.0.0.50-internal.1.js} +1 -1
  13. package/dist/interface/js/{CuiConsole.BXXU7Gth.0.0.50-internal.0.js → CuiConsole.D16kkT6R.0.0.50-internal.1.js} +1 -1
  14. package/dist/interface/js/{CuiPluginCard.YFOrpbVD.0.0.50-internal.0.js → CuiPluginCard.Bkp__d8n.0.0.50-internal.1.js} +1 -1
  15. package/dist/interface/js/{CuiTimeline.VV5KSJd5.0.0.50-internal.0.js → CuiTimeline.C9HKvo0G.0.0.50-internal.1.js} +1 -1
  16. package/dist/interface/js/{FirstSteps.b-nvymgb.0.0.50-internal.0.js → FirstSteps.QuJjtAtF.0.0.50-internal.1.js} +1 -1
  17. package/dist/interface/js/{Plugin.BOMpVEwM.0.0.50-internal.0.js → Plugin.BLUUbEej.0.0.50-internal.1.js} +1 -1
  18. package/dist/interface/js/{Plugins.DdPwaUDA.0.0.50-internal.0.js → Plugins.DviCIk7w.0.0.50-internal.1.js} +1 -1
  19. package/dist/interface/js/Recordings.Dsp07cHs.0.0.50-internal.1.js +1 -0
  20. package/dist/interface/js/{Settings.D24ttaPu.0.0.50-internal.0.js → Settings.Clx4y9gP.0.0.50-internal.1.js} +1 -1
  21. package/dist/interface/js/{SettingsAccount.ms3aqz4E.0.0.50-internal.0.js → SettingsAccount.cfY4-PYd.0.0.50-internal.1.js} +1 -1
  22. package/dist/interface/js/SettingsAppearance.CBGZAazb.0.0.50-internal.1.js +1 -0
  23. package/dist/interface/js/{SettingsAppearance.vue_vue_type_script_setup_true_lang.CBQ6lL3T.0.0.50-internal.0.js → SettingsAppearance.vue_vue_type_script_setup_true_lang.kxAPXcBy.0.0.50-internal.1.js} +1 -1
  24. package/dist/interface/js/{SettingsBackup.BPEc4Rjg.0.0.50-internal.0.js → SettingsBackup.DOaJA4pp.0.0.50-internal.1.js} +1 -1
  25. package/dist/interface/js/SettingsRecordings.BGcwL6tk.0.0.50-internal.1.js +1 -0
  26. package/dist/interface/js/{SettingsRemote.BL5nXbUT.0.0.50-internal.0.js → SettingsRemote.BVU_w1Jm.0.0.50-internal.1.js} +1 -1
  27. package/dist/interface/js/{SettingsSystem.D7T0AIpm.0.0.50-internal.0.js → SettingsSystem.P0vy90vA.0.0.50-internal.1.js} +1 -1
  28. package/dist/interface/js/{SettingsUsers.1u0vCOVG.0.0.50-internal.0.js → SettingsUsers.DaP5m7eo.0.0.50-internal.1.js} +1 -1
  29. package/dist/interface/js/{VersionsHandler.vue_vue_type_script_setup_true_lang.xDishkkS.0.0.50-internal.0.js → VersionsHandler.vue_vue_type_script_setup_true_lang.MmrWYW3K.0.0.50-internal.1.js} +1 -1
  30. package/dist/interface/js/{ace-builds.D1nmvCwb.0.0.50-internal.0.js → ace-builds.C0aqA_3x.0.0.50-internal.1.js} +2 -2
  31. package/dist/interface/js/{ace.config.G96T2z54.0.0.50-internal.0.js → ace.config.C9wgzklI.0.0.50-internal.1.js} +1 -1
  32. package/dist/interface/js/{backup.B_Gzxtp_.0.0.50-internal.0.js → backup.BeH6lJ5t.0.0.50-internal.1.js} +1 -1
  33. package/dist/interface/js/{chart.js.CP_nMnnf.0.0.50-internal.0.js → chart.js.BQHSWV_g.0.0.50-internal.1.js} +1 -1
  34. package/dist/interface/js/{close-circle.DYLuVIOg.0.0.50-internal.0.js → close-circle.DDKMxauw.0.0.50-internal.1.js} +1 -1
  35. package/dist/interface/js/{dnd-core.T9OeW7mu.0.0.50-internal.0.js → dnd-core.dWz9rJqH.0.0.50-internal.1.js} +1 -1
  36. package/dist/interface/js/{draggabilly.D3zGcBb3.0.0.50-internal.0.js → draggabilly.D-iZIS1n.0.0.50-internal.1.js} +1 -1
  37. package/dist/interface/js/{engine.io-client.kITRnq-g.0.0.50-internal.0.js → engine.io-client.BwxOddB_.0.0.50-internal.1.js} +1 -1
  38. package/dist/interface/js/{fast-deep-equal.Bpc9mIsj.0.0.50-internal.0.js → fast-deep-equal.Dz96RC_N.0.0.50-internal.1.js} +1 -1
  39. package/dist/interface/js/{highlight.js.BlSXU-Wb.0.0.50-internal.0.js → highlight.js.CmcM8OM6.0.0.50-internal.1.js} +1 -1
  40. package/dist/interface/js/{linkify-it.C3N1lWsJ.0.0.50-internal.0.js → linkify-it.BgLcBzlw.0.0.50-internal.1.js} +1 -1
  41. package/dist/interface/js/{main.D0YR3Jat.0.0.50-internal.0.js → main.6bOgRV7D.0.0.50-internal.1.js} +3 -3
  42. package/dist/interface/js/{markdown-it.Dj0dt5s2.0.0.50-internal.0.js → markdown-it.CTgfs-3p.0.0.50-internal.1.js} +1 -1
  43. package/dist/interface/js/{nprogress.BwQWDcGj.0.0.50-internal.0.js → nprogress.CMhnq8jS.0.0.50-internal.1.js} +1 -1
  44. package/dist/interface/js/{pinia.DRh7plEC.0.0.50-internal.0.js → pinia.CuC5ZfNs.0.0.50-internal.1.js} +1 -1
  45. package/dist/interface/js/{primevue.Cl58krXf.0.0.50-internal.0.js → primevue.DmwjJ4xV.0.0.50-internal.1.js} +1 -1
  46. package/dist/interface/js/{qrcode.C1sDj6P8.0.0.50-internal.0.js → qrcode.DGZO3j1c.0.0.50-internal.1.js} +1 -1
  47. package/dist/interface/js/{react-dnd-touch-backend.BA4WhUJo.0.0.50-internal.0.js → react-dnd-touch-backend.CEGHlD-T.0.0.50-internal.1.js} +1 -1
  48. package/dist/interface/js/{refresh-rounded.D_SmhhUf.0.0.50-internal.0.js → refresh-rounded.D0keXzBc.0.0.50-internal.1.js} +1 -1
  49. package/dist/interface/js/{rxjs.C-fTBwEO.0.0.50-internal.0.js → rxjs.CiDbFOB0.0.0.50-internal.1.js} +1 -1
  50. package/dist/interface/js/{socket.io-client.DKrRxgjP.0.0.50-internal.0.js → socket.io-client.BPcXPAHG.0.0.50-internal.1.js} +1 -1
  51. package/dist/interface/js/{socket.io-parser.EXj3YDH2.0.0.50-internal.0.js → socket.io-parser.DSGzrW_l.0.0.50-internal.1.js} +1 -1
  52. package/dist/interface/js/{system.CY8rGd-Q.0.0.50-internal.0.js → system.BKlEObmx.0.0.50-internal.1.js} +1 -1
  53. package/dist/interface/js/{trash-fill.CMnCN3Oy.0.0.50-internal.0.js → trash-fill.BDFILs86.0.0.50-internal.1.js} +1 -1
  54. package/dist/interface/js/{unidragger.D0w6Tqtt.0.0.50-internal.0.js → unidragger.DcxsxHCS.0.0.50-internal.1.js} +1 -1
  55. package/dist/interface/js/{vee-validate.BeiObIH8.0.0.50-internal.0.js → vee-validate.BGRg3oQ8.0.0.50-internal.1.js} +1 -1
  56. package/dist/interface/js/{vue-chartjs.DtdZdiYw.0.0.50-internal.0.js → vue-chartjs.B9yk2de7.0.0.50-internal.1.js} +1 -1
  57. package/dist/interface/js/{vue-i18n.BW2bx_6z.0.0.50-internal.0.js → vue-i18n.DXDZITpf.0.0.50-internal.1.js} +1 -1
  58. package/dist/interface/js/{vue-inline-svg.BJkQGmKz.0.0.50-internal.0.js → vue-inline-svg.BDYaTfbi.0.0.50-internal.1.js} +1 -1
  59. package/dist/interface/js/{vue-router.B2mOXHaC.0.0.50-internal.0.js → vue-router.CFEDA008.0.0.50-internal.1.js} +1 -1
  60. package/dist/interface/js/{vue-zoomable.BKDyCJE7.0.0.50-internal.0.js → vue-zoomable.zqTafMgD.0.0.50-internal.1.js} +1 -1
  61. package/dist/interface/js/{vue3-dnd.DRK24CBp.0.0.50-internal.0.js → vue3-dnd.BxM3dbYs.0.0.50-internal.1.js} +1 -1
  62. package/dist/interface/js/{zoom-out.DxvzgVEo.0.0.50-internal.0.js → zoom-out.B6SY9IIj.0.0.50-internal.1.js} +1 -1
  63. package/dist/interface/sw.js +1 -1
  64. package/dist/server/package.json +1 -1
  65. package/package.json +1 -1
  66. package/.prettierignore +0 -12
  67. package/.prettierrc.json +0 -12
  68. package/artillery.yaml +0 -29
  69. package/bin/cameraui-server.ts +0 -11
  70. package/dist/interface/js/Cammesh.D-6dAROQ.0.0.50-internal.0.js +0 -1
  71. package/dist/interface/js/Recordings.DhxjIW7e.0.0.50-internal.0.js +0 -1
  72. package/dist/interface/js/SettingsAppearance.DsTjKXk1.0.0.50-internal.0.js +0 -1
  73. package/dist/interface/js/SettingsRecordings.DgW7M0jj.0.0.50-internal.0.js +0 -1
  74. package/eslint.config.js +0 -103
  75. package/localdeps.txt +0 -10
  76. package/mypy.ini +0 -30
  77. package/requirements.txt +0 -15
  78. package/ruff.toml +0 -90
  79. package/src/__init__.py +0 -0
  80. package/src/_camera_ui_tools/__init__.py +0 -0
  81. package/src/_camera_ui_tools/__pycache__/__init__.cpython-311.pyc +0 -0
  82. package/src/api/controllers/api.controller.ts +0 -19
  83. package/src/api/controllers/auth.controller.ts +0 -294
  84. package/src/api/controllers/backup.controller.ts +0 -72
  85. package/src/api/controllers/cameras.controller.ts +0 -1029
  86. package/src/api/controllers/config.controller.ts +0 -102
  87. package/src/api/controllers/files.controller.ts +0 -35
  88. package/src/api/controllers/frameWorkers.controller.ts +0 -109
  89. package/src/api/controllers/plugins.controller.ts +0 -1206
  90. package/src/api/controllers/system.controller.ts +0 -273
  91. package/src/api/controllers/users.controller.ts +0 -648
  92. package/src/api/database/checks.ts +0 -268
  93. package/src/api/database/constants.ts +0 -8
  94. package/src/api/database/index.ts +0 -262
  95. package/src/api/database/migration.ts +0 -62
  96. package/src/api/database/selfcheck.ts +0 -492
  97. package/src/api/database/types.ts +0 -104
  98. package/src/api/go2rtc/api/application.ts +0 -48
  99. package/src/api/go2rtc/api/config.ts +0 -61
  100. package/src/api/go2rtc/api/discover.ts +0 -197
  101. package/src/api/go2rtc/api/index.ts +0 -49
  102. package/src/api/go2rtc/api/snapshot.ts +0 -44
  103. package/src/api/go2rtc/api/streams.ts +0 -168
  104. package/src/api/go2rtc/index.ts +0 -43
  105. package/src/api/go2rtc/queue.ts +0 -50
  106. package/src/api/go2rtc/types.ts +0 -174
  107. package/src/api/index.ts +0 -286
  108. package/src/api/middlewares/authPermission.middleware.ts +0 -46
  109. package/src/api/middlewares/authValidation.middleware.ts +0 -160
  110. package/src/api/middlewares/pagination.middleware.ts +0 -67
  111. package/src/api/middlewares/socketAuth.middleware.ts +0 -136
  112. package/src/api/plugins/header.plugin.ts +0 -15
  113. package/src/api/plugins/logger.plugin.ts +0 -44
  114. package/src/api/plugins/proxy.plugin.ts +0 -255
  115. package/src/api/plugins/socket.plugin.ts +0 -28
  116. package/src/api/plugins/system.plugin.ts +0 -48
  117. package/src/api/plugins/useragent.plugin.ts +0 -19
  118. package/src/api/routes/api.routes.ts +0 -10
  119. package/src/api/routes/auth.routes.ts +0 -56
  120. package/src/api/routes/backup.routes.ts +0 -28
  121. package/src/api/routes/cameras.routes.ts +0 -281
  122. package/src/api/routes/config.routes.ts +0 -66
  123. package/src/api/routes/files.routes.ts +0 -15
  124. package/src/api/routes/frameWorkers.routes.ts +0 -39
  125. package/src/api/routes/index.ts +0 -37
  126. package/src/api/routes/plugins.routes.ts +0 -420
  127. package/src/api/routes/system.routes.ts +0 -101
  128. package/src/api/routes/users.routes.ts +0 -167
  129. package/src/api/schemas/backup.schema.ts +0 -112
  130. package/src/api/schemas/cameras.schema.ts +0 -479
  131. package/src/api/schemas/config.schema.ts +0 -38
  132. package/src/api/schemas/go2rtc.schema.ts +0 -189
  133. package/src/api/schemas/plugins.schema.ts +0 -126
  134. package/src/api/schemas/storage.schema.ts +0 -11
  135. package/src/api/schemas/system.schema.ts +0 -45
  136. package/src/api/schemas/users.schema.ts +0 -185
  137. package/src/api/services/auth.service.ts +0 -210
  138. package/src/api/services/backup.service.ts +0 -144
  139. package/src/api/services/cameras.service.ts +0 -671
  140. package/src/api/services/plugins.service.ts +0 -470
  141. package/src/api/services/system.service.ts +0 -85
  142. package/src/api/services/users.service.ts +0 -276
  143. package/src/api/types/index.ts +0 -675
  144. package/src/api/utils/cert.ts +0 -254
  145. package/src/api/utils/constants.ts +0 -17
  146. package/src/api/utils/fetch.ts +0 -21
  147. package/src/api/utils/moveFiles.ts +0 -45
  148. package/src/api/utils/parse.ts +0 -17
  149. package/src/api/websocket/index.ts +0 -110
  150. package/src/api/websocket/nsp/logs.ts +0 -240
  151. package/src/api/websocket/nsp/main.ts +0 -27
  152. package/src/api/websocket/nsp/metrics.ts +0 -301
  153. package/src/api/websocket/nsp/notifications.ts +0 -43
  154. package/src/api/websocket/nsp/plugins.ts +0 -37
  155. package/src/api/websocket/nsp/server.ts +0 -220
  156. package/src/api/websocket/nsp/status.ts +0 -77
  157. package/src/api/websocket/types.ts +0 -55
  158. package/src/api.ts +0 -163
  159. package/src/camera/classes.ts +0 -32
  160. package/src/camera/controller.ts +0 -579
  161. package/src/camera/device.ts +0 -422
  162. package/src/camera/frameWorker.ts +0 -403
  163. package/src/camera/index.ts +0 -679
  164. package/src/camera/interfaces.ts +0 -95
  165. package/src/camera/iou.ts +0 -153
  166. package/src/camera/polygon.ts +0 -226
  167. package/src/camera/python/__init__.py +0 -0
  168. package/src/camera/python/__pycache__/__init__.cpython-311.pyc +0 -0
  169. package/src/camera/python/__pycache__/classes.cpython-311.pyc +0 -0
  170. package/src/camera/python/__pycache__/delegate_controller.cpython-311.pyc +0 -0
  171. package/src/camera/python/__pycache__/interfaces.cpython-311.pyc +0 -0
  172. package/src/camera/python/__pycache__/iou.cpython-310.pyc +0 -0
  173. package/src/camera/python/__pycache__/iou.cpython-311.pyc +0 -0
  174. package/src/camera/python/__pycache__/iou2.cpython-310.pyc +0 -0
  175. package/src/camera/python/__pycache__/polygon.cpython-311.pyc +0 -0
  176. package/src/camera/python/__pycache__/typings.cpython-311.pyc +0 -0
  177. package/src/camera/python/__pycache__/video_frame.cpython-311.pyc +0 -0
  178. package/src/camera/python/classes.py +0 -41
  179. package/src/camera/python/interfaces.py +0 -130
  180. package/src/camera/python/iou.py +0 -158
  181. package/src/camera/python/polygon.py +0 -230
  182. package/src/camera/python/test/__pycache__/polygon.cpython-310.pyc +0 -0
  183. package/src/camera/python/test/iou_test.py +0 -799
  184. package/src/camera/python/test/polygon.py +0 -238
  185. package/src/camera/python/test/polygon_test.py +0 -256
  186. package/src/camera/python/test/polygon_test2.py +0 -484
  187. package/src/camera/python/typings.py +0 -50
  188. package/src/camera/python/video_frame.py +0 -143
  189. package/src/camera/session.ts +0 -192
  190. package/src/camera/streaming/fmp4-session.ts +0 -390
  191. package/src/camera/streaming/peer-connection.ts +0 -273
  192. package/src/camera/streaming/rtsp-session.ts +0 -331
  193. package/src/camera/streaming/webrtc-connection.ts +0 -260
  194. package/src/camera/streaming/werift-session.ts +0 -317
  195. package/src/camera/test/iou_test.ts +0 -761
  196. package/src/camera/test/polygon.test.ts +0 -611
  197. package/src/camera/test/polygon_test.ts +0 -210
  198. package/src/camera/types.ts +0 -48
  199. package/src/camera/utils.ts +0 -489
  200. package/src/camera/videoFrame.ts +0 -123
  201. package/src/cloud/index.ts +0 -61
  202. package/src/cloud/remote/cloudflare.ts +0 -18
  203. package/src/cloud/remote/upnp.ts +0 -18
  204. package/src/cloud/remote/utils.ts +0 -24
  205. package/src/cloud/types.ts +0 -16
  206. package/src/decoder/child.ts +0 -883
  207. package/src/decoder/imageUtils.ts +0 -275
  208. package/src/decoder/manager.ts +0 -251
  209. package/src/decoder/python/__init__.py +0 -0
  210. package/src/decoder/python/__pycache__/__init__.cpython-311.pyc +0 -0
  211. package/src/decoder/python/__pycache__/image_utils.cpython-311.pyc +0 -0
  212. package/src/decoder/python/__pycache__/typings.cpython-311.pyc +0 -0
  213. package/src/decoder/python/__pycache__/utils.cpython-311.pyc +0 -0
  214. package/src/decoder/python/child.py +0 -903
  215. package/src/decoder/python/image_utils.py +0 -196
  216. package/src/decoder/python/pool.py +0 -45
  217. package/src/decoder/python/test/group.py +0 -62
  218. package/src/decoder/python/test/motion.mp4 +0 -0
  219. package/src/decoder/python/test/motion2.mp4 +0 -0
  220. package/src/decoder/python/test/opencl.cl +0 -70
  221. package/src/decoder/python/test/opencl2.cl +0 -130
  222. package/src/decoder/python/test/test.py +0 -427
  223. package/src/decoder/python/test/test1.jpg +0 -0
  224. package/src/decoder/python/test/test1_resized.jpg +0 -0
  225. package/src/decoder/python/test/test2.jpg +0 -0
  226. package/src/decoder/python/test/test2.py +0 -451
  227. package/src/decoder/python/test/test2_resized.jpg +0 -0
  228. package/src/decoder/python/test/test3.jpg +0 -0
  229. package/src/decoder/python/test/utils.py +0 -50
  230. package/src/decoder/python/typings.py +0 -57
  231. package/src/decoder/python/utils.py +0 -70
  232. package/src/decoder/test/child.ts +0 -117
  233. package/src/decoder/test/ffmpeg.ts +0 -371
  234. package/src/decoder/test/test.ts +0 -182
  235. package/src/decoder/types.ts +0 -27
  236. package/src/decoder/utils.ts +0 -64
  237. package/src/decoder/wasm/asconfig.json +0 -28
  238. package/src/decoder/wasm/assembly/console.ts +0 -1
  239. package/src/decoder/wasm/assembly/index.ts +0 -890
  240. package/src/decoder/wasm/build/decoder.d.ts +0 -43
  241. package/src/decoder/wasm/build/decoder.js +0 -108
  242. package/src/decoder/wasm/build/decoder.wasm +0 -0
  243. package/src/decoder/wasm/tsconfig.json +0 -5
  244. package/src/decoder/worker.ts +0 -113
  245. package/src/go2rtc/index.ts +0 -324
  246. package/src/go2rtc/types.ts +0 -88
  247. package/src/main.ts +0 -267
  248. package/src/manager/coreManager.ts +0 -78
  249. package/src/manager/deviceManager.ts +0 -132
  250. package/src/manager/types.ts +0 -17
  251. package/src/plugins/index.ts +0 -443
  252. package/src/plugins/plugin.ts +0 -177
  253. package/src/plugins/runtime/base.ts +0 -282
  254. package/src/plugins/runtime/index.ts +0 -15
  255. package/src/plugins/runtime/node/child.ts +0 -193
  256. package/src/plugins/runtime/node/index.ts +0 -67
  257. package/src/plugins/runtime/node/plugin.ts +0 -122
  258. package/src/plugins/runtime/node/pluginApi.ts +0 -27
  259. package/src/plugins/runtime/node/proxy/cameraDevice.ts +0 -299
  260. package/src/plugins/runtime/node/proxy/coreManager.ts +0 -128
  261. package/src/plugins/runtime/node/proxy/deviceManager.ts +0 -187
  262. package/src/plugins/runtime/node/storage.ts +0 -312
  263. package/src/plugins/runtime/node/storageController.ts +0 -91
  264. package/src/plugins/runtime/python/__init__.py +0 -0
  265. package/src/plugins/runtime/python/__pycache__/__init__.cpython-311.pyc +0 -0
  266. package/src/plugins/runtime/python/__pycache__/camera_storage.cpython-311.pyc +0 -0
  267. package/src/plugins/runtime/python/__pycache__/config_service.cpython-311.pyc +0 -0
  268. package/src/plugins/runtime/python/__pycache__/constants.cpython-311.pyc +0 -0
  269. package/src/plugins/runtime/python/__pycache__/ipc.cpython-311.pyc +0 -0
  270. package/src/plugins/runtime/python/__pycache__/logger.cpython-311.pyc +0 -0
  271. package/src/plugins/runtime/python/__pycache__/message_queue.cpython-311.pyc +0 -0
  272. package/src/plugins/runtime/python/__pycache__/namespaces.cpython-311.pyc +0 -0
  273. package/src/plugins/runtime/python/__pycache__/plugin.cpython-311.pyc +0 -0
  274. package/src/plugins/runtime/python/__pycache__/plugin_api.cpython-311.pyc +0 -0
  275. package/src/plugins/runtime/python/__pycache__/plugin_logger.cpython-311.pyc +0 -0
  276. package/src/plugins/runtime/python/__pycache__/proxy_utils.cpython-311.pyc +0 -0
  277. package/src/plugins/runtime/python/__pycache__/schema.cpython-311.pyc +0 -0
  278. package/src/plugins/runtime/python/__pycache__/storage.cpython-311.pyc +0 -0
  279. package/src/plugins/runtime/python/__pycache__/storage_controller.cpython-311.pyc +0 -0
  280. package/src/plugins/runtime/python/__pycache__/typings.cpython-311.pyc +0 -0
  281. package/src/plugins/runtime/python/child.py +0 -248
  282. package/src/plugins/runtime/python/index.ts +0 -73
  283. package/src/plugins/runtime/python/namespaces.py +0 -101
  284. package/src/plugins/runtime/python/plugin.py +0 -155
  285. package/src/plugins/runtime/python/plugin_api.py +0 -29
  286. package/src/plugins/runtime/python/proxy/__pycache__/camera_device.cpython-310.pyc +0 -0
  287. package/src/plugins/runtime/python/proxy/__pycache__/camera_device.cpython-311.pyc +0 -0
  288. package/src/plugins/runtime/python/proxy/__pycache__/camera_device.cpython-38.pyc +0 -0
  289. package/src/plugins/runtime/python/proxy/__pycache__/camera_device.cpython-39.pyc +0 -0
  290. package/src/plugins/runtime/python/proxy/__pycache__/constants.cpython-311.pyc +0 -0
  291. package/src/plugins/runtime/python/proxy/__pycache__/constants.cpython-39.pyc +0 -0
  292. package/src/plugins/runtime/python/proxy/__pycache__/core_manager.cpython-311.pyc +0 -0
  293. package/src/plugins/runtime/python/proxy/__pycache__/device_manager.cpython-310.pyc +0 -0
  294. package/src/plugins/runtime/python/proxy/__pycache__/device_manager.cpython-311.pyc +0 -0
  295. package/src/plugins/runtime/python/proxy/__pycache__/device_manager.cpython-38.pyc +0 -0
  296. package/src/plugins/runtime/python/proxy/__pycache__/device_manager.cpython-39.pyc +0 -0
  297. package/src/plugins/runtime/python/proxy/__pycache__/generate_keys.cpython-310.pyc +0 -0
  298. package/src/plugins/runtime/python/proxy/__pycache__/generate_keys.cpython-311.pyc +0 -0
  299. package/src/plugins/runtime/python/proxy/__pycache__/generate_keys.cpython-38.pyc +0 -0
  300. package/src/plugins/runtime/python/proxy/__pycache__/generate_keys.cpython-39.pyc +0 -0
  301. package/src/plugins/runtime/python/proxy/__pycache__/message_queue.cpython-310.pyc +0 -0
  302. package/src/plugins/runtime/python/proxy/__pycache__/message_queue.cpython-311.pyc +0 -0
  303. package/src/plugins/runtime/python/proxy/__pycache__/message_queue.cpython-38.pyc +0 -0
  304. package/src/plugins/runtime/python/proxy/__pycache__/message_queue.cpython-39.pyc +0 -0
  305. package/src/plugins/runtime/python/proxy/__pycache__/plugins_manager.cpython-310.pyc +0 -0
  306. package/src/plugins/runtime/python/proxy/__pycache__/plugins_manager.cpython-311.pyc +0 -0
  307. package/src/plugins/runtime/python/proxy/__pycache__/plugins_manager.cpython-38.pyc +0 -0
  308. package/src/plugins/runtime/python/proxy/__pycache__/plugins_manager.cpython-39.pyc +0 -0
  309. package/src/plugins/runtime/python/proxy/__pycache__/system_manager.cpython-310.pyc +0 -0
  310. package/src/plugins/runtime/python/proxy/__pycache__/system_manager.cpython-311.pyc +0 -0
  311. package/src/plugins/runtime/python/proxy/__pycache__/system_manager.cpython-38.pyc +0 -0
  312. package/src/plugins/runtime/python/proxy/__pycache__/system_manager.cpython-39.pyc +0 -0
  313. package/src/plugins/runtime/python/proxy/camera_device.py +0 -1732
  314. package/src/plugins/runtime/python/proxy/core_manager.py +0 -126
  315. package/src/plugins/runtime/python/proxy/device_manager.py +0 -197
  316. package/src/plugins/runtime/python/schema.py +0 -99
  317. package/src/plugins/runtime/python/storage.py +0 -353
  318. package/src/plugins/runtime/python/storage_controller.py +0 -102
  319. package/src/plugins/runtime/python/typings.py +0 -195
  320. package/src/plugins/schema.ts +0 -472
  321. package/src/plugins/types.ts +0 -60
  322. package/src/plugins/worker.ts +0 -250
  323. package/src/rpc/index.ts +0 -149
  324. package/src/rpc/namespaces.ts +0 -79
  325. package/src/rpc/server.ts +0 -422
  326. package/src/rpc/types.ts +0 -119
  327. package/src/rpc/utils.ts +0 -16
  328. package/src/services/config/constants.ts +0 -47
  329. package/src/services/config/defaults.ts +0 -57
  330. package/src/services/config/index.ts +0 -744
  331. package/src/services/config/types.ts +0 -211
  332. package/src/services/logger/index.ts +0 -96
  333. package/src/types.ts +0 -47
  334. package/src/utils/path.ts +0 -16
  335. package/src/utils/pythonInstaller.ts +0 -597
  336. package/tsconfig.json +0 -37
  337. package/updates.config.js +0 -3
  338. /package/dist/interface/assets/{@xterm.DYP7pi_n.0.0.50-internal.0.css → @xterm.DYP7pi_n.0.0.50-internal.1.css} +0 -0
  339. /package/dist/interface/assets/{Adminpanel.BKek2EMH.0.0.50-internal.0.css → Adminpanel.BKek2EMH.0.0.50-internal.1.css} +0 -0
  340. /package/dist/interface/assets/{Cameras.BDWZJqPN.0.0.50-internal.0.css → Cameras.BDWZJqPN.0.0.50-internal.1.css} +0 -0
  341. /package/dist/interface/assets/{Camview.BFUFMoNX.0.0.50-internal.0.css → Camview.BFUFMoNX.0.0.50-internal.1.css} +0 -0
  342. /package/dist/interface/assets/{CuiConsole.DCYyxdVg.0.0.50-internal.0.css → CuiConsole.DCYyxdVg.0.0.50-internal.1.css} +0 -0
  343. /package/dist/interface/assets/{CuiPluginCard.yF8V0SZY.0.0.50-internal.0.css → CuiPluginCard.yF8V0SZY.0.0.50-internal.1.css} +0 -0
  344. /package/dist/interface/assets/{CuiTimeline.BkIwlYtw.0.0.50-internal.0.css → CuiTimeline.BkIwlYtw.0.0.50-internal.1.css} +0 -0
  345. /package/dist/interface/assets/{Plugin.DJElsAn5.0.0.50-internal.0.css → Plugin.DJElsAn5.0.0.50-internal.1.css} +0 -0
  346. /package/dist/interface/assets/{Plugins.0h77qnmN.0.0.50-internal.0.css → Plugins.0h77qnmN.0.0.50-internal.1.css} +0 -0
  347. /package/dist/interface/assets/{Settings.CkgfRkQr.0.0.50-internal.0.css → Settings.CkgfRkQr.0.0.50-internal.1.css} +0 -0
  348. /package/dist/interface/assets/{SettingsAccount.DeFul3eQ.0.0.50-internal.0.css → SettingsAccount.DeFul3eQ.0.0.50-internal.1.css} +0 -0
  349. /package/dist/interface/assets/{SettingsBackup.CX0rT0QJ.0.0.50-internal.0.css → SettingsBackup.CX0rT0QJ.0.0.50-internal.1.css} +0 -0
  350. /package/dist/interface/assets/{highlight.Ch2EwETz.0.0.50-internal.0.css → highlight.Ch2EwETz.0.0.50-internal.1.css} +0 -0
  351. /package/dist/interface/assets/{logo-256.BCQk9H1-.0.0.50-internal.0.png → logo-256.BCQk9H1-.0.0.50-internal.1.png} +0 -0
  352. /package/dist/interface/assets/{logo-512.DLKVOU2S.0.0.50-internal.0.png → logo-512.DLKVOU2S.0.0.50-internal.1.png} +0 -0
  353. /package/dist/interface/assets/{logo.DmEiRk0z.0.0.50-internal.0.png → logo.DmEiRk0z.0.0.50-internal.1.png} +0 -0
  354. /package/dist/interface/assets/{main.Cip9LkS3.0.0.50-internal.0.css → main.Cip9LkS3.0.0.50-internal.1.css} +0 -0
  355. /package/dist/interface/assets/{mode-json.Br7xisR1.0.0.50-internal.0.js → mode-json.Br7xisR1.0.0.50-internal.1.js} +0 -0
  356. /package/dist/interface/assets/{mode-yaml.CIYL8U3d.0.0.50-internal.0.js → mode-yaml.CIYL8U3d.0.0.50-internal.1.js} +0 -0
  357. /package/dist/interface/assets/{worker-base.jEXLGV2h.0.0.50-internal.0.js → worker-base.jEXLGV2h.0.0.50-internal.1.js} +0 -0
  358. /package/dist/interface/assets/{worker-json.DgwNIOck.0.0.50-internal.0.js → worker-json.DgwNIOck.0.0.50-internal.1.js} +0 -0
  359. /package/dist/interface/assets/{worker-yaml.B3uUYINB.0.0.50-internal.0.js → worker-yaml.B3uUYINB.0.0.50-internal.1.js} +0 -0
  360. /package/dist/interface/js/{@babel.l0sNRNKZ.0.0.50-internal.0.js → @babel.l0sNRNKZ.0.0.50-internal.1.js} +0 -0
  361. /package/dist/interface/js/{@intlify.BkGPX90O.0.0.50-internal.0.js → @intlify.BkGPX90O.0.0.50-internal.1.js} +0 -0
  362. /package/dist/interface/js/{@kurkle.D8fDXNIl.0.0.50-internal.0.js → @kurkle.D8fDXNIl.0.0.50-internal.1.js} +0 -0
  363. /package/dist/interface/js/{@primeuix.BFAY2Bk9.0.0.50-internal.0.js → @primeuix.BFAY2Bk9.0.0.50-internal.1.js} +0 -0
  364. /package/dist/interface/js/{@react-dnd.CcwRs9xb.0.0.50-internal.0.js → @react-dnd.CcwRs9xb.0.0.50-internal.1.js} +0 -0
  365. /package/dist/interface/js/{@socket.io.Dkula2eQ.0.0.50-internal.0.js → @socket.io.Dkula2eQ.0.0.50-internal.1.js} +0 -0
  366. /package/dist/interface/js/{@vue.B5vqhCp2.0.0.50-internal.0.js → @vue.B5vqhCp2.0.0.50-internal.1.js} +0 -0
  367. /package/dist/interface/js/{@xterm.CAa7rpjv.0.0.50-internal.0.js → @xterm.DIUBesyz.0.0.50-internal.1.js} +0 -0
  368. /package/dist/interface/js/{axios.DHr9lByg.0.0.50-internal.0.js → axios.DHr9lByg.0.0.50-internal.1.js} +0 -0
  369. /package/dist/interface/js/{birpc.l0sNRNKZ.0.0.50-internal.0.js → birpc.l0sNRNKZ.0.0.50-internal.1.js} +0 -0
  370. /package/dist/interface/js/{compare-versions.DqEOhma6.0.0.50-internal.0.js → compare-versions.DqEOhma6.0.0.50-internal.1.js} +0 -0
  371. /package/dist/interface/js/{dijkstrajs.C00ieaqj.0.0.50-internal.0.js → dijkstrajs.C00ieaqj.0.0.50-internal.1.js} +0 -0
  372. /package/dist/interface/js/{engine.io-parser.BiEtp6m2.0.0.50-internal.0.js → engine.io-parser.BiEtp6m2.0.0.50-internal.1.js} +0 -0
  373. /package/dist/interface/js/{entities.C20TfXL6.0.0.50-internal.0.js → entities.C20TfXL6.0.0.50-internal.1.js} +0 -0
  374. /package/dist/interface/js/{ev-emitter.X5f1qa-c.0.0.50-internal.0.js → ev-emitter.X5f1qa-c.0.0.50-internal.1.js} +0 -0
  375. /package/dist/interface/js/{get-size.D1dS-IaP.0.0.50-internal.0.js → get-size.D1dS-IaP.0.0.50-internal.1.js} +0 -0
  376. /package/dist/interface/js/{hookable.l0sNRNKZ.0.0.50-internal.0.js → hookable.l0sNRNKZ.0.0.50-internal.1.js} +0 -0
  377. /package/dist/interface/js/{mdurl.k9Sl0PQj.0.0.50-internal.0.js → mdurl.k9Sl0PQj.0.0.50-internal.1.js} +0 -0
  378. /package/dist/interface/js/{perfect-debounce.l0sNRNKZ.0.0.50-internal.0.js → perfect-debounce.l0sNRNKZ.0.0.50-internal.1.js} +0 -0
  379. /package/dist/interface/js/{primelocale.Bga3dOQu.0.0.50-internal.0.js → primelocale.Bga3dOQu.0.0.50-internal.1.js} +0 -0
  380. /package/dist/interface/js/{punycode.js.Dj65hjkv.0.0.50-internal.0.js → punycode.js.Dj65hjkv.0.0.50-internal.1.js} +0 -0
  381. /package/dist/interface/js/{react-dnd-html5-backend.1HQjlkwI.0.0.50-internal.0.js → react-dnd-html5-backend.1HQjlkwI.0.0.50-internal.1.js} +0 -0
  382. /package/dist/interface/js/{redux.BFxtlG_c.0.0.50-internal.0.js → redux.BFxtlG_c.0.0.50-internal.1.js} +0 -0
  383. /package/dist/interface/js/{tslib.9k7AwCpt.0.0.50-internal.0.js → tslib.9k7AwCpt.0.0.50-internal.1.js} +0 -0
  384. /package/dist/interface/js/{uc.micro.kMc2yuuw.0.0.50-internal.0.js → uc.micro.kMc2yuuw.0.0.50-internal.1.js} +0 -0
  385. /package/dist/interface/js/{uuid.C6aID195.0.0.50-internal.0.js → uuid.C6aID195.0.0.50-internal.1.js} +0 -0
  386. /package/dist/interface/js/{vue.l0sNRNKZ.0.0.50-internal.0.js → vue.l0sNRNKZ.0.0.50-internal.1.js} +0 -0
  387. /package/dist/interface/js/{zod.SKKegNRO.0.0.50-internal.0.js → zod.SKKegNRO.0.0.50-internal.1.js} +0 -0
@@ -1,492 +0,0 @@
1
- import { green } from 'ansicolor';
2
- import { dump as yamlDump } from 'js-yaml';
3
- import { constants, existsSync } from 'node:fs';
4
- import { writeFile } from 'node:fs/promises';
5
- import { homedir } from 'node:os';
6
- import { join } from 'node:path';
7
- import { container } from 'tsyringe';
8
-
9
- import { ConfigService } from '../../services/config/index.js';
10
- import {
11
- checkDatabaseCorruption,
12
- checkInstalledFFmpegs,
13
- checkOrphanedProcesses,
14
- checkPathPermissions,
15
- checkPathsExist,
16
- checkPortAvailability,
17
- cleanUpFiles,
18
- } from './checks.js';
19
-
20
- import type { LoggerService } from '../../services/logger/index.js';
21
- import type {
22
- CleanedUpFilesResult,
23
- DatabaseCorruptionResult,
24
- FFmpegExistenceResult,
25
- OrphanedProcessesResult,
26
- PathExistenceResult,
27
- PathPermission,
28
- PathPermissionsResult,
29
- PortAvailabilityResult,
30
- } from './checks.js';
31
-
32
- export interface SelfCheckConfig {
33
- enabled: boolean;
34
- checks: {
35
- pathsExistence: boolean;
36
- pathsPermissions: boolean;
37
- cleanupFiles: boolean;
38
- databaseCorruption: boolean;
39
- portAvailability: boolean;
40
- ffmpegBinaries: boolean;
41
- orphanedProcesses: boolean;
42
- };
43
- }
44
-
45
- export interface SelfCheckResults {
46
- status: 'success' | 'error' | 'disabled';
47
- error?: string;
48
- pathsExistence?: PathExistenceResult[];
49
- pathsPermissions?: PathPermissionsResult[];
50
- cleanedUpFiles?: CleanedUpFilesResult[];
51
- databaseCorruption?: DatabaseCorruptionResult;
52
- portAvailability?: PortAvailabilityResult[];
53
- installedFFmpegs?: FFmpegExistenceResult[];
54
- orphanedProcesses?: OrphanedProcessesResult[];
55
- }
56
-
57
- interface IssueReport {
58
- type: string;
59
- message: string;
60
- details?: any;
61
- }
62
-
63
- export class SelfCheck {
64
- private logger: LoggerService;
65
- private configService: ConfigService;
66
- private config: SelfCheckConfig;
67
-
68
- constructor(config: Partial<SelfCheckConfig> = {}) {
69
- this.logger = container.resolve<LoggerService>('logger');
70
- this.configService = container.resolve<ConfigService>('configService');
71
-
72
- this.config = {
73
- enabled: true,
74
- checks: {
75
- pathsExistence: true,
76
- pathsPermissions: true,
77
- cleanupFiles: true,
78
- databaseCorruption: true,
79
- portAvailability: true,
80
- ffmpegBinaries: true,
81
- orphanedProcesses: true,
82
- },
83
- ...config,
84
- };
85
- }
86
-
87
- public async run(): Promise<void> {
88
- if (!this.config.enabled) {
89
- this.logger.log('Self-check is disabled');
90
- return;
91
- }
92
-
93
- this.logger.log('Running self-checks...');
94
-
95
- const checkResults = await this.performChecks();
96
-
97
- if (checkResults.status === 'error') {
98
- this.logger.error(`Self-check failed: ${checkResults.error}`);
99
- throw new Error('SELF_CHECK_FAILED');
100
- }
101
-
102
- const criticalIssues = this.checkForCriticalIssues(checkResults);
103
- const nonCriticalIssues = this.checkForNonCriticalIssues(checkResults);
104
-
105
- if (criticalIssues.length > 0) {
106
- this.logger.error('Critical issues found during self-check. Check the detailed report for more information.');
107
- await this.saveCheckReport(checkResults, criticalIssues, nonCriticalIssues);
108
- throw new Error('CRITICAL_ISSUES_FOUND');
109
- }
110
-
111
- if (nonCriticalIssues.length > 0) {
112
- this.logger.warn('Non-critical issues found during self-check. Check the detailed report for more information.');
113
- } else {
114
- this.logger.log(green('Self-check passed successfully!'));
115
- }
116
-
117
- await this.saveCheckReport(checkResults, criticalIssues, nonCriticalIssues);
118
- }
119
-
120
- private async performChecks(): Promise<SelfCheckResults> {
121
- const results: Partial<SelfCheckResults> = {};
122
-
123
- const pathsToCheck = [
124
- this.configService.HOME_PATH,
125
- this.configService.STORAGE_PATH,
126
- this.configService.LOGS_PATH,
127
- this.configService.PIDS_FILE,
128
- this.configService.DATABASE_PATH,
129
- this.configService.TOKENS_PATH,
130
- this.configService.USERS_STORAGE_PATH,
131
- this.configService.TMP_PATH,
132
- this.configService.REPORTS_FILE,
133
- this.configService.PLUGINS_STORAGE_PATH,
134
- this.configService.PLUGINS_INSTALL_PATH,
135
- this.configService.LOG_FILE,
136
- this.configService.CONFIG_FILE,
137
- this.configService.SECRETS_FILE,
138
- this.configService.GO2RTC_BINARY,
139
- this.configService.GO2RTC_CONFIG_FILE,
140
- this.configService.NATS_BINARY,
141
- ];
142
-
143
- const pathsWithPermissionsToCheck: PathPermission[] = [
144
- { path: this.configService.GO2RTC_BINARY, mode: constants.X_OK },
145
- { path: this.configService.NATS_BINARY, mode: constants.X_OK },
146
- { path: this.configService.CONFIG_FILE, mode: constants.R_OK | constants.W_OK },
147
- { path: this.configService.GO2RTC_CONFIG_FILE, mode: constants.R_OK | constants.W_OK },
148
- { path: this.configService.SECRETS_FILE, mode: constants.R_OK | constants.W_OK },
149
- { path: this.configService.LOG_FILE, mode: constants.R_OK | constants.W_OK },
150
- { path: this.configService.DATABASE_PATH, mode: constants.R_OK | constants.W_OK },
151
- { path: this.configService.TOKENS_PATH, mode: constants.R_OK | constants.W_OK },
152
- { path: this.configService.HOME_PATH, mode: constants.R_OK | constants.W_OK | constants.X_OK },
153
- { path: this.configService.STORAGE_PATH, mode: constants.R_OK | constants.W_OK | constants.X_OK },
154
- { path: this.configService.LOGS_PATH, mode: constants.R_OK | constants.W_OK | constants.X_OK },
155
- { path: this.configService.USERS_STORAGE_PATH, mode: constants.R_OK | constants.W_OK | constants.X_OK },
156
- { path: this.configService.TMP_PATH, mode: constants.R_OK | constants.W_OK | constants.X_OK },
157
- { path: this.configService.PLUGINS_STORAGE_PATH, mode: constants.R_OK | constants.W_OK | constants.X_OK },
158
- { path: this.configService.PLUGINS_INSTALL_PATH, mode: constants.R_OK | constants.W_OK | constants.X_OK },
159
- { path: this.configService.PIDS_FILE, mode: constants.R_OK | constants.W_OK },
160
- ];
161
-
162
- const cleanedUpFiles: string[] = [];
163
-
164
- const portsToCheck = [
165
- this.configService.config.port,
166
- this.configService.go2rtcConfig.api.listen.split(':')[1],
167
- this.configService.go2rtcConfig.api.tls_listen.split(':')[1],
168
- this.configService.go2rtcConfig.rtsp.listen.split(':')[1],
169
- this.configService.go2rtcConfig.srtp.listen.split(':')[1],
170
- this.configService.go2rtcConfig.rtmp.listen.split(':')[1],
171
- this.configService.go2rtcConfig.webrtc.listen.split(':')[1],
172
- ]
173
- .filter((port) => port)
174
- .map((port) => parseInt(port as any, 10));
175
-
176
- try {
177
- if (this.config.checks.pathsExistence) {
178
- results.pathsExistence = await checkPathsExist(pathsToCheck);
179
- }
180
-
181
- if (this.config.checks.pathsPermissions) {
182
- results.pathsPermissions = await checkPathPermissions(pathsWithPermissionsToCheck);
183
- }
184
-
185
- if (this.config.checks.cleanupFiles) {
186
- results.cleanedUpFiles = await cleanUpFiles(cleanedUpFiles);
187
- }
188
-
189
- if (this.config.checks.databaseCorruption) {
190
- results.databaseCorruption = await checkDatabaseCorruption(this.configService.DATABASE_PATH);
191
- }
192
-
193
- if (this.config.checks.orphanedProcesses) {
194
- results.orphanedProcesses = await checkOrphanedProcesses(this.configService.processes);
195
- }
196
-
197
- if (this.config.checks.portAvailability) {
198
- results.portAvailability = await checkPortAvailability(portsToCheck);
199
- }
200
-
201
- if (this.config.checks.ffmpegBinaries) {
202
- results.installedFFmpegs = await checkInstalledFFmpegs();
203
- }
204
-
205
- return { status: 'success', ...results };
206
- } catch (error) {
207
- return { status: 'error', error: error.message, ...results };
208
- }
209
- }
210
-
211
- private checkForCriticalIssues(results: SelfCheckResults): IssueReport[] {
212
- const criticalIssues: IssueReport[] = [];
213
-
214
- if (results.databaseCorruption?.isCorrupt) {
215
- criticalIssues.push({
216
- type: 'Database Corruption',
217
- message: 'Database corruption detected',
218
- details: this.sanitizeDetails(results.databaseCorruption),
219
- });
220
- }
221
-
222
- if (results.pathsExistence) {
223
- const missingCriticalPaths = results.pathsExistence
224
- .filter((result) => !result.exists && this.isCriticalPath(result.path))
225
- .map((result) => ({
226
- type: 'Missing Critical Path',
227
- message: `Missing critical path: ${result.path}`,
228
- details: this.sanitizeDetails(result),
229
- }));
230
- criticalIssues.push(...missingCriticalPaths);
231
- }
232
-
233
- if (results.pathsPermissions) {
234
- const criticalPermissionIssues = results.pathsPermissions
235
- .filter((result) => !result.hasPermissions && this.isCriticalPath(result.path))
236
- .map((result) => ({
237
- type: 'Insufficient Permissions',
238
- message: `Insufficient permissions for critical path: ${result.path}`,
239
- details: this.sanitizeDetails(result),
240
- }));
241
- criticalIssues.push(...criticalPermissionIssues);
242
- }
243
-
244
- if (results.portAvailability) {
245
- const unavailablePorts = results.portAvailability
246
- .filter((result) => !result.isAvailable)
247
- .map((result) => ({
248
- type: 'Port Unavailable',
249
- message: `Required port ${result.port} is not available`,
250
- details: this.sanitizeDetails(result),
251
- }));
252
- criticalIssues.push(...unavailablePorts);
253
- }
254
-
255
- return criticalIssues;
256
- }
257
-
258
- private checkForNonCriticalIssues(results: SelfCheckResults): IssueReport[] {
259
- const nonCriticalIssues: IssueReport[] = [];
260
-
261
- if (results.pathsExistence) {
262
- const missingNonCriticalPaths = results.pathsExistence
263
- .filter((result) => !result.exists && !this.isCriticalPath(result.path))
264
- .map((result) => ({
265
- type: 'Missing Non-Critical Path',
266
- message: `Missing non-critical path: ${result.path}`,
267
- details: result,
268
- }));
269
- nonCriticalIssues.push(...missingNonCriticalPaths);
270
- }
271
-
272
- if (results.pathsPermissions) {
273
- const nonCriticalPermissionIssues = results.pathsPermissions
274
- .filter((result) => !result.hasPermissions && !this.isCriticalPath(result.path))
275
- .map((result) => ({
276
- type: 'Insufficient Permissions',
277
- message: `Insufficient permissions for non-critical path: ${result.path}`,
278
- details: result,
279
- }));
280
- nonCriticalIssues.push(...nonCriticalPermissionIssues);
281
- }
282
-
283
- if (results.orphanedProcesses) {
284
- const orphanedProcesses = results.orphanedProcesses
285
- .filter((result) => result.wasOrphaned)
286
- .map((result) => ({
287
- type: 'Orphaned Process',
288
- message: `Orphaned process detected: ${result.processInfo.command} (PID: ${result.processInfo.pid})`,
289
- details: result,
290
- }));
291
- nonCriticalIssues.push(...orphanedProcesses);
292
- }
293
-
294
- if (results.installedFFmpegs) {
295
- const missingFfmpegBinaries = results.installedFFmpegs
296
- .filter((result) => !result.exists)
297
- .map((result) => ({
298
- type: 'Installed FFmpeg Binary',
299
- message: 'FFmpeg binary not found',
300
- details: result,
301
- }));
302
- nonCriticalIssues.push(...missingFfmpegBinaries);
303
-
304
- const missingPermissions = results.installedFFmpegs
305
- .filter((result) => result.exists && !result.hasPermissions)
306
- .map((result) => ({
307
- type: 'FFmpeg Binary Permissions',
308
- message: 'FFmpeg binary has insufficient permissions',
309
- details: result,
310
- }));
311
- nonCriticalIssues.push(...missingPermissions);
312
- }
313
-
314
- return nonCriticalIssues;
315
- }
316
-
317
- private async saveCheckReport(checkResults: SelfCheckResults, criticalIssues: IssueReport[], nonCriticalIssues: IssueReport[]): Promise<void> {
318
- let reportPath = this.configService.REPORTS_FILE;
319
- if (!existsSync(this.configService.REPORTS_FILE)) {
320
- reportPath = join(homedir(), 'camera.ui.report.yaml');
321
- }
322
-
323
- const report = this.generateCheckReport(checkResults, criticalIssues, nonCriticalIssues);
324
-
325
- await writeFile(reportPath, report);
326
- this.logger.log(`Detailed self-check report saved to: ${reportPath}`);
327
- }
328
-
329
- private generateCheckReport(checkResults: SelfCheckResults, criticalIssues: IssueReport[], nonCriticalIssues: IssueReport[]): string {
330
- const report = {
331
- self_check_report: {
332
- environment: ConfigService.ENVIRONMENT,
333
- metadata: {
334
- status: checkResults.status,
335
- timestamp: new Date().toISOString(),
336
- },
337
- critical_issues: this.formatIssues(criticalIssues),
338
- non_critical_issues: this.formatIssues(nonCriticalIssues),
339
- detailed_results: {
340
- paths_existence: this.formatPathsExistence(checkResults.pathsExistence),
341
- paths_permissions: this.formatPathsPermissions(checkResults.pathsPermissions),
342
- cleaned_up_files: this.formatCleanedUpFiles(checkResults.cleanedUpFiles),
343
- database_corruption: this.formatDatabaseCorruption(checkResults.databaseCorruption),
344
- port_availability: this.formatPortAvailability(checkResults.portAvailability),
345
- ffmpeg_binaries: this.formatFfmpegBinaries(checkResults.installedFFmpegs),
346
- orphaned_processes: this.formatOrphanedProcesses(checkResults.orphanedProcesses),
347
- },
348
- },
349
- };
350
-
351
- return yamlDump(report, { indent: 2, lineWidth: -1 });
352
- }
353
-
354
- private formatIssues(issues: IssueReport[]): any[] {
355
- return issues.map((issue) => ({
356
- issue: {
357
- type: issue.type,
358
- message: issue.message,
359
- details: this.sanitizeDetails(issue.details),
360
- },
361
- }));
362
- }
363
-
364
- private formatPathsExistence(results?: SelfCheckResults['pathsExistence']): any[] {
365
- if (!results) return [];
366
- return results.map((result) => ({
367
- path: {
368
- name: this.getPathName(result.path),
369
- path: result.path,
370
- exists: result.exists,
371
- },
372
- }));
373
- }
374
-
375
- private formatPathsPermissions(results?: SelfCheckResults['pathsPermissions']): any[] {
376
- if (!results) return [];
377
- return results.map((result) => ({
378
- path_permission: {
379
- name: this.getPathName(result.path),
380
- path: result.path,
381
- has_permissions: result.hasPermissions,
382
- error: result.error ? this.serializeError(result.error) : undefined,
383
- },
384
- }));
385
- }
386
-
387
- private formatCleanedUpFiles(results?: SelfCheckResults['cleanedUpFiles']): any[] {
388
- if (!results) return [];
389
- return results.map((result) => ({
390
- cleaned_file: {
391
- name: this.getPathName(result.path),
392
- path: result.path,
393
- cleaned: result.wasCleaned,
394
- error: result.error ? this.serializeError(result.error) : undefined,
395
- },
396
- }));
397
- }
398
-
399
- private formatDatabaseCorruption(result?: SelfCheckResults['databaseCorruption']): Record<string, any> | null {
400
- if (!result) return null;
401
- return {
402
- path: result.dbPath,
403
- is_corrupt: result.isCorrupt,
404
- error: result.error?.message ? this.serializeError(result.error) : undefined,
405
- };
406
- }
407
-
408
- private formatPortAvailability(results?: SelfCheckResults['portAvailability']): any[] {
409
- if (!results) return [];
410
- return results.map((result) => ({
411
- port: {
412
- port: result.port,
413
- available: result.isAvailable,
414
- },
415
- }));
416
- }
417
-
418
- private formatFfmpegBinaries(results?: SelfCheckResults['installedFFmpegs']): any[] {
419
- if (!results) return [];
420
- return results.map((result) => ({
421
- ffmpeg_binary: {
422
- name: this.getPathName(result.path),
423
- path: result.path,
424
- exists: result.exists,
425
- hasPermissions: result.hasPermissions,
426
- error: result.error ? this.serializeError(result.error) : undefined,
427
- },
428
- }));
429
- }
430
-
431
- private formatOrphanedProcesses(results?: SelfCheckResults['orphanedProcesses']): any[] {
432
- if (!results) return [];
433
- return results.map((result) => ({
434
- process: {
435
- command: result.processInfo.command,
436
- pid: result.processInfo.pid,
437
- orphaned: result.wasOrphaned,
438
- error: result.error ? this.serializeError(result.error) : undefined,
439
- },
440
- }));
441
- }
442
-
443
- private sanitizeDetails(details: any): any {
444
- if (details instanceof Error) {
445
- return this.serializeError(details);
446
- } else if (Array.isArray(details)) {
447
- return details.map((item) => this.sanitizeDetails(item));
448
- } else if (typeof details === 'object' && details !== null) {
449
- const sanitizedObject: Record<string, any> = {};
450
- for (const key in details) {
451
- sanitizedObject[key] = this.sanitizeDetails(details[key]);
452
- }
453
- return sanitizedObject;
454
- } else {
455
- return details;
456
- }
457
- }
458
-
459
- private serializeError(error: Error): Record<string, any> {
460
- return {
461
- name: error.name,
462
- message: error.message,
463
- stack: error.stack,
464
- };
465
- }
466
-
467
- private getPathName(path: string): string {
468
- const parts = path.split('/');
469
- return parts[parts.length - 1] || path;
470
- }
471
-
472
- private isCriticalPath(path: string): boolean {
473
- const criticalPaths = [
474
- this.configService.HOME_PATH,
475
- this.configService.STORAGE_PATH,
476
- this.configService.PIDS_FILE,
477
- this.configService.DATABASE_PATH,
478
- this.configService.TOKENS_PATH,
479
- this.configService.USERS_STORAGE_PATH,
480
- this.configService.PLUGINS_STORAGE_PATH,
481
- this.configService.PLUGINS_INSTALL_PATH,
482
- this.configService.LOG_FILE,
483
- this.configService.CONFIG_FILE,
484
- this.configService.SECRETS_FILE,
485
- this.configService.GO2RTC_BINARY,
486
- this.configService.GO2RTC_CONFIG_FILE,
487
- this.configService.NATS_BINARY,
488
- ];
489
-
490
- return criticalPaths.includes(path);
491
- }
492
- }
@@ -1,104 +0,0 @@
1
- import type { UsableNetworkAddress } from '@camera.ui/common/network';
2
- import type { BaseCamera, CameraInputSettings, Point } from '@camera.ui/types';
3
- import type { CamviewSettingsLayoutMode, ClientData, JwtTokenEncoded } from '../types/index.js';
4
-
5
- export interface DBAuth {
6
- tokens: JwtTokenEncoded[];
7
- clients: ClientData[];
8
- }
9
-
10
- export interface DBCamera extends BaseCamera {
11
- sources: CameraInputSettings[];
12
- }
13
-
14
- export interface DBPlugin {
15
- readonly _id: string;
16
- pluginName: string;
17
- }
18
-
19
- export interface DBSettings {
20
- version: string;
21
- }
22
-
23
- export interface DBUser {
24
- readonly _id: string;
25
- avatar: string;
26
- username: string;
27
- password: string;
28
- sessionTimer: number;
29
- role: DBRoles;
30
- rememberMe: boolean;
31
- singleSession: boolean;
32
- firstLogin: boolean;
33
- preferences: DBUserPreferences;
34
- }
35
-
36
- export type RemoteAccessMode = 'disabled' | 'upnp' | 'port-forward' | 'router-forward' | 'cloudflare' | 'custom-domain';
37
-
38
- export interface CloudflareConfig {
39
- customDomain?: string;
40
- }
41
-
42
- export interface CustomDomainConfig {
43
- url?: string;
44
- }
45
-
46
- export interface DBSystem {
47
- serverAddresses?: string[];
48
- remoteAccess: {
49
- mode: RemoteAccessMode;
50
- cloudflare?: CloudflareConfig;
51
- customDomain?: CustomDomainConfig;
52
- };
53
- }
54
-
55
- export type DBRoles = 'master' | 'admin' | 'user';
56
-
57
- export interface DBCameraShortcut {
58
- readonly _id: string;
59
- cameraId: string;
60
- points: Point;
61
- }
62
-
63
- // prettier-ignore
64
- export type DBUserCameraPreferences = Record<
65
- string,
66
- | {
67
- shortcuts: DBCameraShortcut[];
68
- }
69
- | undefined
70
- >;
71
-
72
- export interface DBUserPreferences {
73
- camview: {
74
- views: DBCamviewLayout[];
75
- };
76
- cameras: DBUserCameraPreferences;
77
- }
78
-
79
- export type DBCamviewViewSize = 1 | 4 | 6 | 7 | 9 | 10 | 12 | 13 | 15 | 16 | 20 | 26;
80
-
81
- export interface DBCamviewLayout {
82
- readonly _id: string;
83
- name: string;
84
- viewSize: DBCamviewViewSize;
85
- cameras: DBCamviewLayoutCamera[];
86
- type: CamviewSettingsLayoutMode;
87
- }
88
-
89
- export interface DBCamviewLayoutCamera {
90
- index: number;
91
- cameraId: string;
92
- }
93
-
94
- export type DBPluginStorageValue = Record<string, any>;
95
-
96
- export interface SystemInfo extends DBSystem {
97
- networkAddresses: UsableNetworkAddress[];
98
- }
99
-
100
- export interface PluginData {
101
- pluginName: string;
102
- id?: string;
103
- version?: string;
104
- }
@@ -1,48 +0,0 @@
1
- import { sleep } from '@camera.ui/common/utils';
2
-
3
- import { fetchInstance } from './index.js';
4
-
5
- import type { RequestQueue } from '../queue.js';
6
- import type { ApplicationResponse, ExitData } from '../types.js';
7
-
8
- export class ApplicationApi {
9
- private requestQueue: RequestQueue;
10
-
11
- constructor(requestQueue: RequestQueue) {
12
- this.requestQueue = requestQueue;
13
- }
14
-
15
- public async close(data: ExitData): Promise<void> {
16
- try {
17
- const params = new URLSearchParams(data as any);
18
- await fetchInstance()(`/exit?${params}`, {
19
- method: 'POST',
20
- });
21
- } catch {
22
- // Do nothing
23
- }
24
- }
25
-
26
- public async info(): Promise<ApplicationResponse> {
27
- const response = await fetchInstance()('', {
28
- method: 'GET',
29
- });
30
-
31
- if (!response.ok) {
32
- throw new Error(`HTTP error! Message: ${response.statusText} (${response.status})`);
33
- }
34
-
35
- const json: ApplicationResponse = await response.json();
36
-
37
- return json;
38
- }
39
-
40
- public async restart(): Promise<void> {
41
- try {
42
- await fetchInstance()('/restart', { method: 'POST' });
43
- await sleep(250);
44
- } catch {
45
- // Do nothing
46
- }
47
- }
48
- }
@@ -1,61 +0,0 @@
1
- import { dump } from 'js-yaml';
2
-
3
- import { fetchInstance } from './index.js';
4
-
5
- import type { RequestQueue } from '../queue.js';
6
-
7
- export class ConfigApi {
8
- private requestQueue: RequestQueue;
9
-
10
- constructor(requestQueue: RequestQueue) {
11
- this.requestQueue = requestQueue;
12
- }
13
-
14
- public async getConfig(): Promise<any> {
15
- const response = await fetchInstance()('/config', {
16
- method: 'GET',
17
- });
18
-
19
- if (!response.ok) {
20
- throw new Error(`HTTP error! Message: ${response.statusText} (${response.status})`);
21
- }
22
-
23
- return response.text();
24
- }
25
-
26
- public async rewriteConfig(data: Record<string, any>): Promise<void> {
27
- if (data.streams && Object.keys(data.streams).length === 0) {
28
- delete data.streams;
29
- }
30
-
31
- const config = dump(data, { lineWidth: -1, noRefs: true });
32
- const response = await this.requestQueue.enqueue(() =>
33
- fetchInstance()('/config', {
34
- method: 'POST',
35
- body: config,
36
- }),
37
- );
38
-
39
- if (!response.ok) {
40
- throw new Error(`HTTP error! Message: ${response.statusText} (${response.status})`);
41
- }
42
- }
43
-
44
- public async mergeConfig(data: Record<string, any>): Promise<void> {
45
- if (data.streams && Object.keys(data.streams).length === 0) {
46
- delete data.streams;
47
- }
48
-
49
- const config = dump(data, { lineWidth: -1, noRefs: true });
50
- const response = await this.requestQueue.enqueue(() =>
51
- fetchInstance()('/config', {
52
- method: 'PATCH',
53
- body: config,
54
- }),
55
- );
56
-
57
- if (!response.ok) {
58
- throw new Error(`HTTP error! Message: ${response.statusText} (${response.status})`);
59
- }
60
- }
61
- }