@scrypted/server 0.0.115 → 0.0.120

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 (57) 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 +3 -3
  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 +22 -0
  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 +39 -15
  20. package/dist/plugin/plugin-remote.js.map +1 -1
  21. package/dist/plugin/plugin-repl.js +3 -1
  22. package/dist/plugin/plugin-repl.js.map +1 -1
  23. package/dist/plugin/system.js +7 -5
  24. package/dist/plugin/system.js.map +1 -1
  25. package/dist/rpc.js +13 -3
  26. package/dist/rpc.js.map +1 -1
  27. package/dist/runtime.js +32 -7
  28. package/dist/runtime.js.map +1 -1
  29. package/dist/scrypted-main.js +4 -437
  30. package/dist/scrypted-main.js.map +1 -1
  31. package/dist/scrypted-plugin-main.js +8 -0
  32. package/dist/scrypted-plugin-main.js.map +1 -0
  33. package/dist/scrypted-server-main.js +429 -0
  34. package/dist/scrypted-server-main.js.map +1 -0
  35. package/package.json +7 -6
  36. package/python/media.py +1 -12
  37. package/python/plugin-remote.py +22 -7
  38. package/python/rpc.py +5 -4
  39. package/src/http-interfaces.ts +12 -5
  40. package/src/level.ts +0 -2
  41. package/src/plugin/media.ts +3 -3
  42. package/src/plugin/plugin-api.ts +9 -1
  43. package/src/plugin/plugin-console.ts +0 -1
  44. package/src/plugin/plugin-device.ts +20 -0
  45. package/src/plugin/plugin-host-api.ts +2 -2
  46. package/src/plugin/plugin-host.ts +121 -264
  47. package/src/plugin/plugin-http.ts +3 -2
  48. package/src/plugin/plugin-lazy-remote.ts +1 -1
  49. package/src/plugin/plugin-remote-worker.ts +271 -0
  50. package/src/plugin/plugin-remote.ts +46 -17
  51. package/src/plugin/plugin-repl.ts +4 -2
  52. package/src/plugin/system.ts +8 -6
  53. package/src/rpc.ts +13 -2
  54. package/src/runtime.ts +32 -7
  55. package/src/scrypted-main.ts +5 -508
  56. package/src/scrypted-plugin-main.ts +6 -0
  57. package/src/scrypted-server-main.ts +498 -0
package/dist/runtime.js CHANGED
@@ -30,6 +30,7 @@ const node_pty_1 = require("node-pty");
30
30
  const rimraf_1 = __importDefault(require("rimraf"));
31
31
  const plugin_volume_1 = require("./plugin/plugin-volume");
32
32
  const plugin_http_1 = require("./plugin/plugin-http");
33
+ const adm_zip_1 = __importDefault(require("adm-zip"));
33
34
  const MIN_SCRYPTED_CORE_VERSION = 'v0.0.146';
34
35
  const PLUGIN_DEVICE_STATE_VERSION = 2;
35
36
  class ScryptedRuntime extends plugin_http_1.PluginHttp {
@@ -263,7 +264,7 @@ class ScryptedRuntime extends plugin_http_1.PluginHttp {
263
264
  return new alerts_1.Alerts(this);
264
265
  }
265
266
  }
