@camera.ui/browser 0.0.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 (241) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE.md +22 -0
  3. package/README.md +1 -0
  4. package/dist/bundle.browser.js +1 -0
  5. package/dist/client/node/src/api.d.ts +5 -0
  6. package/dist/client/node/src/api.js +27 -0
  7. package/dist/client/node/src/api.js.map +1 -0
  8. package/dist/client/node/src/client.d.ts +20 -0
  9. package/dist/client/node/src/client.js +106 -0
  10. package/dist/client/node/src/client.js.map +1 -0
  11. package/dist/client/node/src/index.d.ts +2 -0
  12. package/dist/client/node/src/index.js +19 -0
  13. package/dist/client/node/src/index.js.map +1 -0
  14. package/dist/client/node/src/proxy/cameraDevice/cameraDevice.browser.d.ts +48 -0
  15. package/dist/client/node/src/proxy/cameraDevice/cameraDevice.browser.js +176 -0
  16. package/dist/client/node/src/proxy/cameraDevice/cameraDevice.browser.js.map +1 -0
  17. package/dist/client/node/src/proxy/cameraDevice/cameraDevice.mock.d.ts +1 -0
  18. package/dist/client/node/src/proxy/cameraDevice/cameraDevice.mock.js +3 -0
  19. package/dist/client/node/src/proxy/cameraDevice/cameraDevice.mock.js.map +1 -0
  20. package/dist/client/node/src/proxy/cameraDevice/cameraDevice.node.d.ts +11 -0
  21. package/dist/client/node/src/proxy/cameraDevice/cameraDevice.node.js +51 -0
  22. package/dist/client/node/src/proxy/cameraDevice/cameraDevice.node.js.map +1 -0
  23. package/dist/client/node/src/proxy/cameraDevice/index.d.ts +6 -0
  24. package/dist/client/node/src/proxy/cameraDevice/index.js +11 -0
  25. package/dist/client/node/src/proxy/cameraDevice/index.js.map +1 -0
  26. package/dist/client/node/src/proxy/deviceManager.d.ts +15 -0
  27. package/dist/client/node/src/proxy/deviceManager.js +67 -0
  28. package/dist/client/node/src/proxy/deviceManager.js.map +1 -0
  29. package/dist/client/node/src/proxy/index.d.ts +4 -0
  30. package/dist/client/node/src/proxy/index.js +21 -0
  31. package/dist/client/node/src/proxy/index.js.map +1 -0
  32. package/dist/client/node/src/proxy/pluginsManager.d.ts +9 -0
  33. package/dist/client/node/src/proxy/pluginsManager.js +25 -0
  34. package/dist/client/node/src/proxy/pluginsManager.js.map +1 -0
  35. package/dist/client/node/src/proxy/systemManager.d.ts +9 -0
  36. package/dist/client/node/src/proxy/systemManager.js +25 -0
  37. package/dist/client/node/src/proxy/systemManager.js.map +1 -0
  38. package/dist/client/node/src/socket.d.ts +9 -0
  39. package/dist/client/node/src/socket.js +45 -0
  40. package/dist/client/node/src/socket.js.map +1 -0
  41. package/dist/client/node/src/types.d.ts +22 -0
  42. package/dist/client/node/src/types.js +3 -0
  43. package/dist/client/node/src/types.js.map +1 -0
  44. package/dist/package.json +149 -0
  45. package/dist/shared/common/utils.d.ts +6 -0
  46. package/dist/shared/common/utils.js +66 -0
  47. package/dist/shared/common/utils.js.map +1 -0
  48. package/dist/shared/types/index.d.ts +8 -0
  49. package/dist/shared/types/index.js +23 -0
  50. package/dist/shared/types/index.js.map +1 -0
  51. package/dist/src/api/database/index.d.ts +25 -0
  52. package/dist/src/api/database/index.js +203 -0
  53. package/dist/src/api/database/index.js.map +1 -0
  54. package/dist/src/api/database/types.d.ts +153 -0
  55. package/dist/src/api/database/types.js +3 -0
  56. package/dist/src/api/database/types.js.map +1 -0
  57. package/dist/src/api/go2rtc/api/application.d.ts +8 -0
  58. package/dist/src/api/go2rtc/api/application.js +32 -0
  59. package/dist/src/api/go2rtc/api/application.js.map +1 -0
  60. package/dist/src/api/go2rtc/api/index.d.ts +3 -0
  61. package/dist/src/api/go2rtc/api/index.js +33 -0
  62. package/dist/src/api/go2rtc/api/index.js.map +1 -0
  63. package/dist/src/api/go2rtc/api/snapshot.d.ts +6 -0
  64. package/dist/src/api/go2rtc/api/snapshot.js +22 -0
  65. package/dist/src/api/go2rtc/api/snapshot.js.map +1 -0
  66. package/dist/src/api/go2rtc/api/streams.d.ts +10 -0
  67. package/dist/src/api/go2rtc/api/streams.js +32 -0
  68. package/dist/src/api/go2rtc/api/streams.js.map +1 -0
  69. package/dist/src/api/go2rtc/index.d.ts +3 -0
  70. package/dist/src/api/go2rtc/index.js +13 -0
  71. package/dist/src/api/go2rtc/index.js.map +1 -0
  72. package/dist/src/api/go2rtc/types.d.ts +43 -0
  73. package/dist/src/api/go2rtc/types.js +3 -0
  74. package/dist/src/api/go2rtc/types.js.map +1 -0
  75. package/dist/src/api/middlewares/socketAuth.middleware.d.ts +41 -0
  76. package/dist/src/api/middlewares/socketAuth.middleware.js +90 -0
  77. package/dist/src/api/middlewares/socketAuth.middleware.js.map +1 -0
  78. package/dist/src/api/schemas/backup.schema.d.ts +220 -0
  79. package/dist/src/api/schemas/backup.schema.js +94 -0
  80. package/dist/src/api/schemas/backup.schema.js.map +1 -0
  81. package/dist/src/api/schemas/cameras.schema.d.ts +316 -0
  82. package/dist/src/api/schemas/cameras.schema.js +124 -0
  83. package/dist/src/api/schemas/cameras.schema.js.map +1 -0
  84. package/dist/src/api/schemas/config.schema.d.ts +202 -0
  85. package/dist/src/api/schemas/config.schema.js +94 -0
  86. package/dist/src/api/schemas/config.schema.js.map +1 -0
  87. package/dist/src/api/schemas/go2rtc.schema.d.ts +604 -0
  88. package/dist/src/api/schemas/go2rtc.schema.js +204 -0
  89. package/dist/src/api/schemas/go2rtc.schema.js.map +1 -0
  90. package/dist/src/api/schemas/users.schema.d.ts +515 -0
  91. package/dist/src/api/schemas/users.schema.js +131 -0
  92. package/dist/src/api/schemas/users.schema.js.map +1 -0
  93. package/dist/src/api/services/auth.service.d.ts +20 -0
  94. package/dist/src/api/services/auth.service.js +104 -0
  95. package/dist/src/api/services/auth.service.js.map +1 -0
  96. package/dist/src/api/services/cameras.service.d.ts +40 -0
  97. package/dist/src/api/services/cameras.service.js +535 -0
  98. package/dist/src/api/services/cameras.service.js.map +1 -0
  99. package/dist/src/api/services/plugins.service.d.ts +23 -0
  100. package/dist/src/api/services/plugins.service.js +115 -0
  101. package/dist/src/api/services/plugins.service.js.map +1 -0
  102. package/dist/src/api/services/users.service.d.ts +13 -0
  103. package/dist/src/api/services/users.service.js +54 -0
  104. package/dist/src/api/services/users.service.js.map +1 -0
  105. package/dist/src/api/types/index.d.ts +522 -0
  106. package/dist/src/api/types/index.js +12 -0
  107. package/dist/src/api/types/index.js.map +1 -0
  108. package/dist/src/api/utils/cert.d.ts +17 -0
  109. package/dist/src/api/utils/cert.js +437 -0
  110. package/dist/src/api/utils/cert.js.map +1 -0
  111. package/dist/src/api/ws/index.d.ts +15 -0
  112. package/dist/src/api/ws/index.js +89 -0
  113. package/dist/src/api/ws/index.js.map +1 -0
  114. package/dist/src/api/ws/nsp/logs.d.ts +11 -0
  115. package/dist/src/api/ws/nsp/logs.js +121 -0
  116. package/dist/src/api/ws/nsp/logs.js.map +1 -0
  117. package/dist/src/api/ws/nsp/main.d.ts +9 -0
  118. package/dist/src/api/ws/nsp/main.js +49 -0
  119. package/dist/src/api/ws/nsp/main.js.map +1 -0
  120. package/dist/src/api/ws/nsp/metrics.d.ts +33 -0
  121. package/dist/src/api/ws/nsp/metrics.js +225 -0
  122. package/dist/src/api/ws/nsp/metrics.js.map +1 -0
  123. package/dist/src/api/ws/nsp/notifications.d.ts +11 -0
  124. package/dist/src/api/ws/nsp/notifications.js +39 -0
  125. package/dist/src/api/ws/nsp/notifications.js.map +1 -0
  126. package/dist/src/api/ws/nsp/plugins.d.ts +13 -0
  127. package/dist/src/api/ws/nsp/plugins.js +33 -0
  128. package/dist/src/api/ws/nsp/plugins.js.map +1 -0
  129. package/dist/src/api/ws/nsp/status.d.ts +12 -0
  130. package/dist/src/api/ws/nsp/status.js +41 -0
  131. package/dist/src/api/ws/nsp/status.js.map +1 -0
  132. package/dist/src/api/ws/nsp/streams.d.ts +30 -0
  133. package/dist/src/api/ws/nsp/streams.js +140 -0
  134. package/dist/src/api/ws/nsp/streams.js.map +1 -0
  135. package/dist/src/api/ws/types.d.ts +82 -0
  136. package/dist/src/api/ws/types.js +3 -0
  137. package/dist/src/api/ws/types.js.map +1 -0
  138. package/dist/src/api.d.ts +60 -0
  139. package/dist/src/api.js +66 -0
  140. package/dist/src/api.js.map +1 -0
  141. package/dist/src/camera/index.d.ts +54 -0
  142. package/dist/src/camera/index.js +210 -0
  143. package/dist/src/camera/index.js.map +1 -0
  144. package/dist/src/camera/streaming/peer-connection.d.ts +31 -0
  145. package/dist/src/camera/streaming/peer-connection.js +157 -0
  146. package/dist/src/camera/streaming/peer-connection.js.map +1 -0
  147. package/dist/src/camera/streaming/streaming-session.d.ts +32 -0
  148. package/dist/src/camera/streaming/streaming-session.js +172 -0
  149. package/dist/src/camera/streaming/streaming-session.js.map +1 -0
  150. package/dist/src/camera/streaming/webrtc-connection.d.ts +33 -0
  151. package/dist/src/camera/streaming/webrtc-connection.js +156 -0
  152. package/dist/src/camera/streaming/webrtc-connection.js.map +1 -0
  153. package/dist/src/camera/subscribed.d.ts +6 -0
  154. package/dist/src/camera/subscribed.js +14 -0
  155. package/dist/src/camera/subscribed.js.map +1 -0
  156. package/dist/src/camera/types.d.ts +130 -0
  157. package/dist/src/camera/types.js +3 -0
  158. package/dist/src/camera/types.js.map +1 -0
  159. package/dist/src/go2rtc/index.d.ts +24 -0
  160. package/dist/src/go2rtc/index.js +220 -0
  161. package/dist/src/go2rtc/index.js.map +1 -0
  162. package/dist/src/go2rtc/types.d.ts +14 -0
  163. package/dist/src/go2rtc/types.js +76 -0
  164. package/dist/src/go2rtc/types.js.map +1 -0
  165. package/dist/src/plugins/base.d.ts +19 -0
  166. package/dist/src/plugins/base.js +26 -0
  167. package/dist/src/plugins/base.js.map +1 -0
  168. package/dist/src/plugins/cameraStorage.d.ts +97 -0
  169. package/dist/src/plugins/cameraStorage.js +290 -0
  170. package/dist/src/plugins/cameraStorage.js.map +1 -0
  171. package/dist/src/plugins/child.d.ts +18 -0
  172. package/dist/src/plugins/child.js +140 -0
  173. package/dist/src/plugins/child.js.map +1 -0
  174. package/dist/src/plugins/config.d.ts +113 -0
  175. package/dist/src/plugins/config.js +234 -0
  176. package/dist/src/plugins/config.js.map +1 -0
  177. package/dist/src/plugins/index.d.ts +36 -0
  178. package/dist/src/plugins/index.js +328 -0
  179. package/dist/src/plugins/index.js.map +1 -0
  180. package/dist/src/plugins/plugin.d.ts +47 -0
  181. package/dist/src/plugins/plugin.js +215 -0
  182. package/dist/src/plugins/plugin.js.map +1 -0
  183. package/dist/src/plugins/schema.d.ts +268 -0
  184. package/dist/src/plugins/schema.js +717 -0
  185. package/dist/src/plugins/schema.js.map +1 -0
  186. package/dist/src/plugins/storage.d.ts +28 -0
  187. package/dist/src/plugins/storage.js +45 -0
  188. package/dist/src/plugins/storage.js.map +1 -0
  189. package/dist/src/plugins/types.d.ts +162 -0
  190. package/dist/src/plugins/types.js +21 -0
  191. package/dist/src/plugins/types.js.map +1 -0
  192. package/dist/src/plugins/worker.d.ts +27 -0
  193. package/dist/src/plugins/worker.js +236 -0
  194. package/dist/src/plugins/worker.js.map +1 -0
  195. package/dist/src/proxy/client/cameraDevice.d.ts +29 -0
  196. package/dist/src/proxy/client/cameraDevice.js +171 -0
  197. package/dist/src/proxy/client/cameraDevice.js.map +1 -0
  198. package/dist/src/proxy/client/deviceManager.d.ts +40 -0
  199. package/dist/src/proxy/client/deviceManager.js +239 -0
  200. package/dist/src/proxy/client/deviceManager.js.map +1 -0
  201. package/dist/src/proxy/client/index.d.ts +4 -0
  202. package/dist/src/proxy/client/index.js +21 -0
  203. package/dist/src/proxy/client/index.js.map +1 -0
  204. package/dist/src/proxy/client/pluginsManager.d.ts +35 -0
  205. package/dist/src/proxy/client/pluginsManager.js +237 -0
  206. package/dist/src/proxy/client/pluginsManager.js.map +1 -0
  207. package/dist/src/proxy/client/systemManager.d.ts +29 -0
  208. package/dist/src/proxy/client/systemManager.js +163 -0
  209. package/dist/src/proxy/client/systemManager.js.map +1 -0
  210. package/dist/src/proxy/index.d.ts +20 -0
  211. package/dist/src/proxy/index.js +98 -0
  212. package/dist/src/proxy/index.js.map +1 -0
  213. package/dist/src/proxy/proxies/camera.d.ts +26 -0
  214. package/dist/src/proxy/proxies/camera.js +72 -0
  215. package/dist/src/proxy/proxies/camera.js.map +1 -0
  216. package/dist/src/proxy/proxies/plugin.d.ts +30 -0
  217. package/dist/src/proxy/proxies/plugin.js +110 -0
  218. package/dist/src/proxy/proxies/plugin.js.map +1 -0
  219. package/dist/src/proxy/proxies/server.d.ts +34 -0
  220. package/dist/src/proxy/proxies/server.js +92 -0
  221. package/dist/src/proxy/proxies/server.js.map +1 -0
  222. package/dist/src/proxy/types.d.ts +189 -0
  223. package/dist/src/proxy/types.js +3 -0
  224. package/dist/src/proxy/types.js.map +1 -0
  225. package/dist/src/proxy/utils/generateKeys.d.ts +5 -0
  226. package/dist/src/proxy/utils/generateKeys.js +13 -0
  227. package/dist/src/proxy/utils/generateKeys.js.map +1 -0
  228. package/dist/src/proxy/ws/index.d.ts +21 -0
  229. package/dist/src/proxy/ws/index.js +75 -0
  230. package/dist/src/proxy/ws/index.js.map +1 -0
  231. package/dist/src/services/config/index.d.ts +60 -0
  232. package/dist/src/services/config/index.js +319 -0
  233. package/dist/src/services/config/index.js.map +1 -0
  234. package/dist/src/services/config/types.d.ts +153 -0
  235. package/dist/src/services/config/types.js +13 -0
  236. package/dist/src/services/config/types.js.map +1 -0
  237. package/dist/src/services/logger/index.d.ts +37 -0
  238. package/dist/src/services/logger/index.js +181 -0
  239. package/dist/src/services/logger/index.js.map +1 -0
  240. package/package.json +46 -0
  241. package/webpack.config.js +29 -0
