camera.ui3 0.0.34-alpha.5 → 0.0.35-test.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 (541) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/CONTRIBUTING.md +1 -0
  3. package/LICENSE.md +22 -0
  4. package/README.md +1 -0
  5. package/dist/{server/bin/cameraui.d.ts → cameraui.d.ts} +24 -17
  6. package/dist/{server/bin/cameraui.js → cameraui.js} +195 -208
  7. package/dist/cameraui.js.map +1 -0
  8. package/dist/installer/base.js.map +1 -0
  9. package/dist/{server/bin/installer → installer}/darwin.d.ts +0 -8
  10. package/dist/{server/bin/installer → installer}/darwin.js +9 -49
  11. package/dist/installer/darwin.js.map +1 -0
  12. package/dist/{server/bin/installer → installer}/freebsd.js +3 -2
  13. package/dist/installer/freebsd.js.map +1 -0
  14. package/dist/{server/bin/installer → installer}/linux.d.ts +1 -1
  15. package/dist/{server/bin/installer → installer}/linux.js +9 -24
  16. package/dist/installer/linux.js.map +1 -0
  17. package/dist/{server/bin/installer → installer}/win32.js +4 -2
  18. package/dist/installer/win32.js.map +1 -0
  19. package/dist/{server/bin/logger.js → logger.js} +2 -2
  20. package/dist/logger.js.map +1 -0
  21. package/dist/manager.d.ts +26 -0
  22. package/dist/manager.js +203 -0
  23. package/dist/manager.js.map +1 -0
  24. package/nodemon.json +14 -0
  25. package/package.json +21 -89
  26. package/dist/interface/@babel.l0sNRNKZ.0.0.34-alpha.5.js +0 -1
  27. package/dist/interface/@intlify.DXtFJcML.0.0.34-alpha.5.js +0 -15
  28. package/dist/interface/@mdi.C1UTQKuc.0.0.34-alpha.5.js +0 -1
  29. package/dist/interface/@react-dnd.CcwRs9xb.0.0.34-alpha.5.js +0 -1
  30. package/dist/interface/@socket.io.Dkula2eQ.0.0.34-alpha.5.js +0 -1
  31. package/dist/interface/@tanstack.B92K4jky.0.0.34-alpha.5.js +0 -1
  32. package/dist/interface/@turf.l0sNRNKZ.0.0.34-alpha.5.js +0 -1
  33. package/dist/interface/@vee-validate.CO6TzE0f.0.0.34-alpha.5.js +0 -5
  34. package/dist/interface/@vue.CA7eQC0C.0.0.34-alpha.5.js +0 -17
  35. package/dist/interface/@vueform.BisuKBst.0.0.34-alpha.5.js +0 -1
  36. package/dist/interface/@vueuse.MCSqyj_O.0.0.34-alpha.5.js +0 -1
  37. package/dist/interface/@xterm.GAbfxM_B.0.0.34-alpha.5.js +0 -66
  38. package/dist/interface/Account.DpNjtlWo.0.0.34-alpha.5.js +0 -1
  39. package/dist/interface/Adminpanel.BfVdSL09.0.0.34-alpha.5.js +0 -2
  40. package/dist/interface/Appearance.CbP_IKMg.0.0.34-alpha.5.js +0 -1
  41. package/dist/interface/Backup.Op0zdFf6.0.0.34-alpha.5.js +0 -1
  42. package/dist/interface/Camera.DS_9ofaG.0.0.34-alpha.5.js +0 -1
  43. package/dist/interface/Cameras.DPB_PsWl.0.0.34-alpha.5.js +0 -1
  44. package/dist/interface/Camview.OjtdKeCN.0.0.34-alpha.5.js +0 -1
  45. package/dist/interface/Config.DNjOF6kZ.0.0.34-alpha.5.js +0 -1
  46. package/dist/interface/Console.DVsT_dtb.0.0.34-alpha.5.js +0 -4
  47. package/dist/interface/FirstSteps.5szuHndh.0.0.34-alpha.5.js +0 -1
  48. package/dist/interface/NewCamera.CnNUoIB5.0.0.34-alpha.5.js +0 -448
  49. package/dist/interface/Plugin.DpOqARwa.0.0.34-alpha.5.js +0 -1
  50. package/dist/interface/Plugins.f1G5TFlw.0.0.34-alpha.5.js +0 -1
  51. package/dist/interface/Recordings.DY4YbnIj.0.0.34-alpha.5.js +0 -1
  52. package/dist/interface/Recordings.DgUZFsbb.0.0.34-alpha.5.js +0 -1
  53. package/dist/interface/Settings.D7X-VK7t.0.0.34-alpha.5.js +0 -1
  54. package/dist/interface/System.CRLXKRxs.0.0.34-alpha.5.js +0 -4
  55. package/dist/interface/User.Dp3KZyIp.0.0.34-alpha.5.js +0 -1
  56. package/dist/interface/VConfigEditor.vue_vue_type_script_setup_true_lang.vlbkJcrR.0.0.34-alpha.5.js +0 -2
  57. package/dist/interface/VConsole.BdzOs_Bu.0.0.34-alpha.5.js +0 -1
  58. package/dist/interface/VPlayer.D-Pw-5Hr.0.0.34-alpha.5.js +0 -4
  59. package/dist/interface/VPluginCard.CmD9ACFH.0.0.34-alpha.5.js +0 -4
  60. package/dist/interface/ace-builds.BzgOTKpx.0.0.34-alpha.5.js +0 -970
  61. package/dist/interface/apexcharts.BvwZuuWW.0.0.34-alpha.5.js +0 -795
  62. package/dist/interface/assets/@vueform.0.0.34-alpha.5.CroAHJs8.css +0 -1
  63. package/dist/interface/assets/@xterm.0.0.34-alpha.5.CFbL2ovg.css +0 -32
  64. package/dist/interface/assets/Account.0.0.34-alpha.5.J7oAjogS.css +0 -1
  65. package/dist/interface/assets/Adminpanel.0.0.34-alpha.5.a3t1v3MB.css +0 -1
  66. package/dist/interface/assets/Backup.0.0.34-alpha.5.CX0rT0QJ.css +0 -1
  67. package/dist/interface/assets/Camera.0.0.34-alpha.5.D1I-fW4q.css +0 -1
  68. package/dist/interface/assets/Cameras.0.0.34-alpha.5.Buf1Dgce.css +0 -1
  69. package/dist/interface/assets/Camview.0.0.34-alpha.5.B7Cja2ry.css +0 -1
  70. package/dist/interface/assets/Config.0.0.34-alpha.5.DNGo2krN.css +0 -1
  71. package/dist/interface/assets/Console.0.0.34-alpha.5.Bh8l9QnM.css +0 -1
  72. package/dist/interface/assets/FirstSteps.0.0.34-alpha.5.sPEcItZ6.css +0 -1
  73. package/dist/interface/assets/NewCamera.0.0.34-alpha.5.Cq8GzeJ7.css +0 -1
  74. package/dist/interface/assets/Plugin.0.0.34-alpha.5.DJbgaQc1.css +0 -1
  75. package/dist/interface/assets/Plugins.0.0.34-alpha.5.DXSoO9M1.css +0 -1
  76. package/dist/interface/assets/Settings.0.0.34-alpha.5.CVmui2kE.css +0 -1
  77. package/dist/interface/assets/User.0.0.34-alpha.5.BiGtIFqt.css +0 -1
  78. package/dist/interface/assets/VConsole.0.0.34-alpha.5.BCqKHpmJ.css +0 -1
  79. package/dist/interface/assets/VPlayer.0.0.34-alpha.5.DNtDNhfg.css +0 -1
  80. package/dist/interface/assets/VPluginCard.0.0.34-alpha.5.C8Lj6X-J.css +0 -1
  81. package/dist/interface/assets/highlight.0.0.34-alpha.5.Ch2EwETz.css +0 -1
  82. package/dist/interface/assets/logo-256.0.0.34-alpha.5.BCQk9H1-.png +0 -0
  83. package/dist/interface/assets/logo-512.0.0.34-alpha.5.DLKVOU2S.png +0 -0
  84. package/dist/interface/assets/logo.0.0.34-alpha.5.DmEiRk0z.png +0 -0
  85. package/dist/interface/assets/main.0.0.34-alpha.5.DNhh__S1.css +0 -1
  86. package/dist/interface/assets/mode-json.0.0.34-alpha.5.Br7xisR1.js +0 -275
  87. package/dist/interface/assets/mode-yaml.0.0.34-alpha.5.CIYL8U3d.js +0 -395
  88. package/dist/interface/assets/vue3-toastify.0.0.34-alpha.5.DHXAGmwn.css +0 -1
  89. package/dist/interface/assets/vuetify.0.0.34-alpha.5.CgGsw6iO.css +0 -5
  90. package/dist/interface/axios.C-n2IhIP.0.0.34-alpha.5.js +0 -6
  91. package/dist/interface/birpc.l0sNRNKZ.0.0.34-alpha.5.js +0 -1
  92. package/dist/interface/browserconfig.xml +0 -11
  93. package/dist/interface/compare-versions.DqEOhma6.0.0.34-alpha.5.js +0 -1
  94. package/dist/interface/dijkstrajs.D_NXgYpA.0.0.34-alpha.5.js +0 -1
  95. package/dist/interface/dnd-core.DfCeUEJG.0.0.34-alpha.5.js +0 -1
  96. package/dist/interface/draggabilly.B0aLkTy2.0.0.34-alpha.5.js +0 -6
  97. package/dist/interface/engine.io-client.CVSa3JNO.0.0.34-alpha.5.js +0 -1
  98. package/dist/interface/engine.io-parser.BiEtp6m2.0.0.34-alpha.5.js +0 -1
  99. package/dist/interface/entities.C20TfXL6.0.0.34-alpha.5.js +0 -1
  100. package/dist/interface/ev-emitter.iUkvFOmA.0.0.34-alpha.5.js +0 -1
  101. package/dist/interface/fast-deep-equal.CdBrRDb2.0.0.34-alpha.5.js +0 -1
  102. package/dist/interface/fonts/Inter/Inter-Regular.ttf +0 -0
  103. package/dist/interface/get-size.D1dS-IaP.0.0.34-alpha.5.js +0 -5
  104. package/dist/interface/highlight.js.BtDPwuhi.0.0.34-alpha.5.js +0 -2
  105. package/dist/interface/hookable.B8xFkYCm.0.0.34-alpha.5.js +0 -1
  106. package/dist/interface/index.html +0 -374
  107. package/dist/interface/linkify-it.DFQCoaRr.0.0.34-alpha.5.js +0 -1
  108. package/dist/interface/main.CHLTWOfy.0.0.34-alpha.5.js +0 -5
  109. package/dist/interface/manifest.webmanifest +0 -1
  110. package/dist/interface/markdown-it.CT9MNFia.0.0.34-alpha.5.js +0 -15
  111. package/dist/interface/mdurl.k9Sl0PQj.0.0.34-alpha.5.js +0 -2
  112. package/dist/interface/nprogress.Dy-fdKdR.0.0.34-alpha.5.js +0 -2
  113. package/dist/interface/perfect-debounce.Cp2ysxOb.0.0.34-alpha.5.js +0 -1
  114. package/dist/interface/pinia.a0-UAJ60.0.0.34-alpha.5.js +0 -5
  115. package/dist/interface/plugins._gNZi2uU.0.0.34-alpha.5.js +0 -1
  116. package/dist/interface/point-in-polygon-hao.l0sNRNKZ.0.0.34-alpha.5.js +0 -1
  117. package/dist/interface/punycode.js.Dj65hjkv.0.0.34-alpha.5.js +0 -1
  118. package/dist/interface/pwa/apple-splash-landscape-dark-1136x640.png +0 -0
  119. package/dist/interface/pwa/apple-splash-landscape-dark-1334x750.png +0 -0
  120. package/dist/interface/pwa/apple-splash-landscape-dark-1792x828.png +0 -0
  121. package/dist/interface/pwa/apple-splash-landscape-dark-2048x1536.png +0 -0
  122. package/dist/interface/pwa/apple-splash-landscape-dark-2160x1620.png +0 -0
  123. package/dist/interface/pwa/apple-splash-landscape-dark-2208x1242.png +0 -0
  124. package/dist/interface/pwa/apple-splash-landscape-dark-2224x1668.png +0 -0
  125. package/dist/interface/pwa/apple-splash-landscape-dark-2388x1668.png +0 -0
  126. package/dist/interface/pwa/apple-splash-landscape-dark-2436x1125.png +0 -0
  127. package/dist/interface/pwa/apple-splash-landscape-dark-2532x1170.png +0 -0
  128. package/dist/interface/pwa/apple-splash-landscape-dark-2556x1179.png +0 -0
  129. package/dist/interface/pwa/apple-splash-landscape-dark-2688x1242.png +0 -0
  130. package/dist/interface/pwa/apple-splash-landscape-dark-2732x2048.png +0 -0
  131. package/dist/interface/pwa/apple-splash-landscape-dark-2778x1284.png +0 -0
  132. package/dist/interface/pwa/apple-splash-landscape-dark-2796x1290.png +0 -0
  133. package/dist/interface/pwa/apple-splash-landscape-light-1136x640.png +0 -0
  134. package/dist/interface/pwa/apple-splash-landscape-light-1334x750.png +0 -0
  135. package/dist/interface/pwa/apple-splash-landscape-light-1792x828.png +0 -0
  136. package/dist/interface/pwa/apple-splash-landscape-light-2048x1536.png +0 -0
  137. package/dist/interface/pwa/apple-splash-landscape-light-2160x1620.png +0 -0
  138. package/dist/interface/pwa/apple-splash-landscape-light-2208x1242.png +0 -0
  139. package/dist/interface/pwa/apple-splash-landscape-light-2224x1668.png +0 -0
  140. package/dist/interface/pwa/apple-splash-landscape-light-2388x1668.png +0 -0
  141. package/dist/interface/pwa/apple-splash-landscape-light-2436x1125.png +0 -0
  142. package/dist/interface/pwa/apple-splash-landscape-light-2532x1170.png +0 -0
  143. package/dist/interface/pwa/apple-splash-landscape-light-2556x1179.png +0 -0
  144. package/dist/interface/pwa/apple-splash-landscape-light-2688x1242.png +0 -0
  145. package/dist/interface/pwa/apple-splash-landscape-light-2732x2048.png +0 -0
  146. package/dist/interface/pwa/apple-splash-landscape-light-2778x1284.png +0 -0
  147. package/dist/interface/pwa/apple-splash-landscape-light-2796x1290.png +0 -0
  148. package/dist/interface/pwa/apple-splash-portrait-dark-1125x2436.png +0 -0
  149. package/dist/interface/pwa/apple-splash-portrait-dark-1170x2532.png +0 -0
  150. package/dist/interface/pwa/apple-splash-portrait-dark-1179x2556.png +0 -0
  151. package/dist/interface/pwa/apple-splash-portrait-dark-1242x2208.png +0 -0
  152. package/dist/interface/pwa/apple-splash-portrait-dark-1242x2688.png +0 -0
  153. package/dist/interface/pwa/apple-splash-portrait-dark-1284x2778.png +0 -0
  154. package/dist/interface/pwa/apple-splash-portrait-dark-1290x2796.png +0 -0
  155. package/dist/interface/pwa/apple-splash-portrait-dark-1536x2048.png +0 -0
  156. package/dist/interface/pwa/apple-splash-portrait-dark-1620x2160.png +0 -0
  157. package/dist/interface/pwa/apple-splash-portrait-dark-1668x2224.png +0 -0
  158. package/dist/interface/pwa/apple-splash-portrait-dark-1668x2388.png +0 -0
  159. package/dist/interface/pwa/apple-splash-portrait-dark-2048x2732.png +0 -0
  160. package/dist/interface/pwa/apple-splash-portrait-dark-640x1136.png +0 -0
  161. package/dist/interface/pwa/apple-splash-portrait-dark-750x1334.png +0 -0
  162. package/dist/interface/pwa/apple-splash-portrait-dark-828x1792.png +0 -0
  163. package/dist/interface/pwa/apple-splash-portrait-light-1125x2436.png +0 -0
  164. package/dist/interface/pwa/apple-splash-portrait-light-1170x2532.png +0 -0
  165. package/dist/interface/pwa/apple-splash-portrait-light-1179x2556.png +0 -0
  166. package/dist/interface/pwa/apple-splash-portrait-light-1242x2208.png +0 -0
  167. package/dist/interface/pwa/apple-splash-portrait-light-1242x2688.png +0 -0
  168. package/dist/interface/pwa/apple-splash-portrait-light-1284x2778.png +0 -0
  169. package/dist/interface/pwa/apple-splash-portrait-light-1290x2796.png +0 -0
  170. package/dist/interface/pwa/apple-splash-portrait-light-1536x2048.png +0 -0
  171. package/dist/interface/pwa/apple-splash-portrait-light-1620x2160.png +0 -0
  172. package/dist/interface/pwa/apple-splash-portrait-light-1668x2224.png +0 -0
  173. package/dist/interface/pwa/apple-splash-portrait-light-1668x2388.png +0 -0
  174. package/dist/interface/pwa/apple-splash-portrait-light-2048x2732.png +0 -0
  175. package/dist/interface/pwa/apple-splash-portrait-light-640x1136.png +0 -0
  176. package/dist/interface/pwa/apple-splash-portrait-light-750x1334.png +0 -0
  177. package/dist/interface/pwa/apple-splash-portrait-light-828x1792.png +0 -0
  178. package/dist/interface/pwa/apple-touch-icon-180x180.png +0 -0
  179. package/dist/interface/pwa/favicon-16.ico +0 -0
  180. package/dist/interface/pwa/favicon-32.ico +0 -0
  181. package/dist/interface/pwa/favicon-48.ico +0 -0
  182. package/dist/interface/pwa/favicon-64.ico +0 -0
  183. package/dist/interface/pwa/logo.svg +0 -1
  184. package/dist/interface/pwa/maskable-icon-1240x600.png +0 -0
  185. package/dist/interface/pwa/maskable-icon-512x512.png +0 -0
  186. package/dist/interface/pwa/maskable-icon-620x300.png +0 -0
  187. package/dist/interface/pwa/pwa-1024x1024.png +0 -0
  188. package/dist/interface/pwa/pwa-120x120.png +0 -0
  189. package/dist/interface/pwa/pwa-144x144.png +0 -0
  190. package/dist/interface/pwa/pwa-152x152.png +0 -0
  191. package/dist/interface/pwa/pwa-167x167.png +0 -0
  192. package/dist/interface/pwa/pwa-180x180.png +0 -0
  193. package/dist/interface/pwa/pwa-192x192.png +0 -0
  194. package/dist/interface/pwa/pwa-24x24.png +0 -0
  195. package/dist/interface/pwa/pwa-300x300.png +0 -0
  196. package/dist/interface/pwa/pwa-36x36.png +0 -0
  197. package/dist/interface/pwa/pwa-48x48.png +0 -0
  198. package/dist/interface/pwa/pwa-50x50.png +0 -0
  199. package/dist/interface/pwa/pwa-64x64.png +0 -0
  200. package/dist/interface/pwa/pwa-72x72.png +0 -0
  201. package/dist/interface/pwa/pwa-88x88.png +0 -0
  202. package/dist/interface/pwa/pwa-96x96.png +0 -0
  203. package/dist/interface/qrcode.DimXivtc.0.0.34-alpha.5.js +0 -8
  204. package/dist/interface/react-dnd-html5-backend.1HQjlkwI.0.0.34-alpha.5.js +0 -2
  205. package/dist/interface/react-dnd-touch-backend.DE4RY7ln.0.0.34-alpha.5.js +0 -1
  206. package/dist/interface/redux.CuxFRhX_.0.0.34-alpha.5.js +0 -1
  207. package/dist/interface/registerSW.js +0 -1
  208. package/dist/interface/robots.txt +0 -2
  209. package/dist/interface/rxjs.DvjWjMpY.0.0.34-alpha.5.js +0 -3
  210. package/dist/interface/socket.io-client.DLAxf4Au.0.0.34-alpha.5.js +0 -1
  211. package/dist/interface/socket.io-parser.DljDeMVN.0.0.34-alpha.5.js +0 -1
  212. package/dist/interface/sw.js +0 -1
  213. package/dist/interface/sweepline-intersections.l0sNRNKZ.0.0.34-alpha.5.js +0 -1
  214. package/dist/interface/system.C67tvPHd.0.0.34-alpha.5.js +0 -1
  215. package/dist/interface/tslib.9k7AwCpt.0.0.34-alpha.5.js +0 -1
  216. package/dist/interface/types.Cz9TaZAP.0.0.34-alpha.5.js +0 -1
  217. package/dist/interface/uc.micro.kMc2yuuw.0.0.34-alpha.5.js +0 -1
  218. package/dist/interface/unidragger.Clz3A3-r.0.0.34-alpha.5.js +0 -5
  219. package/dist/interface/utils.mAKpSMLY.0.0.34-alpha.5.js +0 -1
  220. package/dist/interface/uuid.DvF23Exx.0.0.34-alpha.5.js +0 -1
  221. package/dist/interface/vee-validate.hnY_ZrYq.0.0.34-alpha.5.js +0 -5
  222. package/dist/interface/vue-i18n.Yxe4ZdlC.0.0.34-alpha.5.js +0 -5
  223. package/dist/interface/vue-inline-svg.C52hpSWp.0.0.34-alpha.5.js +0 -1
  224. package/dist/interface/vue-router.CuXGWZx-.0.0.34-alpha.5.js +0 -5
  225. package/dist/interface/vue.l0sNRNKZ.0.0.34-alpha.5.js +0 -1
  226. package/dist/interface/vue3-apexcharts.BwQI7SWt.0.0.34-alpha.5.js +0 -1
  227. package/dist/interface/vue3-dnd.W2X2hlnQ.0.0.34-alpha.5.js +0 -1
  228. package/dist/interface/vue3-toastify.CgpUgDJR.0.0.34-alpha.5.js +0 -1
  229. package/dist/interface/vuetify.CpjU1ATb.0.0.34-alpha.5.js +0 -5
  230. package/dist/interface/workbox-3e911b1d.js +0 -1
  231. package/dist/interface/zod.DnW1_kUe.0.0.34-alpha.5.js +0 -1
  232. package/dist/server/bin/cameraui.js.map +0 -1
  233. package/dist/server/bin/installer/base.js.map +0 -1
  234. package/dist/server/bin/installer/darwin.js.map +0 -1
  235. package/dist/server/bin/installer/freebsd.js.map +0 -1
  236. package/dist/server/bin/installer/linux.js.map +0 -1
  237. package/dist/server/bin/installer/win32.js.map +0 -1
  238. package/dist/server/bin/logger.js.map +0 -1
  239. package/dist/server/package.json +0 -139
  240. package/dist/server/requirements.txt +0 -14
  241. package/dist/server/src/api/controllers/api.controller.d.ts +0 -7
  242. package/dist/server/src/api/controllers/api.controller.js +0 -14
  243. package/dist/server/src/api/controllers/api.controller.js.map +0 -1
  244. package/dist/server/src/api/controllers/auth.controller.d.ts +0 -16
  245. package/dist/server/src/api/controllers/auth.controller.js +0 -233
  246. package/dist/server/src/api/controllers/auth.controller.js.map +0 -1
  247. package/dist/server/src/api/controllers/backup.controller.d.ts +0 -10
  248. package/dist/server/src/api/controllers/backup.controller.js +0 -52
  249. package/dist/server/src/api/controllers/backup.controller.js.map +0 -1
  250. package/dist/server/src/api/controllers/cameras.controller.d.ts +0 -38
  251. package/dist/server/src/api/controllers/cameras.controller.js +0 -632
  252. package/dist/server/src/api/controllers/cameras.controller.js.map +0 -1
  253. package/dist/server/src/api/controllers/config.controller.d.ts +0 -14
  254. package/dist/server/src/api/controllers/config.controller.js +0 -89
  255. package/dist/server/src/api/controllers/config.controller.js.map +0 -1
  256. package/dist/server/src/api/controllers/files.controller.d.ts +0 -8
  257. package/dist/server/src/api/controllers/files.controller.js +0 -28
  258. package/dist/server/src/api/controllers/files.controller.js.map +0 -1
  259. package/dist/server/src/api/controllers/frameWorkers.controller.d.ts +0 -11
  260. package/dist/server/src/api/controllers/frameWorkers.controller.js +0 -93
  261. package/dist/server/src/api/controllers/frameWorkers.controller.js.map +0 -1
  262. package/dist/server/src/api/controllers/plugins.controller.d.ts +0 -61
  263. package/dist/server/src/api/controllers/plugins.controller.js +0 -1353
  264. package/dist/server/src/api/controllers/plugins.controller.js.map +0 -1
  265. package/dist/server/src/api/controllers/system.controller.d.ts +0 -21
  266. package/dist/server/src/api/controllers/system.controller.js +0 -207
  267. package/dist/server/src/api/controllers/system.controller.js.map +0 -1
  268. package/dist/server/src/api/controllers/users.controller.d.ts +0 -28
  269. package/dist/server/src/api/controllers/users.controller.js +0 -509
  270. package/dist/server/src/api/controllers/users.controller.js.map +0 -1
  271. package/dist/server/src/api/database/checks.d.ts +0 -55
  272. package/dist/server/src/api/database/checks.js +0 -183
  273. package/dist/server/src/api/database/checks.js.map +0 -1
  274. package/dist/server/src/api/database/constants.d.ts +0 -8
  275. package/dist/server/src/api/database/constants.js +0 -9
  276. package/dist/server/src/api/database/constants.js.map +0 -1
  277. package/dist/server/src/api/database/index.d.ts +0 -31
  278. package/dist/server/src/api/database/index.js +0 -276
  279. package/dist/server/src/api/database/index.js.map +0 -1
  280. package/dist/server/src/api/database/migration.d.ts +0 -13
  281. package/dist/server/src/api/database/migration.js +0 -113
  282. package/dist/server/src/api/database/migration.js.map +0 -1
  283. package/dist/server/src/api/database/selfcheck.d.ts +0 -48
  284. package/dist/server/src/api/database/selfcheck.js +0 -397
  285. package/dist/server/src/api/database/selfcheck.js.map +0 -1
  286. package/dist/server/src/api/database/types.d.ts +0 -100
  287. package/dist/server/src/api/database/types.js +0 -2
  288. package/dist/server/src/api/database/types.js.map +0 -1
  289. package/dist/server/src/api/go2rtc/api/application.d.ts +0 -9
  290. package/dist/server/src/api/go2rtc/api/application.js +0 -39
  291. package/dist/server/src/api/go2rtc/api/application.js.map +0 -1
  292. package/dist/server/src/api/go2rtc/api/config.d.ts +0 -8
  293. package/dist/server/src/api/go2rtc/api/config.js +0 -44
  294. package/dist/server/src/api/go2rtc/api/config.js.map +0 -1
  295. package/dist/server/src/api/go2rtc/api/index.d.ts +0 -1
  296. package/dist/server/src/api/go2rtc/api/index.js +0 -29
  297. package/dist/server/src/api/go2rtc/api/index.js.map +0 -1
  298. package/dist/server/src/api/go2rtc/api/snapshot.d.ts +0 -8
  299. package/dist/server/src/api/go2rtc/api/snapshot.js +0 -34
  300. package/dist/server/src/api/go2rtc/api/snapshot.js.map +0 -1
  301. package/dist/server/src/api/go2rtc/api/streams.d.ts +0 -11
  302. package/dist/server/src/api/go2rtc/api/streams.js +0 -59
  303. package/dist/server/src/api/go2rtc/api/streams.js.map +0 -1
  304. package/dist/server/src/api/go2rtc/index.d.ts +0 -14
  305. package/dist/server/src/api/go2rtc/index.js +0 -30
  306. package/dist/server/src/api/go2rtc/index.js.map +0 -1
  307. package/dist/server/src/api/go2rtc/queue.d.ts +0 -10
  308. package/dist/server/src/api/go2rtc/queue.js +0 -38
  309. package/dist/server/src/api/go2rtc/queue.js.map +0 -1
  310. package/dist/server/src/api/go2rtc/types.d.ts +0 -92
  311. package/dist/server/src/api/go2rtc/types.js +0 -2
  312. package/dist/server/src/api/go2rtc/types.js.map +0 -1
  313. package/dist/server/src/api/index.d.ts +0 -20
  314. package/dist/server/src/api/index.js +0 -213
  315. package/dist/server/src/api/index.js.map +0 -1
  316. package/dist/server/src/api/middlewares/authPermission.middleware.d.ts +0 -5
  317. package/dist/server/src/api/middlewares/authPermission.middleware.js +0 -28
  318. package/dist/server/src/api/middlewares/authPermission.middleware.js.map +0 -1
  319. package/dist/server/src/api/middlewares/authValidation.middleware.d.ts +0 -4
  320. package/dist/server/src/api/middlewares/authValidation.middleware.js +0 -129
  321. package/dist/server/src/api/middlewares/authValidation.middleware.js.map +0 -1
  322. package/dist/server/src/api/middlewares/pagination.middleware.d.ts +0 -3
  323. package/dist/server/src/api/middlewares/pagination.middleware.js +0 -65
  324. package/dist/server/src/api/middlewares/pagination.middleware.js.map +0 -1
  325. package/dist/server/src/api/middlewares/socketAuth.middleware.d.ts +0 -41
  326. package/dist/server/src/api/middlewares/socketAuth.middleware.js +0 -81
  327. package/dist/server/src/api/middlewares/socketAuth.middleware.js.map +0 -1
  328. package/dist/server/src/api/plugins/header.plugin.d.ts +0 -2
  329. package/dist/server/src/api/plugins/header.plugin.js +0 -13
  330. package/dist/server/src/api/plugins/header.plugin.js.map +0 -1
  331. package/dist/server/src/api/plugins/logger.plugin.d.ts +0 -7
  332. package/dist/server/src/api/plugins/logger.plugin.js +0 -29
  333. package/dist/server/src/api/plugins/logger.plugin.js.map +0 -1
  334. package/dist/server/src/api/plugins/socket.plugin.d.ts +0 -11
  335. package/dist/server/src/api/plugins/socket.plugin.js +0 -12
  336. package/dist/server/src/api/plugins/socket.plugin.js.map +0 -1
  337. package/dist/server/src/api/plugins/system.plugin.d.ts +0 -18
  338. package/dist/server/src/api/plugins/system.plugin.js +0 -22
  339. package/dist/server/src/api/plugins/system.plugin.js.map +0 -1
  340. package/dist/server/src/api/plugins/useragent.plugin.d.ts +0 -8
  341. package/dist/server/src/api/plugins/useragent.plugin.js +0 -10
  342. package/dist/server/src/api/plugins/useragent.plugin.js.map +0 -1
  343. package/dist/server/src/api/routes/api.routes.d.ts +0 -2
  344. package/dist/server/src/api/routes/api.routes.js +0 -7
  345. package/dist/server/src/api/routes/api.routes.js.map +0 -1
  346. package/dist/server/src/api/routes/auth.routes.d.ts +0 -2
  347. package/dist/server/src/api/routes/auth.routes.js +0 -47
  348. package/dist/server/src/api/routes/auth.routes.js.map +0 -1
  349. package/dist/server/src/api/routes/backup.routes.d.ts +0 -2
  350. package/dist/server/src/api/routes/backup.routes.js +0 -23
  351. package/dist/server/src/api/routes/backup.routes.js.map +0 -1
  352. package/dist/server/src/api/routes/cameras.routes.d.ts +0 -2
  353. package/dist/server/src/api/routes/cameras.routes.js +0 -217
  354. package/dist/server/src/api/routes/cameras.routes.js.map +0 -1
  355. package/dist/server/src/api/routes/config.routes.d.ts +0 -2
  356. package/dist/server/src/api/routes/config.routes.js +0 -55
  357. package/dist/server/src/api/routes/config.routes.js.map +0 -1
  358. package/dist/server/src/api/routes/files.routes.d.ts +0 -2
  359. package/dist/server/src/api/routes/files.routes.js +0 -12
  360. package/dist/server/src/api/routes/files.routes.js.map +0 -1
  361. package/dist/server/src/api/routes/frameWorkers.routes.d.ts +0 -2
  362. package/dist/server/src/api/routes/frameWorkers.routes.js +0 -33
  363. package/dist/server/src/api/routes/frameWorkers.routes.js.map +0 -1
  364. package/dist/server/src/api/routes/index.d.ts +0 -6
  365. package/dist/server/src/api/routes/index.js +0 -32
  366. package/dist/server/src/api/routes/index.js.map +0 -1
  367. package/dist/server/src/api/routes/plugins.routes.d.ts +0 -2
  368. package/dist/server/src/api/routes/plugins.routes.js +0 -363
  369. package/dist/server/src/api/routes/plugins.routes.js.map +0 -1
  370. package/dist/server/src/api/routes/system.routes.d.ts +0 -2
  371. package/dist/server/src/api/routes/system.routes.js +0 -83
  372. package/dist/server/src/api/routes/system.routes.js.map +0 -1
  373. package/dist/server/src/api/routes/users.routes.d.ts +0 -2
  374. package/dist/server/src/api/routes/users.routes.js +0 -139
  375. package/dist/server/src/api/routes/users.routes.js.map +0 -1
  376. package/dist/server/src/api/schemas/backup.schema.d.ts +0 -118
  377. package/dist/server/src/api/schemas/backup.schema.js +0 -75
  378. package/dist/server/src/api/schemas/backup.schema.js.map +0 -1
  379. package/dist/server/src/api/schemas/cameras.schema.d.ts +0 -980
  380. package/dist/server/src/api/schemas/cameras.schema.js +0 -333
  381. package/dist/server/src/api/schemas/cameras.schema.js.map +0 -1
  382. package/dist/server/src/api/schemas/config.schema.d.ts +0 -114
  383. package/dist/server/src/api/schemas/config.schema.js +0 -42
  384. package/dist/server/src/api/schemas/config.schema.js.map +0 -1
  385. package/dist/server/src/api/schemas/go2rtc.schema.d.ts +0 -703
  386. package/dist/server/src/api/schemas/go2rtc.schema.js +0 -180
  387. package/dist/server/src/api/schemas/go2rtc.schema.js.map +0 -1
  388. package/dist/server/src/api/schemas/plugins.schema.d.ts +0 -72
  389. package/dist/server/src/api/schemas/plugins.schema.js +0 -103
  390. package/dist/server/src/api/schemas/plugins.schema.js.map +0 -1
  391. package/dist/server/src/api/schemas/system.schema.d.ts +0 -9
  392. package/dist/server/src/api/schemas/system.schema.js +0 -8
  393. package/dist/server/src/api/schemas/system.schema.js.map +0 -1
  394. package/dist/server/src/api/schemas/users.schema.d.ts +0 -1013
  395. package/dist/server/src/api/schemas/users.schema.js +0 -157
  396. package/dist/server/src/api/schemas/users.schema.js.map +0 -1
  397. package/dist/server/src/api/services/auth.service.d.ts +0 -24
  398. package/dist/server/src/api/services/auth.service.js +0 -191
  399. package/dist/server/src/api/services/auth.service.js.map +0 -1
  400. package/dist/server/src/api/services/backup.service.d.ts +0 -11
  401. package/dist/server/src/api/services/backup.service.js +0 -109
  402. package/dist/server/src/api/services/backup.service.js.map +0 -1
  403. package/dist/server/src/api/services/cameras.service.d.ts +0 -57
  404. package/dist/server/src/api/services/cameras.service.js +0 -790
  405. package/dist/server/src/api/services/cameras.service.js.map +0 -1
  406. package/dist/server/src/api/services/plugins.service.d.ts +0 -26
  407. package/dist/server/src/api/services/plugins.service.js +0 -148
  408. package/dist/server/src/api/services/plugins.service.js.map +0 -1
  409. package/dist/server/src/api/services/system.service.d.ts +0 -7
  410. package/dist/server/src/api/services/system.service.js +0 -23
  411. package/dist/server/src/api/services/system.service.js.map +0 -1
  412. package/dist/server/src/api/services/users.service.d.ts +0 -25
  413. package/dist/server/src/api/services/users.service.js +0 -198
  414. package/dist/server/src/api/services/users.service.js.map +0 -1
  415. package/dist/server/src/api/types/index.d.ts +0 -592
  416. package/dist/server/src/api/types/index.js +0 -9
  417. package/dist/server/src/api/types/index.js.map +0 -1
  418. package/dist/server/src/api/utils/cameraSource.d.ts +0 -2
  419. package/dist/server/src/api/utils/cameraSource.js +0 -34
  420. package/dist/server/src/api/utils/cameraSource.js.map +0 -1
  421. package/dist/server/src/api/utils/cert.d.ts +0 -11
  422. package/dist/server/src/api/utils/cert.js +0 -204
  423. package/dist/server/src/api/utils/cert.js.map +0 -1
  424. package/dist/server/src/api/utils/constants.d.ts +0 -13
  425. package/dist/server/src/api/utils/constants.js +0 -14
  426. package/dist/server/src/api/utils/constants.js.map +0 -1
  427. package/dist/server/src/api/utils/fetch.d.ts +0 -2
  428. package/dist/server/src/api/utils/fetch.js +0 -24
  429. package/dist/server/src/api/utils/fetch.js.map +0 -1
  430. package/dist/server/src/api/utils/moveFiles.d.ts +0 -1
  431. package/dist/server/src/api/utils/moveFiles.js +0 -39
  432. package/dist/server/src/api/utils/moveFiles.js.map +0 -1
  433. package/dist/server/src/api/utils/parse.d.ts +0 -2
  434. package/dist/server/src/api/utils/parse.js +0 -12
  435. package/dist/server/src/api/utils/parse.js.map +0 -1
  436. package/dist/server/src/api/websocket/index.d.ts +0 -16
  437. package/dist/server/src/api/websocket/index.js +0 -76
  438. package/dist/server/src/api/websocket/index.js.map +0 -1
  439. package/dist/server/src/api/websocket/nsp/logs.d.ts +0 -17
  440. package/dist/server/src/api/websocket/nsp/logs.js +0 -151
  441. package/dist/server/src/api/websocket/nsp/logs.js.map +0 -1
  442. package/dist/server/src/api/websocket/nsp/main.d.ts +0 -7
  443. package/dist/server/src/api/websocket/nsp/main.js +0 -8
  444. package/dist/server/src/api/websocket/nsp/main.js.map +0 -1
  445. package/dist/server/src/api/websocket/nsp/metrics.d.ts +0 -24
  446. package/dist/server/src/api/websocket/nsp/metrics.js +0 -169
  447. package/dist/server/src/api/websocket/nsp/metrics.js.map +0 -1
  448. package/dist/server/src/api/websocket/nsp/notifications.d.ts +0 -12
  449. package/dist/server/src/api/websocket/nsp/notifications.js +0 -30
  450. package/dist/server/src/api/websocket/nsp/notifications.js.map +0 -1
  451. package/dist/server/src/api/websocket/nsp/plugins.d.ts +0 -13
  452. package/dist/server/src/api/websocket/nsp/plugins.js +0 -28
  453. package/dist/server/src/api/websocket/nsp/plugins.js.map +0 -1
  454. package/dist/server/src/api/websocket/nsp/server.d.ts +0 -26
  455. package/dist/server/src/api/websocket/nsp/server.js +0 -171
  456. package/dist/server/src/api/websocket/nsp/server.js.map +0 -1
  457. package/dist/server/src/api/websocket/nsp/status.d.ts +0 -15
  458. package/dist/server/src/api/websocket/nsp/status.js +0 -55
  459. package/dist/server/src/api/websocket/nsp/status.js.map +0 -1
  460. package/dist/server/src/api/websocket/types.d.ts +0 -41
  461. package/dist/server/src/api/websocket/types.js +0 -2
  462. package/dist/server/src/api/websocket/types.js.map +0 -1
  463. package/dist/server/src/api.d.ts +0 -28
  464. package/dist/server/src/api.js +0 -109
  465. package/dist/server/src/api.js.map +0 -1
  466. package/dist/server/src/camera/controller.d.ts +0 -62
  467. package/dist/server/src/camera/controller.js +0 -537
  468. package/dist/server/src/camera/controller.js.map +0 -1
  469. package/dist/server/src/camera/frameWorker.d.ts +0 -42
  470. package/dist/server/src/camera/frameWorker.js +0 -305
  471. package/dist/server/src/camera/frameWorker.js.map +0 -1
  472. package/dist/server/src/camera/types.d.ts +0 -11
  473. package/dist/server/src/camera/types.js +0 -2
  474. package/dist/server/src/camera/types.js.map +0 -1
  475. package/dist/server/src/go2rtc/index.d.ts +0 -25
  476. package/dist/server/src/go2rtc/index.js +0 -233
  477. package/dist/server/src/go2rtc/index.js.map +0 -1
  478. package/dist/server/src/go2rtc/types.d.ts +0 -14
  479. package/dist/server/src/go2rtc/types.js +0 -73
  480. package/dist/server/src/go2rtc/types.js.map +0 -1
  481. package/dist/server/src/main.d.ts +0 -2
  482. package/dist/server/src/main.js +0 -112
  483. package/dist/server/src/main.js.map +0 -1
  484. package/dist/server/src/nats/index.d.ts +0 -40
  485. package/dist/server/src/nats/index.js +0 -164
  486. package/dist/server/src/nats/index.js.map +0 -1
  487. package/dist/server/src/nats/proxy/cameraDevice.d.ts +0 -22
  488. package/dist/server/src/nats/proxy/cameraDevice.js +0 -254
  489. package/dist/server/src/nats/proxy/cameraDevice.js.map +0 -1
  490. package/dist/server/src/nats/proxy/coreManager.d.ts +0 -14
  491. package/dist/server/src/nats/proxy/coreManager.js +0 -68
  492. package/dist/server/src/nats/proxy/coreManager.js.map +0 -1
  493. package/dist/server/src/nats/proxy/deviceManager.d.ts +0 -14
  494. package/dist/server/src/nats/proxy/deviceManager.js +0 -101
  495. package/dist/server/src/nats/proxy/deviceManager.js.map +0 -1
  496. package/dist/server/src/nats/server.d.ts +0 -38
  497. package/dist/server/src/nats/server.js +0 -328
  498. package/dist/server/src/nats/server.js.map +0 -1
  499. package/dist/server/src/nats/types.d.ts +0 -18
  500. package/dist/server/src/nats/types.js +0 -2
  501. package/dist/server/src/nats/types.js.map +0 -1
  502. package/dist/server/src/nats/utils.d.ts +0 -2
  503. package/dist/server/src/nats/utils.js +0 -12
  504. package/dist/server/src/nats/utils.js.map +0 -1
  505. package/dist/server/src/nats/websocket.d.ts +0 -27
  506. package/dist/server/src/nats/websocket.js +0 -218
  507. package/dist/server/src/nats/websocket.js.map +0 -1
  508. package/dist/server/src/plugins/index.d.ts +0 -29
  509. package/dist/server/src/plugins/index.js +0 -243
  510. package/dist/server/src/plugins/index.js.map +0 -1
  511. package/dist/server/src/plugins/plugin.d.ts +0 -36
  512. package/dist/server/src/plugins/plugin.js +0 -193
  513. package/dist/server/src/plugins/plugin.js.map +0 -1
  514. package/dist/server/src/plugins/types.d.ts +0 -7
  515. package/dist/server/src/plugins/types.js +0 -3
  516. package/dist/server/src/plugins/types.js.map +0 -1
  517. package/dist/server/src/plugins/worker.d.ts +0 -55
  518. package/dist/server/src/plugins/worker.js +0 -444
  519. package/dist/server/src/plugins/worker.js.map +0 -1
  520. package/dist/server/src/services/config/constants.d.ts +0 -7
  521. package/dist/server/src/services/config/constants.js +0 -67
  522. package/dist/server/src/services/config/constants.js.map +0 -1
  523. package/dist/server/src/services/config/index.d.ts +0 -65
  524. package/dist/server/src/services/config/index.js +0 -461
  525. package/dist/server/src/services/config/index.js.map +0 -1
  526. package/dist/server/src/services/config/types.d.ts +0 -157
  527. package/dist/server/src/services/config/types.js +0 -11
  528. package/dist/server/src/services/config/types.js.map +0 -1
  529. package/dist/server/src/services/logger/index.d.ts +0 -16
  530. package/dist/server/src/services/logger/index.js +0 -67
  531. package/dist/server/src/services/logger/index.js.map +0 -1
  532. package/dist/server/src/types.d.ts +0 -7
  533. package/dist/server/src/types.js +0 -2
  534. package/dist/server/src/types.js.map +0 -1
  535. package/localdeps.txt +0 -6
  536. package/upgrade-server.sh +0 -206
  537. /package/dist/{server/bin/installer → installer}/base.d.ts +0 -0
  538. /package/dist/{server/bin/installer → installer}/base.js +0 -0
  539. /package/dist/{server/bin/installer → installer}/freebsd.d.ts +0 -0
  540. /package/dist/{server/bin/installer → installer}/win32.d.ts +0 -0
  541. /package/dist/{server/bin/logger.d.ts → logger.d.ts} +0 -0