266
- async handleEngineIOEndpoint(req, res, endpointRequest, pluginData) {
267
+ handleEngineIOEndpoint(req, res, endpointRequest, pluginData) {
267
268
  const { pluginHost, pluginDevice } = pluginData;
268
269
  req.scrypted = {
269
270
  endpointRequest,
@@ -274,7 +275,7 @@ class ScryptedRuntime extends plugin_http_1.PluginHttp {
274
275
  else
275
276
  pluginHost.io.handleRequest(req, res);
276
277
  }
277
- async handleRequestEndpoint(req, res, endpointRequest, pluginData) {
278
+ handleRequestEndpoint(req, res, endpointRequest, pluginData) {
278
279
  const { pluginHost, pluginDevice } = pluginData;
279
280
  const handler = this.getDevice(pluginDevice._id);
280
281
  if (handler.interfaces.includes(types_1.ScryptedInterface.EngineIOHandler) && req.headers.connection === 'upgrade' && req.headers.upgrade?.toLowerCase() === 'websocket') {
@@ -282,7 +283,7 @@ class ScryptedRuntime extends plugin_http_1.PluginHttp {
282
283
  console.log(ws);
283
284
  });
284
285
  }
285
- handler.onRequest(endpointRequest, (0, http_interfaces_1.createResponseInterface)(res, pluginHost.zip));
286
+ handler.onRequest(endpointRequest, (0, http_interfaces_1.createResponseInterface)(res, pluginHost.unzippedPath));
286
287
  }
287
288
  killPlugin(plugin) {
288
289
  const existing = this.plugins[plugin._id];
@@ -388,10 +389,24 @@ class ScryptedRuntime extends plugin_http_1.PluginHttp {
388
389
  return ret;
389
390
  }
390
391
  async installPlugin(plugin, pluginDebug) {
391
- await this.upsertDevice(plugin._id, plugin.packageJson.scrypted);
392
+ const device = Object.assign({}, plugin.packageJson.scrypted);
393
+ try {
394
+ if (!device.interfaces.includes(types_1.ScryptedInterface.Readme)) {
395
+ const zipData = Buffer.from(plugin.zip, 'base64');
396
+ const adm = new adm_zip_1.default(zipData);
397
+ const entry = adm.getEntry('README.md');
398
+ if (entry) {
399
+ device.interfaces = device.interfaces.slice();
400
+ device.interfaces.push(types_1.ScryptedInterface.Readme);
401
+ }
402
+ }
403
+ }
404
+ catch (e) {
405
+ }
406
+ await this.upsertDevice(plugin._id, device);
392
407
  return this.runPlugin(plugin, pluginDebug);
393
408
  }
394
- async runPlugin(plugin, pluginDebug) {
409
+ runPlugin(plugin, pluginDebug) {
395
410
  this.killPlugin(plugin);
396
411
  const pluginDevices = this.findPluginDevices(plugin._id);
397
412
  for (const pluginDevice of pluginDevices) {
@@ -414,7 +429,12 @@ class ScryptedRuntime extends plugin_http_1.PluginHttp {
414
429
  console.log('scheduled plugin restart cancelled, plugin no longer exists', pluginHost.pluginId);
415
430
  return;
416
431
  }
417
- this.runPlugin(plugin).catch(e => console.error('error restarting plugin', plugin._id, e));
432
+ try {
433
+ this.runPlugin(plugin);
434
+ }
435
+ catch (e) {
436
+ console.error('error restarting plugin', plugin._id, e);
437
+ }
418
438
  }, 60000);
419
439
  });
420
440
  this.plugins[plugin._id] = pluginHost;
@@ -570,7 +590,12 @@ class ScryptedRuntime extends plugin_http_1.PluginHttp {
570
590
  }
571
591
  }
572
592
  for await (const plugin of this.datastore.getAll(db_types_1.Plugin)) {
573
- this.runPlugin(plugin).catch(e => console.error('error starting plugin', plugin._id, e));
593
+ try {
594
+ this.runPlugin(plugin);
595
+ }
596
+ catch (e) {
597
+ console.error('error starting plugin', plugin._id, e);
598
+ }
574
599
  }
575
600
  }
576
601
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -3,457 +3,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const path_1 = __importDefault(require("path"));
7
6
  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 plugin_host_1 = require("./plugin/plugin-host");
14
- const runtime_1 = require("./runtime");
15
- const level_1 = __importDefault(require("./level"));
16
- const db_types_1 = require("./db-types");
17
- const server_settings_1 = require("./server-settings");
18
- const crypto_1 = __importDefault(require("crypto"));
19
- const cookie_parser_1 = __importDefault(require("cookie-parser"));
20
- const axios_1 = __importDefault(require("axios"));
21
- const query_string_1 = __importDefault(require("query-string"));
22
- const rpc_1 = require("./rpc");
23
- const fs_1 = __importDefault(require("fs"));
24
- const mkdirp_1 = __importDefault(require("mkdirp"));
25
- const source_map_support_1 = require("source-map-support");
26
- const http_auth_1 = __importDefault(require("http-auth"));
27
7
  const semver_1 = __importDefault(require("semver"));
28
- const info_1 = require("./services/info");
29
- const addresses_1 = require("./addresses");
30
- const sleep_1 = require("./sleep");
31
- const cert_1 = require("./cert");
8
+ const rpc_1 = require("./rpc");
32
9
  const plugin_error_1 = require("./plugin/plugin-error");
33
- const plugin_volume_1 = require("./plugin/plugin-volume");
34
10
  if (!semver_1.default.gte(process_1.default.version, '16.0.0')) {
35
11
  throw new Error('"node" version out of date. Please update node to v16 or higher.');
36
12
  }
13
+ (0, rpc_1.startPeriodicGarbageCollection)();
37
14
  process_1.default.on('unhandledRejection', error => {
38
15
  if (error?.constructor !== rpc_1.RPCResultError && error?.constructor !== plugin_error_1.PluginError) {
39
16
  throw error;
40
17
  }
41
18
  console.warn('unhandled rejection of RPC Result', error);
42
19
  });
43
- function listenServerPort(env, port, server) {
44
- server.listen(port);
45
- server.on('error', (e) => {
46
- console.error(`Failed to listen on port ${port}. It may be in use.`);
47
- console.error(`Use the environment variable ${env} to change the port.`);
48
- throw e;
49
- });
50
- }
51
20
  if (process_1.default.argv[2] === 'child') {
52
- (0, plugin_host_1.startPluginRemote)();
21
+ require('./scrypted-plugin-main');
53
22
  }
54
23
  else {
55
- (0, source_map_support_1.install)({
56
- environment: 'node',
57
- });
58
- let workerInspectPort = undefined;
59
- async function doconnect() {
60
- return new Promise((resolve, reject) => {
61
- const target = net_1.default.connect(workerInspectPort);
62
- target.once('error', reject);
63
- target.once('connect', () => resolve(target));
64
- });
65
- }
66
- const debugServer = net_1.default.createServer(async (socket) => {
67
- if (!workerInspectPort) {
68
- socket.destroy();
69
- return;
70
- }
71
- for (let i = 0; i < 10; i++) {
72
- try {
73
- const target = await doconnect();
74
- socket.pipe(target).pipe(socket);
75
- const destroy = () => {
76
- socket.destroy();
77
- target.destroy();
78
- };
79
- socket.on('error', destroy);
80
- target.on('error', destroy);
81
- socket.on('close', destroy);
82
- target.on('close', destroy);
83
- return;
84
- }
85
- catch (e) {
86
- await (0, sleep_1.sleep)(500);
87
- }
88
- }
89
- console.warn('debugger connect timed out');
90
- socket.destroy();
91
- });
92
- listenServerPort('SCRYPTED_DEBUG_PORT', server_settings_1.SCRYPTED_DEBUG_PORT, debugServer);
93
- const app = (0, express_1.default)();
94
- // parse application/x-www-form-urlencoded
95
- app.use(body_parser_1.default.urlencoded({ extended: false }));
96
- // parse application/json
97
- app.use(body_parser_1.default.json());
98
- // parse some custom thing into a Buffer
99
- app.use(body_parser_1.default.raw({ type: 'application/zip', limit: 100000000 }));
100
- async function start() {
101
- const volumeDir = (0, plugin_volume_1.getScryptedVolume)();
102
- mkdirp_1.default.sync(volumeDir);
103
- const dbPath = path_1.default.join(volumeDir, 'scrypted.db');
104
- const oldDbPath = path_1.default.join(process_1.default.cwd(), 'scrypted.db');
105
- if (fs_1.default.existsSync(oldDbPath) && !fs_1.default.existsSync(dbPath)) {
106
- mkdirp_1.default.sync(volumeDir);
107
- fs_1.default.renameSync(oldDbPath, dbPath);
108
- }
109
- const db = (0, level_1.default)(dbPath);
110
- await db.open();
111
- if (process_1.default.env.SCRYPTED_RESET_ALL_USERS === 'true') {
112
- await db.removeAll(db_types_1.ScryptedUser);
113
- }
114
- let certSetting = await db.tryGet(db_types_1.Settings, 'certificate');
115
- if (certSetting?.value?.version !== cert_1.CURRENT_SELF_SIGNED_CERTIFICATE_VERSION) {
116
- const cert = (0, cert_1.createSelfSignedCertificate)();
117
- certSetting = new db_types_1.Settings();
118
- certSetting._id = 'certificate';
119
- certSetting.value = cert;
120
- certSetting = await db.upsert(certSetting);
121
- }
122
- const basicAuth = http_auth_1.default.basic({
123
- realm: 'Scrypted',
124
- }, async (username, password, callback) => {
125
- const user = await db.tryGet(db_types_1.ScryptedUser, username);
126
- if (!user) {
127
- callback(false);
128
- return;
129
- }
130
- const salted = user.salt + password;
131
- const hash = crypto_1.default.createHash('sha256');
132
- hash.update(salted);
133
- const sha = hash.digest().toString('hex');
134
- callback(sha === user.passwordHash || password === user.token);
135
- });
136
- const keys = certSetting.value;
137
- const httpsServerOptions = process_1.default.env.SCRYPTED_HTTPS_OPTIONS_FILE
138
- ? JSON.parse(fs_1.default.readFileSync(process_1.default.env.SCRYPTED_HTTPS_OPTIONS_FILE).toString())
139
- : {};
140
- const mergedHttpsServerOptions = Object.assign({
141
- key: keys.serviceKey,
142
- cert: keys.certificate
143
- }, httpsServerOptions);
144
- const secure = https_1.default.createServer(mergedHttpsServerOptions, app);
145
- listenServerPort('SCRYPTED_SECURE_PORT', server_settings_1.SCRYPTED_SECURE_PORT, secure);
146
- const insecure = http_1.default.createServer(app);
147
- listenServerPort('SCRYPTED_INSECURE_PORT', server_settings_1.SCRYPTED_INSECURE_PORT, insecure);
148
- // legacy secure port 9443 is now in use by portainer.
149
- let shownLegacyPortAlert = false;
150
- const legacySecure = https_1.default.createServer(mergedHttpsServerOptions, (req, res) => {
151
- if (!shownLegacyPortAlert) {
152
- const core = scrypted.findPluginDevice('@scrypted/core');
153
- if (core) {
154
- const logger = scrypted.getDeviceLogger(core);
155
- shownLegacyPortAlert = true;
156
- const host = (req.headers.host || 'localhost').split(':')[0];
157
- const newUrl = `https://${host}:${server_settings_1.SCRYPTED_SECURE_PORT}`;
158
- logger.log('a', `Due to a port conflict with Portainer, the default Scrypted URL has changed to ${newUrl}`);
159
- }
160
- }
161
- app(req, res);
162
- });
163
- legacySecure.listen(9443);
164
- legacySecure.on('error', () => {
165
- // can ignore.
166
- });
167
- // use a hash of the private key as the cookie secret.
168
- app.use((0, cookie_parser_1.default)(crypto_1.default.createHash('sha256').update(certSetting.value.serviceKey).digest().toString('hex')));
169
- app.all('*', async (req, res, next) => {
170
- // this is a trap for all auth.
171
- // only basic auth will fail with 401. it is up to the endpoints to manage
172
- // lack of login from cookie auth.
173
- const { login_user_token } = req.signedCookies;
174
- if (login_user_token) {
175
- const userTokenParts = login_user_token.split('#');
176
- const username = userTokenParts[0];
177
- const timestamp = parseInt(userTokenParts[1]);
178
- if (timestamp + 86400000 < Date.now()) {
179
- console.warn('login expired');
180
- return next();
181
- }
182
- const user = await db.tryGet(db_types_1.ScryptedUser, username);
183
- if (!user) {
184
- console.warn('login not found');
185
- return next();
186
- }
187
- res.locals.username = username;
188
- }
189
- next();
190
- });
191
- // allow basic auth to deploy plugins
192
- app.all('/web/component/*', (req, res, next) => {
193
- if (req.protocol === 'https' && req.headers.authorization && req.headers.authorization.toLowerCase()?.indexOf('basic') !== -1) {
194
- const basicChecker = basicAuth.check((req) => {
195
- res.locals.username = req.user;
196
- next();
197
- });
198
- // this automatically handles unauthorized.
199
- basicChecker(req, res);
200
- return;
201
- }
202
- next();
203
- });
204
- // verify all plugin related requests have some sort of auth
205
- app.all('/web/component/*', (req, res, next) => {
206
- if (!res.locals.username) {
207
- res.status(401);
208
- res.send('Not Authorized');
209
- return;
210
- }
211
- next();
212
- });
213
- console.log('#######################################################');
214
- console.log(`Scrypted Server (Local) : https://localhost:${server_settings_1.SCRYPTED_SECURE_PORT}/`);
215
- for (const address of (0, addresses_1.getAddresses)()) {
216
- console.log(`Scrypted Server (Remote) : https://${address}:${server_settings_1.SCRYPTED_SECURE_PORT}/`);
217
- }
218
- console.log(`Version: : ${await new info_1.Info().getVersion()}`);
219
- console.log('#######################################################');
220
- console.log('Chrome Users: You may need to type "thisisunsafe" into');
221
- console.log(' the window to bypass the warning. There');
222
- console.log(' may be no button to continue, type the');
223
- console.log(' letters "thisisunsafe" and it will proceed.');
224
- console.log('#######################################################');
225
- console.log('Scrypted insecure http service port:', server_settings_1.SCRYPTED_INSECURE_PORT);
226
- console.log('Ports can be changed with environment variables.');
227
- console.log('https: $SCRYPTED_SECURE_PORT');
228
- console.log('http : $SCRYPTED_INSECURE_PORT');
229
- console.log('Certificate can be modified via tls.createSecureContext options in');
230
- console.log('JSON file located at SCRYPTED_HTTPS_OPTIONS_FILE environment variable:');
231
- console.log('export SCRYPTED_HTTPS_OPTIONS_FILE=/path/to/options.json');
232
- console.log('https://nodejs.org/api/tls.html#tlscreatesecurecontextoptions');
233
- console.log('#######################################################');
234
- const scrypted = new runtime_1.ScryptedRuntime(db, insecure, secure, app);
235
- await scrypted.start();
236
- app.get(['/web/component/script/npm/:pkg', '/web/component/script/npm/@:owner/:pkg'], async (req, res) => {
237
- const { owner, pkg } = req.params;
238
- let endpoint = pkg;
239
- if (owner)
240
- endpoint = `@${owner}/${endpoint}`;
241
- try {
242
- const response = await (0, axios_1.default)(`https://registry.npmjs.org/${endpoint}`);
243
- res.send(response.data);
244
- }
245
- catch (e) {
246
- res.status(500);
247
- res.end();
248
- }
249
- });
250
- app.post(['/web/component/script/install/:pkg', '/web/component/script/install/@:owner/:pkg', '/web/component/script/install/@:owner/:pkg/:tag'], async (req, res) => {
251
- const { owner, pkg, tag } = req.params;
252
- let endpoint = pkg;
253
- if (owner)
254
- endpoint = `@${owner}/${endpoint}`;
255
- try {
256
- const plugin = await scrypted.installNpm(endpoint, tag);
257
- res.send({
258
- id: scrypted.findPluginDevice(plugin.pluginId)._id,
259
- });
260
- }
261
- catch (e) {
262
- res.status(500);
263
- res.end();
264
- }
265
- });
266
- app.get('/web/component/script/search', async (req, res) => {
267
- try {
268
- const query = query_string_1.default.stringify({
269
- text: req.query.text,
270
- });
271
- const response = await (0, axios_1.default)(`https://registry.npmjs.org/-/v1/search?${query}`);
272
- res.send(response.data);
273
- }
274
- catch (e) {
275
- res.status(500);
276
- res.end();
277
- }
278
- });
279
- app.post('/web/component/script/setup', async (req, res) => {
280
- const npmPackage = req.query.npmPackage;
281
- const plugin = await db.tryGet(db_types_1.Plugin, npmPackage) || new db_types_1.Plugin();
282
- plugin._id = npmPackage;
283
- plugin.packageJson = req.body;
284
- await db.upsert(plugin);
285
- res.send('ok');
286
- });
287
- app.post('/web/component/script/deploy', async (req, res) => {
288
- const npmPackage = req.query.npmPackage;
289
- const plugin = await db.tryGet(db_types_1.Plugin, npmPackage);
290
- if (!plugin) {
291
- res.status(500);
292
- res.send(`npm package ${npmPackage} not found`);
293
- return;
294
- }
295
- plugin.zip = req.body.toString('base64');
296
- await db.upsert(plugin);
297
- const noRebind = req.query['no-rebind'] !== undefined;
298
- if (!noRebind)
299
- await scrypted.installPlugin(plugin);
300
- res.send('ok');
301
- });
302
- app.post('/web/component/script/debug', async (req, res) => {
303
- const npmPackage = req.query.npmPackage;
304
- const plugin = await db.tryGet(db_types_1.Plugin, npmPackage);
305
- if (!plugin) {
306
- res.status(500);
307
- res.send(`npm package ${npmPackage} not found`);
308
- return;
309
- }
310
- const waitDebug = new Promise((resolve, reject) => {
311
- setTimeout(() => reject(new Error('timed out waiting for debug session')), 30000);
312
- debugServer.on('connection', resolve);
313
- });
314
- workerInspectPort = Math.round(Math.random() * 10000) + 30000;
315
- try {
316
- await scrypted.installPlugin(plugin, {
317
- waitDebug,
318
- inspectPort: workerInspectPort,
319
- });
320
- }
321
- catch (e) {
322
- res.status(500);
323
- res.send(e.toString());
324
- return;
325
- }
326
- res.send({
327
- workerInspectPort,
328
- });
329
- });
330
- app.get('/logout', (req, res) => {
331
- res.clearCookie('login_user_token');
332
- res.send({});
333
- });
334
- app.post('/login', async (req, res) => {
335
- const hasLogin = await db.getCount(db_types_1.ScryptedUser) > 0;
336
- const { username, password, change_password } = req.body;
337
- const timestamp = Date.now();
338
- const maxAge = 86400000;
339
- if (hasLogin) {
340
- const user = await db.tryGet(db_types_1.ScryptedUser, username);
341
- if (!user) {
342
- res.send({
343
- error: 'User does not exist.',
344
- hasLogin,
345
- });
346
- return;
347
- }
348
- const salted = user.salt + password;
349
- const hash = crypto_1.default.createHash('sha256');
350
- hash.update(salted);
351
- const sha = hash.digest().toString('hex');
352
- if (user.passwordHash !== sha) {
353
- res.send({
354
- error: 'Incorrect password.',
355
- hasLogin,
356
- });
357
- return;
358
- }
359
- const login_user_token = `${username}#${timestamp}`;
360
- res.cookie('login_user_token', login_user_token, {
361
- maxAge,
362
- secure: true,
363
- signed: true,
364
- httpOnly: true,
365
- });
366
- if (change_password) {
367
- user.salt = crypto_1.default.randomBytes(64).toString('base64');
368
- user.passwordHash = crypto_1.default.createHash('sha256').update(user.salt + change_password).digest().toString('hex');
369
- user.passwordDate = timestamp;
370
- await db.upsert(user);
371
- }
372
- res.send({
373
- username,
374
- expiration: maxAge,
375
- });
376
- return;
377
- }
378
- const user = new db_types_1.ScryptedUser();
379
- user._id = username;
380
- user.salt = crypto_1.default.randomBytes(64).toString('base64');
381
- user.passwordHash = crypto_1.default.createHash('sha256').update(user.salt + password).digest().toString('hex');
382
- user.passwordDate = timestamp;
383
- await db.upsert(user);
384
- const login_user_token = `${username}#${timestamp}`;
385
- res.cookie('login_user_token', login_user_token, {
386
- maxAge,
387
- secure: true,
388
- signed: true,
389
- httpOnly: true,
390
- });
391
- res.send({
392
- username,
393
- expiration: maxAge,
394
- });
395
- });
396
- app.get('/login', async (req, res) => {
397
- if (req.protocol === 'https' && req.headers.authorization) {
398
- const username = await new Promise(resolve => {
399
- const basicChecker = basicAuth.check((req) => {
400
- resolve(req.user);
401
- });
402
- // this automatically handles unauthorized.
403
- basicChecker(req, res);
404
- });
405
- const user = await db.tryGet(db_types_1.ScryptedUser, username);
406
- if (!user.token) {
407
- user.token = crypto_1.default.randomBytes(16).toString('hex');
408
- await db.upsert(user);
409
- }
410
- res.send({
411
- username,
412
- token: user.token,
413
- });
414
- return;
415
- }
416
- const hasLogin = await db.getCount(db_types_1.ScryptedUser) > 0;
417
- const { login_user_token } = req.signedCookies;
418
- if (!login_user_token) {
419
- res.send({
420
- error: 'Not logged in.',
421
- hasLogin,
422
- });
423
- return;
424
- }
425
- const userTokenParts = login_user_token.split('#');
426
- const username = userTokenParts[0];
427
- const timestamp = parseInt(userTokenParts[1]);
428
- if (timestamp + 86400000 < Date.now()) {
429
- res.send({
430
- error: 'Login expired.',
431
- hasLogin,
432
- });
433
- return;
434
- }
435
- const user = await db.tryGet(db_types_1.ScryptedUser, username);
436
- if (!user) {
437
- res.send({
438
- error: 'User not found.',
439
- hasLogin,
440
- });
441
- return;
442
- }
443
- if (timestamp < user.passwordDate) {
444
- res.send({
445
- error: 'Login invalid. Password has changed.',
446
- hasLogin,
447
- });
448
- return;
449
- }
450
- res.send({
451
- expiration: 86400000 - (Date.now() - timestamp),
452
- username,
453
- });
454
- });
455
- app.get('/', (_req, res) => res.redirect('/endpoint/@scrypted/core/public/'));
456
- }
457
- module.exports = start();
24
+ require('./scrypted-server-main');
458
25
  }
459
26
  //# sourceMappingURL=scrypted-main.js.map