@@ -0,0 +1,437 @@
1
+ 'use-strict';
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.createCert = exports.createCSR = exports.createRootCA = exports.getCert = exports.P12_PASSWORD = exports.P12_FILENAME = exports.ROOT_KEY_FILENAME = exports.ROOT_CERT_FILENAME = exports.HOST_KEY_FILENAME = exports.HOST_CERT_FILENAME = void 0;
8
+ const node_forge_1 = __importDefault(require("node-forge"));
9
+ const fs_extra_1 = __importDefault(require("fs-extra"));
10
+ const net_1 = require("net");
11
+ const path_1 = __importDefault(require("path"));
12
+ const tsyringe_1 = require("tsyringe");
13
+ // export const CSR_CERT_FILENAME = 'camera.ui.csr.cert.pem';
14
+ exports.HOST_CERT_FILENAME = 'camera.ui.cert.pem';
15
+ exports.HOST_KEY_FILENAME = 'camera.ui.key.pem';
16
+ exports.ROOT_CERT_FILENAME = 'camera.ui.root.cert.pem';
17
+ exports.ROOT_KEY_FILENAME = 'camera.ui.root.key.pem';
18
+ exports.P12_FILENAME = 'camera.ui.p12';
19
+ exports.P12_PASSWORD = 'camera.ui';
20
+ const DEFAULTS = {
21
+ C: 'DE',
22
+ ST: 'Berlin',
23
+ L: 'Berlin',
24
+ O: 'camera.ui',
25
+ OU: 'cui',
26
+ CN: 'camera.ui root certificate',
27
+ ROOT_CN: 'camera.ui root certificate',
28
+ };
29
+ const makeNumberPositive = (hexString) => {
30
+ let mostSignificativeHexDigitAsInt = Number.parseInt(hexString[0], 16);
31
+ if (mostSignificativeHexDigitAsInt < 8) {
32
+ return hexString;
33
+ }
34
+ mostSignificativeHexDigitAsInt -= 8;
35
+ return mostSignificativeHexDigitAsInt.toString() + hexString.slice(1);
36
+ };
37
+ // Generate a random serial number for the Certificate
38
+ const randomSerialNumber = () => {
39
+ return makeNumberPositive(node_forge_1.default.util.bytesToHex(node_forge_1.default.random.getBytesSync(20)));
40
+ };
41
+ // Get the Not Before Date for a Certificate (will be valid from 2 days ago)
42
+ const getCertNotBefore = () => {
43
+ const twoDaysAgo = new Date(Date.now() - 60 * 60 * 24 * 2 * 1000);
44
+ const year = twoDaysAgo.getFullYear();
45
+ const month = (twoDaysAgo.getMonth() + 1).toString().padStart(2, '0');
46
+ const day = twoDaysAgo.getDate();
47
+ return new Date(`${year}-${month}-${day} 00:00:00Z`);
48
+ };
49
+ // Get Certificate Expiration Date (Valid for 90 Days)
50
+ const getCertNotAfter = (notBefore) => {
51
+ const ninetyDaysLater = new Date(notBefore.getTime() + 60 * 60 * 24 * 90 * 1000);
52
+ const year = ninetyDaysLater.getFullYear();
53
+ const month = (ninetyDaysLater.getMonth() + 1).toString().padStart(2, '0');
54
+ const day = ninetyDaysLater.getDate();
55
+ return new Date(`${year}-${month}-${day} 23:59:59Z`);
56
+ };
57
+ // Get CA Expiration Date (Valid for 100 Years)
58
+ const getCANotAfter = (notBefore) => {
59
+ const year = notBefore.getFullYear() + 100;
60
+ const month = (notBefore.getMonth() + 1).toString().padStart(2, '0');
61
+ const day = notBefore.getDate();
62
+ return new Date(`${year}-${month}-${day} 23:59:59Z`);
63
+ };
64
+ const getCert = () => {
65
+ const logger = tsyringe_1.container.resolve('logger');
66
+ const configService = tsyringe_1.container.resolve('configService');
67
+ const certFile = path_1.default.resolve(configService.STORAGE_PATH, exports.ROOT_CERT_FILENAME);
68
+ const keyFile = path_1.default.resolve(configService.STORAGE_PATH, exports.ROOT_KEY_FILENAME);
69
+ let cert;
70
+ let key;
71
+ let certPath;
72
+ let keyPath;
73
+ const { config } = configService;
74
+ if (config.ssl?.certFile && config.ssl?.keyFile && fs_extra_1.default.existsSync(config.ssl.certFile) && fs_extra_1.default.existsSync(config.ssl.keyFile)) {
75
+ logger.debug('Configuring server with certificate/key defined in camera.ui.yaml...');
76
+ cert = fs_extra_1.default.readFileSync(config.ssl.certFile, 'utf8');
77
+ key = fs_extra_1.default.readFileSync(config.ssl.keyFile, 'utf8');
78
+ certPath = config.ssl.certFile;
79
+ keyPath = config.ssl.keyFile;
80
+ }
81
+ else {
82
+ logger.debug('Generating new certificate/key for server...');
83
+ const data = (0, exports.createRootCA)(config.ssl?.addresses);
84
+ cert = data.cert;
85
+ key = data.key;
86
+ certPath = certFile;
87
+ keyPath = keyFile;
88
+ }
89
+ return {
90
+ cert,
91
+ certPath,
92
+ key,
93
+ keyPath,
94
+ };
95
+ };
96
+ exports.getCert = getCert;
97
+ const createRootCA = (customAddresses = ['localhost', '127.0.0.1']) => {
98
+ const configService = tsyringe_1.container.resolve('configService');
99
+ const serialNumber = randomSerialNumber();
100
+ const addresses = customAddresses.map((address) => {
101
+ const object = (0, net_1.isIPv4)(address) || (0, net_1.isIPv6)(address)
102
+ ? {
103
+ type: 7,
104
+ ip: address,
105
+ }
106
+ : {
107
+ type: 2,
108
+ value: address,
109
+ };
110
+ return object;
111
+ }) || [];
112
+ if (addresses.length === 0 || !addresses.some((addr) => addr.value === '127.0.0.1')) {
113
+ addresses.push({
114
+ type: 7,
115
+ ip: '127.0.0.1',
116
+ });
117
+ }
118
+ // Define the attributes for the new Root CA
119
+ const attributes = [
120
+ {
121
+ shortName: 'C',
122
+ value: DEFAULTS.C,
123
+ },
124
+ {
125
+ shortName: 'ST',
126
+ value: DEFAULTS.ST,
127
+ },
128
+ {
129
+ shortName: 'L',
130
+ value: DEFAULTS.L,
131
+ },
132
+ {
133
+ shortName: 'CN',
134
+ value: DEFAULTS.ROOT_CN,
135
+ },
136
+ {
137
+ shortName: 'O',
138
+ value: DEFAULTS.O,
139
+ },
140
+ {
141
+ shortName: 'OU',
142
+ value: DEFAULTS.OU,
143
+ },
144
+ ];
145
+ const extensions = [
146
+ {
147
+ name: 'basicConstraints',
148
+ cA: true,
149
+ critical: true,
150
+ },
151
+ {
152
+ name: 'keyUsage',
153
+ critical: true,
154
+ keyCertSign: true,
155
+ cRLSign: true,
156
+ digitalSignature: true,
157
+ nonRepudiation: true,
158
+ keyEncipherment: true,
159
+ dataEncipherment: true,
160
+ },
161
+ // x509lint ERROR CA root certificate with Extended Key Usage
162
+ /*{
163
+ name: 'extKeyUsage',
164
+ serverAuth: true,
165
+ clientAuth: true,
166
+ codeSigning: true,
167
+ emailProtection: true,
168
+ timeStamping: true,
169
+ },*/
170
+ {
171
+ name: 'nsCertType',
172
+ client: true,
173
+ server: true,
174
+ email: true,
175
+ objsign: true,
176
+ sslCA: true,
177
+ emailCA: true,
178
+ objCA: true,
179
+ },
180
+ {
181
+ name: 'subjectKeyIdentifier',
182
+ },
183
+ /*{
184
+ name: 'authorityKeyIdentifier',
185
+ keyid: 'always',
186
+ issuer: true,
187
+ },*/
188
+ {
189
+ name: 'authorityKeyIdentifier',
190
+ keyIdentifier: true,
191
+ //authorityCertIssuer: true,
192
+ //serialNumber: serialNumber,
193
+ },
194
+ {
195
+ name: 'subjectAltName',
196
+ altNames: addresses,
197
+ },
198
+ ];
199
+ // Create a new Keypair for the Root CA
200
+ const { privateKey, publicKey } = node_forge_1.default.pki.rsa.generateKeyPair(2048);
201
+ // Create an empty Certificate
202
+ const cert = node_forge_1.default.pki.createCertificate();
203
+ // Set the Certificate attributes for the new Root CA
204
+ cert.publicKey = publicKey;
205
+ cert.privateKey = privateKey;
206
+ cert.serialNumber = serialNumber;
207
+ cert.validity.notBefore = getCertNotBefore();
208
+ cert.validity.notAfter = getCANotAfter(cert.validity.notBefore);
209
+ cert.setSubject(attributes);
210
+ cert.setIssuer(attributes);
211
+ cert.setExtensions(extensions);
212
+ // Self-sign the Certificate
213
+ cert.sign(privateKey, node_forge_1.default.md.sha512.create());
214
+ // Convert to PEM format
215
+ const pemCert = node_forge_1.default.pki.certificateToPem(cert);
216
+ const pemPrivateKey = node_forge_1.default.pki.privateKeyToPem(privateKey);
217
+ // Write Root CA PEM cert/key to disk
218
+ const rootCertFilePath = path_1.default.resolve(configService.STORAGE_PATH, exports.ROOT_CERT_FILENAME);
219
+ const rootPrivateKeyFilePath = path_1.default.resolve(configService.STORAGE_PATH, exports.ROOT_KEY_FILENAME);
220
+ fs_extra_1.default.writeFileSync(rootCertFilePath, pemCert);
221
+ fs_extra_1.default.writeFileSync(rootPrivateKeyFilePath, pemPrivateKey);
222
+ // Return the PEM encoded cert and private key
223
+ return {
224
+ cert: pemCert,
225
+ certPath: rootCertFilePath,
226
+ key: pemPrivateKey,
227
+ keyPath: rootPrivateKeyFilePath,
228
+ };
229
+ };
230
+ exports.createRootCA = createRootCA;
231
+ const createCSR = (addresses, keys) => {
232
+ const csr = node_forge_1.default.pki.createCertificationRequest();
233
+ csr.publicKey = keys.publicKey;
234
+ const subject = [
235
+ {
236
+ shortName: 'C',
237
+ value: DEFAULTS.C,
238
+ },
239
+ {
240
+ shortName: 'ST',
241
+ value: DEFAULTS.ST,
242
+ },
243
+ {
244
+ shortName: 'L',
245
+ value: DEFAULTS.L,
246
+ },
247
+ {
248
+ shortName: 'O',
249
+ value: DEFAULTS.O,
250
+ },
251
+ {
252
+ shortName: 'OU',
253
+ value: DEFAULTS.OU,
254
+ },
255
+ {
256
+ shortName: 'CN',
257
+ value: DEFAULTS.CN,
258
+ },
259
+ ];
260
+ const attributes = [
261
+ {
262
+ name: 'extensionRequest',
263
+ extensions: [
264
+ {
265
+ name: 'subjectAltName',
266
+ altNames: addresses,
267
+ },
268
+ ],
269
+ },
270
+ ];
271
+ csr.setSubject(subject);
272
+ // Bug: https://github.com/digitalbazaar/forge/issues/1036
273
+ // @ts-ignore
274
+ csr.setAttributes(attributes);
275
+ // sign certification request
276
+ csr.sign(keys.privateKey, node_forge_1.default.md.sha512.create());
277
+ // Bug?
278
+ // @ts-ignore
279
+ if (csr.verify()) {
280
+ // Convert to PEM format
281
+ const pemCert = node_forge_1.default.pki.certificationRequestToPem(csr);
282
+ return {
283
+ cert: pemCert,
284
+ };
285
+ }
286
+ else {
287
+ throw new Error('Signature not verified.');
288
+ }
289
+ // Convert to PEM format
290
+ // const pemCert = forge.pki.certificationRequestToPem(csr);
291
+ // Write CSR PEM cert to disk
292
+ // const certFilePath = path.resolve(STORAGE_PATH, 'camera.ui.csr.cert.pem');
293
+ // fs.writeFileSync(certFilePath, pemCert);
294
+ // Return the PEM encoded cert and private key
295
+ // return {
296
+ // certificate: pemCert,
297
+ // };
298
+ };
299
+ exports.createCSR = createCSR;
300
+ const createCert = (customAddresses = ['localhost', '127.0.0.1'] /*, rootCAObject*/) => {
301
+ const configService = tsyringe_1.container.resolve('configService');
302
+ const addresses = customAddresses.map((address) => {
303
+ return {
304
+ type: (0, net_1.isIPv4)(address) || (0, net_1.isIPv6)(address) ? 7 : 2,
305
+ value: address,
306
+ };
307
+ });
308
+ if (addresses.length === 0) {
309
+ addresses.push({
310
+ type: 7,
311
+ value: '127.0.0.1',
312
+ });
313
+ }
314
+ // Create Root CA
315
+ // if (!rootCAObject) {
316
+ // const rootCertPath = path.resolve(STORAGE_PATH, ROOT_CERT_FILENAME);
317
+ // const rootKeyPath = path.resolve(STORAGE_PATH, ROOT_KEY_FILENAME);
318
+ // const storageDirectory = fs.readdirSync(STORAGE_PATH);
319
+ // const rootFilesExist = storageDirectory.every((value) => [ROOT_CERT_FILENAME, ROOT_KEY_FILENAME].includes(value));
320
+ // rootCAObject = !rootFilesExist
321
+ // ? createRootCA(STORAGE_PATH)
322
+ // : {
323
+ // certificate: fs.readFileSync(rootCertPath, 'ascii'),
324
+ // privateKey: fs.readFileSync(rootKeyPath, 'ascii'),
325
+ // };
326
+ // }
327
+ // Create a new Keypair
328
+ const keyPairs = node_forge_1.default.pki.rsa.generateKeyPair(2048);
329
+ // Create Root CA
330
+ const rootCAObject = (0, exports.createRootCA)(customAddresses);
331
+ // Create CSR
332
+ //const csrObject = createCSR(addresses, keyPairs);
333
+ // Convert the Root CA and CSR PEM details, to a forge Object
334
+ //const csr = forge.pki.certificationRequestFromPem(csrObject.certificate);
335
+ const caCert = node_forge_1.default.pki.certificateFromPem(rootCAObject.cert);
336
+ const caKey = node_forge_1.default.pki.privateKeyFromPem(rootCAObject.key);
337
+ const caStore = node_forge_1.default.pki.createCaStore([caCert]);
338
+ // This seams like a hack but something is wrong in forge it adds the wrong key
339
+ const authorityKeyIdentifier = caCert.getExtension('authorityKeyIdentifier');
340
+ const t = Buffer.from(authorityKeyIdentifier.value).slice(5);
341
+ const attributes = [
342
+ {
343
+ shortName: 'C',
344
+ value: DEFAULTS.C,
345
+ },
346
+ {
347
+ shortName: 'ST',
348
+ value: DEFAULTS.ST,
349
+ },
350
+ {
351
+ shortName: 'L',
352
+ value: DEFAULTS.L,
353
+ },
354
+ {
355
+ shortName: 'CN',
356
+ value: DEFAULTS.CN,
357
+ },
358
+ {
359
+ shortName: 'O',
360
+ value: DEFAULTS.O,
361
+ },
362
+ ];
363
+ const extensions = [
364
+ {
365
+ name: 'basicConstraints',
366
+ cA: false,
367
+ },
368
+ {
369
+ name: 'nsCertType',
370
+ server: true,
371
+ },
372
+ {
373
+ name: 'subjectKeyIdentifier',
374
+ },
375
+ {
376
+ name: 'authorityKeyIdentifier',
377
+ authorityCertIssuer: true,
378
+ serialNumber: caCert.serialNumber,
379
+ keyIdentifier: t,
380
+ },
381
+ {
382
+ name: 'keyUsage',
383
+ critical: true,
384
+ digitalSignature: true,
385
+ nonRepudiation: true,
386
+ keyEncipherment: true,
387
+ },
388
+ {
389
+ name: 'extKeyUsage',
390
+ serverAuth: true,
391
+ },
392
+ {
393
+ name: 'subjectAltName',
394
+ altNames: addresses,
395
+ },
396
+ ];
397
+ // Create an empty Certificate
398
+ const cert = node_forge_1.default.pki.createCertificate();
399
+ // Set the attributes for the new Host Certificate
400
+ cert.publicKey = keyPairs.publicKey;
401
+ cert.serialNumber = randomSerialNumber();
402
+ cert.validity.notBefore = getCertNotBefore();
403
+ cert.validity.notAfter = getCertNotAfter(cert.validity.notBefore);
404
+ cert.setSubject(attributes);
405
+ //cert.setSubject(csr.subject.attributes);
406
+ cert.setIssuer(caCert.subject.attributes);
407
+ cert.setExtensions(extensions);
408
+ // Sign the new Host Certificate using the CA
409
+ cert.sign(caKey, node_forge_1.default.md.sha512.create());
410
+ node_forge_1.default.pki.verifyCertificateChain(caStore, [cert, caCert]);
411
+ // Convert to PEM format
412
+ const pemCert = node_forge_1.default.pki.certificateToPem(cert);
413
+ const pemPrivateKey = node_forge_1.default.pki.privateKeyToPem(keyPairs.privateKey);
414
+ // Generate .p12 file
415
+ const pkcs12 = node_forge_1.default.pkcs12.toPkcs12Asn1(keyPairs.privateKey, [caCert], exports.P12_PASSWORD, {
416
+ algorithm: '3des',
417
+ generateLocalKeyId: true,
418
+ friendlyName: 'camera.ui',
419
+ });
420
+ const pkcs12Der = node_forge_1.default.asn1.toDer(pkcs12).getBytes();
421
+ // Write PEM cert/key to disk
422
+ const certFilePath = path_1.default.resolve(configService.STORAGE_PATH, exports.HOST_CERT_FILENAME);
423
+ const privateKeyFilePath = path_1.default.resolve(configService.STORAGE_PATH, exports.HOST_KEY_FILENAME);
424
+ const p12FilePath = path_1.default.resolve(configService.STORAGE_PATH, exports.P12_FILENAME);
425
+ fs_extra_1.default.writeFileSync(certFilePath, pemCert);
426
+ fs_extra_1.default.writeFileSync(privateKeyFilePath, pemPrivateKey);
427
+ fs_extra_1.default.writeFileSync(p12FilePath, pkcs12Der, 'binary');
428
+ // Return the PEM encoded cert and private key
429
+ return {
430
+ cert: pemCert,
431
+ certPath: certFilePath,
432
+ key: pemPrivateKey,
433
+ keyPath: privateKeyFilePath,
434
+ };
435
+ };
436
+ exports.createCert = createCert;
437
+ //# sourceMappingURL=cert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cert.js","sourceRoot":"","sources":["../../../../../../src/api/utils/cert.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
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';
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
+ constructor(app: FastifyInstance, opts: Partial<ServerOptions>);
13
+ private registerNamespaces;
14
+ private setupConnection;
15
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.SocketService = void 0;
16
+ const socket_io_1 = require("socket.io");
17
+ const tsyringe_1 = require("tsyringe");
18
+ const auth_service_1 = __importDefault(require("../services/auth.service"));
19
+ const socketAuth_middleware_1 = require("../middlewares/socketAuth.middleware");
20
+ const logs_1 = require("./nsp/logs");
21
+ const main_1 = require("./nsp/main");
22
+ const metrics_1 = require("./nsp/metrics");
23
+ const notifications_1 = require("./nsp/notifications");
24
+ const plugins_1 = require("./nsp/plugins");
25
+ const status_1 = require("./nsp/status");
26
+ const streams_1 = require("./nsp/streams");
27
+ const ws_1 = require("../../proxy/ws");
28
+ let SocketService = class SocketService {
29
+ io;
30
+ namespaces = new Map();
31
+ adminNsp = ['/logs', '/notifications', '/status', '/metrics', '/plugins', '/proxy'];
32
+ logger;
33
+ authService;
34
+ configService;
35
+ constructor(app, opts) {
36
+ this.logger = tsyringe_1.container.resolve('logger');
37
+ this.configService = tsyringe_1.container.resolve('configService');
38
+ this.io = new socket_io_1.Server(app.server, opts);
39
+ tsyringe_1.container.register('socketService', { useValue: this });
40
+ this.registerNamespaces();
41
+ }
42
+ async registerNamespaces() {
43
+ this.authService = new auth_service_1.default();
44
+ this.namespaces.set('/camera.ui', new main_1.Main(this.io));
45
+ this.namespaces.set('/notifications', new notifications_1.Notifications(this.io));
46
+ this.namespaces.set('/metrics', new metrics_1.Metrics(this.io));
47
+ this.namespaces.set('/logs', new logs_1.Logs(this.io));
48
+ this.namespaces.set('/status', new status_1.Status(this.io));
49
+ this.namespaces.set('/streams', new streams_1.Streams(this.io));
50
+ this.namespaces.set('/plugins', new plugins_1.Plugins(this.io));
51
+ this.namespaces.set('/proxy', new ws_1.ProxyBridge(this.io));
52
+ for (const [nsp, contructor] of this.namespaces) {
53
+ contructor.nsp.use((0, socketAuth_middleware_1.authorize)({ secret: this.configService.SECRETS.jwtAccessKey })).on('connection', (socket) => this.setupConnection(socket, nsp));
54
+ }
55
+ }
56
+ async setupConnection(socket, nsp) {
57
+ const username = socket.decodedToken?.username;
58
+ const address = socket.conn.remoteAddress;
59
+ try {
60
+ if (this.adminNsp.includes(nsp) && socket.decodedToken?.role !== 'admin') {
61
+ throw new Error('No permission');
62
+ }
63
+ const valid = await this.authService.findByToken(socket.encodedToken);
64
+ if (!valid) {
65
+ throw new Error('Unauthenticated');
66
+ }
67
+ const device = (await this.authService.clientDataByToken(socket.encodedToken))?.device || 'unknown';
68
+ this.logger.verbose(`${username} | ${address} | ${device} | authenticated and connected to ${nsp}`);
69
+ const onEnd = (reason = 'transport close') => {
70
+ this.logger.verbose(`${username} | ${address} | ${device} | disconnected from ${nsp} (${reason})`);
71
+ socket.removeAllListeners('end');
72
+ socket.removeAllListeners('disconnect');
73
+ socket.disconnect();
74
+ };
75
+ // socket.on('end', onEnd.bind(this));
76
+ socket.on('disconnect', onEnd.bind(this));
77
+ }
78
+ catch {
79
+ socket.emit('unauthenticated');
80
+ socket.disconnect(true);
81
+ }
82
+ }
83
+ };
84
+ exports.SocketService = SocketService;
85
+ exports.SocketService = SocketService = __decorate([
86
+ (0, tsyringe_1.scoped)(tsyringe_1.Lifecycle.ContainerScoped),
87
+ __metadata("design:paramtypes", [Object, Object])
88
+ ], SocketService);
89
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/api/ws/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Server, Namespace, Socket } from 'socket.io';
2
+ import type { SocketNsp } from '../types';
3
+ export declare class Logs {
4
+ nsp: Namespace;
5
+ nspName: SocketNsp;
6
+ private nativeTail?;
7
+ private configService;
8
+ constructor(io: Server);
9
+ connect(socket: Socket, filter?: string[]): void;
10
+ private tailLogFromFileNative;
11
+ }