@@ -1,204 +0,0 @@
1
- import forge from 'node-forge';
2
- import { existsSync, readFileSync, writeFileSync } from 'node:fs';
3
- import { join } from 'node:path';
4
- import { container } from 'tsyringe';
5
- import { DEFAULTS, HOST_CERT_FILENAME, HOST_KEY_FILENAME, ROOT_CERT_FILENAME, ROOT_KEY_FILENAME } from './constants.js';
6
- import { isIPv4, isIPv6 } from 'node:net';
7
- const makeNumberPositive = (hexString) => {
8
- let mostSignificativeHexDigitAsInt = Number.parseInt(hexString[0], 16);
9
- if (mostSignificativeHexDigitAsInt < 8)
10
- return hexString;
11
- mostSignificativeHexDigitAsInt -= 8;
12
- return mostSignificativeHexDigitAsInt.toString() + hexString.slice(1);
13
- };
14
- const randomSerialNumber = () => {
15
- return makeNumberPositive(forge.util.bytesToHex(forge.random.getBytesSync(20)));
16
- };
17
- const getCertNotBefore = () => {
18
- const twoDaysAgo = new Date(Date.now() - 2 * 24 * 60 * 60 * 1000);
19
- return new Date(twoDaysAgo.toISOString().split('T')[0] + 'T00:00:00Z');
20
- };
21
- const getCertNotAfter = (notBefore) => {
22
- const ninetyDaysLater = new Date(notBefore.getTime() + 390 * 24 * 60 * 60 * 1000);
23
- return new Date(ninetyDaysLater.toISOString().split('T')[0] + 'T23:59:59Z');
24
- };
25
- const getCANotAfter = (notBefore) => {
26
- const hundredYearsLater = new Date(notBefore);
27
- hundredYearsLater.setFullYear(hundredYearsLater.getFullYear() + 100);
28
- return new Date(hundredYearsLater.toISOString().split('T')[0] + 'T23:59:59Z');
29
- };
30
- const isCertificateValid = (certPath) => {
31
- const cert = forge.pki.certificateFromPem(readFileSync(certPath, 'utf8'));
32
- const now = new Date();
33
- return now >= cert.validity.notBefore && now <= cert.validity.notAfter;
34
- };
35
- const isLegacyCertificate = (certPath) => {
36
- try {
37
- const certPem = readFileSync(certPath, 'utf8');
38
- const cert = forge.pki.certificateFromPem(certPem);
39
- const subject = cert.subject.getField('O');
40
- const ou = cert.subject.getField('OU');
41
- const cn = cert.subject.getField('CN');
42
- return subject && subject.value === 'camera.ui' && ou && ou.value === 'cui' && cn && (cn.value === 'camera.ui root certificate' || cn.value.startsWith('camera.ui'));
43
- }
44
- catch (error) {
45
- console.error('Error checking legacy certificate:', error);
46
- return false;
47
- }
48
- };
49
- export class CertificateGeneration {
50
- static createRootCA(customAddresses) {
51
- const configService = container.resolve('configService');
52
- const serialNumber = randomSerialNumber();
53
- const addresses = customAddresses.map((address) => ({
54
- type: isIPv4(address) || isIPv6(address) ? 7 : 2,
55
- ip: isIPv4(address) || isIPv6(address) ? address : undefined,
56
- value: !(isIPv4(address) || isIPv6(address)) ? address : undefined,
57
- }));
58
- if (!addresses.some((addr) => addr.ip === '127.0.0.1')) {
59
- addresses.push({ type: 7, ip: '127.0.0.1' });
60
- }
61
- const attributes = [
62
- { shortName: 'C', value: DEFAULTS.C },
63
- { shortName: 'ST', value: DEFAULTS.ST },
64
- { shortName: 'L', value: DEFAULTS.L },
65
- { shortName: 'CN', value: DEFAULTS.ROOT_CN },
66
- { shortName: 'O', value: DEFAULTS.O },
67
- { shortName: 'OU', value: DEFAULTS.OU },
68
- ];
69
- const extensions = [
70
- { name: 'basicConstraints', cA: true, critical: true },
71
- {
72
- name: 'keyUsage',
73
- critical: true,
74
- keyCertSign: true,
75
- cRLSign: true,
76
- digitalSignature: true,
77
- nonRepudiation: true,
78
- keyEncipherment: true,
79
- dataEncipherment: true,
80
- },
81
- {
82
- name: 'nsCertType',
83
- client: true,
84
- server: true,
85
- email: true,
86
- objsign: true,
87
- sslCA: true,
88
- emailCA: true,
89
- objCA: true,
90
- },
91
- { name: 'subjectKeyIdentifier' },
92
- { name: 'authorityKeyIdentifier', keyIdentifier: true },
93
- { name: 'subjectAltName', altNames: addresses },
94
- ];
95
- const { privateKey, publicKey } = forge.pki.rsa.generateKeyPair(2048);
96
- const cert = forge.pki.createCertificate();
97
- cert.publicKey = publicKey;
98
- cert.serialNumber = serialNumber;
99
- cert.validity.notBefore = getCertNotBefore();
100
- cert.validity.notAfter = getCANotAfter(cert.validity.notBefore);
101
- cert.setSubject(attributes);
102
- cert.setIssuer(attributes);
103
- cert.setExtensions(extensions);
104
- cert.sign(privateKey, forge.md.sha256.create());
105
- const pemCert = forge.pki.certificateToPem(cert);
106
- const pemPrivateKey = forge.pki.privateKeyToPem(privateKey);
107
- const rootCertFilePath = join(configService.STORAGE_PATH, ROOT_CERT_FILENAME);
108
- const rootPrivateKeyFilePath = join(configService.STORAGE_PATH, ROOT_KEY_FILENAME);
109
- writeFileSync(rootCertFilePath, pemCert);
110
- writeFileSync(rootPrivateKeyFilePath, pemPrivateKey);
111
- return { cert: pemCert, certPath: rootCertFilePath, key: pemPrivateKey, keyPath: rootPrivateKeyFilePath };
112
- }
113
- static createHostCert(customAddresses, rootCAObject) {
114
- const configService = container.resolve('configService');
115
- const addresses = customAddresses.map((address) => ({
116
- type: isIPv4(address) || isIPv6(address) ? 7 : 2,
117
- ip: isIPv4(address) || isIPv6(address) ? address : undefined,
118
- value: !(isIPv4(address) || isIPv6(address)) ? address : undefined,
119
- }));
120
- if (!addresses.some((addr) => addr.ip === '127.0.0.1')) {
121
- addresses.push({ type: 7, ip: '127.0.0.1' });
122
- }
123
- const keyPairs = forge.pki.rsa.generateKeyPair(2048);
124
- const caCert = forge.pki.certificateFromPem(rootCAObject.cert);
125
- const caKey = forge.pki.privateKeyFromPem(rootCAObject.key);
126
- const attributes = [
127
- { shortName: 'C', value: DEFAULTS.C },
128
- { shortName: 'ST', value: DEFAULTS.ST },
129
- { shortName: 'L', value: DEFAULTS.L },
130
- { shortName: 'CN', value: DEFAULTS.CN },
131
- { shortName: 'O', value: DEFAULTS.O },
132
- ];
133
- const extensions = [
134
- { name: 'basicConstraints', cA: false },
135
- { name: 'nsCertType', server: true },
136
- { name: 'subjectKeyIdentifier' },
137
- {
138
- name: 'authorityKeyIdentifier',
139
- authorityCertIssuer: true,
140
- serialNumber: caCert.serialNumber,
141
- },
142
- {
143
- name: 'keyUsage',
144
- critical: true,
145
- digitalSignature: true,
146
- nonRepudiation: true,
147
- keyEncipherment: true,
148
- },
149
- { name: 'extKeyUsage', serverAuth: true },
150
- { name: 'subjectAltName', altNames: addresses },
151
- ];
152
- const cert = forge.pki.createCertificate();
153
- cert.publicKey = keyPairs.publicKey;
154
- cert.serialNumber = randomSerialNumber();
155
- cert.validity.notBefore = getCertNotBefore();
156
- cert.validity.notAfter = getCertNotAfter(cert.validity.notBefore);
157
- cert.setSubject(attributes);
158
- cert.setIssuer(caCert.subject.attributes);
159
- cert.setExtensions(extensions);
160
- cert.sign(caKey, forge.md.sha256.create());
161
- const pemCert = forge.pki.certificateToPem(cert);
162
- const pemPrivateKey = forge.pki.privateKeyToPem(keyPairs.privateKey);
163
- const certFilePath = join(configService.STORAGE_PATH, HOST_CERT_FILENAME);
164
- const privateKeyFilePath = join(configService.STORAGE_PATH, HOST_KEY_FILENAME);
165
- writeFileSync(certFilePath, pemCert);
166
- writeFileSync(privateKeyFilePath, pemPrivateKey);
167
- return { cert: pemCert, certPath: certFilePath, key: pemPrivateKey, keyPath: privateKeyFilePath };
168
- }
169
- static generateCert(forceNew) {
170
- const logger = container.resolve('logger');
171
- const configService = container.resolve('configService');
172
- const { config } = configService;
173
- const certFile = config.ssl?.certFile || join(configService.STORAGE_PATH, HOST_CERT_FILENAME);
174
- const keyFile = config.ssl?.keyFile || join(configService.STORAGE_PATH, HOST_KEY_FILENAME);
175
- const certExists = existsSync(certFile) && existsSync(keyFile);
176
- const certIsValid = certExists && isCertificateValid(certFile);
177
- const isLegacy = certExists && isLegacyCertificate(certFile);
178
- if (!certExists || !certIsValid || isLegacy || forceNew) {
179
- logger.debug(`Generating new certificate/key for server... (Reason: ${!certExists ? 'No cert' : !certIsValid ? 'Invalid cert' : isLegacy ? 'Legacy cert' : 'Force new'})`);
180
- const CA = CertificateGeneration.createRootCA(config.ssl?.addresses ?? []);
181
- const hostCert = CertificateGeneration.createHostCert(config.ssl?.addresses ?? [], CA);
182
- return hostCert;
183
- }
184
- else if (certExists && !forceNew) {
185
- logger.debug('Configuring server with certificate/key defined in camera.ui.yaml...');
186
- return {
187
- cert: readFileSync(config.ssl.certFile, 'utf8'),
188
- certPath: config.ssl.certFile,
189
- key: readFileSync(config.ssl.keyFile, 'utf8'),
190
- keyPath: config.ssl.keyFile,
191
- };
192
- }
193
- else {
194
- logger.debug('Using existing valid certificate/key for server...');
195
- return {
196
- cert: readFileSync(certFile, 'utf8'),
197
- certPath: certFile,
198
- key: readFileSync(keyFile, 'utf8'),
199
- keyPath: keyFile,
200
- };
201
- }
202
- }
203
- }
204
- //# sourceMappingURL=cert.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cert.js","sourceRoot":"","sources":["../../../../../src/api/utils/cert.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- export declare const HOST_CERT_FILENAME = "camera.ui.cert.pem";
2
- export declare const HOST_KEY_FILENAME = "camera.ui.key.pem";
3
- export declare const ROOT_CERT_FILENAME = "camera.ui.root.cert.pem";
4
- export declare const ROOT_KEY_FILENAME = "camera.ui.root.key.pem";
5
- export declare const DEFAULTS: {
6
- C: string;
7
- ST: string;
8
- L: string;
9
- O: string;
10
- OU: string;
11
- CN: string;
12
- ROOT_CN: string;
13
- };
@@ -1,14 +0,0 @@
1
- export const HOST_CERT_FILENAME = 'camera.ui.cert.pem';
2
- export const HOST_KEY_FILENAME = 'camera.ui.key.pem';
3
- export const ROOT_CERT_FILENAME = 'camera.ui.root.cert.pem';
4
- export const ROOT_KEY_FILENAME = 'camera.ui.root.key.pem';
5
- export const DEFAULTS = {
6
- C: 'DE',
7
- ST: 'Berlin',
8
- L: 'Berlin',
9
- O: 'Camera UI',
10
- OU: 'Camera UI Dev',
11
- CN: 'localhost',
12
- ROOT_CN: 'Camera UI Root CA',
13
- };
14
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/api/utils/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AACvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AACrD,MAAM,CAAC,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;AAC5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAE1D,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,CAAC,EAAE,IAAI;IACP,EAAE,EAAE,QAAQ;IACZ,CAAC,EAAE,QAAQ;IACX,CAAC,EAAE,WAAW;IACd,EAAE,EAAE,eAAe;IACnB,EAAE,EAAE,WAAW;IACf,OAAO,EAAE,mBAAmB;CAC7B,CAAC"}
@@ -1,2 +0,0 @@
1
- declare const fetchWithTimeout: (url: string, options?: RequestInit) => Promise<Response>;
2
- export default fetchWithTimeout;
@@ -1,24 +0,0 @@
1
- const fetchWithTimeout = async (url, options) => {
2
- const controller = new AbortController();
3
- const timeoutId = setTimeout(() => {
4
- controller.abort();
5
- }, 15000);
6
- try {
7
- const response = await fetch(url, {
8
- ...options,
9
- signal: controller.signal,
10
- });
11
- return response;
12
- }
13
- catch (error) {
14
- if (error instanceof Error && error.name === 'AbortError') {
15
- throw new Error('Timeout: request took more than 15 seconds');
16
- }
17
- throw error;
18
- }
19
- finally {
20
- clearTimeout(timeoutId);
21
- }
22
- };
23
- export default fetchWithTimeout;
24
- //# sourceMappingURL=fetch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../../../src/api/utils/fetch.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,KAAK,EAAE,GAAW,EAAE,OAAqB,EAAqB,EAAE;IACvF,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;QAChC,UAAU,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,GAAG,OAAO;YACV,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -1 +0,0 @@
1
- export declare const moveFiles: (sourceDir: string, targetDir: string) => Promise<void>;
@@ -1,39 +0,0 @@
1
- import { move } from 'fs-extra/esm';
2
- import { lstatSync, readdir, rename } from 'node:fs';
3
- import { join } from 'node:path';
4
- export const moveFiles = (sourceDir, targetDir) => {
5
- return new Promise((_resolve, _reject) => {
6
- readdir(sourceDir, (error, files) => {
7
- if (error) {
8
- _reject(error);
9
- return;
10
- }
11
- files.forEach((file) => {
12
- const oldPath = join(sourceDir, file);
13
- const newPath = join(targetDir, file);
14
- const stat = lstatSync(oldPath);
15
- if (stat.isDirectory()) {
16
- move(oldPath, newPath, { overwrite: true }, (error) => {
17
- if (error) {
18
- _reject(error);
19
- return;
20
- }
21
- _resolve();
22
- });
23
- }
24
- else if (stat.isFile()) {
25
- rename(oldPath, newPath, (error) => {
26
- if (error) {
27
- _reject(error);
28
- return;
29
- }
30
- if (files.indexOf(file) === files.length - 1) {
31
- _resolve();
32
- }
33
- });
34
- }
35
- });
36
- });
37
- });
38
- };
39
- //# sourceMappingURL=moveFiles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"moveFiles.js","sourceRoot":"","sources":["../../../../../src/api/utils/moveFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAAiB,EAAE,SAAiB,EAAiB,EAAE;IAC/E,OAAO,IAAI,OAAO,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;QACvC,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAClC,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,CAAC;gBACf,OAAO;YACT,CAAC;YAED,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBACtC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBACtC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;gBAEhC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;oBACvB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE;wBACpD,IAAI,KAAK,EAAE,CAAC;4BACV,OAAO,CAAC,KAAK,CAAC,CAAC;4BACf,OAAO;wBACT,CAAC;wBAED,QAAQ,EAAE,CAAC;oBACb,CAAC,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;oBACzB,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;wBACjC,IAAI,KAAK,EAAE,CAAC;4BACV,OAAO,CAAC,KAAK,CAAC,CAAC;4BACf,OAAO;wBACT,CAAC;wBAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC7C,QAAQ,EAAE,CAAC;wBACb,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- import type { JwtTokenDecoded } from '../types/index.js';
2
- export declare const parseJwt: (access_token: string) => JwtTokenDecoded;
@@ -1,12 +0,0 @@
1
- export const parseJwt = (access_token) => {
2
- const base64Url = access_token.split('.')[1];
3
- const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
4
- const jsonPayload = decodeURIComponent(atob(base64)
5
- .split('')
6
- .map((c) => {
7
- return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
8
- })
9
- .join(''));
10
- return JSON.parse(jsonPayload);
11
- };
12
- //# sourceMappingURL=parse.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../../../src/api/utils/parse.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,YAAoB,EAAmB,EAAE;IAChE,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAE/D,MAAM,WAAW,GAAW,kBAAkB,CAC5C,IAAI,CAAC,MAAM,CAAC;SACT,KAAK,CAAC,EAAE,CAAC;SACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CACZ,CAAC;IAEF,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC,CAAC"}
@@ -1,16 +0,0 @@
1
- import { Server } from 'socket.io';
2
- import type { FastifyInstance } from 'fastify';
3
- import type { ServerOptions } from 'socket.io';
4
- import type { SocketNsp, SocketNspMap } from './types.js';
5
- export declare class SocketService {
6
- io: Server;
7
- namespaces: Map<SocketNsp, SocketNspMap>;
8
- adminNsp: SocketNsp[];
9
- private logger;
10
- private authService;
11
- private configService;
12
- private api;
13
- constructor(app: FastifyInstance, opts: Partial<ServerOptions>);
14
- private registerNamespaces;
15
- private setupConnection;
16
- }
@@ -1,76 +0,0 @@
1
- import { Server } from 'socket.io';
2
- import { container } from 'tsyringe';
3
- import { authorize } from '../middlewares/socketAuth.middleware.js';
4
- import { AuthService } from '../services/auth.service.js';
5
- import { API_EVENT } from '../../api.js';
6
- import { WebsocketProxy } from '../../nats/websocket.js';
7
- import { LogsNamespace } from './nsp/logs.js';
8
- import { MainNamespace } from './nsp/main.js';
9
- import { MetricsNamespace } from './nsp/metrics.js';
10
- import { NotificationsNamespace } from './nsp/notifications.js';
11
- import { PluginsNamespace } from './nsp/plugins.js';
12
- import { ServerNamespace } from './nsp/server.js';
13
- import { StatusNamespace } from './nsp/status.js';
14
- export class SocketService {
15
- io;
16
- namespaces = new Map();
17
- adminNsp = ['/logs', '/notifications', '/status', '/metrics', '/plugins', '/proxy', '/server'];
18
- logger;
19
- authService;
20
- configService;
21
- api;
22
- constructor(app, opts) {
23
- container.registerInstance('socketService', this);
24
- this.logger = container.resolve('logger');
25
- this.configService = container.resolve('configService');
26
- this.api = container.resolve('api');
27
- this.io = new Server(app.server, opts);
28
- this.registerNamespaces();
29
- this.api.setMaxListeners(this.api.getMaxListeners() + 1);
30
- this.api.once(API_EVENT.SHUTDOWN, () => {
31
- this.io.close();
32
- });
33
- }
34
- async registerNamespaces() {
35
- this.authService = new AuthService();
36
- this.namespaces.set('/camera.ui', new MainNamespace(this.io));
37
- this.namespaces.set('/server', new ServerNamespace(this.io));
38
- this.namespaces.set('/notifications', new NotificationsNamespace(this.io));
39
- this.namespaces.set('/metrics', new MetricsNamespace(this.io));
40
- this.namespaces.set('/logs', new LogsNamespace(this.io));
41
- this.namespaces.set('/status', new StatusNamespace(this.io));
42
- this.namespaces.set('/plugins', new PluginsNamespace(this.io));
43
- this.namespaces.set('/proxy', new WebsocketProxy(this.io));
44
- for (const [nsp, contructor] of this.namespaces) {
45
- contructor.nsp.use(authorize({ secret: this.configService.SECRETS.jwtAccessKey })).on('connection', (socket) => this.setupConnection(socket, nsp));
46
- }
47
- }
48
- setupConnection(socket, nsp) {
49
- const username = socket.decodedToken?.username;
50
- const address = socket.conn.remoteAddress;
51
- try {
52
- if (this.adminNsp.includes(nsp) && socket.decodedToken?.role !== 'admin') {
53
- throw new Error('No permission');
54
- }
55
- const valid = this.authService.findByToken(socket.encodedToken);
56
- if (!valid) {
57
- throw new Error('Unauthenticated');
58
- }
59
- const device = this.authService.clientDataByToken(socket.encodedToken)?.device ?? 'unknown';
60
- this.logger.trace(`${username} | ${address} | ${device} | authenticated and connected to ${nsp}`);
61
- const onEnd = (reason = 'transport close') => {
62
- this.logger.trace(`${username} | ${address} | ${device} | disconnected from ${nsp} (${reason})`);
63
- socket.removeAllListeners('end');
64
- socket.removeAllListeners('disconnect');
65
- socket.disconnect();
66
- };
67
- // socket.on('end', onEnd.bind(this));
68
- socket.on('disconnect', onEnd.bind(this));
69
- }
70
- catch {
71
- socket.emit('unauthenticated');
72
- socket.disconnect(true);
73
- }
74
- }
75
- }
76
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/api/websocket/index.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import type { Namespace, Server, Socket } from 'socket.io';
2
- import type { SocketNsp } from '../types.js';
3
- export declare class LogsNamespace {
4
- nsp: Namespace;
5
- nspName: SocketNsp;
6
- private nativeTail?;
7
- private api;
8
- private configService;
9
- private pluginManager;
10
- constructor(io: Server);
11
- getAllLogs(socket: Socket): void;
12
- getCameraLog(socket: Socket, cameraName: string): void;
13
- getPluginLog(socket: Socket, pluginName: string): void;
14
- private tailLogFromFileNative;
15
- private removeName;
16
- private removeBracketedContent;
17
- }
@@ -1,151 +0,0 @@
1
- import ansiRegex from 'ansi-regex';
2
- import { cyan, red } from 'ansicolor';
3
- import { createReadStream, existsSync } from 'node:fs';
4
- import { stat } from 'node:fs/promises';
5
- import { Tail } from 'tail';
6
- import { container } from 'tsyringe';
7
- export class LogsNamespace {
8
- nsp;
9
- nspName = '/logs';
10
- nativeTail;
11
- api;
12
- configService;
13
- pluginManager;
14
- constructor(io) {
15
- this.api = container.resolve('api');
16
- this.configService = container.resolve('configService');
17
- this.pluginManager = container.resolve('pluginManager');
18
- this.nsp = io.of(this.nspName);
19
- this.nsp.on('connection', (socket) => {
20
- socket.on('get-all-logs', () => this.getAllLogs(socket));
21
- socket.on('get-camera-log', (cameraName) => this.getCameraLog(socket, cameraName));
22
- socket.on('get-plugin-log', (pluginName) => this.getPluginLog(socket, pluginName));
23
- });
24
- }
25
- getAllLogs(socket) {
26
- const emitTo = 'stdout';
27
- socket.emit(emitTo, cyan('Loading logs using native method...\r\n'));
28
- this.tailLogFromFileNative(socket, this.configService.LOG_FILE, emitTo);
29
- }
30
- getCameraLog(socket, cameraName) {
31
- const emitTo = `stdout/${cameraName}`;
32
- socket.emit(emitTo, cyan('Loading camera log using native method...\r\n'));
33
- const cameraController = this.api.getCamera(cameraName);
34
- if (!cameraController) {
35
- socket.emit(emitTo, red(`Camera "${cameraName}" not found.\r\n`));
36
- return;
37
- }
38
- this.tailLogFromFileNative(socket, cameraController.logPath, emitTo, cameraController.camera.name);
39
- }
40
- getPluginLog(socket, pluginName) {
41
- const emitTo = `stdout/${pluginName}`;
42
- socket.emit(emitTo, cyan('Loading plugin log using native method...\r\n\r\n'));
43
- const plugin = this.pluginManager.plugins.get(pluginName);
44
- if (!plugin) {
45
- socket.emit(emitTo, red(`Plugin "${pluginName}" not found.\r\n`));
46
- return;
47
- }
48
- this.tailLogFromFileNative(socket, plugin.logPath, emitTo, plugin.displayName);
49
- }
50
- async tailLogFromFileNative(socket, logFile, to, filter) {
51
- if (!existsSync(logFile)) {
52
- socket.emit(to, red(`\r\nNo log file exists at path: ${logFile}\r\n`));
53
- return;
54
- }
55
- try {
56
- const logStats = await stat(logFile);
57
- const logStartPosition = logStats.size <= 50000 ? 0 : logStats.size - 50000;
58
- const logStream = createReadStream(logFile, { start: logStartPosition });
59
- logStream.on('data', (buffer) => {
60
- let line = buffer.toString().split(/\r?\n/).join('\r\n');
61
- if (filter !== undefined) {
62
- if (typeof filter === 'string') {
63
- line = this.removeName(line, filter);
64
- }
65
- else if (typeof filter === 'number') {
66
- line = this.removeBracketedContent(line, filter);
67
- }
68
- }
69
- socket.emit(to, line + '\r\n');
70
- });
71
- logStream.on('end', () => {
72
- logStream.close();
73
- });
74
- }
75
- catch (error) {
76
- socket.emit(to, red(`Failed to read log file: ${error.message}\r\n`));
77
- return;
78
- }
79
- if (!this.nativeTail) {
80
- this.nativeTail = new Tail(logFile, {
81
- fromBeginning: false,
82
- useWatchFile: true,
83
- fsWatchOptions: {
84
- interval: 200,
85
- },
86
- });
87
- }
88
- else if (this.nativeTail?.listenerCount('line') === 0) {
89
- this.nativeTail.watch();
90
- }
91
- // watch for lines and emit to client
92
- const onLine = (line) => {
93
- line = line.toString().split(/\r?\n/).join('\r\n');
94
- if (filter !== undefined) {
95
- if (typeof filter === 'string') {
96
- line = this.removeName(line, filter);
97
- }
98
- else if (typeof filter === 'number') {
99
- line = this.removeBracketedContent(line, filter);
100
- }
101
- }
102
- socket.emit(to, line + '\r\n');
103
- };
104
- const onError = (error) => {
105
- let line = error.toString().split(/\r?\n/).join('\r\n');
106
- if (filter !== undefined) {
107
- if (typeof filter === 'string') {
108
- line = this.removeName(line, filter);
109
- }
110
- else if (typeof filter === 'number') {
111
- line = this.removeBracketedContent(line, filter);
112
- }
113
- }
114
- socket.emit(to, line + '\r\n');
115
- };
116
- this.nativeTail?.on('line', onLine);
117
- this.nativeTail?.on('error', onError);
118
- // cleanup on disconnect
119
- const onEnd = () => {
120
- this.nativeTail?.removeListener('line', onLine);
121
- this.nativeTail?.removeListener('error', onError);
122
- // stop watching the file if there are no other watchers
123
- if (this.nativeTail?.listenerCount('line') === 0) {
124
- this.nativeTail.unwatch();
125
- }
126
- socket.removeAllListeners('end');
127
- socket.removeAllListeners('disconnect');
128
- };
129
- socket.on('end', onEnd.bind(this));
130
- socket.on('disconnect', onEnd.bind(this));
131
- }
132
- removeName(str, cameraName) {
133
- const escapeRegex = (string) => string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
134
- const escapedCameraName = escapeRegex(cameraName);
135
- const regex = new RegExp(`(${ansiRegex().source}\\s*\\[${escapedCameraName}\\]\\s*${ansiRegex().source})`, 'g');
136
- return str
137
- .replace(regex, ' ')
138
- .replace(/[^\S\r\n]+/g, ' ')
139
- .replace(/^[^\S\r\n]+|[^\S\r\n]+$/gm, '');
140
- }
141
- removeBracketedContent(str, n) {
142
- let count = 0;
143
- const regex = new RegExp(`(${ansiRegex().source}\\s*\\[[^\\]]+\\]\\s*${ansiRegex().source})`, 'g');
144
- const replacedStr = str.replace(regex, (match) => {
145
- count++;
146
- return count === n ? ' ' : match;
147
- });
148
- return replacedStr.replace(/[^\S\r\n]+/g, ' ').replace(/^[^\S\r\n]+|[^\S\r\n]+$/gm, '');
149
- }
150
- }
151
- //# sourceMappingURL=logs.js.map