@scrypted/server 0.0.116 → 0.0.121

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.

Potentially problematic release.


This version of @scrypted/server might be problematic. Click here for more details.

Files changed (56) hide show
  1. package/.vscode/launch.json +1 -0
  2. package/dist/http-interfaces.js +11 -4
  3. package/dist/http-interfaces.js.map +1 -1
  4. package/dist/level.js.map +1 -1
  5. package/dist/plugin/media.js +4 -4
  6. package/dist/plugin/media.js.map +1 -1
  7. package/dist/plugin/plugin-console.js.map +1 -1
  8. package/dist/plugin/plugin-device.js +13 -3
  9. package/dist/plugin/plugin-device.js.map +1 -1
  10. package/dist/plugin/plugin-host-api.js +2 -2
  11. package/dist/plugin/plugin-host-api.js.map +1 -1
  12. package/dist/plugin/plugin-host.js +110 -235
  13. package/dist/plugin/plugin-host.js.map +1 -1
  14. package/dist/plugin/plugin-http.js +1 -0
  15. package/dist/plugin/plugin-http.js.map +1 -1
  16. package/dist/plugin/plugin-lazy-remote.js.map +1 -1
  17. package/dist/plugin/plugin-remote-worker.js +252 -0
  18. package/dist/plugin/plugin-remote-worker.js.map +1 -0
  19. package/dist/plugin/plugin-remote.js +38 -14
  20. package/dist/plugin/plugin-remote.js.map +1 -1
  21. package/dist/plugin/plugin-repl.js.map +1 -1
  22. package/dist/plugin/system.js +7 -5
  23. package/dist/plugin/system.js.map +1 -1
  24. package/dist/rpc.js +13 -3
  25. package/dist/rpc.js.map +1 -1
  26. package/dist/runtime.js +18 -7
  27. package/dist/runtime.js.map +1 -1
  28. package/dist/scrypted-main.js +4 -437
  29. package/dist/scrypted-main.js.map +1 -1
  30. package/dist/scrypted-plugin-main.js +8 -0
  31. package/dist/scrypted-plugin-main.js.map +1 -0
  32. package/dist/scrypted-server-main.js +429 -0
  33. package/dist/scrypted-server-main.js.map +1 -0
  34. package/package.json +7 -6
  35. package/python/media.py +1 -12
  36. package/python/plugin-remote.py +22 -7
  37. package/python/rpc.py +5 -4
  38. package/src/http-interfaces.ts +12 -5
  39. package/src/level.ts +0 -2
  40. package/src/plugin/media.ts +4 -4
  41. package/src/plugin/plugin-api.ts +9 -1
  42. package/src/plugin/plugin-console.ts +0 -1
  43. package/src/plugin/plugin-device.ts +10 -3
  44. package/src/plugin/plugin-host-api.ts +2 -2
  45. package/src/plugin/plugin-host.ts +121 -264
  46. package/src/plugin/plugin-http.ts +3 -2
  47. package/src/plugin/plugin-lazy-remote.ts +1 -1
  48. package/src/plugin/plugin-remote-worker.ts +271 -0
  49. package/src/plugin/plugin-remote.ts +45 -16
  50. package/src/plugin/plugin-repl.ts +0 -1
  51. package/src/plugin/system.ts +8 -6
  52. package/src/rpc.ts +13 -2
  53. package/src/runtime.ts +18 -7
  54. package/src/scrypted-main.ts +5 -508
  55. package/src/scrypted-plugin-main.ts +6 -0
  56. package/src/scrypted-server-main.ts +498 -0
@@ -1 +1 @@
1
- {"version":3,"file":"scrypted-main.js","sourceRoot":"","sources":["../src/scrypted-main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scrypted-main.js","sourceRoot":"","sources":["../src/scrypted-main.ts"],"names":[],"mappings":";;;;;AAAA,sDAA8B;AAC9B,oDAA4B;AAC5B,+BAAuE;AACvE,wDAAoD;AAEpD,IAAI,CAAC,gBAAM,CAAC,GAAG,CAAC,iBAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;IACxC,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;CACtF;AAED,IAAA,oCAA8B,GAAE,CAAC;AAEjC,iBAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,KAAK,CAAC,EAAE;IACrC,IAAI,KAAK,EAAE,WAAW,KAAK,oBAAc,IAAI,KAAK,EAAE,WAAW,KAAK,0BAAW,EAAE;QAC7E,MAAM,KAAK,CAAC;KACf;IACD,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEH,IAAI,iBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;IAC7B,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACrC;KACI;IACD,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACrC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const plugin_remote_worker_1 = require("./plugin/plugin-remote-worker");
4
+ if (process.argv[3] !== '@scrypted/shared')
5
+ (0, plugin_remote_worker_1.startPluginRemote)(process.argv[3]);
6
+ else
7
+ (0, plugin_remote_worker_1.startSharedPluginRemote)();
8
+ //# sourceMappingURL=scrypted-plugin-main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrypted-plugin-main.js","sourceRoot":"","sources":["../src/scrypted-plugin-main.ts"],"names":[],"mappings":";;AAAA,wEAA2F;AAE3F,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,kBAAkB;IACtC,IAAA,wCAAiB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;;IAEnC,IAAA,8CAAuB,GAAE,CAAC"}
@@ -0,0 +1,429 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const path_1 = __importDefault(require("path"));
7
+ const process_1 = __importDefault(require("process"));
8
+ const http_1 = __importDefault(require("http"));
9
+ const https_1 = __importDefault(require("https"));
10
+ const express_1 = __importDefault(require("express"));
11
+ const body_parser_1 = __importDefault(require("body-parser"));
12
+ const net_1 = __importDefault(require("net"));
13
+ const runtime_1 = require("./runtime");
14
+ const level_1 = __importDefault(require("./level"));
15
+ const db_types_1 = require("./db-types");
16
+ const server_settings_1 = require("./server-settings");
17
+ const crypto_1 = __importDefault(require("crypto"));
18
+ const cookie_parser_1 = __importDefault(require("cookie-parser"));
19
+ const axios_1 = __importDefault(require("axios"));
20
+ const query_string_1 = __importDefault(require("query-string"));
21
+ const rpc_1 = require("./rpc");
22
+ const fs_1 = __importDefault(require("fs"));
23
+ const mkdirp_1 = __importDefault(require("mkdirp"));
24
+ const source_map_support_1 = require("source-map-support");
25
+ const http_auth_1 = __importDefault(require("http-auth"));
26
+ const semver_1 = __importDefault(require("semver"));
27
+ const info_1 = require("./services/info");
28
+ const addresses_1 = require("./addresses");
29
+ const sleep_1 = require("./sleep");
30
+ const cert_1 = require("./cert");
31
+ const plugin_error_1 = require("./plugin/plugin-error");
32
+ const plugin_volume_1 = require("./plugin/plugin-volume");
33
+ if (!semver_1.default.gte(process_1.default.version, '16.0.0')) {
34
+ throw new Error('"node" version out of date. Please update node to v16 or higher.');
35
+ }
36
+ process_1.default.on('unhandledRejection', error => {
37
+ if (error?.constructor !== rpc_1.RPCResultError && error?.constructor !== plugin_error_1.PluginError) {
38
+ throw error;
39
+ }
40
+ console.warn('unhandled rejection of RPC Result', error);
41
+ });
42
+ function listenServerPort(env, port, server) {
43
+ server.listen(port);
44
+ server.on('error', (e) => {
45
+ console.error(`Failed to listen on port ${port}. It may be in use.`);
46
+ console.error(`Use the environment variable ${env} to change the port.`);
47
+ throw e;
48
+ });
49
+ }
50
+ (0, source_map_support_1.install)({
51
+ environment: 'node',
52
+ });
53
+ let workerInspectPort = undefined;
54
+ async function doconnect() {
55
+ return new Promise((resolve, reject) => {
56
+ const target = net_1.default.connect(workerInspectPort);
57
+ target.once('error', reject);
58
+ target.once('connect', () => resolve(target));
59
+ });
60
+ }
61
+ const debugServer = net_1.default.createServer(async (socket) => {
62
+ if (!workerInspectPort) {
63
+ socket.destroy();
64
+ return;
65
+ }
66
+ for (let i = 0; i < 10; i++) {
67
+ try {
68
+ const target = await doconnect();
69
+ socket.pipe(target).pipe(socket);
70
+ const destroy = () => {
71
+ socket.destroy();
72
+ target.destroy();
73
+ };
74
+ socket.on('error', destroy);
75
+ target.on('error', destroy);
76
+ socket.on('close', destroy);
77
+ target.on('close', destroy);
78
+ return;
79
+ }
80
+ catch (e) {
81
+ await (0, sleep_1.sleep)(500);
82
+ }
83
+ }
84
+ console.warn('debugger connect timed out');
85
+ socket.destroy();
86
+ });
87
+ listenServerPort('SCRYPTED_DEBUG_PORT', server_settings_1.SCRYPTED_DEBUG_PORT, debugServer);
88
+ const app = (0, express_1.default)();
89
+ // parse application/x-www-form-urlencoded
90
+ app.use(body_parser_1.default.urlencoded({ extended: false }));
91
+ // parse application/json
92
+ app.use(body_parser_1.default.json());
93
+ // parse some custom thing into a Buffer
94
+ app.use(body_parser_1.default.raw({ type: 'application/zip', limit: 100000000 }));
95
+ async function start() {
96
+ const volumeDir = (0, plugin_volume_1.getScryptedVolume)();
97
+ mkdirp_1.default.sync(volumeDir);
98
+ const dbPath = path_1.default.join(volumeDir, 'scrypted.db');
99
+ const db = (0, level_1.default)(dbPath);
100
+ await db.open();
101
+ if (process_1.default.env.SCRYPTED_RESET_ALL_USERS === 'true') {
102
+ await db.removeAll(db_types_1.ScryptedUser);
103
+ }
104
+ let certSetting = await db.tryGet(db_types_1.Settings, 'certificate');
105
+ if (certSetting?.value?.version !== cert_1.CURRENT_SELF_SIGNED_CERTIFICATE_VERSION) {
106
+ const cert = (0, cert_1.createSelfSignedCertificate)();
107
+ certSetting = new db_types_1.Settings();
108
+ certSetting._id = 'certificate';
109
+ certSetting.value = cert;
110
+ certSetting = await db.upsert(certSetting);
111
+ }
112
+ const basicAuth = http_auth_1.default.basic({
113
+ realm: 'Scrypted',
114
+ }, async (username, password, callback) => {
115
+ const user = await db.tryGet(db_types_1.ScryptedUser, username);
116
+ if (!user) {
117
+ callback(false);
118
+ return;
119
+ }
120
+ const salted = user.salt + password;
121
+ const hash = crypto_1.default.createHash('sha256');
122
+ hash.update(salted);
123
+ const sha = hash.digest().toString('hex');
124
+ callback(sha === user.passwordHash || password === user.token);
125
+ });
126
+ const keys = certSetting.value;
127
+ const httpsServerOptions = process_1.default.env.SCRYPTED_HTTPS_OPTIONS_FILE
128
+ ? JSON.parse(fs_1.default.readFileSync(process_1.default.env.SCRYPTED_HTTPS_OPTIONS_FILE).toString())
129
+ : {};
130
+ const mergedHttpsServerOptions = Object.assign({
131
+ key: keys.serviceKey,
132
+ cert: keys.certificate
133
+ }, httpsServerOptions);
134
+ const secure = https_1.default.createServer(mergedHttpsServerOptions, app);
135
+ const insecure = http_1.default.createServer(app);
136
+ // use a hash of the private key as the cookie secret.
137
+ app.use((0, cookie_parser_1.default)(crypto_1.default.createHash('sha256').update(certSetting.value.serviceKey).digest().toString('hex')));
138
+ app.all('*', async (req, res, next) => {
139
+ // this is a trap for all auth.
140
+ // only basic auth will fail with 401. it is up to the endpoints to manage
141
+ // lack of login from cookie auth.
142
+ const { login_user_token } = req.signedCookies;
143
+ if (login_user_token) {
144
+ const userTokenParts = login_user_token.split('#');
145
+ const username = userTokenParts[0];
146
+ const timestamp = parseInt(userTokenParts[1]);
147
+ if (timestamp + 86400000 < Date.now()) {
148
+ console.warn('login expired');
149
+ return next();
150
+ }
151
+ const user = await db.tryGet(db_types_1.ScryptedUser, username);
152
+ if (!user) {
153
+ console.warn('login not found');
154
+ return next();
155
+ }
156
+ res.locals.username = username;
157
+ }
158
+ next();
159
+ });
160
+ // allow basic auth to deploy plugins
161
+ app.all('/web/component/*', (req, res, next) => {
162
+ if (req.protocol === 'https' && req.headers.authorization && req.headers.authorization.toLowerCase()?.indexOf('basic') !== -1) {
163
+ const basicChecker = basicAuth.check((req) => {
164
+ res.locals.username = req.user;
165
+ next();
166
+ });
167
+ // this automatically handles unauthorized.
168
+ basicChecker(req, res);
169
+ return;
170
+ }
171
+ next();
172
+ });
173
+ // verify all plugin related requests have some sort of auth
174
+ app.all('/web/component/*', (req, res, next) => {
175
+ if (!res.locals.username) {
176
+ res.status(401);
177
+ res.send('Not Authorized');
178
+ return;
179
+ }
180
+ next();
181
+ });
182
+ const scrypted = new runtime_1.ScryptedRuntime(db, insecure, secure, app);
183
+ await scrypted.start();
184
+ listenServerPort('SCRYPTED_SECURE_PORT', server_settings_1.SCRYPTED_SECURE_PORT, secure);
185
+ listenServerPort('SCRYPTED_INSECURE_PORT', server_settings_1.SCRYPTED_INSECURE_PORT, insecure);
186
+ console.log('#######################################################');
187
+ console.log(`Scrypted Server (Local) : https://localhost:${server_settings_1.SCRYPTED_SECURE_PORT}/`);
188
+ for (const address of (0, addresses_1.getAddresses)()) {
189
+ console.log(`Scrypted Server (Remote) : https://${address}:${server_settings_1.SCRYPTED_SECURE_PORT}/`);
190
+ }
191
+ console.log(`Version: : ${await new info_1.Info().getVersion()}`);
192
+ console.log('#######################################################');
193
+ console.log('Chrome Users: You may need to type "thisisunsafe" into');
194
+ console.log(' the window to bypass the warning. There');
195
+ console.log(' may be no button to continue, type the');
196
+ console.log(' letters "thisisunsafe" and it will proceed.');
197
+ console.log('#######################################################');
198
+ console.log('Scrypted insecure http service port:', server_settings_1.SCRYPTED_INSECURE_PORT);
199
+ console.log('Ports can be changed with environment variables.');
200
+ console.log('https: $SCRYPTED_SECURE_PORT');
201
+ console.log('http : $SCRYPTED_INSECURE_PORT');
202
+ console.log('Certificate can be modified via tls.createSecureContext options in');
203
+ console.log('JSON file located at SCRYPTED_HTTPS_OPTIONS_FILE environment variable:');
204
+ console.log('export SCRYPTED_HTTPS_OPTIONS_FILE=/path/to/options.json');
205
+ console.log('https://nodejs.org/api/tls.html#tlscreatesecurecontextoptions');
206
+ console.log('#######################################################');
207
+ app.get(['/web/component/script/npm/:pkg', '/web/component/script/npm/@:owner/:pkg'], async (req, res) => {
208
+ const { owner, pkg } = req.params;
209
+ let endpoint = pkg;
210
+ if (owner)
211
+ endpoint = `@${owner}/${endpoint}`;
212
+ try {
213
+ const response = await (0, axios_1.default)(`https://registry.npmjs.org/${endpoint}`);
214
+ res.send(response.data);
215
+ }
216
+ catch (e) {
217
+ res.status(500);
218
+ res.end();
219
+ }
220
+ });
221
+ app.post(['/web/component/script/install/:pkg', '/web/component/script/install/@:owner/:pkg', '/web/component/script/install/@:owner/:pkg/:tag'], async (req, res) => {
222
+ const { owner, pkg, tag } = req.params;
223
+ let endpoint = pkg;
224
+ if (owner)
225
+ endpoint = `@${owner}/${endpoint}`;
226
+ try {
227
+ const plugin = await scrypted.installNpm(endpoint, tag);
228
+ res.send({
229
+ id: scrypted.findPluginDevice(plugin.pluginId)._id,
230
+ });
231
+ }
232
+ catch (e) {
233
+ res.status(500);
234
+ res.end();
235
+ }
236
+ });
237
+ app.get('/web/component/script/search', async (req, res) => {
238
+ try {
239
+ const query = query_string_1.default.stringify({
240
+ text: req.query.text,
241
+ });
242
+ const response = await (0, axios_1.default)(`https://registry.npmjs.org/-/v1/search?${query}`);
243
+ res.send(response.data);
244
+ }
245
+ catch (e) {
246
+ res.status(500);
247
+ res.end();
248
+ }
249
+ });
250
+ app.post('/web/component/script/setup', async (req, res) => {
251
+ const npmPackage = req.query.npmPackage;
252
+ const plugin = await db.tryGet(db_types_1.Plugin, npmPackage) || new db_types_1.Plugin();
253
+ plugin._id = npmPackage;
254
+ plugin.packageJson = req.body;
255
+ await db.upsert(plugin);
256
+ res.send('ok');
257
+ });
258
+ app.post('/web/component/script/deploy', async (req, res) => {
259
+ const npmPackage = req.query.npmPackage;
260
+ const plugin = await db.tryGet(db_types_1.Plugin, npmPackage);
261
+ if (!plugin) {
262
+ res.status(500);
263
+ res.send(`npm package ${npmPackage} not found`);
264
+ return;
265
+ }
266
+ plugin.zip = req.body.toString('base64');
267
+ await db.upsert(plugin);
268
+ const noRebind = req.query['no-rebind'] !== undefined;
269
+ if (!noRebind)
270
+ await scrypted.installPlugin(plugin);
271
+ res.send('ok');
272
+ });
273
+ app.post('/web/component/script/debug', async (req, res) => {
274
+ const npmPackage = req.query.npmPackage;
275
+ const plugin = await db.tryGet(db_types_1.Plugin, npmPackage);
276
+ if (!plugin) {
277
+ res.status(500);
278
+ res.send(`npm package ${npmPackage} not found`);
279
+ return;
280
+ }
281
+ const waitDebug = new Promise((resolve, reject) => {
282
+ setTimeout(() => reject(new Error('timed out waiting for debug session')), 30000);
283
+ debugServer.on('connection', resolve);
284
+ });
285
+ workerInspectPort = Math.round(Math.random() * 10000) + 30000;
286
+ try {
287
+ await scrypted.installPlugin(plugin, {
288
+ waitDebug,
289
+ inspectPort: workerInspectPort,
290
+ });
291
+ }
292
+ catch (e) {
293
+ res.status(500);
294
+ res.send(e.toString());
295
+ return;
296
+ }
297
+ res.send({
298
+ workerInspectPort,
299
+ });
300
+ });
301
+ app.get('/logout', (req, res) => {
302
+ res.clearCookie('login_user_token');
303
+ res.send({});
304
+ });
305
+ app.post('/login', async (req, res) => {
306
+ const hasLogin = await db.getCount(db_types_1.ScryptedUser) > 0;
307
+ const { username, password, change_password } = req.body;
308
+ const timestamp = Date.now();
309
+ const maxAge = 86400000;
310
+ if (hasLogin) {
311
+ const user = await db.tryGet(db_types_1.ScryptedUser, username);
312
+ if (!user) {
313
+ res.send({
314
+ error: 'User does not exist.',
315
+ hasLogin,
316
+ });
317
+ return;
318
+ }
319
+ const salted = user.salt + password;
320
+ const hash = crypto_1.default.createHash('sha256');
321
+ hash.update(salted);
322
+ const sha = hash.digest().toString('hex');
323
+ if (user.passwordHash !== sha) {
324
+ res.send({
325
+ error: 'Incorrect password.',
326
+ hasLogin,
327
+ });
328
+ return;
329
+ }
330
+ const login_user_token = `${username}#${timestamp}`;
331
+ res.cookie('login_user_token', login_user_token, {
332
+ maxAge,
333
+ secure: true,
334
+ signed: true,
335
+ httpOnly: true,
336
+ });
337
+ if (change_password) {
338
+ user.salt = crypto_1.default.randomBytes(64).toString('base64');
339
+ user.passwordHash = crypto_1.default.createHash('sha256').update(user.salt + change_password).digest().toString('hex');
340
+ user.passwordDate = timestamp;
341
+ await db.upsert(user);
342
+ }
343
+ res.send({
344
+ username,
345
+ expiration: maxAge,
346
+ });
347
+ return;
348
+ }
349
+ const user = new db_types_1.ScryptedUser();
350
+ user._id = username;
351
+ user.salt = crypto_1.default.randomBytes(64).toString('base64');
352
+ user.passwordHash = crypto_1.default.createHash('sha256').update(user.salt + password).digest().toString('hex');
353
+ user.passwordDate = timestamp;
354
+ await db.upsert(user);
355
+ const login_user_token = `${username}#${timestamp}`;
356
+ res.cookie('login_user_token', login_user_token, {
357
+ maxAge,
358
+ secure: true,
359
+ signed: true,
360
+ httpOnly: true,
361
+ });
362
+ res.send({
363
+ username,
364
+ expiration: maxAge,
365
+ });
366
+ });
367
+ app.get('/login', async (req, res) => {
368
+ if (req.protocol === 'https' && req.headers.authorization) {
369
+ const username = await new Promise(resolve => {
370
+ const basicChecker = basicAuth.check((req) => {
371
+ resolve(req.user);
372
+ });
373
+ // this automatically handles unauthorized.
374
+ basicChecker(req, res);
375
+ });
376
+ const user = await db.tryGet(db_types_1.ScryptedUser, username);
377
+ if (!user.token) {
378
+ user.token = crypto_1.default.randomBytes(16).toString('hex');
379
+ await db.upsert(user);
380
+ }
381
+ res.send({
382
+ username,
383
+ token: user.token,
384
+ });
385
+ return;
386
+ }
387
+ const hasLogin = await db.getCount(db_types_1.ScryptedUser) > 0;
388
+ const { login_user_token } = req.signedCookies;
389
+ if (!login_user_token) {
390
+ res.send({
391
+ error: 'Not logged in.',
392
+ hasLogin,
393
+ });
394
+ return;
395
+ }
396
+ const userTokenParts = login_user_token.split('#');
397
+ const username = userTokenParts[0];
398
+ const timestamp = parseInt(userTokenParts[1]);
399
+ if (timestamp + 86400000 < Date.now()) {
400
+ res.send({
401
+ error: 'Login expired.',
402
+ hasLogin,
403
+ });
404
+ return;
405
+ }
406
+ const user = await db.tryGet(db_types_1.ScryptedUser, username);
407
+ if (!user) {
408
+ res.send({
409
+ error: 'User not found.',
410
+ hasLogin,
411
+ });
412
+ return;
413
+ }
414
+ if (timestamp < user.passwordDate) {
415
+ res.send({
416
+ error: 'Login invalid. Password has changed.',
417
+ hasLogin,
418
+ });
419
+ return;
420
+ }
421
+ res.send({
422
+ expiration: 86400000 - (Date.now() - timestamp),
423
+ username,
424
+ });
425
+ });
426
+ app.get('/', (_req, res) => res.redirect('/endpoint/@scrypted/core/public/'));
427
+ }
428
+ start();
429
+ //# sourceMappingURL=scrypted-server-main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrypted-server-main.js","sourceRoot":"","sources":["../src/scrypted-server-main.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,11 @@
1
1
  {
2
2
  "name": "@scrypted/server",
3
- "version": "0.0.116",
3
+ "version": "0.0.121",
4
4
  "description": "",
5
5
  "dependencies": {
6
- "@scrypted/sdk": "^0.0.133",
6
+ "@mapbox/node-pre-gyp": "^1.0.5",
7
+ "@scrypted/ffmpeg": "^1.0.9",
8
+ "@scrypted/sdk": "^0.0.135",
7
9
  "adm-zip": "^0.5.3",
8
10
  "axios": "^0.21.1",
9
11
  "body-parser": "^1.19.0",
@@ -13,11 +15,12 @@
13
15
  "express": "^4.17.1",
14
16
  "http-auth": "^4.1.9",
15
17
  "level": "^6.0.1",
18
+ "linkfs": "^2.1.0",
16
19
  "lodash": "^4.17.21",
17
20
  "memfs": "^3.2.2",
18
21
  "mkdirp": "^1.0.4",
19
22
  "node-dijkstra": "^2.5.0",
20
- "node-forge": "^0.10.0",
23
+ "node-forge": "^1.2.0",
21
24
  "node-pty": "^0.10.1",
22
25
  "query-string": "^6.14.1",
23
26
  "semver": "^7.3.5",
@@ -31,11 +34,9 @@
31
34
  },
32
35
  "optionalDependencies": {
33
36
  "@koush/wrtc": "^0.5.2",
34
- "ffmpeg-for-homebridge": "^0.0.9",
35
37
  "mdns": "^2.7.2"
36
38
  },
37
39
  "devDependencies": {
38
- "@mapbox/node-pre-gyp": "^1.0.5",
39
40
  "@types/adm-zip": "^0.4.33",
40
41
  "@types/cookie-parser": "^1.4.2",
41
42
  "@types/debug": "^4.1.5",
@@ -45,7 +46,7 @@
45
46
  "@types/lodash": "^4.14.168",
46
47
  "@types/mkdirp": "^1.0.2",
47
48
  "@types/node-dijkstra": "^2.5.1",
48
- "@types/node-forge": "^0.10.10",
49
+ "@types/node-forge": "^1.0.0",
49
50
  "@types/pem": "^1.9.5",
50
51
  "@types/rimraf": "^3.0.2",
51
52
  "@types/semver": "^7.3.8",
package/python/media.py CHANGED
@@ -1,18 +1,7 @@
1
1
  from __future__ import annotations
2
2
  import scrypted_python.scrypted_sdk
3
- from scrypted_python.scrypted_sdk.types import MediaObject, ScryptedInterfaceProperty
4
- from collections.abc import Mapping
5
- from genericpath import exists
6
- import asyncio
7
- import json
8
- import aiofiles
3
+ from scrypted_python.scrypted_sdk.types import MediaObject
9
4
  import os
10
- from typing_extensions import TypedDict
11
- import base64
12
- from os import sys
13
- import time
14
- import zipfile
15
- import subprocess
16
5
  from typing import Any
17
6
 
18
7
  class MediaObjectRemote:
@@ -13,15 +13,16 @@ import json
13
13
  from asyncio.events import AbstractEventLoop
14
14
  import asyncio
15
15
  import rpc
16
- from genericpath import exists
17
16
  from collections.abc import Mapping
18
- from scrypted_python.scrypted_sdk.types import DeviceManifest, MediaManager, MediaObject, ScryptedInterfaceProperty
17
+ from scrypted_python.scrypted_sdk.types import DeviceManifest, MediaManager, ScryptedInterfaceProperty
19
18
  import scrypted_python.scrypted_sdk
20
19
  from asyncio.futures import Future
21
20
  from asyncio.streams import StreamReader, StreamWriter
22
21
  import os
23
22
  from os import sys
24
23
  import platform
24
+ import shutil
25
+ import gc
25
26
 
26
27
  class SystemDeviceState(TypedDict):
27
28
  lastEventTime: int
@@ -156,11 +157,19 @@ class PluginRemote:
156
157
  nativeId, *values, sep=sep, end=end, flush=flush), self.loop)
157
158
 
158
159
  async def loadZip(self, packageJson, zipData, options=None):
159
- zipPath = options['filename']
160
+ zipPath: str
160
161
 
161
- f = open(zipPath, 'wb')
162
- f.write(zipData)
163
- f.close()
162
+ if isinstance(zipData, str):
163
+ zipPath = (options and options.get('filename', None)) or zipData
164
+ if zipPath != zipData:
165
+ shutil.copyfile(zipData, zipPath)
166
+ else:
167
+ zipPath = options['filename']
168
+ f = open(zipPath, 'wb')
169
+ f.write(zipData)
170
+ f.close()
171
+
172
+ zipData = None
164
173
 
165
174
  zip = zipfile.ZipFile(zipPath)
166
175
 
@@ -278,7 +287,7 @@ async def readLoop(loop, peer, reader):
278
287
  asyncio.run_coroutine_threadsafe(peer.handleMessage(message), loop)
279
288
  except Exception as e:
280
289
  print('read loop error', e)
281
- pass
290
+ sys.exit()
282
291
 
283
292
 
284
293
  async def async_main(loop: AbstractEventLoop):
@@ -305,6 +314,12 @@ async def async_main(loop: AbstractEventLoop):
305
314
 
306
315
  def main():
307
316
  loop = asyncio.get_event_loop()
317
+
318
+ def gc_runner():
319
+ gc.collect()
320
+ loop.call_later(10, gc_runner)
321
+ gc_runner()
322
+
308
323
  loop.run_until_complete(async_main(loop))
309
324
  loop.close()
310
325